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,7 +1,5 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
3
  /*
6
4
  Copyright 2021 The Matrix.org Foundation C.I.C.
7
5
 
@@ -28,7 +26,7 @@ import { KnownMembership } from "../@types/membership.js";
28
26
  * The recommended defaults for a tree space's power levels. Note that this
29
27
  * is UNSTABLE and subject to breaking changes without notice.
30
28
  */
31
- export var DEFAULT_TREE_POWER_LEVELS_TEMPLATE = {
29
+ export const DEFAULT_TREE_POWER_LEVELS_TEMPLATE = {
32
30
  // Owner
33
31
  invite: 100,
34
32
  kick: 100,
@@ -57,7 +55,7 @@ export var DEFAULT_TREE_POWER_LEVELS_TEMPLATE = {
57
55
  * Ease-of-use representation for power levels represented as simple roles.
58
56
  * Note that this is UNSTABLE and subject to breaking changes without notice.
59
57
  */
60
- export var TreePermissions = /*#__PURE__*/function (TreePermissions) {
58
+ export let TreePermissions = /*#__PURE__*/function (TreePermissions) {
61
59
  TreePermissions["Viewer"] = "viewer";
62
60
  // Default
63
61
  TreePermissions["Editor"] = "editor";
@@ -72,9 +70,9 @@ export var TreePermissions = /*#__PURE__*/function (TreePermissions) {
72
70
  */
73
71
  export class MSC3089TreeSpace {
74
72
  constructor(client, roomId) {
73
+ _defineProperty(this, "room", void 0);
75
74
  this.client = client;
76
75
  this.roomId = roomId;
77
- _defineProperty(this, "room", void 0);
78
76
  this.room = this.client.getRoom(this.roomId);
79
77
  if (!this.room) throw new Error("Unknown room");
80
78
  }
@@ -92,12 +90,9 @@ export class MSC3089TreeSpace {
92
90
  get isTopLevel() {
93
91
  // XXX: This is absolutely not how you find out if the space is top level
94
92
  // but is safe for a managed usecase like we offer in the SDK.
95
- var parentEvents = this.room.currentState.getStateEvents(EventType.SpaceParent);
96
- if (!(parentEvents !== null && parentEvents !== void 0 && parentEvents.length)) return true;
97
- return parentEvents.every(e => {
98
- var _e$getContent;
99
- return !((_e$getContent = e.getContent()) !== null && _e$getContent !== void 0 && _e$getContent["via"]);
100
- });
93
+ const parentEvents = this.room.currentState.getStateEvents(EventType.SpaceParent);
94
+ if (!parentEvents?.length) return true;
95
+ return parentEvents.every(e => !e.getContent()?.["via"]);
101
96
  }
102
97
 
103
98
  /**
@@ -105,13 +100,10 @@ export class MSC3089TreeSpace {
105
100
  * @param name - The new name for the space.
106
101
  * @returns Promise which resolves when complete.
107
102
  */
108
- setName(name) {
109
- var _this = this;
110
- return _asyncToGenerator(function* () {
111
- yield _this.client.sendStateEvent(_this.roomId, EventType.RoomName, {
112
- name
113
- }, "");
114
- })();
103
+ async setName(name) {
104
+ await this.client.sendStateEvent(this.roomId, EventType.RoomName, {
105
+ name
106
+ }, "");
115
107
  }
116
108
 
117
109
  /**
@@ -122,29 +114,21 @@ export class MSC3089TreeSpace {
122
114
  * directories/subspaces too, recursively.
123
115
  * @returns Promise which resolves when complete.
124
116
  */
125
- invite(userId) {
126
- var _arguments = arguments,
127
- _this2 = this;
128
- return _asyncToGenerator(function* () {
129
- var andSubspaces = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : true;
130
- var promises = [_this2.retryInvite(userId)];
131
- if (andSubspaces) {
132
- promises.push(..._this2.getDirectories().map(d => d.invite(userId, andSubspaces)));
133
- }
134
- yield Promise.all(promises);
135
- })();
117
+ async invite(userId, andSubspaces = true) {
118
+ const promises = [this.retryInvite(userId)];
119
+ if (andSubspaces) {
120
+ promises.push(...this.getDirectories().map(d => d.invite(userId, andSubspaces)));
121
+ }
122
+ await Promise.all(promises);
136
123
  }
137
- retryInvite(userId) {
138
- var _this3 = this;
139
- return _asyncToGenerator(function* () {
140
- yield simpleRetryOperation(() => _this3.client.invite(_this3.roomId, userId), e => {
141
- // We don't want to retry permission errors forever...
142
- if (e instanceof MatrixError && e.errcode === "M_FORBIDDEN") {
143
- return false;
144
- }
145
- return true;
146
- });
147
- })();
124
+ async retryInvite(userId) {
125
+ await simpleRetryOperation(() => this.client.invite(this.roomId, userId), e => {
126
+ // We don't want to retry permission errors forever...
127
+ if (e instanceof MatrixError && e.errcode === "M_FORBIDDEN") {
128
+ return false;
129
+ }
130
+ return true;
131
+ });
148
132
  }
149
133
 
150
134
  /**
@@ -155,33 +139,29 @@ export class MSC3089TreeSpace {
155
139
  * @param role - The role to assign.
156
140
  * @returns Promise which resolves when complete.
157
141
  */
158
- setPermissions(userId, role) {
159
- var _this4 = this;
160
- return _asyncToGenerator(function* () {
161
- var _pls$events;
162
- var currentPls = _this4.room.currentState.getStateEvents(EventType.RoomPowerLevels, "");
163
- if (Array.isArray(currentPls)) throw new Error("Unexpected return type for power levels");
164
- var pls = (currentPls === null || currentPls === void 0 ? void 0 : currentPls.getContent()) || {};
165
- var viewLevel = pls["users_default"] || 0;
166
- var editLevel = pls["events_default"] || 50;
167
- var adminLevel = ((_pls$events = pls["events"]) === null || _pls$events === void 0 ? void 0 : _pls$events[EventType.RoomPowerLevels]) || 100;
168
- var users = pls["users"] || {};
169
- switch (role) {
170
- case TreePermissions.Viewer:
171
- users[userId] = viewLevel;
172
- break;
173
- case TreePermissions.Editor:
174
- users[userId] = editLevel;
175
- break;
176
- case TreePermissions.Owner:
177
- users[userId] = adminLevel;
178
- break;
179
- default:
180
- throw new Error("Invalid role: " + role);
181
- }
182
- pls["users"] = users;
183
- yield _this4.client.sendStateEvent(_this4.roomId, EventType.RoomPowerLevels, pls, "");
184
- })();
142
+ async setPermissions(userId, role) {
143
+ const currentPls = this.room.currentState.getStateEvents(EventType.RoomPowerLevels, "");
144
+ if (Array.isArray(currentPls)) throw new Error("Unexpected return type for power levels");
145
+ const pls = currentPls?.getContent() || {};
146
+ const viewLevel = pls["users_default"] || 0;
147
+ const editLevel = pls["events_default"] || 50;
148
+ const adminLevel = pls["events"]?.[EventType.RoomPowerLevels] || 100;
149
+ const users = pls["users"] || {};
150
+ switch (role) {
151
+ case TreePermissions.Viewer:
152
+ users[userId] = viewLevel;
153
+ break;
154
+ case TreePermissions.Editor:
155
+ users[userId] = editLevel;
156
+ break;
157
+ case TreePermissions.Owner:
158
+ users[userId] = adminLevel;
159
+ break;
160
+ default:
161
+ throw new Error("Invalid role: " + role);
162
+ }
163
+ pls["users"] = users;
164
+ await this.client.sendStateEvent(this.roomId, EventType.RoomPowerLevels, pls, "");
185
165
  }
186
166
 
187
167
  /**
@@ -192,14 +172,13 @@ export class MSC3089TreeSpace {
192
172
  * @returns The permissions for the user, defaulting to Viewer.
193
173
  */
194
174
  getPermissions(userId) {
195
- var _pls$events2, _pls$users;
196
- var currentPls = this.room.currentState.getStateEvents(EventType.RoomPowerLevels, "");
175
+ const currentPls = this.room.currentState.getStateEvents(EventType.RoomPowerLevels, "");
197
176
  if (Array.isArray(currentPls)) throw new Error("Unexpected return type for power levels");
198
- var pls = (currentPls === null || currentPls === void 0 ? void 0 : currentPls.getContent()) || {};
199
- var viewLevel = pls["users_default"] || 0;
200
- var editLevel = pls["events_default"] || 50;
201
- var adminLevel = ((_pls$events2 = pls["events"]) === null || _pls$events2 === void 0 ? void 0 : _pls$events2[EventType.RoomPowerLevels]) || 100;
202
- var userLevel = ((_pls$users = pls["users"]) === null || _pls$users === void 0 ? void 0 : _pls$users[userId]) || viewLevel;
177
+ const pls = currentPls?.getContent() || {};
178
+ const viewLevel = pls["users_default"] || 0;
179
+ const editLevel = pls["events_default"] || 50;
180
+ const adminLevel = pls["events"]?.[EventType.RoomPowerLevels] || 100;
181
+ const userLevel = pls["users"]?.[userId] || viewLevel;
203
182
  if (userLevel >= adminLevel) return TreePermissions.Owner;
204
183
  if (userLevel >= editLevel) return TreePermissions.Editor;
205
184
  return TreePermissions.Viewer;
@@ -210,18 +189,15 @@ export class MSC3089TreeSpace {
210
189
  * @param name - The name for the directory.
211
190
  * @returns Promise which resolves to the created directory.
212
191
  */
213
- createDirectory(name) {
214
- var _this5 = this;
215
- return _asyncToGenerator(function* () {
216
- var directory = yield _this5.client.unstableCreateFileTree(name);
217
- yield _this5.client.sendStateEvent(_this5.roomId, EventType.SpaceChild, {
218
- via: [_this5.client.getDomain()]
219
- }, directory.roomId);
220
- yield _this5.client.sendStateEvent(directory.roomId, EventType.SpaceParent, {
221
- via: [_this5.client.getDomain()]
222
- }, _this5.roomId);
223
- return directory;
224
- })();
192
+ async createDirectory(name) {
193
+ const directory = await this.client.unstableCreateFileTree(name);
194
+ await this.client.sendStateEvent(this.roomId, EventType.SpaceChild, {
195
+ via: [this.client.getDomain()]
196
+ }, directory.roomId);
197
+ await this.client.sendStateEvent(directory.roomId, EventType.SpaceParent, {
198
+ via: [this.client.getDomain()]
199
+ }, this.roomId);
200
+ return directory;
225
201
  }
226
202
 
227
203
  /**
@@ -229,13 +205,13 @@ export class MSC3089TreeSpace {
229
205
  * @returns The tree spaces (directories). May be empty, but not null.
230
206
  */
231
207
  getDirectories() {
232
- var trees = [];
233
- var children = this.room.currentState.getStateEvents(EventType.SpaceChild);
234
- for (var child of children) {
208
+ const trees = [];
209
+ const children = this.room.currentState.getStateEvents(EventType.SpaceChild);
210
+ for (const child of children) {
235
211
  try {
236
- var stateKey = child.getStateKey();
212
+ const stateKey = child.getStateKey();
237
213
  if (stateKey) {
238
- var tree = this.client.unstableGetFileTreeSpace(stateKey);
214
+ const tree = this.client.unstableGetFileTreeSpace(stateKey);
239
215
  if (tree) trees.push(tree);
240
216
  }
241
217
  } catch (e) {
@@ -259,30 +235,27 @@ export class MSC3089TreeSpace {
259
235
  * Deletes the tree, kicking all members and deleting **all subdirectories**.
260
236
  * @returns Promise which resolves when complete.
261
237
  */
262
- delete() {
263
- var _this6 = this;
264
- return _asyncToGenerator(function* () {
265
- var subdirectories = _this6.getDirectories();
266
- for (var dir of subdirectories) {
267
- yield dir.delete();
268
- }
269
- var kickMemberships = [KnownMembership.Invite, KnownMembership.Knock, KnownMembership.Join];
270
- var members = _this6.room.currentState.getStateEvents(EventType.RoomMember);
271
- for (var member of members) {
272
- var isNotUs = member.getStateKey() !== _this6.client.getUserId();
273
- if (isNotUs && kickMemberships.includes(member.getContent().membership)) {
274
- var stateKey = member.getStateKey();
275
- if (!stateKey) {
276
- throw new Error("State key not found for branch");
277
- }
278
- yield _this6.client.kick(_this6.roomId, stateKey, "Room deleted");
238
+ async delete() {
239
+ const subdirectories = this.getDirectories();
240
+ for (const dir of subdirectories) {
241
+ await dir.delete();
242
+ }
243
+ const kickMemberships = [KnownMembership.Invite, KnownMembership.Knock, KnownMembership.Join];
244
+ const members = this.room.currentState.getStateEvents(EventType.RoomMember);
245
+ for (const member of members) {
246
+ const isNotUs = member.getStateKey() !== this.client.getUserId();
247
+ if (isNotUs && kickMemberships.includes(member.getContent().membership)) {
248
+ const stateKey = member.getStateKey();
249
+ if (!stateKey) {
250
+ throw new Error("State key not found for branch");
279
251
  }
252
+ await this.client.kick(this.roomId, stateKey, "Room deleted");
280
253
  }
281
- yield _this6.client.leave(_this6.roomId);
282
- })();
254
+ }
255
+ await this.client.leave(this.roomId);
283
256
  }
284
257
  getOrderedChildren(children) {
285
- var ordered = children.map(c => ({
258
+ const ordered = children.map(c => ({
286
259
  roomId: c.getStateKey(),
287
260
  order: c.getContent()["order"]
288
261
  })).filter(c => c.roomId);
@@ -292,15 +265,14 @@ export class MSC3089TreeSpace {
292
265
  } else if (!a.order && b.order) {
293
266
  return 1;
294
267
  } else if (!a.order && !b.order) {
295
- var _roomA$currentState$g, _roomA$currentState$g2, _roomB$currentState$g, _roomB$currentState$g2;
296
- var roomA = this.client.getRoom(a.roomId);
297
- var roomB = this.client.getRoom(b.roomId);
268
+ const roomA = this.client.getRoom(a.roomId);
269
+ const roomB = this.client.getRoom(b.roomId);
298
270
  if (!roomA || !roomB) {
299
271
  // just don't bother trying to do more partial sorting
300
272
  return lexicographicCompare(a.roomId, b.roomId);
301
273
  }
302
- var createTsA = (_roomA$currentState$g = (_roomA$currentState$g2 = roomA.currentState.getStateEvents(EventType.RoomCreate, "")) === null || _roomA$currentState$g2 === void 0 ? void 0 : _roomA$currentState$g2.getTs()) !== null && _roomA$currentState$g !== void 0 ? _roomA$currentState$g : 0;
303
- var createTsB = (_roomB$currentState$g = (_roomB$currentState$g2 = roomB.currentState.getStateEvents(EventType.RoomCreate, "")) === null || _roomB$currentState$g2 === void 0 ? void 0 : _roomB$currentState$g2.getTs()) !== null && _roomB$currentState$g !== void 0 ? _roomB$currentState$g : 0;
274
+ const createTsA = roomA.currentState.getStateEvents(EventType.RoomCreate, "")?.getTs() ?? 0;
275
+ const createTsB = roomB.currentState.getStateEvents(EventType.RoomCreate, "")?.getTs() ?? 0;
304
276
  if (createTsA === createTsB) {
305
277
  return lexicographicCompare(a.roomId, b.roomId);
306
278
  }
@@ -313,15 +285,15 @@ export class MSC3089TreeSpace {
313
285
  return ordered;
314
286
  }
315
287
  getParentRoom() {
316
- var parents = this.room.currentState.getStateEvents(EventType.SpaceParent);
317
- var parent = parents[0]; // XXX: Wild assumption
288
+ const parents = this.room.currentState.getStateEvents(EventType.SpaceParent);
289
+ const parent = parents[0]; // XXX: Wild assumption
318
290
  if (!parent) throw new Error("Expected to have a parent in a non-top level space");
319
291
 
320
292
  // XXX: We are assuming the parent is a valid tree space.
321
293
  // We probably don't need to validate the parent room state for this usecase though.
322
- var stateKey = parent.getStateKey();
294
+ const stateKey = parent.getStateKey();
323
295
  if (!stateKey) throw new Error("No state key found for parent");
324
- var parentRoom = this.client.getRoom(stateKey);
296
+ const parentRoom = this.client.getRoom(stateKey);
325
297
  if (!parentRoom) throw new Error("Unable to locate room for parent");
326
298
  return parentRoom;
327
299
  }
@@ -333,9 +305,9 @@ export class MSC3089TreeSpace {
333
305
  */
334
306
  getOrder() {
335
307
  if (this.isTopLevel) return -1;
336
- var parentRoom = this.getParentRoom();
337
- var children = parentRoom.currentState.getStateEvents(EventType.SpaceChild);
338
- var ordered = this.getOrderedChildren(children);
308
+ const parentRoom = this.getParentRoom();
309
+ const children = parentRoom.currentState.getStateEvents(EventType.SpaceChild);
310
+ const ordered = this.getOrderedChildren(children);
339
311
  return ordered.findIndex(c => c.roomId === this.roomId);
340
312
  }
341
313
 
@@ -347,105 +319,100 @@ export class MSC3089TreeSpace {
347
319
  * @returns Promise which resolves when complete.
348
320
  * @throws Throws if this is a top level space.
349
321
  */
350
- setOrder(index) {
351
- var _this7 = this;
352
- return _asyncToGenerator(function* () {
353
- var _currentChild$getCont2;
354
- if (_this7.isTopLevel) throw new Error("Cannot set order of top level spaces currently");
355
- var parentRoom = _this7.getParentRoom();
356
- var children = parentRoom.currentState.getStateEvents(EventType.SpaceChild);
357
- var ordered = _this7.getOrderedChildren(children);
358
- index = Math.max(Math.min(index, ordered.length - 1), 0);
359
- var currentIndex = _this7.getOrder();
360
- var movingUp = currentIndex < index;
361
- if (movingUp && index === ordered.length - 1) {
362
- index--;
363
- } else if (!movingUp && index === 0) {
364
- index++;
322
+ async setOrder(index) {
323
+ if (this.isTopLevel) throw new Error("Cannot set order of top level spaces currently");
324
+ const parentRoom = this.getParentRoom();
325
+ const children = parentRoom.currentState.getStateEvents(EventType.SpaceChild);
326
+ const ordered = this.getOrderedChildren(children);
327
+ index = Math.max(Math.min(index, ordered.length - 1), 0);
328
+ const currentIndex = this.getOrder();
329
+ const movingUp = currentIndex < index;
330
+ if (movingUp && index === ordered.length - 1) {
331
+ index--;
332
+ } else if (!movingUp && index === 0) {
333
+ index++;
334
+ }
335
+ const prev = ordered[movingUp ? index : index - 1];
336
+ const next = ordered[movingUp ? index + 1 : index];
337
+ let newOrder = DEFAULT_ALPHABET[0];
338
+ let ensureBeforeIsSane = false;
339
+ if (!prev) {
340
+ // Move to front
341
+ if (next?.order) {
342
+ newOrder = prevString(next.order);
365
343
  }
366
- var prev = ordered[movingUp ? index : index - 1];
367
- var next = ordered[movingUp ? index + 1 : index];
368
- var newOrder = DEFAULT_ALPHABET[0];
369
- var ensureBeforeIsSane = false;
370
- if (!prev) {
371
- // Move to front
372
- if (next !== null && next !== void 0 && next.order) {
373
- newOrder = prevString(next.order);
374
- }
375
- } else if (index === ordered.length - 1) {
376
- // Move to back
377
- if (next !== null && next !== void 0 && next.order) {
378
- newOrder = nextString(next.order);
344
+ } else if (index === ordered.length - 1) {
345
+ // Move to back
346
+ if (next?.order) {
347
+ newOrder = nextString(next.order);
348
+ }
349
+ } else {
350
+ // Move somewhere in the middle
351
+ const startOrder = prev?.order;
352
+ const endOrder = next?.order;
353
+ if (startOrder && endOrder) {
354
+ if (startOrder === endOrder) {
355
+ // Error case: just move +1 to break out of awful math
356
+ newOrder = nextString(startOrder);
357
+ } else {
358
+ newOrder = averageBetweenStrings(startOrder, endOrder);
379
359
  }
380
360
  } else {
381
- // Move somewhere in the middle
382
- var startOrder = prev === null || prev === void 0 ? void 0 : prev.order;
383
- var endOrder = next === null || next === void 0 ? void 0 : next.order;
384
- if (startOrder && endOrder) {
385
- if (startOrder === endOrder) {
386
- // Error case: just move +1 to break out of awful math
387
- newOrder = nextString(startOrder);
388
- } else {
389
- newOrder = averageBetweenStrings(startOrder, endOrder);
390
- }
361
+ if (startOrder) {
362
+ // We're at the end (endOrder is null, so no explicit order)
363
+ newOrder = nextString(startOrder);
364
+ } else if (endOrder) {
365
+ // We're at the start (startOrder is null, so nothing before us)
366
+ newOrder = prevString(endOrder);
391
367
  } else {
392
- if (startOrder) {
393
- // We're at the end (endOrder is null, so no explicit order)
394
- newOrder = nextString(startOrder);
395
- } else if (endOrder) {
396
- // We're at the start (startOrder is null, so nothing before us)
397
- newOrder = prevString(endOrder);
398
- } else {
399
- // Both points are unknown. We're likely in a range where all the children
400
- // don't have particular order values, so we may need to update them too.
401
- // The other possibility is there's only us as a child, but we should have
402
- // shown up in the other states.
403
- ensureBeforeIsSane = true;
404
- }
368
+ // Both points are unknown. We're likely in a range where all the children
369
+ // don't have particular order values, so we may need to update them too.
370
+ // The other possibility is there's only us as a child, but we should have
371
+ // shown up in the other states.
372
+ ensureBeforeIsSane = true;
405
373
  }
406
374
  }
407
- if (ensureBeforeIsSane) {
408
- // We were asked by the order algorithm to prepare the moving space for a landing
409
- // in the undefined order part of the order array, which means we need to update the
410
- // spaces that come before it with a stable order value.
411
- var lastOrder;
412
- for (var i = 0; i <= index; i++) {
413
- var target = ordered[i];
414
- if (i === 0) {
415
- lastOrder = target.order;
416
- }
417
- if (!target.order) {
418
- var _currentChild$getCont;
419
- // XXX: We should be creating gaps to avoid conflicts
420
- lastOrder = lastOrder ? nextString(lastOrder) : DEFAULT_ALPHABET[0];
421
- var _currentChild = parentRoom.currentState.getStateEvents(EventType.SpaceChild, target.roomId);
422
- var _content = (_currentChild$getCont = _currentChild === null || _currentChild === void 0 ? void 0 : _currentChild.getContent()) !== null && _currentChild$getCont !== void 0 ? _currentChild$getCont : {
423
- via: [_this7.client.getDomain()]
424
- };
425
- yield _this7.client.sendStateEvent(parentRoom.roomId, EventType.SpaceChild, _objectSpread(_objectSpread({}, _content), {}, {
426
- order: lastOrder
427
- }), target.roomId);
428
- } else {
429
- lastOrder = target.order;
430
- }
375
+ }
376
+ if (ensureBeforeIsSane) {
377
+ // We were asked by the order algorithm to prepare the moving space for a landing
378
+ // in the undefined order part of the order array, which means we need to update the
379
+ // spaces that come before it with a stable order value.
380
+ let lastOrder;
381
+ for (let i = 0; i <= index; i++) {
382
+ const target = ordered[i];
383
+ if (i === 0) {
384
+ lastOrder = target.order;
431
385
  }
432
- if (lastOrder) {
433
- newOrder = nextString(lastOrder);
386
+ if (!target.order) {
387
+ // XXX: We should be creating gaps to avoid conflicts
388
+ lastOrder = lastOrder ? nextString(lastOrder) : DEFAULT_ALPHABET[0];
389
+ const currentChild = parentRoom.currentState.getStateEvents(EventType.SpaceChild, target.roomId);
390
+ const content = currentChild?.getContent() ?? {
391
+ via: [this.client.getDomain()]
392
+ };
393
+ await this.client.sendStateEvent(parentRoom.roomId, EventType.SpaceChild, _objectSpread(_objectSpread({}, content), {}, {
394
+ order: lastOrder
395
+ }), target.roomId);
396
+ } else {
397
+ lastOrder = target.order;
434
398
  }
435
399
  }
400
+ if (lastOrder) {
401
+ newOrder = nextString(lastOrder);
402
+ }
403
+ }
436
404
 
437
- // TODO: Deal with order conflicts by reordering
405
+ // TODO: Deal with order conflicts by reordering
438
406
 
439
- // Now we can finally update our own order state
440
- var currentChild = parentRoom.currentState.getStateEvents(EventType.SpaceChild, _this7.roomId);
441
- var content = (_currentChild$getCont2 = currentChild === null || currentChild === void 0 ? void 0 : currentChild.getContent()) !== null && _currentChild$getCont2 !== void 0 ? _currentChild$getCont2 : {
442
- via: [_this7.client.getDomain()]
443
- };
444
- yield _this7.client.sendStateEvent(parentRoom.roomId, EventType.SpaceChild, _objectSpread(_objectSpread({}, content), {}, {
445
- // TODO: Safely constrain to 50 character limit required by spaces.
446
- order: newOrder
447
- }), _this7.roomId);
448
- })();
407
+ // Now we can finally update our own order state
408
+ const currentChild = parentRoom.currentState.getStateEvents(EventType.SpaceChild, this.roomId);
409
+ const content = currentChild?.getContent() ?? {
410
+ via: [this.client.getDomain()]
411
+ };
412
+ await this.client.sendStateEvent(parentRoom.roomId, EventType.SpaceChild, _objectSpread(_objectSpread({}, content), {}, {
413
+ // TODO: Safely constrain to 50 character limit required by spaces.
414
+ order: newOrder
415
+ }), this.roomId);
449
416
  }
450
417
 
451
418
  /**
@@ -457,36 +424,34 @@ export class MSC3089TreeSpace {
457
424
  * @param additionalContent - Optional event content fields to include in the message.
458
425
  * @returns Promise which resolves to the file event's sent response.
459
426
  */
460
- createFile(name, encryptedContents, info, additionalContent) {
461
- var _this8 = this;
462
- return _asyncToGenerator(function* () {
463
- var _yield$_this8$client$ = yield _this8.client.uploadContent(encryptedContents, {
464
- includeFilename: false
465
- }),
466
- mxc = _yield$_this8$client$.content_uri;
467
- info.url = mxc;
468
- var fileContent = {
469
- msgtype: MsgType.File,
470
- body: name,
471
- url: mxc,
472
- file: info
473
- };
474
- additionalContent = additionalContent !== null && additionalContent !== void 0 ? additionalContent : {};
475
- if (additionalContent["m.new_content"]) {
476
- // We do the right thing according to the spec, but due to how relations are
477
- // handled we also end up duplicating this information to the regular `content`
478
- // as well.
479
- additionalContent["m.new_content"] = fileContent;
480
- }
481
- var res = yield _this8.client.sendMessage(_this8.roomId, _objectSpread(_objectSpread(_objectSpread({}, additionalContent), fileContent), {}, {
482
- [UNSTABLE_MSC3089_LEAF.name]: {}
483
- }));
484
- yield _this8.client.sendStateEvent(_this8.roomId, UNSTABLE_MSC3089_BRANCH.name, {
485
- active: true,
486
- name: name
487
- }, res["event_id"]);
488
- return res;
489
- })();
427
+ async createFile(name, encryptedContents, info, additionalContent) {
428
+ const {
429
+ content_uri: mxc
430
+ } = await this.client.uploadContent(encryptedContents, {
431
+ includeFilename: false
432
+ });
433
+ info.url = mxc;
434
+ const fileContent = {
435
+ msgtype: MsgType.File,
436
+ body: name,
437
+ url: mxc,
438
+ file: info
439
+ };
440
+ additionalContent = additionalContent ?? {};
441
+ if (additionalContent["m.new_content"]) {
442
+ // We do the right thing according to the spec, but due to how relations are
443
+ // handled we also end up duplicating this information to the regular `content`
444
+ // as well.
445
+ additionalContent["m.new_content"] = fileContent;
446
+ }
447
+ const res = await this.client.sendMessage(this.roomId, _objectSpread(_objectSpread(_objectSpread({}, additionalContent), fileContent), {}, {
448
+ [UNSTABLE_MSC3089_LEAF.name]: {}
449
+ }));
450
+ await this.client.sendStateEvent(this.roomId, UNSTABLE_MSC3089_BRANCH.name, {
451
+ active: true,
452
+ name: name
453
+ }, res["event_id"]);
454
+ return res;
490
455
  }
491
456
 
492
457
  /**
@@ -495,7 +460,7 @@ export class MSC3089TreeSpace {
495
460
  * @returns The file, or null if not found.
496
461
  */
497
462
  getFile(fileEventId) {
498
- var branch = this.room.currentState.getStateEvents(UNSTABLE_MSC3089_BRANCH.name, fileEventId);
463
+ const branch = this.room.currentState.getStateEvents(UNSTABLE_MSC3089_BRANCH.name, fileEventId);
499
464
  return branch ? new MSC3089Branch(this.client, branch, this) : null;
500
465
  }
501
466
 
@@ -512,8 +477,7 @@ export class MSC3089TreeSpace {
512
477
  * @returns The known files. May be empty, but not null.
513
478
  */
514
479
  listAllFiles() {
515
- var _this$room$currentSta;
516
- var branches = (_this$room$currentSta = this.room.currentState.getStateEvents(UNSTABLE_MSC3089_BRANCH.name)) !== null && _this$room$currentSta !== void 0 ? _this$room$currentSta : [];
480
+ const branches = this.room.currentState.getStateEvents(UNSTABLE_MSC3089_BRANCH.name) ?? [];
517
481
  return branches.map(e => new MSC3089Branch(this.client, e, this));
518
482
  }
519
483
  }