matrix-js-sdk 41.8.0 → 41.9.0

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 (458) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -1
  3. package/lib/@types/AESEncryptedSecretStoragePayload.js +3 -1
  4. package/lib/@types/IIdentityServerProvider.js +3 -1
  5. package/lib/@types/PushRules.js +7 -7
  6. package/lib/@types/PushRules.js.map +1 -1
  7. package/lib/@types/auth.js +4 -4
  8. package/lib/@types/auth.js.map +1 -1
  9. package/lib/@types/beacon.js +2 -2
  10. package/lib/@types/beacon.js.map +1 -1
  11. package/lib/@types/common.js +3 -1
  12. package/lib/@types/crypto.js +3 -1
  13. package/lib/@types/event.js +20 -20
  14. package/lib/@types/event.js.map +1 -1
  15. package/lib/@types/events.js +3 -1
  16. package/lib/@types/extensible_events.js +6 -6
  17. package/lib/@types/extensible_events.js.map +1 -1
  18. package/lib/@types/global.d.js.map +1 -1
  19. package/lib/@types/json.js +3 -1
  20. package/lib/@types/local_notifications.js +3 -1
  21. package/lib/@types/location.js +4 -4
  22. package/lib/@types/location.js.map +1 -1
  23. package/lib/@types/matrix-sdk-crypto-wasm.d.js +3 -1
  24. package/lib/@types/media.js +3 -1
  25. package/lib/@types/membership.js +1 -1
  26. package/lib/@types/membership.js.map +1 -1
  27. package/lib/@types/partials.js +6 -6
  28. package/lib/@types/partials.js.map +1 -1
  29. package/lib/@types/polls.js +5 -5
  30. package/lib/@types/polls.js.map +1 -1
  31. package/lib/@types/read_receipts.js +2 -2
  32. package/lib/@types/read_receipts.js.map +1 -1
  33. package/lib/@types/registration.js +3 -1
  34. package/lib/@types/requests.js +1 -1
  35. package/lib/@types/requests.js.map +1 -1
  36. package/lib/@types/retention.js +1 -1
  37. package/lib/@types/retention.js.map +1 -1
  38. package/lib/@types/search.js +1 -1
  39. package/lib/@types/search.js.map +1 -1
  40. package/lib/@types/signed.js +3 -1
  41. package/lib/@types/spaces.js +3 -1
  42. package/lib/@types/state_events.js +3 -1
  43. package/lib/@types/synapse.js +3 -1
  44. package/lib/@types/sync.js +1 -1
  45. package/lib/@types/sync.js.map +1 -1
  46. package/lib/@types/threepids.js +1 -1
  47. package/lib/@types/threepids.js.map +1 -1
  48. package/lib/@types/topic.js +1 -1
  49. package/lib/@types/topic.js.map +1 -1
  50. package/lib/@types/uia.js +3 -1
  51. package/lib/NamespacedValue.js +8 -8
  52. package/lib/NamespacedValue.js.map +1 -1
  53. package/lib/ReEmitter.js +9 -16
  54. package/lib/ReEmitter.js.map +1 -1
  55. package/lib/ToDeviceMessageQueue.js +49 -57
  56. package/lib/ToDeviceMessageQueue.js.map +1 -1
  57. package/lib/autodiscovery.js +232 -247
  58. package/lib/autodiscovery.js.map +1 -1
  59. package/lib/base64.js +1 -1
  60. package/lib/base64.js.map +1 -1
  61. package/lib/browser-index.d.ts +2 -2
  62. package/lib/browser-index.d.ts.map +1 -1
  63. package/lib/browser-index.js +5 -5
  64. package/lib/browser-index.js.map +1 -1
  65. package/lib/capabilityPoller.js +19 -22
  66. package/lib/capabilityPoller.js.map +1 -1
  67. package/lib/client.d.ts +2 -8
  68. package/lib/client.d.ts.map +1 -1
  69. package/lib/client.js +2043 -2487
  70. package/lib/client.js.map +1 -1
  71. package/lib/common-crypto/CryptoBackend.js +2 -2
  72. package/lib/common-crypto/CryptoBackend.js.map +1 -1
  73. package/lib/common-crypto/key-passphrase.js.map +1 -1
  74. package/lib/content-helpers.js +43 -48
  75. package/lib/content-helpers.js.map +1 -1
  76. package/lib/content-repo.js +14 -24
  77. package/lib/content-repo.js.map +1 -1
  78. package/lib/crypto/store/base.js +6 -6
  79. package/lib/crypto/store/base.js.map +1 -1
  80. package/lib/crypto/store/indexeddb-crypto-store-backend.js +190 -238
  81. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  82. package/lib/crypto/store/indexeddb-crypto-store.js +25 -30
  83. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  84. package/lib/crypto/store/localStorage-crypto-store.js +113 -145
  85. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
  86. package/lib/crypto/store/memory-crypto-store.js +74 -105
  87. package/lib/crypto/store/memory-crypto-store.js.map +1 -1
  88. package/lib/crypto-api/CryptoEvent.js +1 -1
  89. package/lib/crypto-api/CryptoEvent.js.map +1 -1
  90. package/lib/crypto-api/CryptoEventHandlerMap.js +3 -1
  91. package/lib/crypto-api/index.d.ts +15 -6
  92. package/lib/crypto-api/index.d.ts.map +1 -1
  93. package/lib/crypto-api/index.js +22 -22
  94. package/lib/crypto-api/index.js.map +1 -1
  95. package/lib/crypto-api/key-passphrase.js +15 -23
  96. package/lib/crypto-api/key-passphrase.js.map +1 -1
  97. package/lib/crypto-api/keybackup.js +3 -1
  98. package/lib/crypto-api/recovery-key.js +11 -12
  99. package/lib/crypto-api/recovery-key.js.map +1 -1
  100. package/lib/crypto-api/verification.js +3 -3
  101. package/lib/crypto-api/verification.js.map +1 -1
  102. package/lib/digest.js +7 -14
  103. package/lib/digest.js.map +1 -1
  104. package/lib/embedded.d.ts.map +1 -1
  105. package/lib/embedded.js +380 -505
  106. package/lib/embedded.js.map +1 -1
  107. package/lib/errors.js +2 -2
  108. package/lib/errors.js.map +1 -1
  109. package/lib/event-mapper.js +10 -12
  110. package/lib/event-mapper.js.map +1 -1
  111. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
  112. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
  113. package/lib/extensible_events_v1/MessageEvent.js +11 -13
  114. package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  115. package/lib/extensible_events_v1/PollEndEvent.js +3 -4
  116. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  117. package/lib/extensible_events_v1/PollResponseEvent.js +5 -6
  118. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  119. package/lib/extensible_events_v1/PollStartEvent.js +8 -10
  120. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  121. package/lib/extensible_events_v1/utilities.js.map +1 -1
  122. package/lib/feature.js +18 -31
  123. package/lib/feature.js.map +1 -1
  124. package/lib/filter-component.d.ts.map +1 -1
  125. package/lib/filter-component.js +20 -26
  126. package/lib/filter-component.js.map +1 -1
  127. package/lib/filter.js +14 -17
  128. package/lib/filter.js.map +1 -1
  129. package/lib/http-api/errors.js +28 -43
  130. package/lib/http-api/errors.js.map +1 -1
  131. package/lib/http-api/fetch.js +141 -159
  132. package/lib/http-api/fetch.js.map +1 -1
  133. package/lib/http-api/index.js +17 -20
  134. package/lib/http-api/index.js.map +1 -1
  135. package/lib/http-api/interface.js +1 -1
  136. package/lib/http-api/interface.js.map +1 -1
  137. package/lib/http-api/method.js +1 -1
  138. package/lib/http-api/method.js.map +1 -1
  139. package/lib/http-api/prefix.js +3 -3
  140. package/lib/http-api/prefix.js.map +1 -1
  141. package/lib/http-api/refresh.js +74 -94
  142. package/lib/http-api/refresh.js.map +1 -1
  143. package/lib/http-api/utils.d.ts +1 -1
  144. package/lib/http-api/utils.d.ts.map +1 -1
  145. package/lib/http-api/utils.js +34 -42
  146. package/lib/http-api/utils.js.map +1 -1
  147. package/lib/index.js.map +1 -1
  148. package/lib/indexeddb-helpers.js +3 -3
  149. package/lib/indexeddb-helpers.js.map +1 -1
  150. package/lib/indexeddb-worker.js.map +1 -1
  151. package/lib/interactive-auth.d.ts +5 -5
  152. package/lib/interactive-auth.d.ts.map +1 -1
  153. package/lib/interactive-auth.js +172 -204
  154. package/lib/interactive-auth.js.map +1 -1
  155. package/lib/logger.js +21 -57
  156. package/lib/logger.js.map +1 -1
  157. package/lib/matrix.js +7 -11
  158. package/lib/matrix.js.map +1 -1
  159. package/lib/matrixrtc/CallMembership.js +80 -74
  160. package/lib/matrixrtc/CallMembership.js.map +1 -1
  161. package/lib/matrixrtc/EncryptionManager.js +1 -1
  162. package/lib/matrixrtc/EncryptionManager.js.map +1 -1
  163. package/lib/matrixrtc/IKeyTransport.js +1 -1
  164. package/lib/matrixrtc/IKeyTransport.js.map +1 -1
  165. package/lib/matrixrtc/IMembershipManager.js +1 -1
  166. package/lib/matrixrtc/IMembershipManager.js.map +1 -1
  167. package/lib/matrixrtc/LivekitTransport.d.ts +1 -1
  168. package/lib/matrixrtc/LivekitTransport.js +4 -4
  169. package/lib/matrixrtc/LivekitTransport.js.map +1 -1
  170. package/lib/matrixrtc/MatrixRTCSession.js +137 -187
  171. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  172. package/lib/matrixrtc/MatrixRTCSessionManager.js +36 -41
  173. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -1
  174. package/lib/matrixrtc/MembershipManager.js +332 -378
  175. package/lib/matrixrtc/MembershipManager.js.map +1 -1
  176. package/lib/matrixrtc/MembershipManagerActionScheduler.js +54 -63
  177. package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -1
  178. package/lib/matrixrtc/RTCEncryptionManager.js +119 -143
  179. package/lib/matrixrtc/RTCEncryptionManager.js.map +1 -1
  180. package/lib/matrixrtc/ToDeviceKeyTransport.js +53 -58
  181. package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -1
  182. package/lib/matrixrtc/index.js.map +1 -1
  183. package/lib/matrixrtc/membershipData/common.js +1 -1
  184. package/lib/matrixrtc/membershipData/common.js.map +1 -1
  185. package/lib/matrixrtc/membershipData/index.js.map +1 -1
  186. package/lib/matrixrtc/membershipData/rtc.js +15 -23
  187. package/lib/matrixrtc/membershipData/rtc.js.map +1 -1
  188. package/lib/matrixrtc/membershipData/session.js +4 -5
  189. package/lib/matrixrtc/membershipData/session.js.map +1 -1
  190. package/lib/matrixrtc/types.js +4 -6
  191. package/lib/matrixrtc/types.js.map +1 -1
  192. package/lib/matrixrtc/utils.js +4 -11
  193. package/lib/matrixrtc/utils.js.map +1 -1
  194. package/lib/models/MSC3089Branch.js +91 -116
  195. package/lib/models/MSC3089Branch.js.map +1 -1
  196. package/lib/models/MSC3089TreeSpace.js +209 -245
  197. package/lib/models/MSC3089TreeSpace.js.map +1 -1
  198. package/lib/models/ToDeviceMessage.js +3 -1
  199. package/lib/models/beacon.js +14 -13
  200. package/lib/models/beacon.js.map +1 -1
  201. package/lib/models/compare-event-ordering.js +13 -13
  202. package/lib/models/compare-event-ordering.js.map +1 -1
  203. package/lib/models/device.js +3 -3
  204. package/lib/models/device.js.map +1 -1
  205. package/lib/models/event-context.js +5 -8
  206. package/lib/models/event-context.js.map +1 -1
  207. package/lib/models/event-status.js +1 -1
  208. package/lib/models/event-status.js.map +1 -1
  209. package/lib/models/event-timeline-set.js +88 -94
  210. package/lib/models/event-timeline-set.js.map +1 -1
  211. package/lib/models/event-timeline.js +28 -30
  212. package/lib/models/event-timeline.js.map +1 -1
  213. package/lib/models/event.js +182 -226
  214. package/lib/models/event.js.map +1 -1
  215. package/lib/models/invites-ignorer-types.js +4 -4
  216. package/lib/models/invites-ignorer-types.js.map +1 -1
  217. package/lib/models/invites-ignorer.js +159 -179
  218. package/lib/models/invites-ignorer.js.map +1 -1
  219. package/lib/models/poll.js +71 -81
  220. package/lib/models/poll.js.map +1 -1
  221. package/lib/models/profile-keys.js +2 -2
  222. package/lib/models/profile-keys.js.map +1 -1
  223. package/lib/models/read-receipt.js +40 -56
  224. package/lib/models/read-receipt.js.map +1 -1
  225. package/lib/models/related-relations.js.map +1 -1
  226. package/lib/models/relations-container.js +22 -23
  227. package/lib/models/relations-container.js.map +1 -1
  228. package/lib/models/relations.js +133 -159
  229. package/lib/models/relations.js.map +1 -1
  230. package/lib/models/room-member.js +24 -29
  231. package/lib/models/room-member.js.map +1 -1
  232. package/lib/models/room-receipts.js +29 -43
  233. package/lib/models/room-receipts.js.map +1 -1
  234. package/lib/models/room-retention.js +74 -83
  235. package/lib/models/room-retention.js.map +1 -1
  236. package/lib/models/room-state.js +143 -172
  237. package/lib/models/room-state.js.map +1 -1
  238. package/lib/models/room-sticky-events.d.ts +1 -0
  239. package/lib/models/room-sticky-events.d.ts.map +1 -1
  240. package/lib/models/room-sticky-events.js +45 -65
  241. package/lib/models/room-sticky-events.js.map +1 -1
  242. package/lib/models/room-summary.js.map +1 -1
  243. package/lib/models/room.d.ts.map +1 -1
  244. package/lib/models/room.js +765 -909
  245. package/lib/models/room.js.map +1 -1
  246. package/lib/models/search-result.js +5 -5
  247. package/lib/models/search-result.js.map +1 -1
  248. package/lib/models/thread.js +225 -285
  249. package/lib/models/thread.js.map +1 -1
  250. package/lib/models/typed-event-emitter.js +7 -18
  251. package/lib/models/typed-event-emitter.js.map +1 -1
  252. package/lib/models/user.js +8 -8
  253. package/lib/models/user.js.map +1 -1
  254. package/lib/oidc/authorize.js +208 -241
  255. package/lib/oidc/authorize.js.map +1 -1
  256. package/lib/oidc/discovery.js +23 -36
  257. package/lib/oidc/discovery.js.map +1 -1
  258. package/lib/oidc/error.js +1 -1
  259. package/lib/oidc/error.js.map +1 -1
  260. package/lib/oidc/index.js +1 -0
  261. package/lib/oidc/index.js.map +1 -1
  262. package/lib/oidc/register.js +60 -66
  263. package/lib/oidc/register.js.map +1 -1
  264. package/lib/oidc/tokenRefresher.js +77 -91
  265. package/lib/oidc/tokenRefresher.js.map +1 -1
  266. package/lib/oidc/validate.js +18 -18
  267. package/lib/oidc/validate.js.map +1 -1
  268. package/lib/pushprocessor.js +71 -82
  269. package/lib/pushprocessor.js.map +1 -1
  270. package/lib/randomstring.js +9 -9
  271. package/lib/randomstring.js.map +1 -1
  272. package/lib/realtime-callbacks.js +25 -28
  273. package/lib/realtime-callbacks.js.map +1 -1
  274. package/lib/receipt-accumulator.d.ts +2 -0
  275. package/lib/receipt-accumulator.d.ts.map +1 -1
  276. package/lib/receipt-accumulator.js +14 -22
  277. package/lib/receipt-accumulator.js.map +1 -1
  278. package/lib/rendezvous/MSC4108SignInWithQR.js +271 -302
  279. package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -1
  280. package/lib/rendezvous/RendezvousChannel.js +3 -1
  281. package/lib/rendezvous/RendezvousCode.js +3 -1
  282. package/lib/rendezvous/RendezvousError.js.map +1 -1
  283. package/lib/rendezvous/RendezvousFailureReason.js +2 -2
  284. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  285. package/lib/rendezvous/RendezvousIntent.js +1 -1
  286. package/lib/rendezvous/RendezvousIntent.js.map +1 -1
  287. package/lib/rendezvous/RendezvousTransport.js +3 -1
  288. package/lib/rendezvous/channels/MSC4108SecureChannel.js +123 -147
  289. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  290. package/lib/rendezvous/index.js +44 -69
  291. package/lib/rendezvous/index.js.map +1 -1
  292. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +1 -1
  293. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +134 -152
  294. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -1
  295. package/lib/retentionPolicy.js +6 -9
  296. package/lib/retentionPolicy.js.map +1 -1
  297. package/lib/room-hierarchy.js +52 -60
  298. package/lib/room-hierarchy.js.map +1 -1
  299. package/lib/rust-crypto/CrossSigningIdentity.js +94 -104
  300. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
  301. package/lib/rust-crypto/DehydratedDeviceManager.js +157 -190
  302. package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -1
  303. package/lib/rust-crypto/KeyClaimManager.js +18 -22
  304. package/lib/rust-crypto/KeyClaimManager.js.map +1 -1
  305. package/lib/rust-crypto/OutgoingRequestProcessor.js +109 -139
  306. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -1
  307. package/lib/rust-crypto/OutgoingRequestsManager.js +66 -80
  308. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  309. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +1 -1
  310. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +196 -224
  311. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -1
  312. package/lib/rust-crypto/RoomEncryptor.js +127 -143
  313. package/lib/rust-crypto/RoomEncryptor.js.map +1 -1
  314. package/lib/rust-crypto/backup.js +453 -549
  315. package/lib/rust-crypto/backup.js.map +1 -1
  316. package/lib/rust-crypto/constants.js +1 -1
  317. package/lib/rust-crypto/constants.js.map +1 -1
  318. package/lib/rust-crypto/device-converter.js +15 -28
  319. package/lib/rust-crypto/device-converter.js.map +1 -1
  320. package/lib/rust-crypto/index.js +103 -116
  321. package/lib/rust-crypto/index.js.map +1 -1
  322. package/lib/rust-crypto/libolm_migration.js +303 -365
  323. package/lib/rust-crypto/libolm_migration.js.map +1 -1
  324. package/lib/rust-crypto/rust-crypto.d.ts +5 -1
  325. package/lib/rust-crypto/rust-crypto.d.ts.map +1 -1
  326. package/lib/rust-crypto/rust-crypto.js +1067 -1332
  327. package/lib/rust-crypto/rust-crypto.js.map +1 -1
  328. package/lib/rust-crypto/secret-storage.js +12 -25
  329. package/lib/rust-crypto/secret-storage.js.map +1 -1
  330. package/lib/rust-crypto/verification.js +137 -189
  331. package/lib/rust-crypto/verification.js.map +1 -1
  332. package/lib/scheduler.js +44 -19
  333. package/lib/scheduler.js.map +1 -1
  334. package/lib/secret-storage.js +179 -213
  335. package/lib/secret-storage.js.map +1 -1
  336. package/lib/serverCapabilities.js +6 -9
  337. package/lib/serverCapabilities.js.map +1 -1
  338. package/lib/service-types.js +1 -1
  339. package/lib/service-types.js.map +1 -1
  340. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  341. package/lib/sliding-sync-sdk.js +368 -424
  342. package/lib/sliding-sync-sdk.js.map +1 -1
  343. package/lib/sliding-sync.js +135 -171
  344. package/lib/sliding-sync.js.map +1 -1
  345. package/lib/store/index.js +3 -1
  346. package/lib/store/indexeddb-backend.js +3 -1
  347. package/lib/store/indexeddb-local-backend.js +194 -253
  348. package/lib/store/indexeddb-local-backend.js.map +1 -1
  349. package/lib/store/indexeddb-remote-backend.js +33 -63
  350. package/lib/store/indexeddb-remote-backend.js.map +1 -1
  351. package/lib/store/indexeddb-store-worker.js +22 -23
  352. package/lib/store/indexeddb-store-worker.js.map +1 -1
  353. package/lib/store/indexeddb.js +44 -71
  354. package/lib/store/indexeddb.js.map +1 -1
  355. package/lib/store/local-storage-events-emitter.js +2 -2
  356. package/lib/store/local-storage-events-emitter.js.map +1 -1
  357. package/lib/store/memory.js +34 -57
  358. package/lib/store/memory.js.map +1 -1
  359. package/lib/store/stub.js +22 -35
  360. package/lib/store/stub.js.map +1 -1
  361. package/lib/sync-accumulator.js +54 -66
  362. package/lib/sync-accumulator.js.map +1 -1
  363. package/lib/sync.d.ts.map +1 -1
  364. package/lib/sync.js +905 -998
  365. package/lib/sync.js.map +1 -1
  366. package/lib/testing.js +63 -105
  367. package/lib/testing.js.map +1 -1
  368. package/lib/thread-utils.js +1 -4
  369. package/lib/thread-utils.js.map +1 -1
  370. package/lib/timeline-window.js +89 -102
  371. package/lib/timeline-window.js.map +1 -1
  372. package/lib/types.js +1 -1
  373. package/lib/types.js.map +1 -1
  374. package/lib/utils/decryptAESSecretStorageItem.js +14 -25
  375. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
  376. package/lib/utils/encryptAESSecretStorageItem.js +27 -38
  377. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
  378. package/lib/utils/internal/deriveKeys.js +25 -32
  379. package/lib/utils/internal/deriveKeys.js.map +1 -1
  380. package/lib/utils/roomVersion.js +1 -1
  381. package/lib/utils/roomVersion.js.map +1 -1
  382. package/lib/utils.js +83 -135
  383. package/lib/utils.js.map +1 -1
  384. package/lib/version-support.js +3 -3
  385. package/lib/version-support.js.map +1 -1
  386. package/lib/webrtc/audioContext.js +5 -6
  387. package/lib/webrtc/audioContext.js.map +1 -1
  388. package/lib/webrtc/call.js +1081 -1250
  389. package/lib/webrtc/call.js.map +1 -1
  390. package/lib/webrtc/callEventHandler.js +202 -214
  391. package/lib/webrtc/callEventHandler.js.map +1 -1
  392. package/lib/webrtc/callEventTypes.js +2 -2
  393. package/lib/webrtc/callEventTypes.js.map +1 -1
  394. package/lib/webrtc/callFeed.js +18 -20
  395. package/lib/webrtc/callFeed.js.map +1 -1
  396. package/lib/webrtc/groupCall.js +513 -602
  397. package/lib/webrtc/groupCall.js.map +1 -1
  398. package/lib/webrtc/groupCallEventHandler.js +59 -62
  399. package/lib/webrtc/groupCallEventHandler.js.map +1 -1
  400. package/lib/webrtc/mediaHandler.js +198 -232
  401. package/lib/webrtc/mediaHandler.js.map +1 -1
  402. package/lib/webrtc/stats/callFeedStatsReporter.js +16 -20
  403. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  404. package/lib/webrtc/stats/callStatsReportGatherer.js +67 -75
  405. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  406. package/lib/webrtc/stats/callStatsReportSummary.js +3 -1
  407. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  408. package/lib/webrtc/stats/connectionStatsBuilder.js +2 -2
  409. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  410. package/lib/webrtc/stats/connectionStatsReportBuilder.js +20 -24
  411. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  412. package/lib/webrtc/stats/groupCallStats.js +6 -8
  413. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  414. package/lib/webrtc/stats/media/mediaSsrcHandler.js +7 -8
  415. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  416. package/lib/webrtc/stats/media/mediaTrackHandler.js +7 -9
  417. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  418. package/lib/webrtc/stats/media/mediaTrackStats.js +3 -3
  419. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  420. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +7 -7
  421. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  422. package/lib/webrtc/stats/statsReport.js +1 -1
  423. package/lib/webrtc/stats/statsReport.js.map +1 -1
  424. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  425. package/lib/webrtc/stats/summaryStatsReportGatherer.js +14 -14
  426. package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -1
  427. package/lib/webrtc/stats/trackStatsBuilder.js +32 -34
  428. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  429. package/lib/webrtc/stats/transportStats.js +3 -1
  430. package/lib/webrtc/stats/transportStatsBuilder.js +9 -9
  431. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  432. package/lib/webrtc/stats/valueFormatter.js +1 -1
  433. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  434. package/package.json +18 -33
  435. package/src/@types/global.d.ts +2 -2
  436. package/src/ToDeviceMessageQueue.ts +2 -2
  437. package/src/browser-index.ts +4 -4
  438. package/src/client.ts +15 -20
  439. package/src/crypto-api/index.ts +17 -6
  440. package/src/embedded.ts +4 -6
  441. package/src/filter-component.ts +1 -0
  442. package/src/http-api/utils.ts +1 -1
  443. package/src/interactive-auth.ts +11 -5
  444. package/src/matrixrtc/LivekitTransport.ts +1 -1
  445. package/src/matrixrtc/MatrixRTCSession.ts +1 -1
  446. package/src/models/MSC3089Branch.ts +1 -1
  447. package/src/models/room-sticky-events.ts +1 -0
  448. package/src/models/room.ts +9 -11
  449. package/src/receipt-accumulator.ts +2 -0
  450. package/src/rendezvous/index.ts +1 -1
  451. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +2 -2
  452. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +1 -1
  453. package/src/rust-crypto/index.ts +6 -6
  454. package/src/rust-crypto/rust-crypto.ts +31 -7
  455. package/src/rust-crypto/verification.ts +1 -1
  456. package/src/sliding-sync-sdk.ts +5 -7
  457. package/src/store/indexeddb-local-backend.ts +3 -3
  458. package/src/sync.ts +6 -8
