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,11 +1,8 @@
1
- import _toArray from "@babel/runtime/helpers/toArray";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
2
  import { logger as loggerInstance } from "../logger.js";
6
3
  import { TypedEventEmitter } from "./typed-event-emitter.js";
7
- var logger = loggerInstance.getChild("RoomStickyEvents");
8
- export var RoomStickyEventsEvent = /*#__PURE__*/function (RoomStickyEventsEvent) {
4
+ const logger = loggerInstance.getChild("RoomStickyEvents");
5
+ export let RoomStickyEventsEvent = /*#__PURE__*/function (RoomStickyEventsEvent) {
9
6
  RoomStickyEventsEvent["Update"] = "RoomStickyEvents.Update";
10
7
  return RoomStickyEventsEvent;
11
8
  }({});
@@ -19,8 +16,8 @@ function assertIsUserId(value) {
19
16
  * whenever a sticky event is updated or replaced.
20
17
  */
21
18
  export class RoomStickyEventsStore extends TypedEventEmitter {
22
- constructor() {
23
- super(...arguments);
19
+ constructor(...args) {
20
+ super(...args);
24
21
  /**
25
22
  * Sticky event map is a nested map of:
26
23
  * eventType -> `content.sticky_key sender` -> StickyMatrixEvent[]
@@ -40,22 +37,13 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
40
37
  * Clean out any expired sticky events.
41
38
  */
42
39
  _defineProperty(this, "cleanExpiredStickyEvents", () => {
43
- var now = Date.now();
44
- var removedEvents = [];
40
+ const now = Date.now();
41
+ const removedEvents = [];
45
42
 
46
43
  // We will recalculate this as we check all events.
47
44
  this.nextStickyEventExpiryTs = Number.MAX_SAFE_INTEGER;
48
- for (var _ref3 of this.stickyEventsMap.entries()) {
49
- var _this$stickyEventsMap;
50
- var _ref2 = _slicedToArray(_ref3, 2);
51
- var eventType = _ref2[0];
52
- var innerEvents = _ref2[1];
53
- for (var _ref6 of innerEvents) {
54
- var _ref5 = _slicedToArray(_ref6, 2);
55
- var innerMapKey = _ref5[0];
56
- var _ref5$ = _toArray(_ref5[1]);
57
- var currentEvent = _ref5$[0];
58
- var previousEvents = _arrayLikeToArray(_ref5$).slice(1);
45
+ for (const [eventType, innerEvents] of this.stickyEventsMap.entries()) {
46
+ for (const [innerMapKey, [currentEvent, ...previousEvents]] of innerEvents) {
59
47
  // we only added items with `sticky` into this map so we can assert non-null here
60
48
  if (now >= currentEvent.unstableStickyExpiresAt) {
61
49
  logger.debug("Expiring sticky event", currentEvent.getId());
@@ -69,11 +57,11 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
69
57
  }
70
58
  }
71
59
  // Clean up map after use.
72
- if (((_this$stickyEventsMap = this.stickyEventsMap.get(eventType)) === null || _this$stickyEventsMap === void 0 ? void 0 : _this$stickyEventsMap.size) === 0) {
60
+ if (this.stickyEventsMap.get(eventType)?.size === 0) {
73
61
  this.stickyEventsMap.delete(eventType);
74
62
  }
75
63
  }
76
- for (var event of this.unkeyedStickyEvents) {
64
+ for (const event of this.unkeyedStickyEvents) {
77
65
  if (now >= event.unstableStickyExpiresAt) {
78
66
  logger.debug("Expiring sticky event", event.getId());
79
67
  this.unkeyedStickyEvents.delete(event);
@@ -96,13 +84,12 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
96
84
  * @returns A positive value if event A will expire sooner, or a negative value if event B will expire sooner.
97
85
  */
98
86
  static sortStickyEvent(eventA, eventB) {
99
- var _eventB$getId, _eventA$getId;
100
87
  // Sticky events with the same key have to use the same expiration duration.
101
88
  // Hence, comparing via `origin_server_ts` yields the exact same result as comparing their expiration time.
102
89
  if (eventB.getTs() !== eventA.getTs()) {
103
90
  return eventB.getTs() - eventA.getTs();
104
91
  }
105
- if (((_eventB$getId = eventB.getId()) !== null && _eventB$getId !== void 0 ? _eventB$getId : "") > ((_eventA$getId = eventA.getId()) !== null && _eventA$getId !== void 0 ? _eventA$getId : "")) {
92
+ if ((eventB.getId() ?? "") > (eventA.getId() ?? "")) {
106
93
  return 1;
107
94
  }
108
95
 
@@ -116,18 +103,19 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
116
103
  * @param sender The sender of the event.
117
104
  */
118
105
  static stickyMapKey(stickyKey, sender) {
119
- return "".concat(stickyKey).concat(sender);
106
+ return `${stickyKey}${sender}`;
120
107
  }
121
108
 
122
109
  /**
123
110
  * Get all sticky events that are currently active.
124
111
  * @returns An iterable set of events.
112
+ * @yields {@link StickyMatrixEvent}
125
113
  */
126
114
  *getStickyEvents() {
127
115
  yield* this.unkeyedStickyEvents;
128
- for (var innerMap of this.stickyEventsMap.values()) {
116
+ for (const innerMap of this.stickyEventsMap.values()) {
129
117
  // Inner map contains a map of sender+stickykeys => all sticky events
130
- for (var events of innerMap.values()) {
118
+ for (const events of innerMap.values()) {
131
119
  // The first sticky event is the "current" one in the sticky map.
132
120
  yield events[0];
133
121
  }
@@ -142,9 +130,8 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
142
130
  * @returns A matching active sticky event, or undefined.
143
131
  */
144
132
  getKeyedStickyEvent(sender, type, stickyKey) {
145
- var _this$stickyEventsMap2;
146
133
  assertIsUserId(sender);
147
- return (_this$stickyEventsMap2 = this.stickyEventsMap.get(type)) === null || _this$stickyEventsMap2 === void 0 || (_this$stickyEventsMap2 = _this$stickyEventsMap2.get(RoomStickyEventsStore.stickyMapKey(stickyKey, sender))) === null || _this$stickyEventsMap2 === void 0 ? void 0 : _this$stickyEventsMap2[0];
134
+ return this.stickyEventsMap.get(type)?.get(RoomStickyEventsStore.stickyMapKey(stickyKey, sender))?.[0];
148
135
  }
149
136
 
150
137
  /**
@@ -168,18 +155,17 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
168
155
  * and the previous event it may have replaced.
169
156
  */
170
157
  addStickyEvent(event) {
171
- var _this$stickyEventsMap3, _this$stickyEventsMap4, _this$stickyEventsMap5;
172
- var stickyKey = event.getContent().msc4354_sticky_key;
158
+ const stickyKey = event.getContent().msc4354_sticky_key;
173
159
  if (typeof stickyKey !== "string" && stickyKey !== undefined) {
174
- throw new Error("".concat(event.getId(), " is missing msc4354_sticky_key"));
160
+ throw new Error(`${event.getId()} is missing msc4354_sticky_key`);
175
161
  }
176
162
 
177
163
  // With this we have the guarantee, that all events in stickyEventsMap are correctly formatted
178
164
  if (event.unstableStickyExpiresAt === undefined) {
179
- throw new Error("".concat(event.getId(), " is missing msc4354_sticky.duration_ms"));
165
+ throw new Error(`${event.getId()} is missing msc4354_sticky.duration_ms`);
180
166
  }
181
- var sender = event.getSender();
182
- var type = event.getType();
167
+ const sender = event.getSender();
168
+ const type = event.getType();
183
169
  assertIsUserId(sender);
184
170
  if (event.unstableStickyExpiresAt <= Date.now()) {
185
171
  logger.info("ignored sticky event with older expiration time than current time", stickyKey);
@@ -193,7 +179,7 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
193
179
  if (!sender.startsWith("@")) {
194
180
  throw new Error("Expected sender to start with @");
195
181
  }
196
- var stickyEvent = event;
182
+ const stickyEvent = event;
197
183
  if (stickyKey === undefined) {
198
184
  this.unkeyedStickyEvents.add(stickyEvent);
199
185
  // Recalculate the next expiry time.
@@ -209,19 +195,19 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
209
195
  // constrained so that a key will always end with a @<user_id>
210
196
  // E.g. Where a malicious event type might be "rtc.member.event@foo:bar" the key becomes:
211
197
  // "rtc.member.event.@foo:bar@bar:baz"
212
- var innerMapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);
213
- var currentEventSet = [stickyEvent, ...((_this$stickyEventsMap3 = (_this$stickyEventsMap4 = this.stickyEventsMap.get(type)) === null || _this$stickyEventsMap4 === void 0 ? void 0 : _this$stickyEventsMap4.get(innerMapKey)) !== null && _this$stickyEventsMap3 !== void 0 ? _this$stickyEventsMap3 : [])].sort(RoomStickyEventsStore.sortStickyEvent);
198
+ const innerMapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);
199
+ const currentEventSet = [stickyEvent, ...(this.stickyEventsMap.get(type)?.get(innerMapKey) ?? [])].sort(RoomStickyEventsStore.sortStickyEvent);
214
200
  if (!this.stickyEventsMap.has(type)) {
215
201
  this.stickyEventsMap.set(type, new Map());
216
202
  }
217
- (_this$stickyEventsMap5 = this.stickyEventsMap.get(type)) === null || _this$stickyEventsMap5 === void 0 || _this$stickyEventsMap5.set(innerMapKey, currentEventSet);
203
+ this.stickyEventsMap.get(type)?.set(innerMapKey, currentEventSet);
218
204
 
219
205
  // Recalculate the next expiry time.
220
206
  this.nextStickyEventExpiryTs = Math.min(stickyEvent.unstableStickyExpiresAt, this.nextStickyEventExpiryTs);
221
207
  this.scheduleStickyTimer();
222
208
  return {
223
209
  added: currentEventSet[0] === stickyEvent,
224
- prevEvent: currentEventSet === null || currentEventSet === void 0 ? void 0 : currentEventSet[1]
210
+ prevEvent: currentEventSet?.[1]
225
211
  };
226
212
  }
227
213
 
@@ -231,11 +217,11 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
231
217
  * @param events A set of new sticky events.
232
218
  */
233
219
  addStickyEvents(events) {
234
- var added = [];
235
- var updated = [];
236
- for (var event of events) {
220
+ const added = [];
221
+ const updated = [];
222
+ for (const event of events) {
237
223
  try {
238
- var result = this.addStickyEvent(event);
224
+ const result = this.addStickyEvent(event);
239
225
  if (result.added) {
240
226
  if (result.prevEvent) {
241
227
  // e is validated as a StickyMatrixEvent by virtue of `addStickyEvent` returning added: true.
@@ -287,8 +273,8 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
287
273
  // as an event can only appear in one map.
288
274
 
289
275
  // Handle unkeyedStickyEvents first since it's *quick*.
290
- var redactEventId = typeof redactedEvent === "string" ? redactedEvent : redactedEvent.getId();
291
- for (var event of this.unkeyedStickyEvents) {
276
+ const redactEventId = typeof redactedEvent === "string" ? redactedEvent : redactedEvent.getId();
277
+ for (const event of this.unkeyedStickyEvents) {
292
278
  if (event.getId() === redactEventId) {
293
279
  this.unkeyedStickyEvents.delete(event);
294
280
  this.emit(RoomStickyEventsEvent.Update, [], [], [event]);
@@ -298,31 +284,27 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
298
284
 
299
285
  // Faster method of finding the event since we have the event cached.
300
286
  if (typeof redactedEvent !== "string" && !redactedEvent.isRedacted()) {
301
- var _innerMap$get, _this$stickyEventsMap6;
302
- var stickyKey = redactedEvent.getContent().msc4354_sticky_key;
287
+ const stickyKey = redactedEvent.getContent().msc4354_sticky_key;
303
288
  if (typeof stickyKey !== "string" && stickyKey !== undefined) {
304
289
  return; // Not a sticky event.
305
290
  }
306
- var eventType = redactedEvent.getType();
307
- var sender = redactedEvent.getSender();
291
+ const eventType = redactedEvent.getType();
292
+ const sender = redactedEvent.getSender();
308
293
  assertIsUserId(sender);
309
- var innerMap = this.stickyEventsMap.get(eventType);
294
+ const innerMap = this.stickyEventsMap.get(eventType);
310
295
  if (!innerMap) {
311
296
  return;
312
297
  }
313
- var mapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);
314
- var _ref7 = (_innerMap$get = innerMap.get(mapKey)) !== null && _innerMap$get !== void 0 ? _innerMap$get : [],
315
- _ref8 = _toArray(_ref7),
316
- currentEvent = _ref8[0],
317
- previousEvents = _arrayLikeToArray(_ref8).slice(1);
298
+ const mapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);
299
+ const [currentEvent, ...previousEvents] = innerMap.get(mapKey) ?? [];
318
300
  if (!currentEvent) {
319
301
  // No event current in the map so ignore.
320
302
  return;
321
303
  }
322
- logger.debug("Redaction for ".concat(redactEventId, " under sticky key ").concat(stickyKey));
304
+ logger.debug(`Redaction for ${redactEventId} under sticky key ${stickyKey}`);
323
305
  // Revert to previous state, taking care to skip any other redacted events.
324
- var newEvents = previousEvents.filter(e => !e.isRedacted()).sort(RoomStickyEventsStore.sortStickyEvent);
325
- (_this$stickyEventsMap6 = this.stickyEventsMap.get(eventType)) === null || _this$stickyEventsMap6 === void 0 || _this$stickyEventsMap6.set(mapKey, newEvents);
306
+ const newEvents = previousEvents.filter(e => !e.isRedacted()).sort(RoomStickyEventsStore.sortStickyEvent);
307
+ this.stickyEventsMap.get(eventType)?.set(mapKey, newEvents);
326
308
  if (newEvents.length) {
327
309
  this.emit(RoomStickyEventsEvent.Update, [], [{
328
310
  // This looks confusing. This emits that the newer event
@@ -343,15 +325,13 @@ export class RoomStickyEventsStore extends TypedEventEmitter {
343
325
 
344
326
  // We only know the event ID of the redacted event, so we need to
345
327
  // traverse the map to find our event.
346
- for (var _innerMap of this.stickyEventsMap.values()) {
347
- for (var _ref1 of _innerMap.values()) {
348
- var _ref0 = _slicedToArray(_ref1, 1);
349
- var _currentEvent = _ref0[0];
350
- if (_currentEvent.getId() !== redactEventId) {
328
+ for (const innerMap of this.stickyEventsMap.values()) {
329
+ for (const [currentEvent] of innerMap.values()) {
330
+ if (currentEvent.getId() !== redactEventId) {
351
331
  continue;
352
332
  }
353
333
  // Found the event.
354
- return this.handleRedaction(_currentEvent);
334
+ return this.handleRedaction(currentEvent);
355
335
  }
356
336
  }
357
337
  }
@@ -1 +1 @@
1
- {"version":3,"file":"room-sticky-events.js","names":["logger","loggerInstance","TypedEventEmitter","getChild","RoomStickyEventsEvent","assertIsUserId","value","Error","startsWith","RoomStickyEventsStore","constructor","arguments","_defineProperty","Map","Set","Number","MAX_SAFE_INTEGER","now","Date","removedEvents","nextStickyEventExpiryTs","_ref3","stickyEventsMap","entries","_this$stickyEventsMap","_ref2","_slicedToArray","eventType","innerEvents","_ref6","_ref5","innerMapKey","_ref5$","_toArray","currentEvent","previousEvents","_arrayLikeToArray","slice","unstableStickyExpiresAt","debug","getId","push","get","delete","set","filter","e","Math","min","size","event","unkeyedStickyEvents","length","emit","Update","scheduleStickyTimer","sortStickyEvent","eventA","eventB","_eventB$getId","_eventA$getId","getTs","stickyMapKey","stickyKey","sender","concat","getStickyEvents","innerMap","values","events","getKeyedStickyEvent","type","_this$stickyEventsMap2","getUnkeyedStickyEvent","ev","getType","getSender","addStickyEvent","_this$stickyEventsMap3","_this$stickyEventsMap4","_this$stickyEventsMap5","getContent","msc4354_sticky_key","undefined","info","added","stickyEvent","add","currentEventSet","sort","has","prevEvent","addStickyEvents","updated","result","current","previous","ex","warn","stickyEventTimer","clearTimeout","setTimeout","cleanExpiredStickyEvents","handleRedaction","redactedEvent","redactEventId","isRedacted","_innerMap$get","_this$stickyEventsMap6","mapKey","_ref7","_ref8","newEvents","_ref1","_ref0","clear"],"sources":["../../src/models/room-sticky-events.ts"],"sourcesContent":["import { logger as loggerInstance } from \"../logger.ts\";\nimport { type MatrixEvent } from \"./event.ts\";\nimport { TypedEventEmitter } from \"./typed-event-emitter.ts\";\n\nconst logger = loggerInstance.getChild(\"RoomStickyEvents\");\n\nexport enum RoomStickyEventsEvent {\n Update = \"RoomStickyEvents.Update\",\n}\n\nexport type StickyMatrixEvent = MatrixEvent & { unstableStickyExpiresAt: number };\n\nexport type RoomStickyEventsMap = {\n /**\n * Fires when any sticky event changes happen in a room.\n * @param added Any new sticky events with no predecessor events (matching sender, type, and sticky_key)\n * @param updated Any sticky events that supersede an existing event (matching sender, type, and sticky_key)\n * @param removed The events that were removed from the map due to expiry.\n */\n [RoomStickyEventsEvent.Update]: (\n added: StickyMatrixEvent[],\n updated: { current: StickyMatrixEvent; previous: StickyMatrixEvent }[],\n removed: StickyMatrixEvent[],\n ) => void;\n};\n\ntype UserId = `@${string}`;\n\nfunction assertIsUserId(value: unknown): asserts value is UserId {\n if (typeof value !== \"string\") throw new Error(\"Not a string\");\n if (!value.startsWith(\"@\")) throw new Error(\"Not a userId\");\n}\n\n/**\n * Tracks sticky events on behalf of one room, and fires an event\n * whenever a sticky event is updated or replaced.\n */\nexport class RoomStickyEventsStore extends TypedEventEmitter<RoomStickyEventsEvent, RoomStickyEventsMap> {\n /**\n * Sticky event map is a nested map of:\n * eventType -> `content.sticky_key sender` -> StickyMatrixEvent[]\n *\n * The events are ordered in latest to earliest expiry, so that the first event\n * in the array will always be the \"current\" one.\n */\n private readonly stickyEventsMap = new Map<string, Map<string, StickyMatrixEvent[]>>();\n /**\n * These are sticky events that have no sticky key and therefore exist outside the tuple\n * system above. They are just held in this Set until they expire.\n */\n private readonly unkeyedStickyEvents = new Set<StickyMatrixEvent>();\n\n private stickyEventTimer?: ReturnType<typeof setTimeout>;\n private nextStickyEventExpiryTs: number = Number.MAX_SAFE_INTEGER;\n\n /**\n * Sort two sticky events by order of expiry. This assumes the sticky events have the same\n * `type`, `sticky_key` and `sender`.\n * @returns A positive value if event A will expire sooner, or a negative value if event B will expire sooner.\n */\n private static sortStickyEvent(eventA: StickyMatrixEvent, eventB: StickyMatrixEvent): number {\n // Sticky events with the same key have to use the same expiration duration.\n // Hence, comparing via `origin_server_ts` yields the exact same result as comparing their expiration time.\n if (eventB.getTs() !== eventA.getTs()) {\n return eventB.getTs() - eventA.getTs();\n }\n\n if ((eventB.getId() ?? \"\") > (eventA.getId() ?? \"\")) {\n return 1;\n }\n\n // This should fail as we've got corruption in our sticky array.\n throw Error(\"Comparing two sticky events with the same event ID is not allowed.\");\n }\n\n /**\n * Generate the correct key for an event to be found in the inner maps of `stickyEventsMap`.\n * @param stickyKey The sticky key of an event.\n * @param sender The sender of the event.\n */\n private static stickyMapKey(stickyKey: string, sender: UserId): string {\n return `${stickyKey}${sender}`;\n }\n\n /**\n * Get all sticky events that are currently active.\n * @returns An iterable set of events.\n */\n public *getStickyEvents(): Iterable<StickyMatrixEvent> {\n yield* this.unkeyedStickyEvents;\n for (const innerMap of this.stickyEventsMap.values()) {\n // Inner map contains a map of sender+stickykeys => all sticky events\n for (const events of innerMap.values()) {\n // The first sticky event is the \"current\" one in the sticky map.\n yield events[0];\n }\n }\n }\n\n /**\n * Get an active sticky event that match the given `type`, `sender`, and `stickyKey`\n * @param type The event `type`.\n * @param sender The sender of the sticky event.\n * @param stickyKey The sticky key used by the event.\n * @returns A matching active sticky event, or undefined.\n */\n public getKeyedStickyEvent(sender: string, type: string, stickyKey: string): StickyMatrixEvent | undefined {\n assertIsUserId(sender);\n return this.stickyEventsMap.get(type)?.get(RoomStickyEventsStore.stickyMapKey(stickyKey, sender))?.[0];\n }\n\n /**\n * Get active sticky events without a sticky key that match the given `type` and `sender`.\n * @param type The event `type`.\n * @param sender The sender of the sticky event.\n * @returns An array of matching sticky events.\n */\n public getUnkeyedStickyEvent(sender: string, type: string): StickyMatrixEvent[] {\n return [...this.unkeyedStickyEvents].filter((ev) => ev.getType() === type && ev.getSender() === sender);\n }\n\n /**\n * Adds a sticky event into the local sticky event map.\n *\n * NOTE: This will not cause `RoomEvent.StickyEvents` to be emitted.\n *\n * @throws If the `event` does not contain valid sticky data.\n * @param event The MatrixEvent that contains sticky data.\n * @returns An object describing whether the event was added to the map,\n * and the previous event it may have replaced.\n */\n private addStickyEvent(event: MatrixEvent): { added: true; prevEvent?: StickyMatrixEvent } | { added: false } {\n const stickyKey = event.getContent().msc4354_sticky_key;\n if (typeof stickyKey !== \"string\" && stickyKey !== undefined) {\n throw new Error(`${event.getId()} is missing msc4354_sticky_key`);\n }\n\n // With this we have the guarantee, that all events in stickyEventsMap are correctly formatted\n if (event.unstableStickyExpiresAt === undefined) {\n throw new Error(`${event.getId()} is missing msc4354_sticky.duration_ms`);\n }\n const sender = event.getSender();\n const type = event.getType();\n assertIsUserId(sender);\n if (event.unstableStickyExpiresAt <= Date.now()) {\n logger.info(\"ignored sticky event with older expiration time than current time\", stickyKey);\n return { added: false };\n }\n\n // While we fully expect the server to always provide the correct value,\n // this is just insurance to protect against attacks on our Map.\n if (!sender.startsWith(\"@\")) {\n throw new Error(\"Expected sender to start with @\");\n }\n\n const stickyEvent = event as StickyMatrixEvent;\n\n if (stickyKey === undefined) {\n this.unkeyedStickyEvents.add(stickyEvent);\n // Recalculate the next expiry time.\n this.nextStickyEventExpiryTs = Math.min(event.unstableStickyExpiresAt, this.nextStickyEventExpiryTs);\n\n this.scheduleStickyTimer();\n return { added: true };\n }\n\n // Why this is safe:\n // A type may contain anything but the *sender* is tightly\n // constrained so that a key will always end with a @<user_id>\n // E.g. Where a malicious event type might be \"rtc.member.event@foo:bar\" the key becomes:\n // \"rtc.member.event.@foo:bar@bar:baz\"\n const innerMapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);\n const currentEventSet = [stickyEvent, ...(this.stickyEventsMap.get(type)?.get(innerMapKey) ?? [])].sort(\n RoomStickyEventsStore.sortStickyEvent,\n );\n if (!this.stickyEventsMap.has(type)) {\n this.stickyEventsMap.set(type, new Map());\n }\n this.stickyEventsMap.get(type)?.set(innerMapKey, currentEventSet);\n\n // Recalculate the next expiry time.\n this.nextStickyEventExpiryTs = Math.min(stickyEvent.unstableStickyExpiresAt, this.nextStickyEventExpiryTs);\n\n this.scheduleStickyTimer();\n return {\n added: currentEventSet[0] === stickyEvent,\n prevEvent: currentEventSet?.[1],\n };\n }\n\n /**\n * Add a series of sticky events, emitting `RoomEvent.StickyEvents` if any\n * changes were made.\n * @param events A set of new sticky events.\n */\n public addStickyEvents(events: MatrixEvent[]): void {\n const added: StickyMatrixEvent[] = [];\n const updated: { current: StickyMatrixEvent; previous: StickyMatrixEvent }[] = [];\n for (const event of events) {\n try {\n const result = this.addStickyEvent(event);\n if (result.added) {\n if (result.prevEvent) {\n // e is validated as a StickyMatrixEvent by virtue of `addStickyEvent` returning added: true.\n updated.push({ current: event as StickyMatrixEvent, previous: result.prevEvent });\n } else {\n added.push(event as StickyMatrixEvent);\n }\n }\n } catch (ex) {\n logger.warn(\"ignored invalid sticky event\", ex);\n }\n }\n if (added.length || updated.length) this.emit(RoomStickyEventsEvent.Update, added, updated, []);\n this.scheduleStickyTimer();\n }\n\n /**\n * Schedule the sticky event expiry timer. The timer will\n * run immediately if an event has already expired.\n */\n private scheduleStickyTimer(): void {\n if (this.stickyEventTimer) {\n clearTimeout(this.stickyEventTimer);\n this.stickyEventTimer = undefined;\n }\n if (this.nextStickyEventExpiryTs === Number.MAX_SAFE_INTEGER) {\n // We have no events due to expire.\n return;\n } // otherwise, schedule in the future\n this.stickyEventTimer = setTimeout(this.cleanExpiredStickyEvents, this.nextStickyEventExpiryTs - Date.now());\n }\n\n /**\n * Clean out any expired sticky events.\n */\n private readonly cleanExpiredStickyEvents = (): void => {\n const now = Date.now();\n const removedEvents: StickyMatrixEvent[] = [];\n\n // We will recalculate this as we check all events.\n this.nextStickyEventExpiryTs = Number.MAX_SAFE_INTEGER;\n for (const [eventType, innerEvents] of this.stickyEventsMap.entries()) {\n for (const [innerMapKey, [currentEvent, ...previousEvents]] of innerEvents) {\n // we only added items with `sticky` into this map so we can assert non-null here\n if (now >= currentEvent.unstableStickyExpiresAt) {\n logger.debug(\"Expiring sticky event\", currentEvent.getId());\n removedEvents.push(currentEvent);\n this.stickyEventsMap.get(eventType)!.delete(innerMapKey);\n } else {\n // Ensure we remove any previous events which have now expired, to avoid unbounded memory consumption.\n this.stickyEventsMap\n .get(eventType)!\n .set(innerMapKey, [\n currentEvent,\n ...previousEvents.filter((e) => e.unstableStickyExpiresAt <= now),\n ]);\n // If not removing the event, check to see if it's the next lowest expiry.\n this.nextStickyEventExpiryTs = Math.min(\n this.nextStickyEventExpiryTs,\n currentEvent.unstableStickyExpiresAt,\n );\n }\n }\n // Clean up map after use.\n if (this.stickyEventsMap.get(eventType)?.size === 0) {\n this.stickyEventsMap.delete(eventType);\n }\n }\n for (const event of this.unkeyedStickyEvents) {\n if (now >= event.unstableStickyExpiresAt) {\n logger.debug(\"Expiring sticky event\", event.getId());\n this.unkeyedStickyEvents.delete(event);\n removedEvents.push(event);\n } else {\n // If not removing the event, check to see if it's the next lowest expiry.\n this.nextStickyEventExpiryTs = Math.min(this.nextStickyEventExpiryTs, event.unstableStickyExpiresAt);\n }\n }\n if (removedEvents.length) {\n this.emit(RoomStickyEventsEvent.Update, [], [], removedEvents);\n }\n // Finally, schedule the next run.\n this.scheduleStickyTimer();\n };\n\n /**\n * Handles incoming event redactions. Checks the sticky map\n * for any active sticky events being redacted.\n * @param redactedEvent The MatrixEvent OR event ID of the event being redacted. MAY not be a sticky event.\n */\n public handleRedaction(redactedEvent: MatrixEvent | string): void {\n // Note, we do not adjust`nextStickyEventExpiryTs` here.\n // If this event happens to be the most recent expiring event\n // then we may do one extra iteration of cleanExpiredStickyEvents\n // but this saves us having to iterate over all events here to calculate\n // the next expiry time.\n\n // Note, as soon as we find a positive match on an event in this function\n // we can return. There is no need to continue iterating on a positive match\n // as an event can only appear in one map.\n\n // Handle unkeyedStickyEvents first since it's *quick*.\n const redactEventId = typeof redactedEvent === \"string\" ? redactedEvent : redactedEvent.getId();\n for (const event of this.unkeyedStickyEvents) {\n if (event.getId() === redactEventId) {\n this.unkeyedStickyEvents.delete(event);\n this.emit(RoomStickyEventsEvent.Update, [], [], [event]);\n return;\n }\n }\n\n // Faster method of finding the event since we have the event cached.\n if (typeof redactedEvent !== \"string\" && !redactedEvent.isRedacted()) {\n const stickyKey = redactedEvent.getContent().msc4354_sticky_key;\n if (typeof stickyKey !== \"string\" && stickyKey !== undefined) {\n return; // Not a sticky event.\n }\n const eventType = redactedEvent.getType();\n const sender = redactedEvent.getSender();\n assertIsUserId(sender);\n const innerMap = this.stickyEventsMap.get(eventType);\n if (!innerMap) {\n return;\n }\n const mapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);\n const [currentEvent, ...previousEvents] = innerMap.get(mapKey) ?? [];\n if (!currentEvent) {\n // No event current in the map so ignore.\n return;\n }\n logger.debug(`Redaction for ${redactEventId} under sticky key ${stickyKey}`);\n // Revert to previous state, taking care to skip any other redacted events.\n const newEvents = previousEvents.filter((e) => !e.isRedacted()).sort(RoomStickyEventsStore.sortStickyEvent);\n this.stickyEventsMap.get(eventType)?.set(mapKey, newEvents);\n if (newEvents.length) {\n this.emit(\n RoomStickyEventsEvent.Update,\n [],\n [\n {\n // This looks confusing. This emits that the newer event\n // has been redacted and the previous event has taken it's place.\n previous: currentEvent,\n current: newEvents[0],\n },\n ],\n [],\n );\n } else {\n // We did not find a previous event, so just expire.\n innerMap.delete(mapKey);\n if (innerMap.size === 0) {\n this.stickyEventsMap.delete(eventType);\n }\n this.emit(RoomStickyEventsEvent.Update, [], [], [currentEvent]);\n }\n return;\n }\n\n // We only know the event ID of the redacted event, so we need to\n // traverse the map to find our event.\n for (const innerMap of this.stickyEventsMap.values()) {\n for (const [currentEvent] of innerMap.values()) {\n if (currentEvent.getId() !== redactEventId) {\n continue;\n }\n // Found the event.\n return this.handleRedaction(currentEvent);\n }\n }\n }\n\n /**\n * Clear all events and stop the timer from firing.\n */\n public clear(): void {\n this.stickyEventsMap.clear();\n // Unschedule timer.\n this.nextStickyEventExpiryTs = Number.MAX_SAFE_INTEGER;\n this.scheduleStickyTimer();\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"room-sticky-events.js","names":[],"sources":["../../src/models/room-sticky-events.ts"],"sourcesContent":["import { logger as loggerInstance } from \"../logger.ts\";\nimport { type MatrixEvent } from \"./event.ts\";\nimport { TypedEventEmitter } from \"./typed-event-emitter.ts\";\n\nconst logger = loggerInstance.getChild(\"RoomStickyEvents\");\n\nexport enum RoomStickyEventsEvent {\n Update = \"RoomStickyEvents.Update\",\n}\n\nexport type StickyMatrixEvent = MatrixEvent & { unstableStickyExpiresAt: number };\n\nexport type RoomStickyEventsMap = {\n /**\n * Fires when any sticky event changes happen in a room.\n * @param added Any new sticky events with no predecessor events (matching sender, type, and sticky_key)\n * @param updated Any sticky events that supersede an existing event (matching sender, type, and sticky_key)\n * @param removed The events that were removed from the map due to expiry.\n */\n [RoomStickyEventsEvent.Update]: (\n added: StickyMatrixEvent[],\n updated: { current: StickyMatrixEvent; previous: StickyMatrixEvent }[],\n removed: StickyMatrixEvent[],\n ) => void;\n};\n\ntype UserId = `@${string}`;\n\nfunction assertIsUserId(value: unknown): asserts value is UserId {\n if (typeof value !== \"string\") throw new Error(\"Not a string\");\n if (!value.startsWith(\"@\")) throw new Error(\"Not a userId\");\n}\n\n/**\n * Tracks sticky events on behalf of one room, and fires an event\n * whenever a sticky event is updated or replaced.\n */\nexport class RoomStickyEventsStore extends TypedEventEmitter<RoomStickyEventsEvent, RoomStickyEventsMap> {\n /**\n * Sticky event map is a nested map of:\n * eventType -> `content.sticky_key sender` -> StickyMatrixEvent[]\n *\n * The events are ordered in latest to earliest expiry, so that the first event\n * in the array will always be the \"current\" one.\n */\n private readonly stickyEventsMap = new Map<string, Map<string, StickyMatrixEvent[]>>();\n /**\n * These are sticky events that have no sticky key and therefore exist outside the tuple\n * system above. They are just held in this Set until they expire.\n */\n private readonly unkeyedStickyEvents = new Set<StickyMatrixEvent>();\n\n private stickyEventTimer?: ReturnType<typeof setTimeout>;\n private nextStickyEventExpiryTs: number = Number.MAX_SAFE_INTEGER;\n\n /**\n * Sort two sticky events by order of expiry. This assumes the sticky events have the same\n * `type`, `sticky_key` and `sender`.\n * @returns A positive value if event A will expire sooner, or a negative value if event B will expire sooner.\n */\n private static sortStickyEvent(eventA: StickyMatrixEvent, eventB: StickyMatrixEvent): number {\n // Sticky events with the same key have to use the same expiration duration.\n // Hence, comparing via `origin_server_ts` yields the exact same result as comparing their expiration time.\n if (eventB.getTs() !== eventA.getTs()) {\n return eventB.getTs() - eventA.getTs();\n }\n\n if ((eventB.getId() ?? \"\") > (eventA.getId() ?? \"\")) {\n return 1;\n }\n\n // This should fail as we've got corruption in our sticky array.\n throw Error(\"Comparing two sticky events with the same event ID is not allowed.\");\n }\n\n /**\n * Generate the correct key for an event to be found in the inner maps of `stickyEventsMap`.\n * @param stickyKey The sticky key of an event.\n * @param sender The sender of the event.\n */\n private static stickyMapKey(stickyKey: string, sender: UserId): string {\n return `${stickyKey}${sender}`;\n }\n\n /**\n * Get all sticky events that are currently active.\n * @returns An iterable set of events.\n * @yields {@link StickyMatrixEvent}\n */\n public *getStickyEvents(): Iterable<StickyMatrixEvent> {\n yield* this.unkeyedStickyEvents;\n for (const innerMap of this.stickyEventsMap.values()) {\n // Inner map contains a map of sender+stickykeys => all sticky events\n for (const events of innerMap.values()) {\n // The first sticky event is the \"current\" one in the sticky map.\n yield events[0];\n }\n }\n }\n\n /**\n * Get an active sticky event that match the given `type`, `sender`, and `stickyKey`\n * @param type The event `type`.\n * @param sender The sender of the sticky event.\n * @param stickyKey The sticky key used by the event.\n * @returns A matching active sticky event, or undefined.\n */\n public getKeyedStickyEvent(sender: string, type: string, stickyKey: string): StickyMatrixEvent | undefined {\n assertIsUserId(sender);\n return this.stickyEventsMap.get(type)?.get(RoomStickyEventsStore.stickyMapKey(stickyKey, sender))?.[0];\n }\n\n /**\n * Get active sticky events without a sticky key that match the given `type` and `sender`.\n * @param type The event `type`.\n * @param sender The sender of the sticky event.\n * @returns An array of matching sticky events.\n */\n public getUnkeyedStickyEvent(sender: string, type: string): StickyMatrixEvent[] {\n return [...this.unkeyedStickyEvents].filter((ev) => ev.getType() === type && ev.getSender() === sender);\n }\n\n /**\n * Adds a sticky event into the local sticky event map.\n *\n * NOTE: This will not cause `RoomEvent.StickyEvents` to be emitted.\n *\n * @throws If the `event` does not contain valid sticky data.\n * @param event The MatrixEvent that contains sticky data.\n * @returns An object describing whether the event was added to the map,\n * and the previous event it may have replaced.\n */\n private addStickyEvent(event: MatrixEvent): { added: true; prevEvent?: StickyMatrixEvent } | { added: false } {\n const stickyKey = event.getContent().msc4354_sticky_key;\n if (typeof stickyKey !== \"string\" && stickyKey !== undefined) {\n throw new Error(`${event.getId()} is missing msc4354_sticky_key`);\n }\n\n // With this we have the guarantee, that all events in stickyEventsMap are correctly formatted\n if (event.unstableStickyExpiresAt === undefined) {\n throw new Error(`${event.getId()} is missing msc4354_sticky.duration_ms`);\n }\n const sender = event.getSender();\n const type = event.getType();\n assertIsUserId(sender);\n if (event.unstableStickyExpiresAt <= Date.now()) {\n logger.info(\"ignored sticky event with older expiration time than current time\", stickyKey);\n return { added: false };\n }\n\n // While we fully expect the server to always provide the correct value,\n // this is just insurance to protect against attacks on our Map.\n if (!sender.startsWith(\"@\")) {\n throw new Error(\"Expected sender to start with @\");\n }\n\n const stickyEvent = event as StickyMatrixEvent;\n\n if (stickyKey === undefined) {\n this.unkeyedStickyEvents.add(stickyEvent);\n // Recalculate the next expiry time.\n this.nextStickyEventExpiryTs = Math.min(event.unstableStickyExpiresAt, this.nextStickyEventExpiryTs);\n\n this.scheduleStickyTimer();\n return { added: true };\n }\n\n // Why this is safe:\n // A type may contain anything but the *sender* is tightly\n // constrained so that a key will always end with a @<user_id>\n // E.g. Where a malicious event type might be \"rtc.member.event@foo:bar\" the key becomes:\n // \"rtc.member.event.@foo:bar@bar:baz\"\n const innerMapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);\n const currentEventSet = [stickyEvent, ...(this.stickyEventsMap.get(type)?.get(innerMapKey) ?? [])].sort(\n RoomStickyEventsStore.sortStickyEvent,\n );\n if (!this.stickyEventsMap.has(type)) {\n this.stickyEventsMap.set(type, new Map());\n }\n this.stickyEventsMap.get(type)?.set(innerMapKey, currentEventSet);\n\n // Recalculate the next expiry time.\n this.nextStickyEventExpiryTs = Math.min(stickyEvent.unstableStickyExpiresAt, this.nextStickyEventExpiryTs);\n\n this.scheduleStickyTimer();\n return {\n added: currentEventSet[0] === stickyEvent,\n prevEvent: currentEventSet?.[1],\n };\n }\n\n /**\n * Add a series of sticky events, emitting `RoomEvent.StickyEvents` if any\n * changes were made.\n * @param events A set of new sticky events.\n */\n public addStickyEvents(events: MatrixEvent[]): void {\n const added: StickyMatrixEvent[] = [];\n const updated: { current: StickyMatrixEvent; previous: StickyMatrixEvent }[] = [];\n for (const event of events) {\n try {\n const result = this.addStickyEvent(event);\n if (result.added) {\n if (result.prevEvent) {\n // e is validated as a StickyMatrixEvent by virtue of `addStickyEvent` returning added: true.\n updated.push({ current: event as StickyMatrixEvent, previous: result.prevEvent });\n } else {\n added.push(event as StickyMatrixEvent);\n }\n }\n } catch (ex) {\n logger.warn(\"ignored invalid sticky event\", ex);\n }\n }\n if (added.length || updated.length) this.emit(RoomStickyEventsEvent.Update, added, updated, []);\n this.scheduleStickyTimer();\n }\n\n /**\n * Schedule the sticky event expiry timer. The timer will\n * run immediately if an event has already expired.\n */\n private scheduleStickyTimer(): void {\n if (this.stickyEventTimer) {\n clearTimeout(this.stickyEventTimer);\n this.stickyEventTimer = undefined;\n }\n if (this.nextStickyEventExpiryTs === Number.MAX_SAFE_INTEGER) {\n // We have no events due to expire.\n return;\n } // otherwise, schedule in the future\n this.stickyEventTimer = setTimeout(this.cleanExpiredStickyEvents, this.nextStickyEventExpiryTs - Date.now());\n }\n\n /**\n * Clean out any expired sticky events.\n */\n private readonly cleanExpiredStickyEvents = (): void => {\n const now = Date.now();\n const removedEvents: StickyMatrixEvent[] = [];\n\n // We will recalculate this as we check all events.\n this.nextStickyEventExpiryTs = Number.MAX_SAFE_INTEGER;\n for (const [eventType, innerEvents] of this.stickyEventsMap.entries()) {\n for (const [innerMapKey, [currentEvent, ...previousEvents]] of innerEvents) {\n // we only added items with `sticky` into this map so we can assert non-null here\n if (now >= currentEvent.unstableStickyExpiresAt) {\n logger.debug(\"Expiring sticky event\", currentEvent.getId());\n removedEvents.push(currentEvent);\n this.stickyEventsMap.get(eventType)!.delete(innerMapKey);\n } else {\n // Ensure we remove any previous events which have now expired, to avoid unbounded memory consumption.\n this.stickyEventsMap\n .get(eventType)!\n .set(innerMapKey, [\n currentEvent,\n ...previousEvents.filter((e) => e.unstableStickyExpiresAt <= now),\n ]);\n // If not removing the event, check to see if it's the next lowest expiry.\n this.nextStickyEventExpiryTs = Math.min(\n this.nextStickyEventExpiryTs,\n currentEvent.unstableStickyExpiresAt,\n );\n }\n }\n // Clean up map after use.\n if (this.stickyEventsMap.get(eventType)?.size === 0) {\n this.stickyEventsMap.delete(eventType);\n }\n }\n for (const event of this.unkeyedStickyEvents) {\n if (now >= event.unstableStickyExpiresAt) {\n logger.debug(\"Expiring sticky event\", event.getId());\n this.unkeyedStickyEvents.delete(event);\n removedEvents.push(event);\n } else {\n // If not removing the event, check to see if it's the next lowest expiry.\n this.nextStickyEventExpiryTs = Math.min(this.nextStickyEventExpiryTs, event.unstableStickyExpiresAt);\n }\n }\n if (removedEvents.length) {\n this.emit(RoomStickyEventsEvent.Update, [], [], removedEvents);\n }\n // Finally, schedule the next run.\n this.scheduleStickyTimer();\n };\n\n /**\n * Handles incoming event redactions. Checks the sticky map\n * for any active sticky events being redacted.\n * @param redactedEvent The MatrixEvent OR event ID of the event being redacted. MAY not be a sticky event.\n */\n public handleRedaction(redactedEvent: MatrixEvent | string): void {\n // Note, we do not adjust`nextStickyEventExpiryTs` here.\n // If this event happens to be the most recent expiring event\n // then we may do one extra iteration of cleanExpiredStickyEvents\n // but this saves us having to iterate over all events here to calculate\n // the next expiry time.\n\n // Note, as soon as we find a positive match on an event in this function\n // we can return. There is no need to continue iterating on a positive match\n // as an event can only appear in one map.\n\n // Handle unkeyedStickyEvents first since it's *quick*.\n const redactEventId = typeof redactedEvent === \"string\" ? redactedEvent : redactedEvent.getId();\n for (const event of this.unkeyedStickyEvents) {\n if (event.getId() === redactEventId) {\n this.unkeyedStickyEvents.delete(event);\n this.emit(RoomStickyEventsEvent.Update, [], [], [event]);\n return;\n }\n }\n\n // Faster method of finding the event since we have the event cached.\n if (typeof redactedEvent !== \"string\" && !redactedEvent.isRedacted()) {\n const stickyKey = redactedEvent.getContent().msc4354_sticky_key;\n if (typeof stickyKey !== \"string\" && stickyKey !== undefined) {\n return; // Not a sticky event.\n }\n const eventType = redactedEvent.getType();\n const sender = redactedEvent.getSender();\n assertIsUserId(sender);\n const innerMap = this.stickyEventsMap.get(eventType);\n if (!innerMap) {\n return;\n }\n const mapKey = RoomStickyEventsStore.stickyMapKey(stickyKey, sender);\n const [currentEvent, ...previousEvents] = innerMap.get(mapKey) ?? [];\n if (!currentEvent) {\n // No event current in the map so ignore.\n return;\n }\n logger.debug(`Redaction for ${redactEventId} under sticky key ${stickyKey}`);\n // Revert to previous state, taking care to skip any other redacted events.\n const newEvents = previousEvents.filter((e) => !e.isRedacted()).sort(RoomStickyEventsStore.sortStickyEvent);\n this.stickyEventsMap.get(eventType)?.set(mapKey, newEvents);\n if (newEvents.length) {\n this.emit(\n RoomStickyEventsEvent.Update,\n [],\n [\n {\n // This looks confusing. This emits that the newer event\n // has been redacted and the previous event has taken it's place.\n previous: currentEvent,\n current: newEvents[0],\n },\n ],\n [],\n );\n } else {\n // We did not find a previous event, so just expire.\n innerMap.delete(mapKey);\n if (innerMap.size === 0) {\n this.stickyEventsMap.delete(eventType);\n }\n this.emit(RoomStickyEventsEvent.Update, [], [], [currentEvent]);\n }\n return;\n }\n\n // We only know the event ID of the redacted event, so we need to\n // traverse the map to find our event.\n for (const innerMap of this.stickyEventsMap.values()) {\n for (const [currentEvent] of innerMap.values()) {\n if (currentEvent.getId() !== redactEventId) {\n continue;\n }\n // Found the event.\n return this.handleRedaction(currentEvent);\n }\n }\n }\n\n /**\n * Clear all events and stop the timer from firing.\n */\n public clear(): void {\n this.stickyEventsMap.clear();\n // Unschedule timer.\n this.nextStickyEventExpiryTs = Number.MAX_SAFE_INTEGER;\n this.scheduleStickyTimer();\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"room-summary.js","names":["RoomSummary","constructor","roomId","info"],"sources":["../../src/models/room-summary.ts"],"sourcesContent":["/*\nCopyright 2015 - 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * A stripped m.room.member event which contains the key renderable fields from the event,\n * sent only in simplified sliding sync (not `/v3/sync`).\n * This is very similar to MSC4186Hero from sliding-sync.ts but an internal format with\n * camelCase rather than underscores.\n */\nexport type Hero = {\n userId: string;\n displayName?: string;\n avatarUrl?: string;\n /**\n * If true, the hero is from an MSC4186 summary, in which case `displayName` and `avatarUrl` will\n * have been set by the server if available. If false, the `Hero` has been constructed from a `/v3/sync` response,\n * so these fields will always be undefined.\n */\n fromMSC4186: boolean;\n};\n\n/**\n * High level summary information for a room, as returned by `/v3/sync`.\n */\nexport interface IRoomSummary {\n /**\n * The room heroes: a selected set of members that can be used when summarising or\n * generating a name for a room. List of user IDs.\n */\n \"m.heroes\": string[];\n /**\n * The number of joined members in the room.\n */\n \"m.joined_member_count\"?: number;\n /**\n * The number of invited members in the room.\n */\n \"m.invited_member_count\"?: number;\n}\n\ninterface IInfo {\n /** The title of the room (e.g. `m.room.name`) */\n title: string;\n /** The description of the room (e.g. `m.room.topic`) */\n desc?: string;\n /** The number of joined users. */\n numMembers?: number;\n /** The list of aliases for this room. */\n aliases?: string[];\n /** The timestamp for this room. */\n timestamp?: number;\n}\n\n/**\n * Construct a new Room Summary. A summary can be used for display on a recent\n * list, without having to load the entire room list into memory.\n * @param roomId - Required. The ID of this room.\n * @param info - Optional. The summary info. Additional keys are supported.\n */\nexport class RoomSummary {\n public constructor(\n public readonly roomId: string,\n info?: IInfo,\n ) {}\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAaA;AACA;AACA;;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMA,WAAW,CAAC;EACdC,WAAWA,CACEC,MAAc,EAC9BC,IAAY,EACd;IAAA,KAFkBD,MAAc,GAAdA,MAAc;EAE/B;AACP","ignoreList":[]}
1
+ {"version":3,"file":"room-summary.js","names":[],"sources":["../../src/models/room-summary.ts"],"sourcesContent":["/*\nCopyright 2015 - 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * A stripped m.room.member event which contains the key renderable fields from the event,\n * sent only in simplified sliding sync (not `/v3/sync`).\n * This is very similar to MSC4186Hero from sliding-sync.ts but an internal format with\n * camelCase rather than underscores.\n */\nexport type Hero = {\n userId: string;\n displayName?: string;\n avatarUrl?: string;\n /**\n * If true, the hero is from an MSC4186 summary, in which case `displayName` and `avatarUrl` will\n * have been set by the server if available. If false, the `Hero` has been constructed from a `/v3/sync` response,\n * so these fields will always be undefined.\n */\n fromMSC4186: boolean;\n};\n\n/**\n * High level summary information for a room, as returned by `/v3/sync`.\n */\nexport interface IRoomSummary {\n /**\n * The room heroes: a selected set of members that can be used when summarising or\n * generating a name for a room. List of user IDs.\n */\n \"m.heroes\": string[];\n /**\n * The number of joined members in the room.\n */\n \"m.joined_member_count\"?: number;\n /**\n * The number of invited members in the room.\n */\n \"m.invited_member_count\"?: number;\n}\n\ninterface IInfo {\n /** The title of the room (e.g. `m.room.name`) */\n title: string;\n /** The description of the room (e.g. `m.room.topic`) */\n desc?: string;\n /** The number of joined users. */\n numMembers?: number;\n /** The list of aliases for this room. */\n aliases?: string[];\n /** The timestamp for this room. */\n timestamp?: number;\n}\n\n/**\n * Construct a new Room Summary. A summary can be used for display on a recent\n * list, without having to load the entire room list into memory.\n * @param roomId - Required. The ID of this room.\n * @param info - Optional. The summary info. Additional keys are supported.\n */\nexport class RoomSummary {\n public constructor(\n public readonly roomId: string,\n info?: IInfo,\n ) {}\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAaA;AACA;AACA;;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAM,WAAW,CAAC;EACd,WAAW,CACE,MAAc,EAC9B,IAAY,EACd;IAAA,KAFkB,MAAc,GAAd,MAAc;EAE/B;AACP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/models/room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../src/models/room.ts"],"names":[],"mappings":"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"}