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,5 +1,3 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
2
  /*
5
3
  Copyright 2017 - 2021 The Matrix.org Foundation C.I.C.
@@ -21,7 +19,7 @@ import { SyncAccumulator } from "../sync-accumulator.js";
21
19
  import { deepCopy, promiseTry } from "../utils.js";
22
20
  import { exists as idbExists } from "../indexeddb-helpers.js";
23
21
  import { logger } from "../logger.js";
24
- var DB_MIGRATIONS = [db => {
22
+ const DB_MIGRATIONS = [db => {
25
23
  // Make user store, clobber based on user ID. (userId property of User objects)
26
24
  db.createObjectStore("users", {
27
25
  keyPath: ["userId"]
@@ -38,7 +36,7 @@ var DB_MIGRATIONS = [db => {
38
36
  keyPath: ["clobber"]
39
37
  });
40
38
  }, db => {
41
- var oobMembersStore = db.createObjectStore("oob_membership_events", {
39
+ const oobMembersStore = db.createObjectStore("oob_membership_events", {
42
40
  keyPath: ["room_id", "state_key"]
43
41
  });
44
42
  oobMembersStore.createIndex("room", "room_id");
@@ -57,7 +55,7 @@ var DB_MIGRATIONS = [db => {
57
55
  }
58
56
  // Expand as needed.
59
57
  ];
60
- var VERSION = DB_MIGRATIONS.length;
58
+ const VERSION = DB_MIGRATIONS.length;
61
59
 
62
60
  /**
63
61
  * Helper method to collect results from a Cursor and promiseify it.
@@ -71,17 +69,17 @@ var VERSION = DB_MIGRATIONS.length;
71
69
  * @throws If there was an error completing the query.
72
70
  */