@@ -1,8 +1,5 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
3
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
3
  /*
7
4
  Copyright 2023 - 2026 The Matrix.org Foundation C.I.C.
8
5
 
@@ -38,7 +35,7 @@ import { computeSlotId } from "./utils.js";
38
35
  /**
39
36
  * Events emitted by MatrixRTCSession
40
37
  */
41
- export var MatrixRTCSessionEvent = /*#__PURE__*/function (MatrixRTCSessionEvent) {
38
+ export let MatrixRTCSessionEvent = /*#__PURE__*/function (MatrixRTCSessionEvent) {
42
39
  // A member joined, left, or updated a property of their membership.
43
40
  MatrixRTCSessionEvent["MembershipsChanged"] = "memberships_changed";
44
41
  // We joined or left the session: our own local idea of whether we are joined,
@@ -62,7 +59,7 @@ export var MatrixRTCSessionEvent = /*#__PURE__*/function (MatrixRTCSessionEvent)
62
59
  // - we use a `Ms` postfix if the option is a duration to avoid using words like:
63
60
  // `time`, `duration`, `delay`, `timeout`... that might be mistaken/confused with technical terms.
64
61
 
65
- var DEFAULT_SESSION_MEMBERSHIPS_FOR_SLOT_OPTS = {
62
+ const DEFAULT_SESSION_MEMBERSHIPS_FOR_SLOT_OPTS = {
66
63
  listenForStickyEvents: true,
67
64
  listenForMemberStateEvents: true
68
65
  };
@@ -73,16 +70,13 @@ var DEFAULT_SESSION_MEMBERSHIPS_FOR_SLOT_OPTS = {
73
70
  */
74
71
  export class MatrixRTCSession extends TypedEventEmitter {
75
72
  get membershipStatus() {
76
- var _this$membershipManag;
77
- return (_this$membershipManag = this.membershipManager) === null || _this$membershipManag === void 0 ? void 0 : _this$membershipManag.status;
73
+ return this.membershipManager?.status;
78
74
  }
79
75
  get probablyLeft() {
80
- var _this$membershipManag2;
81
- return (_this$membershipManag2 = this.membershipManager) === null || _this$membershipManag2 === void 0 ? void 0 : _this$membershipManag2.probablyLeft;
76
+ return this.membershipManager?.probablyLeft;
82
77
  }
83
78
  get delayId() {
84
- var _this$membershipManag3;
85
- return (_this$membershipManag3 = this.membershipManager) === null || _this$membershipManag3 === void 0 ? void 0 : _this$membershipManag3.delayId;
79
+ return this.membershipManager?.delayId;
86
80
  }
87
81
 
88
82
  /**
@@ -93,8 +87,7 @@ export class MatrixRTCSession extends TypedEventEmitter {
93
87
  * @deprecated use `slotId` instead.
94
88
  */
95
89
  get callId() {
96
- var _this$slotDescription;
97
- return (_this$slotDescription = this.slotDescription) === null || _this$slotDescription === void 0 ? void 0 : _this$slotDescription.id;
90
+ return this.slotDescription?.id;
98
91
  }
99
92
  /**
100
93
  * The slotId of the call.
@@ -112,19 +105,18 @@ export class MatrixRTCSession extends TypedEventEmitter {
112
105
  *
113
106
  * By default, this will return *both* sticky and member state events.
114
107
  */
115
- static sessionMembershipsForSlot(room, slotDescription) {
116
- var _arguments = arguments;
117
- return _asyncToGenerator(function* () {
118
- var options = _arguments.length > 2 && _arguments[2] !== undefined ? _arguments[2] : DEFAULT_SESSION_MEMBERSHIPS_FOR_SLOT_OPTS;
119
- var logger = rootLogger.getChild("[MatrixRTCSession ".concat(room.roomId, " ").concat(slotDescription.application, "#").concat(slotDescription.id, "]"));
120
- var callMemberEvents = collectMembersEvents(room, options, logger);
121
- var callMemberships = yield computeBackendIdentityAndVerifyMemberEvents(room, callMemberEvents, slotDescription, logger);
122
- callMemberships.sort((a, b) => a.createdTs() - b.createdTs());
123
- if (callMemberships.length > 1) {
124
- logger.debug("Call memberships in room ".concat(room.roomId, ", in order: "), callMemberships.map(m => [m.createdTs(), m.userId]));
125
- }
126
- return callMemberships;
127
- })();
108
+ static async sessionMembershipsForSlot(room, slotDescription,
109
+ // default both true this implied we combine sticky and state events for the final call state
110
+ // (prefer sticky events in case of a duplicate)
111
+ options = DEFAULT_SESSION_MEMBERSHIPS_FOR_SLOT_OPTS) {
112
+ const logger = rootLogger.getChild(`[MatrixRTCSession ${room.roomId} ${slotDescription.application}#${slotDescription.id}]`);
113
+ const callMemberEvents = collectMembersEvents(room, options, logger);
114
+ const callMemberships = await computeBackendIdentityAndVerifyMemberEvents(room, callMemberEvents, slotDescription, logger);
115
+ callMemberships.sort((a, b) => a.createdTs() - b.createdTs());
116
+ if (callMemberships.length > 1) {
117
+ logger.debug(`Call memberships in room ${room.roomId}, in order: `, callMemberships.map(m => [m.createdTs(), m.userId]));
118
+ }
119
+ return callMemberships;
128
120
  }
129
121
 
130
122
  /**
@@ -162,13 +154,7 @@ export class MatrixRTCSession extends TypedEventEmitter {
162
154
  * @param calculateMembershipsOpts - Options to configure how memberships are calculated for this session.
163
155
  */
164
156
  constructor(client, roomSubset, slotDescription, calculateMembershipsOpts) {
165
- var _this;
166
157
  super();
167
- _this = this;
168
- this.client = client;
169
- this.roomSubset = roomSubset;
170
- this.slotDescription = slotDescription;
171
- this.calculateMembershipsOpts = calculateMembershipsOpts;
172
158
  _defineProperty(this, "membershipManager", void 0);
173
159
  _defineProperty(this, "encryptionManager", void 0);
174
160
  _defineProperty(this, "joinConfig", void 0);
@@ -222,9 +208,9 @@ export class MatrixRTCSession extends TypedEventEmitter {
222
208
  */
223
209
  // We allow this name schema since this function should only be used for testing purposes.
224
210
  // eslint-disable-next-line @typescript-eslint/naming-convention
225
- _defineProperty(this, "_onRTCSessionMemberUpdate", /*#__PURE__*/_asyncToGenerator(function* () {
226
- yield _this.recalculateSessionMembers();
227
- }));
211
+ _defineProperty(this, "_onRTCSessionMemberUpdate", async () => {
212
+ await this.recalculateSessionMembers();
213
+ });
228
214
  // helper variables to make sure we do not have parallel running recalculations.
229
215
  _defineProperty(this, "recalculateSessionMembersPromise", Promise.resolve());
230
216
  /**
@@ -234,44 +220,45 @@ export class MatrixRTCSession extends TypedEventEmitter {
234
220
  *
235
221
  * This function should be called when the room members or call memberships might have changed.
236
222
  */
237
- _defineProperty(this, "recalculateSessionMembers", /*#__PURE__*/_asyncToGenerator(function* () {
238
- var _this$encryptionManag;
223
+ _defineProperty(this, "recalculateSessionMembers", async () => {
239
224
  // Clear the flag.
240
- _this.membershipNeedsRecalculation = false;
241
- var oldMemberships = _this.memberships;
242
- _this.memberships = yield MatrixRTCSession.sessionMembershipsForSlot(_this.room, _this.slotDescription, _this.calculateMembershipsOpts);
243
- var changed = oldMemberships.length != _this.memberships.length || oldMemberships.some((m, i) => !CallMembership.equal(m, _this.memberships[i]));
225
+ this.membershipNeedsRecalculation = false;
226
+ const oldMemberships = this.memberships;
227
+ this.memberships = await MatrixRTCSession.sessionMembershipsForSlot(this.room, this.slotDescription, this.calculateMembershipsOpts);
228
+ const changed = oldMemberships.length != this.memberships.length || oldMemberships.some((m, i) => !CallMembership.equal(m, this.memberships[i]));
244
229
  if (changed) {
245
- var _this$membershipManag4, _this$membershipManag5;
246
- _this.logger.info("Memberships for call in room ".concat(_this.roomSubset.roomId, " have changed: emitting (").concat(_this.memberships.length, " members)"));
247
- logDurationSync(_this.logger, "emit MatrixRTCSessionEvent.MembershipsChanged", () => {
248
- _this.emit(MatrixRTCSessionEvent.MembershipsChanged, oldMemberships, _this.memberships);
230
+ this.logger.info(`Memberships for call in room ${this.roomSubset.roomId} have changed: emitting (${this.memberships.length} members)`);
231
+ logDurationSync(this.logger, "emit MatrixRTCSessionEvent.MembershipsChanged", () => {
232
+ this.emit(MatrixRTCSessionEvent.MembershipsChanged, oldMemberships, this.memberships);
249
233
  });
250
- void ((_this$membershipManag4 = _this.membershipManager) === null || _this$membershipManag4 === void 0 ? void 0 : _this$membershipManag4.onRTCSessionMemberUpdate(_this.memberships));
234
+ void this.membershipManager?.onRTCSessionMemberUpdate(this.memberships);
251
235
  // The `ownMembership` will be set when calling `onRTCSessionMemberUpdate`.
252
- var ownMembership = (_this$membershipManag5 = _this.membershipManager) === null || _this$membershipManag5 === void 0 ? void 0 : _this$membershipManag5.ownMembership;
253
- if (_this.pendingNotificationToSend && ownMembership && oldMemberships.length === 0) {
254
- var _this$joinConfig;
236
+ const ownMembership = this.membershipManager?.ownMembership;
237
+ if (this.pendingNotificationToSend && ownMembership && oldMemberships.length === 0) {
255
238
  // If we're the first member in the call, we're responsible for
256
239
  // sending the notification event
257
- if (ownMembership.eventId && (_this$joinConfig = _this.joinConfig) !== null && _this$joinConfig !== void 0 && _this$joinConfig.notificationType) {
258
- _this.sendCallNotify(ownMembership.eventId, _this.joinConfig.notificationType, ownMembership.callIntent);
240
+ if (ownMembership.eventId && this.joinConfig?.notificationType) {
241
+ this.sendCallNotify(ownMembership.eventId, this.joinConfig.notificationType, ownMembership.callIntent);
259
242
  } else {
260
- _this.logger.warn("Own membership eventId is undefined, cannot send call notification");
243
+ this.logger.warn("Own membership eventId is undefined, cannot send call notification");
261
244
  }
262
245
  }
263
246
  // If anyone else joins the session it is no longer our responsibility to send the notification.
264
247
  // (If we were the joiner we already did sent the notification in the block above.)
265
- if (_this.memberships.length > 0) _this.pendingNotificationToSend = undefined;
248
+ if (this.memberships.length > 0) this.pendingNotificationToSend = undefined;
266
249
  } else {
267
- _this.logger.debug("No membership changes detected for room ".concat(_this.roomSubset.roomId));
250
+ this.logger.debug(`No membership changes detected for room ${this.roomSubset.roomId}`);
268
251
  }
269
252
  // This also needs to be done if `changed` = false
270
253
  // A member might have updated their fingerprint (created_ts)
271
- void ((_this$encryptionManag = _this.encryptionManager) === null || _this$encryptionManag === void 0 ? void 0 : _this$encryptionManag.onMembershipsUpdate(oldMemberships));
272
- _this.setExpiryTimer();
273
- }));
274
- this.logger = rootLogger.getChild("[MatrixRTCSession ".concat(roomSubset.roomId, " ").concat(slotDescription.application, "#").concat(slotDescription.id, "]"));
254
+ this.encryptionManager?.onMembershipsUpdate(oldMemberships);
255
+ this.setExpiryTimer();
256
+ });
257
+ this.client = client;
258
+ this.roomSubset = roomSubset;
259
+ this.slotDescription = slotDescription;
260
+ this.calculateMembershipsOpts = calculateMembershipsOpts;
261
+ this.logger = rootLogger.getChild(`[MatrixRTCSession ${roomSubset.roomId} ${slotDescription.application}#${slotDescription.id}]`);
275
262
  this.roomSubset.on(RoomStateEvent.Members, this.onRoomMemberUpdate);
276
263
  this.roomSubset.on(RoomStickyEventsEvent.Update, this.onStickyEventUpdate);
277
264
  this.initialMembershipCalculated = this.ensureRecalculateSessionMembers();
@@ -282,25 +269,20 @@ export class MatrixRTCSession extends TypedEventEmitter {
282
269
  * This is determined by checking if the relativeExpiry has been set.
283
270
  */
284
271
  isJoined() {
285
- var _this$membershipManag6, _this$membershipManag7;
286
- return (_this$membershipManag6 = (_this$membershipManag7 = this.membershipManager) === null || _this$membershipManag7 === void 0 ? void 0 : _this$membershipManag7.isJoined()) !== null && _this$membershipManag6 !== void 0 ? _this$membershipManag6 : false;
272
+ return this.membershipManager?.isJoined() ?? false;
287
273
  }
288
274
 
289
275
  /**
290
276
  * Performs cleanup & removes timers for client shutdown
291
277
  */
292
- stop() {
293
- var _this2 = this;
294
- return _asyncToGenerator(function* () {
295
- var _this2$membershipMana;
296
- yield (_this2$membershipMana = _this2.membershipManager) === null || _this2$membershipMana === void 0 ? void 0 : _this2$membershipMana.leave(1000);
297
- if (_this2.expiryTimeout) {
298
- clearTimeout(_this2.expiryTimeout);
299
- _this2.expiryTimeout = undefined;
300
- }
301
- _this2.roomSubset.off(RoomStateEvent.Members, _this2.onRoomMemberUpdate);
302
- _this2.roomSubset.off(RoomStickyEventsEvent.Update, _this2.onStickyEventUpdate);
303
- })();
278
+ async stop() {
279
+ await this.membershipManager?.leave(1000);
280
+ if (this.expiryTimeout) {
281
+ clearTimeout(this.expiryTimeout);
282
+ this.expiryTimeout = undefined;
283
+ }
284
+ this.roomSubset.off(RoomStateEvent.Members, this.onRoomMemberUpdate);
285
+ this.roomSubset.off(RoomStickyEventsEvent.Update, this.onStickyEventUpdate);
304
286
  }
305
287
  /**
306
288
  * Announces this user and device as joined to the MatrixRTC session,
@@ -319,26 +301,22 @@ export class MatrixRTCSession extends TypedEventEmitter {
319
301
  * @param joinConfig - Additional configuration for the joined session.
320
302
  */
321
303
  joinRTCSession(ownMembershipIdentity, fociPreferred, multiSfuFocus, joinConfig) {
322
- var _this$joinConfig2;
323
304
  if (this.isJoined()) {
324
- this.logger.info("Already joined to session in room ".concat(this.roomSubset.roomId, ": ignoring join call"));
305
+ this.logger.info(`Already joined to session in room ${this.roomSubset.roomId}: ignoring join call`);
325
306
  return;
326
307
  } else {
327
308
  // Create MembershipManager and pass the RTCSession logger (with room id info)
328
- this.membershipManager = joinConfig !== null && joinConfig !== void 0 && joinConfig.unstableSendStickyEvents ? new StickyEventMembershipManager(joinConfig, this.roomSubset, this.client, this.slotDescription, ownMembershipIdentity.memberId, this.logger) : new MembershipManager(joinConfig, this.roomSubset, this.client, this.slotDescription, this.logger);
309
+ this.membershipManager = joinConfig?.unstableSendStickyEvents ? new StickyEventMembershipManager(joinConfig, this.roomSubset, this.client, this.slotDescription, ownMembershipIdentity.memberId, this.logger) : new MembershipManager(joinConfig, this.roomSubset, this.client, this.slotDescription, this.logger);
329
310
  this.reEmitter.reEmit(this.membershipManager, [MembershipManagerEvent.ProbablyLeft, MembershipManagerEvent.StatusChanged, MembershipManagerEvent.DelayIdChanged]);
330
311
  // Create Encryption manager
331
- var _ref3 = [this.roomSubset, this.client, this.statistics],
332
- room = _ref3[0],
333
- _client = _ref3[1],
334
- statistics = _ref3[2];
335
- var transport = new ToDeviceKeyTransport(ownMembershipIdentity, room.roomId, _client, statistics);
312
+ const [room, client, statistics] = [this.roomSubset, this.client, this.statistics];
313
+ const transport = new ToDeviceKeyTransport(ownMembershipIdentity, room.roomId, client, statistics);
336
314
  this.encryptionManager = new RTCEncryptionManager(ownMembershipIdentity, () => this.memberships, transport, (keyBin, encryptionKeyIndex, membership, rtcBackendIdentity) => {
337
315
  this.emit(MatrixRTCSessionEvent.EncryptionKeyChanged, keyBin, encryptionKeyIndex, membership, rtcBackendIdentity);
338
316
  }, this.logger);
339
317
  }
340
318
  this.joinConfig = joinConfig;
341
- this.pendingNotificationToSend = (_this$joinConfig2 = this.joinConfig) === null || _this$joinConfig2 === void 0 ? void 0 : _this$joinConfig2.notificationType;
319
+ this.pendingNotificationToSend = this.joinConfig?.notificationType;
342
320
 
343
321
  // Join!
344
322
  this.membershipManager.join(fociPreferred, multiSfuFocus, e => {
@@ -358,10 +336,9 @@ export class MatrixRTCSession extends TypedEventEmitter {
358
336
  * @deprecated use the joinRTCSession method instead
359
337
  */
360
338
  joinRoomSession(fociPreferred, multiSfuFocus, joinConfig) {
361
- var userId = this.client.getUserId(),
362
- deviceId = this.client.getDeviceId();
339
+ const [userId, deviceId] = [this.client.getUserId(), this.client.getDeviceId()];
363
340
  // TODO this wants to become a UUID
364
- var memberId = "".concat(userId, ":").concat(deviceId);
341
+ const memberId = `${userId}:${deviceId}`;
365
342
  this.joinRTCSession({
366
343
  userId,
367
344
  deviceId,
@@ -379,21 +356,16 @@ export class MatrixRTCSession extends TypedEventEmitter {
379
356
  * A timeout can be provided so that there is a guarantee for the promise to resolve.
380
357
  * @returns Whether the membership update was attempted and did not time out.
381
358
  */
382
- leaveRoomSession() {
383
- var _arguments2 = arguments,
384
- _this3 = this;
385
- return _asyncToGenerator(function* () {
386
- var timeout = _arguments2.length > 0 && _arguments2[0] !== undefined ? _arguments2[0] : undefined;
387
- if (!_this3.isJoined()) {
388
- _this3.logger.info("Not joined to session in room ".concat(_this3.roomSubset.roomId, ": ignoring leave call"));
389
- return false;
390
- }
391
- _this3.logger.info("Leaving call session in room ".concat(_this3.roomSubset.roomId));
392
- _this3.encryptionManager.leave();
393
- var leavePromise = _this3.membershipManager.leave(timeout);
394
- _this3.emit(MatrixRTCSessionEvent.JoinStateChanged, false);
395
- return yield leavePromise;
396
- })();
359
+ async leaveRoomSession(timeout = undefined) {
360
+ if (!this.isJoined()) {
361
+ this.logger.info(`Not joined to session in room ${this.roomSubset.roomId}: ignoring leave call`);
362
+ return false;
363
+ }
364
+ this.logger.info(`Leaving call session in room ${this.roomSubset.roomId}`);
365
+ this.encryptionManager.leave();
366
+ const leavePromise = this.membershipManager.leave(timeout);
367
+ this.emit(MatrixRTCSessionEvent.JoinStateChanged, false);
368
+ return await leavePromise;
397
369
  }
398
370
  /**
399
371
  * This returns the focus in use by the oldest membership.
@@ -401,8 +373,8 @@ export class MatrixRTCSession extends TypedEventEmitter {
401
373
  * @deprecated use `member.getTransport(session.getOldestMembership())` instead for the specific member you want to get the focus for.
402
374
  */
403
375
  getFocusInUse() {
404
- var oldestMembership = this.getOldestMembership();
405
- return oldestMembership === null || oldestMembership === void 0 ? void 0 : oldestMembership.getTransport(oldestMembership);
376
+ const oldestMembership = this.getOldestMembership();
377
+ return oldestMembership?.getTransport(oldestMembership);
406
378
  }
407
379
  getOldestMembership() {
408
380
  return this.memberships[0];
@@ -416,8 +388,7 @@ export class MatrixRTCSession extends TypedEventEmitter {
416
388
  * @returns A call intent, or `undefined` if no consensus or not given.
417
389
  */
418
390
  getConsensusCallIntent() {
419
- var _this$memberships$fin;
420
- var getFirstCallIntent = (_this$memberships$fin = this.memberships.find(m => !!m.callIntent)) === null || _this$memberships$fin === void 0 ? void 0 : _this$memberships$fin.callIntent;
391
+ const getFirstCallIntent = this.memberships.find(m => !!m.callIntent)?.callIntent;
421
392
  if (!getFirstCallIntent) {
422
393
  return undefined;
423
394
  }
@@ -426,16 +397,12 @@ export class MatrixRTCSession extends TypedEventEmitter {
426
397
  }
427
398
  return undefined;
428
399
  }
429
- updateCallIntent(callIntent) {
430
- var _this4 = this;
431
- return _asyncToGenerator(function* () {
432
- var _this4$membershipMana, _this4$membershipMana2;
433
- var myMembership = (_this4$membershipMana = _this4.membershipManager) === null || _this4$membershipMana === void 0 ? void 0 : _this4$membershipMana.ownMembership;
434
- if (!myMembership) {
435
- throw Error("Not connected yet");
436
- }
437
- yield (_this4$membershipMana2 = _this4.membershipManager) === null || _this4$membershipMana2 === void 0 ? void 0 : _this4$membershipMana2.updateCallIntent(callIntent);
438
- })();
400
+ async updateCallIntent(callIntent) {
401
+ const myMembership = this.membershipManager?.ownMembership;
402
+ if (!myMembership) {
403
+ throw Error("Not connected yet");
404
+ }
405
+ await this.membershipManager?.updateCallIntent(callIntent);
439
406
  }
440
407
 
441
408
  /**
@@ -443,8 +410,7 @@ export class MatrixRTCSession extends TypedEventEmitter {
443
410
  * the keys.
444
411
  */
445
412
  reemitEncryptionKeys() {
446
- var _this$encryptionManag2;
447
- (_this$encryptionManag2 = this.encryptionManager) === null || _this$encryptionManag2 === void 0 || _this$encryptionManag2.getEncryptionKeys().forEach((keyRing, key) => {
413
+ this.encryptionManager?.getEncryptionKeys().forEach((keyRing, key) => {
448
414
  keyRing.forEach(keyInfo => {
449
415
  this.emit(MatrixRTCSessionEvent.EncryptionKeyChanged, keyInfo.key, keyInfo.keyIndex, keyInfo.membership, keyInfo.rtcBackendIdentity);
450
416
  });
@@ -459,9 +425,9 @@ export class MatrixRTCSession extends TypedEventEmitter {
459
425
  clearTimeout(this.expiryTimeout);
460
426
  this.expiryTimeout = undefined;
461
427
  }
462
- var soonestExpiry;
463
- for (var membership of this.memberships) {
464
- var thisExpiry = membership.getMsUntilExpiry();
428
+ let soonestExpiry;
429
+ for (const membership of this.memberships) {
430
+ const thisExpiry = membership.getMsUntilExpiry();
465
431
  // If getMsUntilExpiry is undefined we have a MSC4143 (MatrixRTC) compliant event - it never expires
466
432
  // but will be reliably resent on disconnect.
467
433
  if (thisExpiry !== undefined && (soonestExpiry === undefined || thisExpiry < soonestExpiry)) {
@@ -481,45 +447,34 @@ export class MatrixRTCSession extends TypedEventEmitter {
481
447
  * @param callIntent The type of call this is (e.g. "audio").
482
448
  */
483
449
  sendCallNotify(parentEventId, notificationType, callIntent) {
484
- var _this5 = this;
485
- var sendNotificationEvent = /*#__PURE__*/function () {
486
- var _ref4 = _asyncToGenerator(function* () {
487
- var content = {
488
- "m.mentions": {
489
- user_ids: [],
490
- room: true
491
- },
492
- "notification_type": notificationType,
493
- "m.relates_to": {
494
- event_id: parentEventId,
495
- rel_type: RelationType.Reference
496
- },
497
- "sender_ts": Date.now(),
498
- "lifetime": 30000 // 30 seconds
499
- };
500
- if (callIntent) {
501
- content["m.call.intent"] = callIntent;
502
- }
503
- var response = yield _this5.client.sendEvent(_this5.roomSubset.roomId, EventType.RTCNotification, content);
504
- return {
505
- response,
506
- content
507
- };
508
- });
509
- return function sendNotificationEvent() {
510
- return _ref4.apply(this, arguments);
450
+ const sendNotificationEvent = async () => {
451
+ const content = {
452
+ "m.mentions": {
453
+ user_ids: [],
454
+ room: true
455
+ },
456
+ "notification_type": notificationType,
457
+ "m.relates_to": {
458
+ event_id: parentEventId,
459
+ rel_type: RelationType.Reference
460
+ },
461
+ "sender_ts": Date.now(),
462
+ "lifetime": 30000 // 30 seconds
463
+ };
464
+ if (callIntent) {
465
+ content["m.call.intent"] = callIntent;
466
+ }
467
+ const response = await this.client.sendEvent(this.roomSubset.roomId, EventType.RTCNotification, content);
468
+ return {
469
+ response,
470
+ content
511
471
  };
512
- }();
472
+ };
513
473
  void sendNotificationEvent().then(notification => {
514
474
  // Join event_id and origin event content
515
- var newResult = _objectSpread(_objectSpread({}, notification.response), notification.content);
475
+ const newResult = _objectSpread(_objectSpread({}, notification.response), notification.content);
516
476
  this.emit(MatrixRTCSessionEvent.DidSendCallNotification, newResult);
517
- }).catch(_ref5 => {
518
- var _ref6 = _slicedToArray(_ref5, 2),
519
- errorLegacy = _ref6[0],
520
- errorNew = _ref6[1];
521
- return this.logger.error("Failed to send call notification", errorLegacy, errorNew);
522
- });
477
+ }).catch(([errorLegacy, errorNew]) => this.logger.error("Failed to send call notification", errorLegacy, errorNew));
523
478
  }
524
479
  /**
525
480
  * Ensures that membership is recalculated when the state of the session may have changed.
@@ -539,35 +494,29 @@ export class MatrixRTCSession extends TypedEventEmitter {
539
494
  }
540
495
 
541
496
  /// Private helpers
542
- function computeBackendIdentityAndVerifyMemberEvents(_x, _x2, _x3, _x4) {
543
- return _computeBackendIdentityAndVerifyMemberEvents.apply(this, arguments);
544
- }
545
- function _computeBackendIdentityAndVerifyMemberEvents() {
546
- _computeBackendIdentityAndVerifyMemberEvents = _asyncToGenerator(function* (room, callMemberEvents, slotDescription, logger) {
547
- var callMemberships = [];
548
- for (var memberEvent of callMemberEvents) {
549
- var content = memberEvent.getContent();
497
+ async function computeBackendIdentityAndVerifyMemberEvents(room, callMemberEvents, slotDescription, logger) {
498
+ const callMemberships = [];
499
+ for (const memberEvent of callMemberEvents) {
500
+ const content = memberEvent.getContent();
550
501
 
551
- // Quick filter to avoid unneeded processing of invalid events or left events.
552
- if (!quickFilterNonRelevantContents(content, logger)) {
553
- continue;
554
- }
555
- try {
556
- var membership = yield CallMembership.parseFromEvent(memberEvent);
557
- if (isValidMembership(membership, room, slotDescription, logger)) {
558
- callMemberships.push(membership);
559
- }
560
- } catch (e) {
561
- logger.warn("Couldn't construct call membership: ", e);
502
+ // Quick filter to avoid unneeded processing of invalid events or left events.
503
+ if (!quickFilterNonRelevantContents(content, logger)) {
504
+ continue;
505
+ }
506
+ try {
507
+ const membership = await CallMembership.parseFromEvent(memberEvent);
508
+ if (isValidMembership(membership, room, slotDescription, logger)) {
509
+ callMemberships.push(membership);
562
510
  }
511
+ } catch (e) {
512
+ logger.warn("Couldn't construct call membership: ", e);
563
513
  }
564
- return callMemberships;
565
- });
566
- return _computeBackendIdentityAndVerifyMemberEvents.apply(this, arguments);
514
+ }
515
+ return callMemberships;
567
516
  }
568
517
  function quickFilterNonRelevantContents(content, logger) {
569
518
  // Ignore sticky keys for the count
570
- var eventKeysCount = Object.keys(content).filter(k => k !== "msc4354_sticky_key").length;
519
+ const eventKeysCount = Object.keys(content).filter(k => k !== "msc4354_sticky_key").length;
571
520
  // Don't even bother about empty events (saves us from costly type/"key in" checks in bigger rooms)
572
521
  if (eventKeysCount === 0) return false;
573
522
 
@@ -585,17 +534,16 @@ function quickFilterNonRelevantContents(content, logger) {
585
534
  }
586
535
  }
587
536
  function isValidMembership(membership, room, slotDescription, logger) {
588
- var _membership$userId;
589
537
  if (membership.slotDescription.id !== slotDescription.id) {
590
- logger.info("Ignoring membership of user ".concat(membership.userId, " for a different slot. Theirs: ").concat(JSON.stringify(membership.slotDescription), ", Expected: ").concat(JSON.stringify(slotDescription)));
538
+ logger.info(`Ignoring membership of user ${membership.userId} for a different slot. Theirs: ${JSON.stringify(membership.slotDescription)}, Expected: ${JSON.stringify(slotDescription)}`);
591
539
  return false;
592
540
  }
593
541
  if (membership.isExpired()) {
594
- logger.info("Ignoring expired device membership ".concat(membership.userId, "/").concat(membership.deviceId));
542
+ logger.info(`Ignoring expired device membership ${membership.userId}/${membership.deviceId}`);
595
543
  return false;
596
544
  }
597
- if (!room.hasMembershipState((_membership$userId = membership.userId) !== null && _membership$userId !== void 0 ? _membership$userId : "", KnownMembership.Join)) {
598
- logger.info("Ignoring membership of user ".concat(membership.userId, " who is not in the room."));
545
+ if (!room.hasMembershipState(membership.userId ?? "", KnownMembership.Join)) {
546
+ logger.info(`Ignoring membership of user ${membership.userId} who is not in the room.`);
599
547
  return false;
600
548
  }
601
549
  return true;
@@ -605,20 +553,22 @@ function isValidMembership(membership, room, slotDescription, logger) {
605
553
  * Collects the raw member events from room state and sticky store.
606
554
  */
607
555
  function collectMembersEvents(room, options, logger) {
608
- var listenForStickyEvents = options.listenForStickyEvents,
609
- listenForMemberStateEvents = options.listenForMemberStateEvents;
610
- var callMemberEvents = [];
556
+ const {
557
+ listenForStickyEvents,
558
+ listenForMemberStateEvents
559
+ } = options;
560
+ let callMemberEvents = [];
611
561
  if (listenForStickyEvents) {
612
562
  // prefill with sticky events
613
563
  callMemberEvents = [...room._unstable_getStickyEvents()].filter(e => e.getType() === EventType.RTCMembership);
614
564
  }
615
565
  if (listenForMemberStateEvents) {
616
- var roomState = room.getLiveTimeline().getState(EventTimeline.FORWARDS);
566
+ const roomState = room.getLiveTimeline().getState(EventTimeline.FORWARDS);
617
567
  if (!roomState) {
618
568
  logger.warn("Couldn't get state for room " + room.roomId + "using empty membership array");
619
569
  return [];
620
570
  }
621
- var callMemberStateEvents = roomState.getStateEvents(EventType.GroupCallMemberPrefix);
571
+ const callMemberStateEvents = roomState.getStateEvents(EventType.GroupCallMemberPrefix);
622
572
  callMemberEvents = callMemberEvents.concat(callMemberStateEvents.filter(callMemberStateEvent => !callMemberEvents.some(
623
573
  // only care about state events which have keys which we have not yet seen in the sticky events.
624
574
  // TODO: I believe this can discard a joined state event if there is a matching left sticky event.