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,4 +1,3 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  /*
4
3
  Copyright 2015 - 2021 The Matrix.org Foundation C.I.C.
@@ -35,7 +34,7 @@ var OobStatus = /*#__PURE__*/function (OobStatus) {
35
34
  OobStatus[OobStatus["Finished"] = 2] = "Finished";
36
35
  return OobStatus;
37
36
  }(OobStatus || {});
38
- export var RoomStateEvent = /*#__PURE__*/function (RoomStateEvent) {
37
+ export let RoomStateEvent = /*#__PURE__*/function (RoomStateEvent) {
39
38
  RoomStateEvent["Events"] = "RoomState.events";
40
39
  RoomStateEvent["Members"] = "RoomState.members";
41
40
  RoomStateEvent["NewMember"] = "RoomState.newMember";
@@ -74,13 +73,10 @@ export class RoomState extends TypedEventEmitter {
74
73
  * and shared when the room state is cloned for the new timeline.
75
74
  * This should only be passed from clone.
76
75
  */
77
- constructor(roomId) {
78
- var oobMemberFlags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
79
- status: OobStatus.NotStarted
80
- };
76
+ constructor(roomId, oobMemberFlags = {
77
+ status: OobStatus.NotStarted
78
+ }) {
81
79
  super();
82
- this.roomId = roomId;
83
- this.oobMemberFlags = oobMemberFlags;
84
80
  _defineProperty(this, "reEmitter", new TypedReEmitter(this));
85
81
  _defineProperty(this, "sentinels", {});
86
82
  // userId: RoomMember
@@ -114,6 +110,8 @@ export class RoomState extends TypedEventEmitter {
114
110
  _defineProperty(this, "_liveBeaconIds", []);
115
111
  // We only wants to print warnings about bad room state once.
116
112
  _defineProperty(this, "getVersionWarning", false);
113
+ this.roomId = roomId;
114
+ this.oobMemberFlags = oobMemberFlags;
117
115
  this.updateModifiedTime();
118
116
  }
119
117
 
@@ -122,8 +120,7 @@ export class RoomState extends TypedEventEmitter {
122
120
  * @returns The version of the room
123
121
  */
124
122
  getRoomVersion() {
125
- var _createEvent$getConte;
126
- var createEvent = this.getStateEvents(EventType.RoomCreate, "");
123
+ const createEvent = this.getStateEvents(EventType.RoomCreate, "");
127
124
  if (!createEvent) {
128
125
  if (!this.getVersionWarning) {
129
126
  logger.warn("[getVersion] Room " + this.roomId + " does not have an m.room.create event");
@@ -131,7 +128,7 @@ export class RoomState extends TypedEventEmitter {
131
128
  }
132
129
  return "1";
133
130
  }
134
- return (_createEvent$getConte = createEvent.getContent()["room_version"]) !== null && _createEvent$getConte !== void 0 ? _createEvent$getConte : "1";
131
+ return createEvent.getContent()["room_version"] ?? "1";
135
132
  }
136
133
 
137
134
  /**
@@ -220,11 +217,11 @@ export class RoomState extends TypedEventEmitter {
220
217
  */
221
218
  getSentinelMember(userId) {
222
219
  if (!userId) return null;
223
- var sentinel = this.sentinels[userId];
220
+ let sentinel = this.sentinels[userId];
224
221
  if (sentinel === undefined) {
225
222
  sentinel = new RoomMember(this.roomId, userId);
226
- var member = this.members[userId];
227
- if (member !== null && member !== void 0 && member.events.member) {
223
+ const member = this.members[userId];
224
+ if (member?.events.member) {
228
225
  sentinel.setMembershipEvent(member.events.member, this);
229
226
  }
230
227
  this.sentinels[userId] = sentinel;
@@ -254,12 +251,11 @@ export class RoomState extends TypedEventEmitter {
254
251
  // return all values
255
252
  return Array.from(this.events.get(eventType).values());
256
253
  }
257
- var event = this.events.get(eventType).get(stateKey);
254
+ const event = this.events.get(eventType).get(stateKey);
258
255
  return event ? event : null;
259
256
  }
260
257
  get hasLiveBeacons() {
261
- var _this$liveBeaconIds;
262
- return !!((_this$liveBeaconIds = this.liveBeaconIds) !== null && _this$liveBeaconIds !== void 0 && _this$liveBeaconIds.length);
258
+ return !!this.liveBeaconIds?.length;
263
259
  }
264
260
  get liveBeaconIds() {
265
261
  return this._liveBeaconIds;
@@ -270,7 +266,7 @@ export class RoomState extends TypedEventEmitter {
270
266
  * @returns the copy of the room state
271
267
  */
272
268
  clone() {
273
- var copy = new RoomState(this.roomId, this.oobMemberFlags);
269
+ const copy = new RoomState(this.roomId, this.oobMemberFlags);
274
270
 
275
271
  // Ugly hack: because setStateEvents will mark
276
272
  // members as susperseding future out of bound members
@@ -278,7 +274,7 @@ export class RoomState extends TypedEventEmitter {
278
274
  // since these are not new members, we're merely copying them
279
275
  // set the status to not started
280
276
  // after copying, we set back the status
281
- var status = this.oobMemberFlags.status;
277
+ const status = this.oobMemberFlags.status;
282
278
  this.oobMemberFlags.status = OobStatus.NotStarted;
283
279
  Array.from(this.events.values()).forEach(eventsByStateKey => {
284
280
  copy.setStateEvents(Array.from(eventsByStateKey.values()));
@@ -298,8 +294,7 @@ export class RoomState extends TypedEventEmitter {
298
294
  // copy markOutOfBand flags
299
295
  this.getMembers().forEach(member => {
300
296
  if (member.isOutOfBand()) {
301
- var _copy$getMember;
302
- (_copy$getMember = copy.getMember(member.userId)) === null || _copy$getMember === void 0 || _copy$getMember.markOutOfBand();
297
+ copy.getMember(member.userId)?.markOutOfBand();
303
298
  }
304
299
  });
305
300
  }
@@ -314,7 +309,7 @@ export class RoomState extends TypedEventEmitter {
314
309
  * @param events - state events to prepend
315
310
  */
316
311
  setUnknownStateEvents(events) {
317
- var unknownStateEvents = events.filter(event => {
312
+ const unknownStateEvents = events.filter(event => {
318
313
  return !this.events.has(event.getType()) || !this.events.get(event.getType()).has(event.getStateKey());
319
314
  });
320
315
  this.setStateEvents(unknownStateEvents);
@@ -339,30 +334,29 @@ export class RoomState extends TypedEventEmitter {
339
334
 
340
335
  // update the core event dict
341
336
  // Track display names that change so we can recalculate disambiguation
342
- var affectedDisplayNames = new Set();
337
+ const affectedDisplayNames = new Set();
343
338
  // Track userIds whose membership events we process so we don't emit duplicate events
344
- var processedMemberUserIds = new Set();
339
+ const processedMemberUserIds = new Set();
345
340
  stateEvents.forEach(event => {
346
341
  if (event.getRoomId() !== this.roomId || !event.isState()) return;
347
342
  if (M_BEACON_INFO.matches(event.getType())) {
348
343
  this.setBeacon(event);
349
344
  }
350
- var lastStateEvent = this.getStateEventMatching(event);
345
+ const lastStateEvent = this.getStateEventMatching(event);
351
346
  this.setStateEvent(event);
352
347
  if (event.getType() === EventType.RoomMember) {
353
- var _event$getContent$dis;
354
- var userId = event.getStateKey();
348
+ const userId = event.getStateKey();
355
349
  processedMemberUserIds.add(userId);
356
- var newDisplayName = (_event$getContent$dis = event.getContent().displayname) !== null && _event$getContent$dis !== void 0 ? _event$getContent$dis : "";
357
- var oldDisplayName = this.userIdsToDisplayNames[userId];
350
+ const newDisplayName = event.getContent().displayname ?? "";
351
+ const oldDisplayName = this.userIdsToDisplayNames[userId];
358
352
 
359
353
  // Track both old and new display names for disambiguation recalculation
360
354
  if (oldDisplayName) {
361
- var strippedOld = removeHiddenChars(oldDisplayName);
355
+ const strippedOld = removeHiddenChars(oldDisplayName);
362
356
  if (strippedOld) affectedDisplayNames.add(strippedOld);
363
357
  }
364
358
  if (newDisplayName) {
365
- var strippedNew = removeHiddenChars(newDisplayName);
359
+ const strippedNew = removeHiddenChars(newDisplayName);
366
360
  if (strippedNew) affectedDisplayNames.add(strippedNew);
367
361
  }
368
362
  this.updateDisplayNameCache(userId, newDisplayName);
@@ -378,7 +372,7 @@ export class RoomState extends TypedEventEmitter {
378
372
  stateEvents.forEach(event => {
379
373
  if (event.getRoomId() !== this.roomId || !event.isState()) return;
380
374
  if (event.getType() === EventType.RoomMember) {
381
- var userId = event.getStateKey();
375
+ const userId = event.getStateKey();
382
376
 
383
377
  // leave events apparently elide the displayname or avatar_url,
384
378
  // so let's fake one up so that we don't leak user ids
@@ -387,7 +381,7 @@ export class RoomState extends TypedEventEmitter {
387
381
  event.getContent().avatar_url = event.getContent().avatar_url || event.getPrevContent().avatar_url;
388
382
  event.getContent().displayname = event.getContent().displayname || event.getPrevContent().displayname;
389
383
  }
390
- var member = this.getOrCreateMember(userId, event);
384
+ const member = this.getOrCreateMember(userId, event);
391
385
  member.setMembershipEvent(event, this);
392
386
  this.updateMember(member);
393
387
  this.emit(RoomStateEvent.Members, event, this, member);
@@ -397,16 +391,16 @@ export class RoomState extends TypedEventEmitter {
397
391
  if (event.getStateKey() !== "") {
398
392
  return;
399
393
  }
400
- var members = Object.values(this.members);
401
- var createEvent = this.getStateEvents(EventType.RoomCreate, "");
402
- var creators = getCreators(this.getRoomVersion(), createEvent);
394
+ const members = Object.values(this.members);
395
+ const createEvent = this.getStateEvents(EventType.RoomCreate, "");
396
+ const creators = getCreators(this.getRoomVersion(), createEvent);
403
397
  members.forEach(member => {
404
398
  // We only propagate `RoomState.members` event if the
405
399
  // power levels has been changed
406
400
  // large room suffer from large re-rendering especially when not needed
407
- var oldLastModified = member.getLastModifiedTime();
401
+ const oldLastModified = member.getLastModifiedTime();
408
402
  if (createEvent) {
409
- var pl = powerLevelForUserId(member.userId, event, creators);
403
+ const pl = powerLevelForUserId(member.userId, event, creators);
410
404
  member.setPowerLevel(pl, event);
411
405
  }
412
406
  if (oldLastModified !== member.getLastModifiedTime()) {
@@ -426,22 +420,21 @@ export class RoomState extends TypedEventEmitter {
426
420
  // another user, all affected users' disambiguation flags are updated correctly.
427
421
  if (affectedDisplayNames.size > 0) {
428
422
  // Collect all affected user IDs first to avoid duplicate processing
429
- var affectedUserIds = new Set();
430
- for (var displayName of affectedDisplayNames) {
431
- var _this$displayNameToUs;
432
- var userIds = (_this$displayNameToUs = this.displayNameToUserIds.get(displayName)) !== null && _this$displayNameToUs !== void 0 ? _this$displayNameToUs : [];
423
+ const affectedUserIds = new Set();
424
+ for (const displayName of affectedDisplayNames) {
425
+ const userIds = this.displayNameToUserIds.get(displayName) ?? [];
433
426
  userIds.forEach(id => affectedUserIds.add(id));
434
427
  }
435
428
 
436
429
  // Process each affected member once, excluding those whose membership
437
430
  // events were already processed (they already got their events emitted)
438
- for (var userId of affectedUserIds) {
431
+ for (const userId of affectedUserIds) {
439
432
  if (processedMemberUserIds.has(userId)) {
440
433
  continue;
441
434
  }
442
- var member = this.members[userId];
443
- if (member !== null && member !== void 0 && member.events.member) {
444
- var nameChanged = member.recalculateDisambiguatedName(this);
435
+ const member = this.members[userId];
436
+ if (member?.events.member) {
437
+ const nameChanged = member.recalculateDisambiguatedName(this);
445
438
  if (nameChanged) {
446
439
  this.emit(RoomStateEvent.Members, member.events.member, this, member);
447
440
  }
@@ -450,55 +443,42 @@ export class RoomState extends TypedEventEmitter {
450
443
  }
451
444
  this.emit(RoomStateEvent.Update, this);
452
445
  }
453
- processBeaconEvents(events, matrixClient) {
454
- var _this = this;
455
- return _asyncToGenerator(function* () {
456
- if (!events.length ||
457
- // discard locations if we have no beacons
458
- !_this.beacons.size) {
446
+ async processBeaconEvents(events, matrixClient) {
447
+ if (!events.length ||
448
+ // discard locations if we have no beacons
449
+ !this.beacons.size) {
450
+ return;
451
+ }
452
+ const beaconByEventIdDict = [...this.beacons.values()].reduce((dict, beacon) => {
453
+ dict[beacon.beaconInfoId] = beacon;
454
+ return dict;
455
+ }, {});
456
+ const processBeaconRelation = (beaconInfoEventId, event) => {
457
+ if (!M_BEACON.matches(event.getType())) {
459
458
  return;
460
459
  }
461
- var beaconByEventIdDict = [..._this.beacons.values()].reduce((dict, beacon) => {
462
- dict[beacon.beaconInfoId] = beacon;
463
- return dict;
464
- }, {});
465
- var processBeaconRelation = (beaconInfoEventId, event) => {
466
- if (!M_BEACON.matches(event.getType())) {
467
- return;
468
- }
469
- var beacon = beaconByEventIdDict[beaconInfoEventId];
470
- if (beacon) {
471
- beacon.addLocations([event]);
472
- }
473
- };
474
- var _loop = function* _loop(event) {
475
- var _event$getRelation;
476
- var relatedToEventId = (_event$getRelation = event.getRelation()) === null || _event$getRelation === void 0 ? void 0 : _event$getRelation.event_id;
477
- // not related to a beacon we know about; discard
478
- if (!relatedToEventId || !beaconByEventIdDict[relatedToEventId]) return {
479
- v: void 0
480
- };
481
- if (!M_BEACON.matches(event.getType()) && !event.isEncrypted()) return {
482
- v: void 0
483
- };
484
- try {
485
- yield matrixClient.decryptEventIfNeeded(event);
460
+ const beacon = beaconByEventIdDict[beaconInfoEventId];
461
+ if (beacon) {
462
+ beacon.addLocations([event]);
463
+ }
464
+ };
465
+ for (const event of events) {
466
+ const relatedToEventId = event.getRelation()?.event_id;
467
+ // not related to a beacon we know about; discard
468
+ if (!relatedToEventId || !beaconByEventIdDict[relatedToEventId]) return;
469
+ if (!M_BEACON.matches(event.getType()) && !event.isEncrypted()) return;
470
+ try {
471
+ await matrixClient.decryptEventIfNeeded(event);
472
+ processBeaconRelation(relatedToEventId, event);
473
+ } catch {
474
+ if (event.isDecryptionFailure()) {
475
+ // add an event listener for once the event is decrypted.
476
+ event.once(MatrixEventEvent.Decrypted, async () => {
486
477
  processBeaconRelation(relatedToEventId, event);
487
- } catch (_unused) {
488
- if (event.isDecryptionFailure()) {
489
- // add an event listener for once the event is decrypted.
490
- event.once(MatrixEventEvent.Decrypted, /*#__PURE__*/_asyncToGenerator(function* () {
491
- processBeaconRelation(relatedToEventId, event);
492
- }));
493
- }
494
- }
495
- },
496
- _ret;
497
- for (var event of events) {
498
- _ret = yield* _loop(event);
499
- if (_ret) return _ret.v;
478
+ });
479
+ }
500
480
  }
501
- })();
481
+ }
502
482
  }
503
483
 
504
484
  /**
@@ -514,7 +494,7 @@ export class RoomState extends TypedEventEmitter {
514
494
  * Fires {@link RoomStateEvent.NewMember}
515
495
  */
516
496
  getOrCreateMember(userId, event) {
517
- var member = this.members[userId];
497
+ let member = this.members[userId];
518
498
  if (!member) {
519
499
  member = new RoomMember(this.roomId, userId);
520
500
  // add member to members before emitting any events,
@@ -535,23 +515,22 @@ export class RoomState extends TypedEventEmitter {
535
515
  * @experimental
536
516
  */
537
517
  setBeacon(event) {
538
- var beaconIdentifier = getBeaconInfoIdentifier(event);
518
+ const beaconIdentifier = getBeaconInfoIdentifier(event);
539
519
  if (this.beacons.has(beaconIdentifier)) {
540
- var _beacon = this.beacons.get(beaconIdentifier);
520
+ const beacon = this.beacons.get(beaconIdentifier);
541
521
  if (event.isRedacted()) {
542
- var _event$getRedactionEv;
543
- if (_beacon.beaconInfoId === ((_event$getRedactionEv = event.getRedactionEvent()) === null || _event$getRedactionEv === void 0 ? void 0 : _event$getRedactionEv.redacts)) {
544
- _beacon.destroy();
522
+ if (beacon.beaconInfoId === event.getRedactionEvent()?.redacts) {
523
+ beacon.destroy();
545
524
  this.beacons.delete(beaconIdentifier);
546
525
  }
547
526
  return;
548
527
  }
549
- return _beacon.update(event);
528
+ return beacon.update(event);
550
529
  }
551
530
  if (event.isRedacted()) {
552
531
  return;
553
532
  }
554
- var beacon = new Beacon(event);
533
+ const beacon = new Beacon(event);
555
534
  this.reEmitter.reEmit(beacon, [BeaconEvent.New, BeaconEvent.Update, BeaconEvent.Destroy, BeaconEvent.LivenessChange]);
556
535
  this.emit(BeaconEvent.New, event, beacon);
557
536
  beacon.on(BeaconEvent.LivenessChange, this.onBeaconLivenessChange.bind(this));
@@ -569,15 +548,14 @@ export class RoomState extends TypedEventEmitter {
569
548
  this.emit(RoomStateEvent.BeaconLiveness, this, this.hasLiveBeacons);
570
549
  }
571
550
  getStateEventMatching(event) {
572
- var _this$events$get$get, _this$events$get;
573
- return (_this$events$get$get = (_this$events$get = this.events.get(event.getType())) === null || _this$events$get === void 0 ? void 0 : _this$events$get.get(event.getStateKey())) !== null && _this$events$get$get !== void 0 ? _this$events$get$get : null;
551
+ return this.events.get(event.getType())?.get(event.getStateKey()) ?? null;
574
552
  }
575
553
  updateMember(member) {
576
554
  // this member may have a power level already, so set it.
577
- var createEvent = this.getStateEvents(EventType.RoomCreate, "");
578
- var pwrLvlEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
555
+ const createEvent = this.getStateEvents(EventType.RoomCreate, "");
556
+ const pwrLvlEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
579
557
  if (pwrLvlEvent && createEvent) {
580
- var powerLevel = powerLevelForUserId(member.userId, pwrLvlEvent, getCreators(this.getRoomVersion(), createEvent));
558
+ const powerLevel = powerLevelForUserId(member.userId, pwrLvlEvent, getCreators(this.getRoomVersion(), createEvent));
581
559
  member.setPowerLevel(powerLevel, pwrLvlEvent);
582
560
  }
583
561
 
@@ -633,15 +611,15 @@ export class RoomState extends TypedEventEmitter {
633
611
  * Clears the loaded out-of-band members
634
612
  */
635
613
  clearOutOfBandMembers() {
636
- var count = 0;
614
+ let count = 0;
637
615
  Object.keys(this.members).forEach(userId => {
638
- var member = this.members[userId];
616
+ const member = this.members[userId];
639
617
  if (member.isOutOfBand()) {
640
618
  ++count;
641
619
  delete this.members[userId];
642
620
  }
643
621
  });
644
- logger.log("LL: RoomState removed ".concat(count, " members..."));
622
+ logger.log(`LL: RoomState removed ${count} members...`);
645
623
  this.oobMemberFlags.status = OobStatus.NotStarted;
646
624
  }
647
625
 
@@ -650,11 +628,11 @@ export class RoomState extends TypedEventEmitter {
650
628
  * @param stateEvents - array of membership state events
651
629
  */
652
630
  setOutOfBandMembers(stateEvents) {
653
- logger.log("LL: RoomState about to set ".concat(stateEvents.length, " OOB members ..."));
631
+ logger.log(`LL: RoomState about to set ${stateEvents.length} OOB members ...`);
654
632
  if (this.oobMemberFlags.status !== OobStatus.InProgress) {
655
633
  return;
656
634
  }
657
- logger.log("LL: RoomState put in finished state ...");
635
+ logger.log(`LL: RoomState put in finished state ...`);
658
636
  this.oobMemberFlags.status = OobStatus.Finished;
659
637
  stateEvents.forEach(e => this.setOutOfBandMember(e));
660
638
  this.emit(RoomStateEvent.Update, this);
@@ -668,13 +646,13 @@ export class RoomState extends TypedEventEmitter {
668
646
  if (stateEvent.getType() !== EventType.RoomMember) {
669
647
  return;
670
648
  }
671
- var userId = stateEvent.getStateKey();
672
- var existingMember = this.getMember(userId);
649
+ const userId = stateEvent.getStateKey();
650
+ const existingMember = this.getMember(userId);
673
651
  // never replace members received as part of the sync
674
652
  if (existingMember && !existingMember.isOutOfBand()) {
675
653
  return;
676
654
  }
677
- var member = this.getOrCreateMember(userId, stateEvent);
655
+ const member = this.getOrCreateMember(userId, stateEvent);
678
656
  member.setMembershipEvent(stateEvent, this);
679
657
  // needed to know which members need to be stored seperately
680
658
  // as they are not part of the sync accumulator
@@ -728,8 +706,7 @@ export class RoomState extends TypedEventEmitter {
728
706
  * @returns An array of user IDs or an empty array.
729
707
  */
730
708
  getUserIdsWithDisplayName(displayName) {
731
- var _this$displayNameToUs2;
732
- return (_this$displayNameToUs2 = this.displayNameToUserIds.get(removeHiddenChars(displayName))) !== null && _this$displayNameToUs2 !== void 0 ? _this$displayNameToUs2 : [];
709
+ return this.displayNameToUserIds.get(removeHiddenChars(displayName)) ?? [];
733
710
  }
734
711
 
735
712
  /**
@@ -740,13 +717,13 @@ export class RoomState extends TypedEventEmitter {
740
717
  * @returns true if the given used ID can redact given event
741
718
  */
742
719
  maySendRedactionForEvent(mxEvent, userId) {
743
- var member = this.getMember(userId);
720
+ const member = this.getMember(userId);
744
721
  if (!member || member.membership === KnownMembership.Leave) return false;
745
722
  if (mxEvent.status || mxEvent.isRedacted()) return false;
746
723
 
747
724
  // The user may have been the sender, but they can't redact their own message
748
725
  // if redactions are blocked.
749
- var canRedact = this.maySendEvent(EventType.RoomRedaction, userId);
726
+ const canRedact = this.maySendEvent(EventType.RoomRedaction, userId);
750
727
  if (!canRedact) return false;
751
728
  if (mxEvent.getSender() === userId) return true;
752
729
  return this.hasSufficientPowerLevelFor("redact", member.powerLevel);
@@ -759,12 +736,12 @@ export class RoomState extends TypedEventEmitter {
759
736
  * @returns true if the given power level is sufficient
760
737
  */
761
738
  hasSufficientPowerLevelFor(action, powerLevel) {
762
- var powerLevelsEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
763
- var powerLevels = {};
739
+ const powerLevelsEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
740
+ let powerLevels = {};
764
741
  if (powerLevelsEvent) {
765
742
  powerLevels = powerLevelsEvent.getContent();
766
743
  }
767
- var requiredLevel = 50;
744
+ let requiredLevel = 50;
768
745
  if (isNumber(powerLevels[action])) {
769
746
  requiredLevel = powerLevels[action];
770
747
  }
@@ -836,12 +813,11 @@ export class RoomState extends TypedEventEmitter {
836
813
  * according to the room's state.
837
814
  */
838
815
  maySendEventOfType(eventType, userId, state) {
839
- var _roomMember$powerLeve;
840
- var powerLevelsEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
841
- var powerLevels;
842
- var eventsLevels = {};
843
- var stateDefault = 0;
844
- var eventsDefault = 0;
816
+ const powerLevelsEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
817
+ let powerLevels;
818
+ let eventsLevels = {};
819
+ let stateDefault = 0;
820
+ let eventsDefault = 0;
845
821
  if (powerLevelsEvent) {
846
822
  powerLevels = powerLevelsEvent.getContent();
847
823
  eventsLevels = powerLevels.events || {};
@@ -854,12 +830,12 @@ export class RoomState extends TypedEventEmitter {
854
830
  eventsDefault = powerLevels.events_default;
855
831
  }
856
832
  }
857
- var requiredLevel = state ? stateDefault : eventsDefault;
833
+ let requiredLevel = state ? stateDefault : eventsDefault;
858
834
  if (Number.isSafeInteger(eventsLevels[eventType])) {
859
835
  requiredLevel = eventsLevels[eventType];
860
836
  }
861
- var roomMember = this.getMember(userId);
862
- var userPowerLevel = (_roomMember$powerLeve = roomMember === null || roomMember === void 0 ? void 0 : roomMember.powerLevel) !== null && _roomMember$powerLeve !== void 0 ? _roomMember$powerLeve : 0;
837
+ const roomMember = this.getMember(userId);
838
+ const userPowerLevel = roomMember?.powerLevel ?? 0;
863
839
  return userPowerLevel >= requiredLevel;
864
840
  }
865
841
 
@@ -872,12 +848,12 @@ export class RoomState extends TypedEventEmitter {
872
848
  * notification of this type.
873
849
  */
874
850
  mayTriggerNotifOfType(notifLevelKey, userId) {
875
- var member = this.getMember(userId);
851
+ const member = this.getMember(userId);
876
852
  if (!member) {
877
853
  return false;
878
854
  }
879
- var powerLevelsEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
880
- var notifLevel = 50;
855
+ const powerLevelsEvent = this.getStateEvents(EventType.RoomPowerLevels, "");
856
+ let notifLevel = 50;
881
857
  if (powerLevelsEvent && powerLevelsEvent.getContent() && powerLevelsEvent.getContent().notifications && isNumber(powerLevelsEvent.getContent().notifications[notifLevelKey])) {
882
858
  notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey];
883
859
  }
@@ -889,9 +865,8 @@ export class RoomState extends TypedEventEmitter {
889
865
  * @returns the join_rule applied to this room
890
866
  */
891
867
  getJoinRule() {
892
- var _joinRuleEvent$getCon;
893
- var joinRuleEvent = this.getStateEvents(EventType.RoomJoinRules, "");
894
- var joinRuleContent = (_joinRuleEvent$getCon = joinRuleEvent === null || joinRuleEvent === void 0 ? void 0 : joinRuleEvent.getContent()) !== null && _joinRuleEvent$getCon !== void 0 ? _joinRuleEvent$getCon : {};
868
+ const joinRuleEvent = this.getStateEvents(EventType.RoomJoinRules, "");
869
+ const joinRuleContent = joinRuleEvent?.getContent() ?? {};
895
870
  return joinRuleContent["join_rule"] || JoinRule.Invite;
896
871
  }
897
872
 
@@ -900,9 +875,8 @@ export class RoomState extends TypedEventEmitter {
900
875
  * @returns the history_visibility applied to this room
901
876
  */
902
877
  getHistoryVisibility() {
903
- var _historyVisibilityEve;
904
- var historyVisibilityEvent = this.getStateEvents(EventType.RoomHistoryVisibility, "");
905
- var historyVisibilityContent = (_historyVisibilityEve = historyVisibilityEvent === null || historyVisibilityEvent === void 0 ? void 0 : historyVisibilityEvent.getContent()) !== null && _historyVisibilityEve !== void 0 ? _historyVisibilityEve : {};
878
+ const historyVisibilityEvent = this.getStateEvents(EventType.RoomHistoryVisibility, "");
879
+ const historyVisibilityContent = historyVisibilityEvent?.getContent() ?? {};
906
880
  return historyVisibilityContent["history_visibility"] || HistoryVisibility.Shared;
907
881
  }
908
882
 
@@ -911,9 +885,8 @@ export class RoomState extends TypedEventEmitter {
911
885
  * @returns the guest_access applied to this room
912
886
  */
913
887
  getGuestAccess() {
914
- var _guestAccessEvent$get;
915
- var guestAccessEvent = this.getStateEvents(EventType.RoomGuestAccess, "");
916
- var guestAccessContent = (_guestAccessEvent$get = guestAccessEvent === null || guestAccessEvent === void 0 ? void 0 : guestAccessEvent.getContent()) !== null && _guestAccessEvent$get !== void 0 ? _guestAccessEvent$get : {};
888
+ const guestAccessEvent = this.getStateEvents(EventType.RoomGuestAccess, "");
889
+ const guestAccessContent = guestAccessEvent?.getContent() ?? {};
917
890
  return guestAccessContent["guest_access"] || GuestAccess.Forbidden;
918
891
  }
919
892
 
@@ -935,46 +908,45 @@ export class RoomState extends TypedEventEmitter {
935
908
  * this predecessor comes from a RoomCreate event (rather than a
936
909
  * RoomPredecessor, which has the optional via_servers property).
937
910
  */
938
- findPredecessor() {
939
- var msc3946ProcessDynamicPredecessor = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
911
+ findPredecessor(msc3946ProcessDynamicPredecessor = false) {
940
912
  // Note: the tests for this function are against Room.findPredecessor,
941
913
  // which just calls through to here.
942
914
 
943
915
  if (msc3946ProcessDynamicPredecessor) {
944
- var predecessorEvent = this.getStateEvents(EventType.RoomPredecessor, "");
916
+ const predecessorEvent = this.getStateEvents(EventType.RoomPredecessor, "");
945
917
  if (predecessorEvent) {
946
- var content = predecessorEvent.getContent();
947
- var _roomId = content.predecessor_room_id;
948
- var eventId = content.last_known_event_id;
918
+ const content = predecessorEvent.getContent();
919
+ const roomId = content.predecessor_room_id;
920
+ let eventId = content.last_known_event_id;
949
921
  if (typeof eventId !== "string") {
950
922
  eventId = undefined;
951
923
  }
952
- var viaServers = content.via_servers;
924
+ let viaServers = content.via_servers;
953
925
  if (!Array.isArray(viaServers)) {
954
926
  viaServers = undefined;
955
927
  }
956
- if (typeof _roomId === "string") {
928
+ if (typeof roomId === "string") {
957
929
  return {
958
- roomId: _roomId,
930
+ roomId,
959
931
  eventId,
960
932
  viaServers
961
933
  };
962
934
  }
963
935
  }
964
936
  }
965
- var createEvent = this.getStateEvents(EventType.RoomCreate, "");
937
+ const createEvent = this.getStateEvents(EventType.RoomCreate, "");
966
938
  if (createEvent) {
967
- var predecessor = createEvent.getContent()["predecessor"];
939
+ const predecessor = createEvent.getContent()["predecessor"];
968
940
  if (predecessor) {
969
- var _roomId2 = predecessor["room_id"];
970
- if (typeof _roomId2 === "string") {
971
- var _eventId = predecessor["event_id"];
972
- if (typeof _eventId !== "string" || _eventId === "") {
973
- _eventId = undefined;
941
+ const roomId = predecessor["room_id"];
942
+ if (typeof roomId === "string") {
943
+ let eventId = predecessor["event_id"];
944
+ if (typeof eventId !== "string" || eventId === "") {
945
+ eventId = undefined;
974
946
  }
975
947
  return {
976
- roomId: _roomId2,
977
- eventId: _eventId
948
+ roomId,
949
+ eventId
978
950
  };
979
951
  }
980
952
  }
@@ -985,38 +957,37 @@ export class RoomState extends TypedEventEmitter {
985
957
  if (!memberEvent.getContent().third_party_invite) {
986
958
  return;
987
959
  }
988
- var token = (memberEvent.getContent().third_party_invite.signed || {}).token;
960
+ const token = (memberEvent.getContent().third_party_invite.signed || {}).token;
989
961
  if (!token) {
990
962
  return;
991
963
  }
992
- var threePidInvite = this.getStateEvents(EventType.RoomThirdPartyInvite, token);
964
+ const threePidInvite = this.getStateEvents(EventType.RoomThirdPartyInvite, token);
993
965
  if (!threePidInvite) {
994
966
  return;
995
967
  }
996
968
  this.tokenToInvite[token] = memberEvent;
997
969
  }
998
970
  updateDisplayNameCache(userId, displayName) {
999
- var oldName = this.userIdsToDisplayNames[userId];
971
+ const oldName = this.userIdsToDisplayNames[userId];
1000
972
  delete this.userIdsToDisplayNames[userId];
1001
973
  if (oldName) {
1002
974
  // Remove the old name from the cache.
1003
975
  // We clobber the user_id > name lookup but the name -> [user_id] lookup
1004
976
  // means we need to remove that user ID from that array rather than nuking
1005
977
  // the lot.
1006
- var strippedOldName = removeHiddenChars(oldName);
1007
- var existingUserIds = this.displayNameToUserIds.get(strippedOldName);
978
+ const strippedOldName = removeHiddenChars(oldName);
979
+ const existingUserIds = this.displayNameToUserIds.get(strippedOldName);
1008
980
  if (existingUserIds) {
1009
981
  // remove this user ID from this array
1010
- var filteredUserIDs = existingUserIds.filter(id => id !== userId);
982
+ const filteredUserIDs = existingUserIds.filter(id => id !== userId);
1011
983
  this.displayNameToUserIds.set(strippedOldName, filteredUserIDs);
1012
984
  }
1013
985
  }
1014
986
  this.userIdsToDisplayNames[userId] = displayName;
1015
- var strippedDisplayname = displayName && removeHiddenChars(displayName);
987
+ const strippedDisplayname = displayName && removeHiddenChars(displayName);
1016
988
  // an empty stripped displayname (undefined/'') will be set to MXID in room-member.js
1017
989
  if (strippedDisplayname) {
1018
- var _this$displayNameToUs3;
1019
- var arr = (_this$displayNameToUs3 = this.displayNameToUserIds.get(strippedDisplayname)) !== null && _this$displayNameToUs3 !== void 0 ? _this$displayNameToUs3 : [];
990
+ const arr = this.displayNameToUserIds.get(strippedDisplayname) ?? [];
1020
991
  arr.push(userId);
1021
992
  this.displayNameToUserIds.set(strippedDisplayname, arr);
1022
993
  }
@@ -1031,11 +1002,11 @@ export class RoomState extends TypedEventEmitter {
1031
1002
  * @returns A set of user IDs of the creators of the room.
1032
1003
  */
1033
1004
  function getCreators(roomVersion, roomCreateEvent) {
1034
- var creators = new Set();
1005
+ const creators = new Set();
1035
1006
  if (shouldUseHydraForRoomVersion(roomVersion) && roomCreateEvent) {
1036
- var roomCreateSender = roomCreateEvent.getSender();
1007
+ const roomCreateSender = roomCreateEvent.getSender();
1037
1008
  if (roomCreateSender) creators.add(roomCreateSender);
1038
- var additionalCreators = roomCreateEvent.getDirectionalContent().additional_creators;
1009
+ const additionalCreators = roomCreateEvent.getDirectionalContent().additional_creators;
1039
1010
  if (Array.isArray(additionalCreators)) additionalCreators.forEach(c => creators.add(c));
1040
1011
  }
1041
1012
  return creators;
@@ -1052,8 +1023,8 @@ function powerLevelForUserId(userId, powerLevelEvent, creators) {
1052
1023
  // As of "Hydra", If the user is a creator, they always have the highest power level
1053
1024
  return Infinity;
1054
1025
  } else {
1055
- var evContent = powerLevelEvent.getDirectionalContent();
1056
- var users = evContent.users || {};
1026
+ const evContent = powerLevelEvent.getDirectionalContent();
1027
+ const users = evContent.users || {};
1057
1028
  if (users[userId] !== undefined && Number.isInteger(users[userId])) {
1058
1029
  return users[userId];
1059
1030
  } else if (evContent.users_default !== undefined) {