73
71
  function selectQuery(store, keyRange, resultMapper) {
74
- var query = store.openCursor(keyRange);
72
+ const query = store.openCursor(keyRange);
75
73
  return new Promise((resolve, reject) => {
76
- var results = [];
74
+ const results = [];
77
75
  query.onerror = () => {
78
- reject(new Error("selectQuery failed for ".concat(store.name), {
76
+ reject(new Error(`selectQuery failed for ${store.name}`, {
79
77
  cause: query.error
80
78
  }));
81
79
  };
82
80
  // collect results
83
81
  query.onsuccess = () => {
84
- var cursor = query.result;
82
+ const cursor = query.result;
85
83
  if (!cursor) {
86
84
  resolve(results);
87
85
  return; // end of results
@@ -135,9 +133,7 @@ export class LocalIndexedDBStoreBackend {
135
133
  * @param dbName - Optional database name. The same name must be used
136
134
  * to open the same database.
137
135
  */
138
- constructor(indexedDB) {
139
- var dbName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "default";
140
- this.indexedDB = indexedDB;
136
+ constructor(indexedDB, dbName = "default") {
141
137
  _defineProperty(this, "dbName", void 0);
142
138
  _defineProperty(this, "syncAccumulator", void 0);
143
139
  _defineProperty(this, "db", void 0);
@@ -145,6 +141,7 @@ export class LocalIndexedDBStoreBackend {
145
141
  _defineProperty(this, "_isNewlyCreated", false);
146
142
  _defineProperty(this, "syncToDatabasePromise", void 0);
147
143
  _defineProperty(this, "pendingUserPresenceData", []);
144
+ this.indexedDB = indexedDB;
148
145
  this.dbName = "matrix-js-sdk:" + dbName;
149
146
  this.syncAccumulator = new SyncAccumulator();
150
147
  }
@@ -155,18 +152,17 @@ export class LocalIndexedDBStoreBackend {
155
152
  * @returns Promise which resolves if successfully connected.
156
153
  */
157
154
  connect(onClose) {
158
- var _this = this;
159
155
  if (!this.disconnected) {
160
- logger.log("LocalIndexedDBStoreBackend.connect: already connected or connecting");
156
+ logger.log(`LocalIndexedDBStoreBackend.connect: already connected or connecting`);
161
157
  return Promise.resolve();
162
158
  }
163
159
  this.disconnected = false;
164
- logger.log("LocalIndexedDBStoreBackend.connect: connecting...");
165
- var req = this.indexedDB.open(this.dbName, VERSION);
160
+ logger.log(`LocalIndexedDBStoreBackend.connect: connecting...`);
161
+ const req = this.indexedDB.open(this.dbName, VERSION);
166
162
  req.onupgradeneeded = ev => {
167
- var db = req.result;
168
- var oldVersion = ev.oldVersion;
169
- logger.log("LocalIndexedDBStoreBackend.connect: upgrading from ".concat(oldVersion));
163
+ const db = req.result;
164
+ const oldVersion = ev.oldVersion;
165
+ logger.log(`LocalIndexedDBStoreBackend.connect: upgrading from ${oldVersion}`);
170
166
  if (oldVersion < 1) {
171
167
  // The database did not previously exist
172
168
  this._isNewlyCreated = true;
@@ -176,28 +172,27 @@ export class LocalIndexedDBStoreBackend {
176
172
  });
177
173
  };
178
174
  req.onblocked = () => {
179
- logger.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere");
175
+ logger.log(`can't yet open LocalIndexedDBStoreBackend because it is open elsewhere`);
180
176
  };
181
- logger.log("LocalIndexedDBStoreBackend.connect: awaiting connection...");
182
- return reqAsEventPromise(req).then(/*#__PURE__*/_asyncToGenerator(function* () {
183
- logger.log("LocalIndexedDBStoreBackend.connect: connected");
184
- _this.db = req.result;
177
+ logger.log(`LocalIndexedDBStoreBackend.connect: awaiting connection...`);
178
+ return reqAsEventPromise(req).then(async () => {
179
+ logger.log(`LocalIndexedDBStoreBackend.connect: connected`);
180
+ this.db = req.result;
185
181
 
186
182
  // add a poorly-named listener for when deleteDatabase is called
187
183
  // so we can close our db connections.
188
- _this.db.onversionchange = () => {
189
- var _this$db;
190
- (_this$db = _this.db) === null || _this$db === void 0 || _this$db.close(); // this does not call onclose
191
- _this.disconnected = true;
192
- _this.db = undefined;
184
+ this.db.onversionchange = () => {
185
+ this.db?.close(); // this does not call onclose
186
+ this.disconnected = true;
187
+ this.db = undefined;
193
188
  };
194
- _this.db.onclose = () => {
195
- _this.disconnected = true;
196
- _this.db = undefined;
197
- onClose === null || onClose === void 0 || onClose();
189
+ this.db.onclose = () => {
190
+ this.disconnected = true;
191
+ this.db = undefined;
192
+ onClose?.();
198
193
  };
199
- yield _this.init();
200
- }));
194
+ await this.init();
195
+ });
201
196
  }
202
197
 
203
198
  /** @returns whether or not the database was newly created in this session. */
@@ -210,11 +205,8 @@ export class LocalIndexedDBStoreBackend {
210
205
  * @returns Promise which resolves on success
211
206
  */
212
207
  init() {
213
- return Promise.all([this.loadAccountData(), this.loadSyncData()]).then(_ref2 => {
214
- var _ref3 = _slicedToArray(_ref2, 2),
215
- accountData = _ref3[0],
216
- syncData = _ref3[1];
217
- logger.log("LocalIndexedDBStoreBackend: loaded initial data");
208
+ return Promise.all([this.loadAccountData(), this.loadSyncData()]).then(([accountData, syncData]) => {
209
+ logger.log(`LocalIndexedDBStoreBackend: loaded initial data`);
218
210
  this.syncAccumulator.accumulate({
219
211
  next_batch: syncData.nextBatch,
220
212
  rooms: syncData.roomsData,
@@ -233,20 +225,20 @@ export class LocalIndexedDBStoreBackend {
233
225
  */
234
226
  getOutOfBandMembers(roomId) {
235
227
  return new Promise((resolve, reject) => {
236
- var tx = this.db.transaction(["oob_membership_events"], "readonly");
237
- var store = tx.objectStore("oob_membership_events");
238
- var roomIndex = store.index("room");
239
- var range = IDBKeyRange.only(roomId);
240
- var request = roomIndex.openCursor(range);
241
- var membershipEvents = [];
228
+ const tx = this.db.transaction(["oob_membership_events"], "readonly");
229
+ const store = tx.objectStore("oob_membership_events");
230
+ const roomIndex = store.index("room");
231
+ const range = IDBKeyRange.only(roomId);
232
+ const request = roomIndex.openCursor(range);
233
+ const membershipEvents = [];
242
234
  // did we encounter the oob_written marker object
243
235
  // amongst the results? That means OOB member
244
236
  // loading already happened for this room
245
237
  // but there were no members to persist as they
246
238
  // were all known already
247
- var oobWritten = false;
239
+ let oobWritten = false;
248
240
  request.onsuccess = () => {
249
- var cursor = request.result;
241
+ const cursor = request.result;
250
242
  if (!cursor) {
251
243
  // Unknown room
252
244
  if (!membershipEvents.length && !oobWritten) {
@@ -254,7 +246,7 @@ export class LocalIndexedDBStoreBackend {
254
246
  }
255
247
  return resolve(membershipEvents);
256
248
  }
257
- var record = cursor.value;
249
+ const record = cursor.value;
258
250
  if (record.oob_written) {
259
251
  oobWritten = true;
260
252
  } else {
@@ -266,7 +258,7 @@ export class LocalIndexedDBStoreBackend {
266
258
  reject(err);
267
259
  };
268
260
  }).then(events => {
269
- logger.log("LL: got ".concat(events === null || events === void 0 ? void 0 : events.length, " membershipEvents from storage for room ").concat(roomId, " ..."));
261
+ logger.log(`LL: got ${events?.length} membershipEvents from storage for room ${roomId} ...`);
270
262
  return events;
271
263
  });
272
264
  }
@@ -277,55 +269,46 @@ export class LocalIndexedDBStoreBackend {
277
269
  * marked as fetched, and getOutOfBandMembers will return an empty array instead of null
278
270
  * @param membershipEvents - the membership events to store
279
271
  */
280
- setOutOfBandMembers(roomId, membershipEvents) {
281
- var _this2 = this;
282
- return _asyncToGenerator(function* () {
283
- logger.log("LL: backend about to store ".concat(membershipEvents.length) + " members for ".concat(roomId));
284
- var tx = _this2.db.transaction(["oob_membership_events"], "readwrite");
285
- var store = tx.objectStore("oob_membership_events");
286
- membershipEvents.forEach(e => {
287
- store.put(e);
288
- });
289
- // aside from all the events, we also write a marker object to the store
290
- // to mark the fact that OOB members have been written for this room.
291
- // It's possible that 0 members need to be written as all where previously know
292
- // but we still need to know whether to return null or [] from getOutOfBandMembers
293
- // where null means out of band members haven't been stored yet for this room
294
- var markerObject = {
295
- room_id: roomId,
296
- oob_written: true,
297
- state_key: 0
298
- };
299
- store.put(markerObject);
300
- yield txnAsPromise(tx);
301
- logger.log("LL: backend done storing for ".concat(roomId, "!"));
302
- })();
272
+ async setOutOfBandMembers(roomId, membershipEvents) {
273
+ logger.log(`LL: backend about to store ${membershipEvents.length}` + ` members for ${roomId}`);
274
+ const tx = this.db.transaction(["oob_membership_events"], "readwrite");
275
+ const store = tx.objectStore("oob_membership_events");
276
+ membershipEvents.forEach(e => {
277
+ store.put(e);
278
+ });
279
+ // aside from all the events, we also write a marker object to the store
280
+ // to mark the fact that OOB members have been written for this room.
281
+ // It's possible that 0 members need to be written as all where previously know
282
+ // but we still need to know whether to return null or [] from getOutOfBandMembers
283
+ // where null means out of band members haven't been stored yet for this room
284
+ const markerObject = {
285
+ room_id: roomId,
286
+ oob_written: true,
287
+ state_key: 0
288
+ };
289
+ store.put(markerObject);
290
+ await txnAsPromise(tx);
291
+ logger.log(`LL: backend done storing for ${roomId}!`);
303
292
  }
304
- clearOutOfBandMembers(roomId) {
305
- var _this3 = this;
306
- return _asyncToGenerator(function* () {
307
- // the approach to delete all members for a room
308
- // is to get the min and max state key from the index
309
- // for that room, and then delete between those
310
- // keys in the store.
311
- // this should be way faster than deleting every member
312
- // individually for a large room.
313
- var readTx = _this3.db.transaction(["oob_membership_events"], "readonly");
314
- var store = readTx.objectStore("oob_membership_events");
315
- var roomIndex = store.index("room");
316
- var roomRange = IDBKeyRange.only(roomId);
317
- var minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "next")).then(cursor => (cursor === null || cursor === void 0 ? void 0 : cursor.primaryKey)[1]);
318
- var maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "prev")).then(cursor => (cursor === null || cursor === void 0 ? void 0 : cursor.primaryKey)[1]);
319
- var _yield$Promise$all = yield Promise.all([minStateKeyProm, maxStateKeyProm]),
320
- _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2),
321
- minStateKey = _yield$Promise$all2[0],
322
- maxStateKey = _yield$Promise$all2[1];
323
- var writeTx = _this3.db.transaction(["oob_membership_events"], "readwrite");
324
- var writeStore = writeTx.objectStore("oob_membership_events");
325
- var membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);
326
- logger.log("LL: Deleting all users + marker in storage for room ".concat(roomId, ", with key range:"), [roomId, minStateKey], [roomId, maxStateKey]);
327
- yield reqAsPromise(writeStore.delete(membersKeyRange));
328
- })();
293
+ async clearOutOfBandMembers(roomId) {
294
+ // the approach to delete all members for a room
295
+ // is to get the min and max state key from the index
296
+ // for that room, and then delete between those
297
+ // keys in the store.
298
+ // this should be way faster than deleting every member
299
+ // individually for a large room.
300
+ const readTx = this.db.transaction(["oob_membership_events"], "readonly");
301
+ const store = readTx.objectStore("oob_membership_events");
302
+ const roomIndex = store.index("room");
303
+ const roomRange = IDBKeyRange.only(roomId);
304
+ const minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "next")).then(cursor => cursor?.primaryKey?.[1]);
305
+ const maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, "prev")).then(cursor => cursor?.primaryKey?.[1]);
306
+ const [minStateKey, maxStateKey] = await Promise.all([minStateKeyProm, maxStateKeyProm]);
307
+ const writeTx = this.db.transaction(["oob_membership_events"], "readwrite");
308
+ const writeStore = writeTx.objectStore("oob_membership_events");
309
+ const membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);
310
+ logger.log(`LL: Deleting all users + marker in storage for room ${roomId}, with key range:`, [roomId, minStateKey], [roomId, maxStateKey]);
311
+ await reqAsPromise(writeStore.delete(membersKeyRange));
329
312
  }
330
313
 
331
314
  /**
@@ -335,25 +318,23 @@ export class LocalIndexedDBStoreBackend {
335
318
  */
336
319
  clearDatabase() {
337
320
  return new Promise(resolve => {
338
- var _this$db2;
339
- logger.log("Removing indexeddb instance: ".concat(this.dbName));
321
+ logger.log(`Removing indexeddb instance: ${this.dbName}`);
340
322
 
341
323
  // Close the database first to avoid firing unexpected close events
342
- (_this$db2 = this.db) === null || _this$db2 === void 0 || _this$db2.close();
343
- var req = this.indexedDB.deleteDatabase(this.dbName);
324
+ this.db?.close();
325
+ const req = this.indexedDB.deleteDatabase(this.dbName);
344
326
  req.onblocked = () => {
345
- logger.log("can't yet delete indexeddb ".concat(this.dbName, " because it is open elsewhere"));
327
+ logger.log(`can't yet delete indexeddb ${this.dbName} because it is open elsewhere`);
346
328
  };
347
329
  req.onerror = () => {
348
- var _req$error;
349
330
  // in firefox, with indexedDB disabled, this fails with a
350
331
  // DOMError. We treat this as non-fatal, so that we can still
351
332
  // use the app.
352
- logger.warn("unable to delete js-sdk store indexeddb: ".concat((_req$error = req.error) === null || _req$error === void 0 ? void 0 : _req$error.name));
333
+ logger.warn(`unable to delete js-sdk store indexeddb: ${req.error?.name}`);
353
334
  resolve();
354
335
  };
355
336
  req.onsuccess = () => {
356
- logger.log("Removed indexeddb instance: ".concat(this.dbName));
337
+ logger.log(`Removed indexeddb instance: ${this.dbName}`);
357
338
  resolve();
358
339
  };
359
340
  });
@@ -368,9 +349,8 @@ export class LocalIndexedDBStoreBackend {
368
349
  * client state to where it was at the last save, or null if there
369
350
  * is no saved sync data.
370
351
  */
371
- getSavedSync() {
372
- var copy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
373
- var data = this.syncAccumulator.getJSON();
352
+ getSavedSync(copy = true) {
353
+ const data = this.syncAccumulator.getJSON();
374
354
  if (!data.nextBatch) return Promise.resolve(null);
375
355
  if (copy) {
376
356
  // We must deep copy the stored data so that the /sync processing code doesn't
@@ -396,29 +376,23 @@ export class LocalIndexedDBStoreBackend {
396
376
  * @param userTuples - The user tuples
397
377
  * @returns Promise which resolves if the data was persisted.
398
378
  */
399
- syncToDatabase(userTuples) {
400
- var _this4 = this;
401
- return _asyncToGenerator(function* () {
402
- if (_this4.syncToDatabasePromise) {
403
- logger.warn("Skipping syncToDatabase() as persist already in flight");
404
- _this4.pendingUserPresenceData.push(...userTuples);
405
- return _this4.syncToDatabasePromise;
406
- }
407
- userTuples.unshift(..._this4.pendingUserPresenceData);
408
- _this4.syncToDatabasePromise = _this4.doSyncToDatabase(userTuples);
409
- return _this4.syncToDatabasePromise;
410
- })();
379
+ async syncToDatabase(userTuples) {
380
+ if (this.syncToDatabasePromise) {
381
+ logger.warn("Skipping syncToDatabase() as persist already in flight");
382
+ this.pendingUserPresenceData.push(...userTuples);
383
+ return this.syncToDatabasePromise;
384
+ }
385
+ userTuples.unshift(...this.pendingUserPresenceData);
386
+ this.syncToDatabasePromise = this.doSyncToDatabase(userTuples);
387
+ return this.syncToDatabasePromise;
411
388
  }
412
- doSyncToDatabase(userTuples) {
413
- var _this5 = this;
414
- return _asyncToGenerator(function* () {
415
- try {
416
- var syncData = _this5.syncAccumulator.getJSON(true);
417
- yield Promise.all([_this5.persistUserPresenceEvents(userTuples), _this5.persistAccountData(syncData.accountData), _this5.persistSyncData(syncData.nextBatch, syncData.roomsData)]);
418
- } finally {
419
- _this5.syncToDatabasePromise = undefined;
420
- }
421
- })();
389
+ async doSyncToDatabase(userTuples) {
390
+ try {
391
+ const syncData = this.syncAccumulator.getJSON(true);
392
+ await Promise.all([this.persistUserPresenceEvents(userTuples), this.persistAccountData(syncData.accountData), this.persistSyncData(syncData.nextBatch, syncData.roomsData)]);
393
+ } finally {
394
+ this.syncToDatabasePromise = undefined;
395
+ }
422
396
  }
423
397
 
424
398
  /**
@@ -430,8 +404,8 @@ export class LocalIndexedDBStoreBackend {
430
404
  persistSyncData(nextBatch, roomsData) {
431
405
  logger.log("Persisting sync data up to", nextBatch);
432
406
  return promiseTry(() => {
433
- var txn = this.db.transaction(["sync"], "readwrite");
434
- var store = txn.objectStore("sync");
407
+ const txn = this.db.transaction(["sync"], "readwrite");
408
+ const store = txn.objectStore("sync");
435
409
  store.put({
436
410
  clobber: "-",
437
411
  // constant key so will always clobber
@@ -452,9 +426,9 @@ export class LocalIndexedDBStoreBackend {
452
426
  */
453
427
  persistAccountData(accountData) {
454
428
  return promiseTry(() => {
455
- var txn = this.db.transaction(["accountData"], "readwrite");
456
- var store = txn.objectStore("accountData");
457
- for (var event of accountData) {
429
+ const txn = this.db.transaction(["accountData"], "readwrite");
430
+ const store = txn.objectStore("accountData");
431
+ for (const event of accountData) {
458
432
  store.put(event); // put == UPSERT
459
433
  }
460
434
  return txnAsPromise(txn).then();
@@ -471,9 +445,9 @@ export class LocalIndexedDBStoreBackend {
471
445
  */
472
446
  persistUserPresenceEvents(tuples) {
473
447
  return promiseTry(() => {
474
- var txn = this.db.transaction(["users"], "readwrite");
475
- var store = txn.objectStore("users");
476
- for (var tuple of tuples) {
448
+ const txn = this.db.transaction(["users"], "readwrite");
449
+ const store = txn.objectStore("users");
450
+ for (const tuple of tuples) {
477
451
  store.put({
478
452
  userId: tuple[0],
479
453
  event: tuple[1]
@@ -491,8 +465,8 @@ export class LocalIndexedDBStoreBackend {
491
465
  */
492
466
  getUserPresenceEvents() {
493
467
  return promiseTry(() => {
494
- var txn = this.db.transaction(["users"], "readonly");
495
- var store = txn.objectStore("users");
468
+ const txn = this.db.transaction(["users"], "readonly");
469
+ const store = txn.objectStore("users");
496
470
  return selectQuery(store, undefined, cursor => {
497
471
  return [cursor.value.userId, cursor.value.event];
498
472
  });
@@ -504,14 +478,14 @@ export class LocalIndexedDBStoreBackend {
504
478
  * @returns A list of raw global account events.
505
479
  */
506
480
  loadAccountData() {
507
- logger.log("LocalIndexedDBStoreBackend: loading account data...");
481
+ logger.log(`LocalIndexedDBStoreBackend: loading account data...`);
508
482
  return promiseTry(() => {
509
- var txn = this.db.transaction(["accountData"], "readonly");
510
- var store = txn.objectStore("accountData");
483
+ const txn = this.db.transaction(["accountData"], "readonly");
484
+ const store = txn.objectStore("accountData");
511
485
  return selectQuery(store, undefined, cursor => {
512
486
  return cursor.value;
513
487
  }).then(result => {
514
- logger.log("LocalIndexedDBStoreBackend: loaded account data");
488
+ logger.log(`LocalIndexedDBStoreBackend: loaded account data`);
515
489
  return result;
516
490
  });
517
491
  });
@@ -522,14 +496,14 @@ export class LocalIndexedDBStoreBackend {
522
496
  * @returns An object with "roomsData" and "nextBatch" keys.
523
497
  */
524
498
  loadSyncData() {
525
- logger.log("LocalIndexedDBStoreBackend: loading sync data...");
499
+ logger.log(`LocalIndexedDBStoreBackend: loading sync data...`);
526
500
  return promiseTry(() => {
527
- var txn = this.db.transaction(["sync"], "readonly");
528
- var store = txn.objectStore("sync");
501
+ const txn = this.db.transaction(["sync"], "readonly");
502
+ const store = txn.objectStore("sync");
529
503
  return selectQuery(store, undefined, cursor => {
530
504
  return cursor.value;
531
505
  }).then(results => {
532
- logger.log("LocalIndexedDBStoreBackend: loaded sync data");
506
+ logger.log(`LocalIndexedDBStoreBackend: loaded sync data`);
533
507
  if (results.length > 1) {
534
508
  logger.warn("loadSyncData: More than 1 sync row found.");
535
509
  }
@@ -539,126 +513,93 @@ export class LocalIndexedDBStoreBackend {
539
513
  }
540
514
  getClientOptions() {
541
515
  return Promise.resolve().then(() => {
542
- var txn = this.db.transaction(["client_options"], "readonly");
543
- var store = txn.objectStore("client_options");
516
+ const txn = this.db.transaction(["client_options"], "readonly");
517
+ const store = txn.objectStore("client_options");
544
518
  return selectQuery(store, undefined, cursor => {
545
- var _cursor$value;
546
- return (_cursor$value = cursor.value) === null || _cursor$value === void 0 ? void 0 : _cursor$value.options;
519
+ return cursor.value?.options;
547
520
  }).then(results => results[0]);
548
521
  });
549
522
  }
550
- storeClientOptions(options) {
551
- var _this6 = this;
552
- return _asyncToGenerator(function* () {
553
- var txn = _this6.db.transaction(["client_options"], "readwrite");
554
- var store = txn.objectStore("client_options");
555
- store.put({
556
- clobber: "-",
557
- // constant key so will always clobber
558
- options: options
559
- }); // put == UPSERT
560
- yield txnAsPromise(txn);
561
- })();
523
+ async storeClientOptions(options) {
524
+ const txn = this.db.transaction(["client_options"], "readwrite");
525
+ const store = txn.objectStore("client_options");
526
+ store.put({
527
+ clobber: "-",
528
+ // constant key so will always clobber
529
+ options: options
530
+ }); // put == UPSERT
531
+ await txnAsPromise(txn);
562
532
  }
563
- saveToDeviceBatches(batches) {
564
- var _this7 = this;
565
- return _asyncToGenerator(function* () {
566
- var txn = _this7.db.transaction(["to_device_queue"], "readwrite");
567
- var store = txn.objectStore("to_device_queue");
568
- for (var batch of batches) {
569
- store.add(batch);
570
- }
571
- yield txnAsPromise(txn);
572
- })();
533
+ async saveToDeviceBatches(batches) {
534
+ const txn = this.db.transaction(["to_device_queue"], "readwrite");
535
+ const store = txn.objectStore("to_device_queue");
536
+ for (const batch of batches) {
537
+ store.add(batch);
538
+ }
539
+ await txnAsPromise(txn);
573
540
  }
574
- getOldestToDeviceBatch() {
575
- var _this8 = this;
576
- return _asyncToGenerator(function* () {
577
- var txn = _this8.db.transaction(["to_device_queue"], "readonly");
578
- var store = txn.objectStore("to_device_queue");
579
- var cursor = yield reqAsCursorPromise(store.openCursor());
580
- if (!cursor) return null;
581
- var resultBatch = cursor.value;
582
- return {
583
- id: cursor.key,
584
- txnId: resultBatch.txnId,
585
- eventType: resultBatch.eventType,
586
- batch: resultBatch.batch
587
- };
588
- })();
541
+ async getOldestToDeviceBatch() {
542
+ const txn = this.db.transaction(["to_device_queue"], "readonly");
543
+ const store = txn.objectStore("to_device_queue");
544
+ const cursor = await reqAsCursorPromise(store.openCursor());
545
+ if (!cursor) return null;
546
+ const resultBatch = cursor.value;
547
+ return {
548
+ id: cursor.key,
549
+ txnId: resultBatch.txnId,
550
+ eventType: resultBatch.eventType,
551
+ batch: resultBatch.batch
552
+ };
589
553
  }
590
- removeToDeviceBatch(id) {
591
- var _this9 = this;
592
- return _asyncToGenerator(function* () {
593
- var txn = _this9.db.transaction(["to_device_queue"], "readwrite");
594
- var store = txn.objectStore("to_device_queue");
595
- store.delete(id);
596
- yield txnAsPromise(txn);
597
- })();
554
+ async removeToDeviceBatch(id) {
555
+ const txn = this.db.transaction(["to_device_queue"], "readwrite");
556
+ const store = txn.objectStore("to_device_queue");
557
+ store.delete(id);
558
+ await txnAsPromise(txn);
598
559
  }
599
- getUserProfile(userId) {
600
- var _this0 = this;
601
- return _asyncToGenerator(function* () {
602
- return Promise.resolve().then(() => {
603
- var txn = _this0.db.transaction(["user_profile"], "readonly");
604
- var store = txn.objectStore("user_profile");
605
- return selectQuery(store, [userId], cursor => {
606
- var _cursor$value2;
607
- return (_cursor$value2 = cursor.value) === null || _cursor$value2 === void 0 ? void 0 : _cursor$value2.profile;
608
- }).then(results => results[0]);
609
- });
610
- })();
560
+ async getUserProfile(userId) {
561
+ return Promise.resolve().then(() => {
562
+ const txn = this.db.transaction(["user_profile"], "readonly");
563
+ const store = txn.objectStore("user_profile");
564
+ return selectQuery(store, [userId], cursor => {
565
+ return cursor.value?.profile;
566
+ }).then(results => results[0]);
567
+ });
611
568
  }
612
- storeUserProfiles(userProfiles) {
613
- var _this1 = this;
614
- return _asyncToGenerator(function* () {
615
- var txn = _this1.db.transaction(["user_profile"], "readwrite");
616
- var store = txn.objectStore("user_profile");
617
- for (var _ref6 of userProfiles.entries()) {
618
- var _ref5 = _slicedToArray(_ref6, 2);
619
- var userId = _ref5[0];
620
- var profile = _ref5[1];
621
- store.put({
622
- profile,
623
- userId
624
- });
625
- }
626
- yield txnAsPromise(txn);
627
- })();
569
+ async storeUserProfiles(userProfiles) {
570
+ const txn = this.db.transaction(["user_profile"], "readwrite");
571
+ const store = txn.objectStore("user_profile");
572
+ for (const [userId, profile] of userProfiles.entries()) {
573
+ store.put({
574
+ profile,
575
+ userId
576
+ });
577
+ }
578
+ await txnAsPromise(txn);
628
579
  }
629
- removeUserProfiles(userIds) {
630
- var _this10 = this;
631
- return _asyncToGenerator(function* () {
632
- var txn = _this10.db.transaction(["user_profile"], "readwrite");
633
- var store = txn.objectStore("user_profile");
634
- for (var userId of userIds) {
635
- store.delete([userId]);
636
- }
637
- yield txnAsPromise(txn);
638
- })();
580
+ async removeUserProfiles(userIds) {
581
+ const txn = this.db.transaction(["user_profile"], "readwrite");
582
+ const store = txn.objectStore("user_profile");
583
+ for (const userId of userIds) {
584
+ store.delete([userId]);
585
+ }
586
+ await txnAsPromise(txn);
639
587
  }
640
- removeEventsFromRoom(roomId, eventIds) {
641
- var _this11 = this;
642
- return _asyncToGenerator(function* () {
643
- try {
644
- _this11.syncAccumulator.removeEventsFromRoom(roomId, eventIds);
645
- var syncData = _this11.syncAccumulator.getJSON(true);
646
- yield Promise.all([_this11.persistSyncData(syncData.nextBatch, syncData.roomsData)]);
647
- } finally {
648
- _this11.syncToDatabasePromise = undefined;
649
- }
650
- })();
588
+ async removeEventsFromRoom(roomId, eventIds) {
589
+ try {
590
+ this.syncAccumulator.removeEventsFromRoom(roomId, eventIds);
591
+ const syncData = this.syncAccumulator.getJSON(true);
592
+ await this.persistSyncData(syncData.nextBatch, syncData.roomsData);
593
+ } finally {
594
+ this.syncToDatabasePromise = undefined;
595
+ }
651
596
  }
652
597
 
653
598
  /*
654
599
  * Close the database
655
600
  */
656
- destroy() {
657
- var _this12 = this;
658
- return _asyncToGenerator(function* () {
659
- var _this12$db;
660
- (_this12$db = _this12.db) === null || _this12$db === void 0 || _this12$db.close();
661
- })();
601
+ async destroy() {
602
+ this.db?.close();
662
603
  }
663
604
  }
664
605
  //# sourceMappingURL=indexeddb-local-backend.js.map