@unwanted/matrix-sdk-mini 34.12.0 → 34.13.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 (698) hide show
  1. package/git-revision.txt +1 -1
  2. package/lib/@types/event.d.ts +0 -19
  3. package/lib/@types/event.d.ts.map +1 -1
  4. package/lib/@types/event.js.map +1 -1
  5. package/lib/@types/global.d.js +0 -2
  6. package/lib/@types/global.d.js.map +1 -1
  7. package/lib/autodiscovery.d.ts +1 -1
  8. package/lib/autodiscovery.d.ts.map +1 -1
  9. package/lib/autodiscovery.js.map +1 -1
  10. package/lib/base64.d.ts +3 -6
  11. package/lib/base64.d.ts.map +1 -1
  12. package/lib/base64.js +43 -36
  13. package/lib/base64.js.map +1 -1
  14. package/lib/browser-index.d.ts.map +1 -1
  15. package/lib/browser-index.js +0 -11
  16. package/lib/browser-index.js.map +1 -1
  17. package/lib/client.d.ts +2 -1298
  18. package/lib/client.d.ts.map +1 -1
  19. package/lib/client.js +348 -2967
  20. package/lib/client.js.map +1 -1
  21. package/lib/digest.d.ts +2 -2
  22. package/lib/digest.d.ts.map +1 -1
  23. package/lib/digest.js +2 -2
  24. package/lib/digest.js.map +1 -1
  25. package/lib/embedded.d.ts +0 -22
  26. package/lib/embedded.d.ts.map +1 -1
  27. package/lib/embedded.js +58 -168
  28. package/lib/embedded.js.map +1 -1
  29. package/lib/event-mapper.d.ts.map +1 -1
  30. package/lib/event-mapper.js +0 -4
  31. package/lib/event-mapper.js.map +1 -1
  32. package/lib/matrix.d.ts +0 -25
  33. package/lib/matrix.d.ts.map +1 -1
  34. package/lib/matrix.js +1 -30
  35. package/lib/matrix.js.map +1 -1
  36. package/lib/models/MSC3089Branch.d.ts.map +1 -1
  37. package/lib/models/MSC3089Branch.js +0 -3
  38. package/lib/models/MSC3089Branch.js.map +1 -1
  39. package/lib/models/event-timeline-set.d.ts +6 -10
  40. package/lib/models/event-timeline-set.d.ts.map +1 -1
  41. package/lib/models/event-timeline-set.js +28 -36
  42. package/lib/models/event-timeline-set.js.map +1 -1
  43. package/lib/models/event-timeline.d.ts +7 -2
  44. package/lib/models/event-timeline.d.ts.map +1 -1
  45. package/lib/models/event-timeline.js +8 -9
  46. package/lib/models/event-timeline.js.map +1 -1
  47. package/lib/models/event.d.ts +1 -95
  48. package/lib/models/event.d.ts.map +1 -1
  49. package/lib/models/event.js +11 -281
  50. package/lib/models/event.js.map +1 -1
  51. package/lib/models/poll.d.ts.map +1 -1
  52. package/lib/models/poll.js +1 -5
  53. package/lib/models/poll.js.map +1 -1
  54. package/lib/models/relations-container.d.ts.map +1 -1
  55. package/lib/models/relations-container.js +1 -7
  56. package/lib/models/relations-container.js.map +1 -1
  57. package/lib/models/relations.d.ts +0 -1
  58. package/lib/models/relations.d.ts.map +1 -1
  59. package/lib/models/relations.js +0 -8
  60. package/lib/models/relations.js.map +1 -1
  61. package/lib/models/room-state.d.ts +2 -13
  62. package/lib/models/room-state.d.ts.map +1 -1
  63. package/lib/models/room-state.js +12 -56
  64. package/lib/models/room-state.js.map +1 -1
  65. package/lib/models/room.d.ts +2 -20
  66. package/lib/models/room.d.ts.map +1 -1
  67. package/lib/models/room.js +121 -162
  68. package/lib/models/room.js.map +1 -1
  69. package/lib/models/thread.d.ts.map +1 -1
  70. package/lib/models/thread.js +5 -4
  71. package/lib/models/thread.js.map +1 -1
  72. package/lib/sliding-sync-sdk.d.ts +3 -4
  73. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  74. package/lib/sliding-sync-sdk.js +55 -102
  75. package/lib/sliding-sync-sdk.js.map +1 -1
  76. package/lib/sliding-sync.js +9 -6
  77. package/lib/sliding-sync.js.map +1 -1
  78. package/lib/store/indexeddb.d.ts +1 -1
  79. package/lib/store/indexeddb.d.ts.map +1 -1
  80. package/lib/store/indexeddb.js.map +1 -1
  81. package/lib/sync-accumulator.d.ts +6 -4
  82. package/lib/sync-accumulator.d.ts.map +1 -1
  83. package/lib/sync-accumulator.js +23 -12
  84. package/lib/sync-accumulator.js.map +1 -1
  85. package/lib/sync.d.ts +10 -13
  86. package/lib/sync.d.ts.map +1 -1
  87. package/lib/sync.js +94 -115
  88. package/lib/sync.js.map +1 -1
  89. package/lib/testing.d.ts +0 -48
  90. package/lib/testing.d.ts.map +1 -1
  91. package/lib/testing.js +0 -105
  92. package/lib/testing.js.map +1 -1
  93. package/lib/types.d.ts +0 -1
  94. package/lib/types.d.ts.map +1 -1
  95. package/lib/types.js.map +1 -1
  96. package/package.json +10 -11
  97. package/src/@types/event.ts +2 -36
  98. package/src/@types/global.d.ts +21 -4
  99. package/src/autodiscovery.ts +1 -1
  100. package/src/base64.ts +38 -40
  101. package/src/browser-index.ts +0 -11
  102. package/src/client.ts +68 -3087
  103. package/src/digest.ts +3 -3
  104. package/src/embedded.ts +38 -134
  105. package/src/event-mapper.ts +0 -4
  106. package/src/matrix.ts +0 -41
  107. package/src/models/MSC3089Branch.ts +0 -3
  108. package/src/models/event-timeline-set.ts +17 -38
  109. package/src/models/event-timeline.ts +10 -5
  110. package/src/models/event.ts +8 -295
  111. package/src/models/poll.ts +0 -6
  112. package/src/models/relations-container.ts +1 -8
  113. package/src/models/relations.ts +0 -8
  114. package/src/models/room-state.ts +4 -37
  115. package/src/models/room.ts +18 -68
  116. package/src/models/thread.ts +4 -3
  117. package/src/sliding-sync-sdk.ts +10 -83
  118. package/src/sliding-sync.ts +6 -6
  119. package/src/store/indexeddb.ts +1 -1
  120. package/src/sync-accumulator.ts +33 -16
  121. package/src/sync.ts +112 -143
  122. package/src/testing.ts +0 -108
  123. package/src/types.ts +0 -1
  124. package/CHANGELOG.md +0 -5910
  125. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +0 -14
  126. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +0 -1
  127. package/lib/@types/AESEncryptedSecretStoragePayload.js +0 -1
  128. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +0 -1
  129. package/lib/@types/crypto.d.ts +0 -47
  130. package/lib/@types/crypto.d.ts.map +0 -1
  131. package/lib/@types/crypto.js +0 -1
  132. package/lib/@types/crypto.js.map +0 -1
  133. package/lib/@types/matrix-sdk-crypto-wasm.d.js +0 -1
  134. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +0 -1
  135. package/lib/common-crypto/CryptoBackend.d.ts +0 -240
  136. package/lib/common-crypto/CryptoBackend.d.ts.map +0 -1
  137. package/lib/common-crypto/CryptoBackend.js +0 -73
  138. package/lib/common-crypto/CryptoBackend.js.map +0 -1
  139. package/lib/common-crypto/key-passphrase.d.ts +0 -14
  140. package/lib/common-crypto/key-passphrase.d.ts.map +0 -1
  141. package/lib/common-crypto/key-passphrase.js +0 -33
  142. package/lib/common-crypto/key-passphrase.js.map +0 -1
  143. package/lib/crypto/CrossSigning.d.ts +0 -184
  144. package/lib/crypto/CrossSigning.d.ts.map +0 -1
  145. package/lib/crypto/CrossSigning.js +0 -718
  146. package/lib/crypto/CrossSigning.js.map +0 -1
  147. package/lib/crypto/DeviceList.d.ts +0 -216
  148. package/lib/crypto/DeviceList.d.ts.map +0 -1
  149. package/lib/crypto/DeviceList.js +0 -892
  150. package/lib/crypto/DeviceList.js.map +0 -1
  151. package/lib/crypto/EncryptionSetup.d.ts +0 -152
  152. package/lib/crypto/EncryptionSetup.d.ts.map +0 -1
  153. package/lib/crypto/EncryptionSetup.js +0 -356
  154. package/lib/crypto/EncryptionSetup.js.map +0 -1
  155. package/lib/crypto/OlmDevice.d.ts +0 -457
  156. package/lib/crypto/OlmDevice.d.ts.map +0 -1
  157. package/lib/crypto/OlmDevice.js +0 -1241
  158. package/lib/crypto/OlmDevice.js.map +0 -1
  159. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +0 -109
  160. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +0 -1
  161. package/lib/crypto/OutgoingRoomKeyRequestManager.js +0 -415
  162. package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +0 -1
  163. package/lib/crypto/RoomList.d.ts +0 -26
  164. package/lib/crypto/RoomList.d.ts.map +0 -1
  165. package/lib/crypto/RoomList.js +0 -71
  166. package/lib/crypto/RoomList.js.map +0 -1
  167. package/lib/crypto/SecretSharing.d.ts +0 -24
  168. package/lib/crypto/SecretSharing.d.ts.map +0 -1
  169. package/lib/crypto/SecretSharing.js +0 -194
  170. package/lib/crypto/SecretSharing.js.map +0 -1
  171. package/lib/crypto/SecretStorage.d.ts +0 -55
  172. package/lib/crypto/SecretStorage.d.ts.map +0 -1
  173. package/lib/crypto/SecretStorage.js +0 -118
  174. package/lib/crypto/SecretStorage.js.map +0 -1
  175. package/lib/crypto/aes.d.ts +0 -6
  176. package/lib/crypto/aes.d.ts.map +0 -1
  177. package/lib/crypto/aes.js +0 -24
  178. package/lib/crypto/aes.js.map +0 -1
  179. package/lib/crypto/algorithms/base.d.ts +0 -156
  180. package/lib/crypto/algorithms/base.d.ts.map +0 -1
  181. package/lib/crypto/algorithms/base.js +0 -187
  182. package/lib/crypto/algorithms/base.js.map +0 -1
  183. package/lib/crypto/algorithms/index.d.ts +0 -4
  184. package/lib/crypto/algorithms/index.d.ts.map +0 -1
  185. package/lib/crypto/algorithms/index.js +0 -20
  186. package/lib/crypto/algorithms/index.js.map +0 -1
  187. package/lib/crypto/algorithms/megolm.d.ts +0 -385
  188. package/lib/crypto/algorithms/megolm.d.ts.map +0 -1
  189. package/lib/crypto/algorithms/megolm.js +0 -1822
  190. package/lib/crypto/algorithms/megolm.js.map +0 -1
  191. package/lib/crypto/algorithms/olm.d.ts +0 -5
  192. package/lib/crypto/algorithms/olm.d.ts.map +0 -1
  193. package/lib/crypto/algorithms/olm.js +0 -299
  194. package/lib/crypto/algorithms/olm.js.map +0 -1
  195. package/lib/crypto/api.d.ts +0 -32
  196. package/lib/crypto/api.d.ts.map +0 -1
  197. package/lib/crypto/api.js +0 -22
  198. package/lib/crypto/api.js.map +0 -1
  199. package/lib/crypto/backup.d.ts +0 -227
  200. package/lib/crypto/backup.d.ts.map +0 -1
  201. package/lib/crypto/backup.js +0 -824
  202. package/lib/crypto/backup.js.map +0 -1
  203. package/lib/crypto/crypto.d.ts +0 -3
  204. package/lib/crypto/crypto.d.ts.map +0 -1
  205. package/lib/crypto/crypto.js +0 -19
  206. package/lib/crypto/crypto.js.map +0 -1
  207. package/lib/crypto/dehydration.d.ts +0 -34
  208. package/lib/crypto/dehydration.d.ts.map +0 -1
  209. package/lib/crypto/dehydration.js +0 -252
  210. package/lib/crypto/dehydration.js.map +0 -1
  211. package/lib/crypto/device-converter.d.ts +0 -9
  212. package/lib/crypto/device-converter.d.ts.map +0 -1
  213. package/lib/crypto/device-converter.js +0 -42
  214. package/lib/crypto/device-converter.js.map +0 -1
  215. package/lib/crypto/deviceinfo.d.ts +0 -99
  216. package/lib/crypto/deviceinfo.d.ts.map +0 -1
  217. package/lib/crypto/deviceinfo.js +0 -148
  218. package/lib/crypto/deviceinfo.js.map +0 -1
  219. package/lib/crypto/index.d.ts +0 -1210
  220. package/lib/crypto/index.d.ts.map +0 -1
  221. package/lib/crypto/index.js +0 -4101
  222. package/lib/crypto/index.js.map +0 -1
  223. package/lib/crypto/key_passphrase.d.ts +0 -14
  224. package/lib/crypto/key_passphrase.d.ts.map +0 -1
  225. package/lib/crypto/key_passphrase.js +0 -44
  226. package/lib/crypto/key_passphrase.js.map +0 -1
  227. package/lib/crypto/keybackup.d.ts +0 -18
  228. package/lib/crypto/keybackup.d.ts.map +0 -1
  229. package/lib/crypto/keybackup.js +0 -1
  230. package/lib/crypto/keybackup.js.map +0 -1
  231. package/lib/crypto/olmlib.d.ts +0 -129
  232. package/lib/crypto/olmlib.d.ts.map +0 -1
  233. package/lib/crypto/olmlib.js +0 -492
  234. package/lib/crypto/olmlib.js.map +0 -1
  235. package/lib/crypto/recoverykey.d.ts +0 -2
  236. package/lib/crypto/recoverykey.d.ts.map +0 -1
  237. package/lib/crypto/recoverykey.js +0 -19
  238. package/lib/crypto/recoverykey.js.map +0 -1
  239. package/lib/crypto/store/base.d.ts +0 -252
  240. package/lib/crypto/store/base.d.ts.map +0 -1
  241. package/lib/crypto/store/base.js +0 -64
  242. package/lib/crypto/store/base.js.map +0 -1
  243. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +0 -187
  244. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +0 -1
  245. package/lib/crypto/store/indexeddb-crypto-store-backend.js +0 -1145
  246. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +0 -1
  247. package/lib/crypto/store/indexeddb-crypto-store.d.ts +0 -432
  248. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +0 -1
  249. package/lib/crypto/store/indexeddb-crypto-store.js +0 -728
  250. package/lib/crypto/store/indexeddb-crypto-store.js.map +0 -1
  251. package/lib/crypto/store/localStorage-crypto-store.d.ts +0 -119
  252. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +0 -1
  253. package/lib/crypto/store/localStorage-crypto-store.js +0 -531
  254. package/lib/crypto/store/localStorage-crypto-store.js.map +0 -1
  255. package/lib/crypto/store/memory-crypto-store.d.ts +0 -215
  256. package/lib/crypto/store/memory-crypto-store.d.ts.map +0 -1
  257. package/lib/crypto/store/memory-crypto-store.js +0 -622
  258. package/lib/crypto/store/memory-crypto-store.js.map +0 -1
  259. package/lib/crypto/verification/Base.d.ts +0 -105
  260. package/lib/crypto/verification/Base.d.ts.map +0 -1
  261. package/lib/crypto/verification/Base.js +0 -372
  262. package/lib/crypto/verification/Base.js.map +0 -1
  263. package/lib/crypto/verification/Error.d.ts +0 -35
  264. package/lib/crypto/verification/Error.d.ts.map +0 -1
  265. package/lib/crypto/verification/Error.js +0 -86
  266. package/lib/crypto/verification/Error.js.map +0 -1
  267. package/lib/crypto/verification/IllegalMethod.d.ts +0 -15
  268. package/lib/crypto/verification/IllegalMethod.d.ts.map +0 -1
  269. package/lib/crypto/verification/IllegalMethod.js +0 -43
  270. package/lib/crypto/verification/IllegalMethod.js.map +0 -1
  271. package/lib/crypto/verification/QRCode.d.ts +0 -51
  272. package/lib/crypto/verification/QRCode.d.ts.map +0 -1
  273. package/lib/crypto/verification/QRCode.js +0 -277
  274. package/lib/crypto/verification/QRCode.js.map +0 -1
  275. package/lib/crypto/verification/SAS.d.ts +0 -27
  276. package/lib/crypto/verification/SAS.d.ts.map +0 -1
  277. package/lib/crypto/verification/SAS.js +0 -485
  278. package/lib/crypto/verification/SAS.js.map +0 -1
  279. package/lib/crypto/verification/SASDecimal.d.ts +0 -8
  280. package/lib/crypto/verification/SASDecimal.d.ts.map +0 -1
  281. package/lib/crypto/verification/SASDecimal.js +0 -34
  282. package/lib/crypto/verification/SASDecimal.js.map +0 -1
  283. package/lib/crypto/verification/request/Channel.d.ts +0 -18
  284. package/lib/crypto/verification/request/Channel.d.ts.map +0 -1
  285. package/lib/crypto/verification/request/Channel.js +0 -1
  286. package/lib/crypto/verification/request/Channel.js.map +0 -1
  287. package/lib/crypto/verification/request/InRoomChannel.d.ts +0 -113
  288. package/lib/crypto/verification/request/InRoomChannel.d.ts.map +0 -1
  289. package/lib/crypto/verification/request/InRoomChannel.js +0 -351
  290. package/lib/crypto/verification/request/InRoomChannel.js.map +0 -1
  291. package/lib/crypto/verification/request/ToDeviceChannel.d.ts +0 -105
  292. package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +0 -1
  293. package/lib/crypto/verification/request/ToDeviceChannel.js +0 -328
  294. package/lib/crypto/verification/request/ToDeviceChannel.js.map +0 -1
  295. package/lib/crypto/verification/request/VerificationRequest.d.ts +0 -227
  296. package/lib/crypto/verification/request/VerificationRequest.d.ts.map +0 -1
  297. package/lib/crypto/verification/request/VerificationRequest.js +0 -937
  298. package/lib/crypto/verification/request/VerificationRequest.js.map +0 -1
  299. package/lib/crypto-api/CryptoEvent.d.ts +0 -69
  300. package/lib/crypto-api/CryptoEvent.d.ts.map +0 -1
  301. package/lib/crypto-api/CryptoEvent.js +0 -33
  302. package/lib/crypto-api/CryptoEvent.js.map +0 -1
  303. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +0 -16
  304. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +0 -1
  305. package/lib/crypto-api/CryptoEventHandlerMap.js +0 -22
  306. package/lib/crypto-api/CryptoEventHandlerMap.js.map +0 -1
  307. package/lib/crypto-api/index.d.ts +0 -978
  308. package/lib/crypto-api/index.d.ts.map +0 -1
  309. package/lib/crypto-api/index.js +0 -304
  310. package/lib/crypto-api/index.js.map +0 -1
  311. package/lib/crypto-api/key-passphrase.d.ts +0 -11
  312. package/lib/crypto-api/key-passphrase.d.ts.map +0 -1
  313. package/lib/crypto-api/key-passphrase.js +0 -51
  314. package/lib/crypto-api/key-passphrase.js.map +0 -1
  315. package/lib/crypto-api/keybackup.d.ts +0 -88
  316. package/lib/crypto-api/keybackup.d.ts.map +0 -1
  317. package/lib/crypto-api/keybackup.js +0 -1
  318. package/lib/crypto-api/keybackup.js.map +0 -1
  319. package/lib/crypto-api/recovery-key.d.ts +0 -11
  320. package/lib/crypto-api/recovery-key.d.ts.map +0 -1
  321. package/lib/crypto-api/recovery-key.js +0 -65
  322. package/lib/crypto-api/recovery-key.js.map +0 -1
  323. package/lib/crypto-api/verification.d.ts +0 -344
  324. package/lib/crypto-api/verification.d.ts.map +0 -1
  325. package/lib/crypto-api/verification.js +0 -91
  326. package/lib/crypto-api/verification.js.map +0 -1
  327. package/lib/matrixrtc/CallMembership.d.ts +0 -66
  328. package/lib/matrixrtc/CallMembership.d.ts.map +0 -1
  329. package/lib/matrixrtc/CallMembership.js +0 -197
  330. package/lib/matrixrtc/CallMembership.js.map +0 -1
  331. package/lib/matrixrtc/LivekitFocus.d.ts +0 -16
  332. package/lib/matrixrtc/LivekitFocus.d.ts.map +0 -1
  333. package/lib/matrixrtc/LivekitFocus.js +0 -20
  334. package/lib/matrixrtc/LivekitFocus.js.map +0 -1
  335. package/lib/matrixrtc/MatrixRTCSession.d.ts +0 -295
  336. package/lib/matrixrtc/MatrixRTCSession.d.ts.map +0 -1
  337. package/lib/matrixrtc/MatrixRTCSession.js +0 -1043
  338. package/lib/matrixrtc/MatrixRTCSession.js.map +0 -1
  339. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +0 -40
  340. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +0 -1
  341. package/lib/matrixrtc/MatrixRTCSessionManager.js +0 -146
  342. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +0 -1
  343. package/lib/matrixrtc/focus.d.ts +0 -10
  344. package/lib/matrixrtc/focus.d.ts.map +0 -1
  345. package/lib/matrixrtc/focus.js +0 -1
  346. package/lib/matrixrtc/focus.js.map +0 -1
  347. package/lib/matrixrtc/index.d.ts +0 -7
  348. package/lib/matrixrtc/index.d.ts.map +0 -1
  349. package/lib/matrixrtc/index.js +0 -21
  350. package/lib/matrixrtc/index.js.map +0 -1
  351. package/lib/matrixrtc/types.d.ts +0 -19
  352. package/lib/matrixrtc/types.d.ts.map +0 -1
  353. package/lib/matrixrtc/types.js +0 -1
  354. package/lib/matrixrtc/types.js.map +0 -1
  355. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +0 -112
  356. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +0 -1
  357. package/lib/rendezvous/MSC4108SignInWithQR.js +0 -392
  358. package/lib/rendezvous/MSC4108SignInWithQR.js.map +0 -1
  359. package/lib/rendezvous/RendezvousChannel.d.ts +0 -27
  360. package/lib/rendezvous/RendezvousChannel.d.ts.map +0 -1
  361. package/lib/rendezvous/RendezvousChannel.js +0 -1
  362. package/lib/rendezvous/RendezvousChannel.js.map +0 -1
  363. package/lib/rendezvous/RendezvousCode.d.ts +0 -9
  364. package/lib/rendezvous/RendezvousCode.d.ts.map +0 -1
  365. package/lib/rendezvous/RendezvousCode.js +0 -1
  366. package/lib/rendezvous/RendezvousCode.js.map +0 -1
  367. package/lib/rendezvous/RendezvousError.d.ts +0 -6
  368. package/lib/rendezvous/RendezvousError.d.ts.map +0 -1
  369. package/lib/rendezvous/RendezvousError.js +0 -23
  370. package/lib/rendezvous/RendezvousError.js.map +0 -1
  371. package/lib/rendezvous/RendezvousFailureReason.d.ts +0 -31
  372. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +0 -1
  373. package/lib/rendezvous/RendezvousFailureReason.js +0 -38
  374. package/lib/rendezvous/RendezvousFailureReason.js.map +0 -1
  375. package/lib/rendezvous/RendezvousIntent.d.ts +0 -5
  376. package/lib/rendezvous/RendezvousIntent.d.ts.map +0 -1
  377. package/lib/rendezvous/RendezvousIntent.js +0 -22
  378. package/lib/rendezvous/RendezvousIntent.js.map +0 -1
  379. package/lib/rendezvous/RendezvousTransport.d.ts +0 -36
  380. package/lib/rendezvous/RendezvousTransport.d.ts.map +0 -1
  381. package/lib/rendezvous/RendezvousTransport.js +0 -1
  382. package/lib/rendezvous/RendezvousTransport.js.map +0 -1
  383. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +0 -58
  384. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +0 -1
  385. package/lib/rendezvous/channels/MSC4108SecureChannel.js +0 -246
  386. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +0 -1
  387. package/lib/rendezvous/channels/index.d.ts +0 -2
  388. package/lib/rendezvous/channels/index.d.ts.map +0 -1
  389. package/lib/rendezvous/channels/index.js +0 -18
  390. package/lib/rendezvous/channels/index.js.map +0 -1
  391. package/lib/rendezvous/index.d.ts +0 -10
  392. package/lib/rendezvous/index.d.ts.map +0 -1
  393. package/lib/rendezvous/index.js +0 -23
  394. package/lib/rendezvous/index.js.map +0 -1
  395. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +0 -61
  396. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +0 -1
  397. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +0 -253
  398. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +0 -1
  399. package/lib/rendezvous/transports/index.d.ts +0 -2
  400. package/lib/rendezvous/transports/index.d.ts.map +0 -1
  401. package/lib/rendezvous/transports/index.js +0 -18
  402. package/lib/rendezvous/transports/index.js.map +0 -1
  403. package/lib/rust-crypto/CrossSigningIdentity.d.ts +0 -33
  404. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +0 -1
  405. package/lib/rust-crypto/CrossSigningIdentity.js +0 -157
  406. package/lib/rust-crypto/CrossSigningIdentity.js.map +0 -1
  407. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +0 -98
  408. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +0 -1
  409. package/lib/rust-crypto/DehydratedDeviceManager.js +0 -285
  410. package/lib/rust-crypto/DehydratedDeviceManager.js.map +0 -1
  411. package/lib/rust-crypto/KeyClaimManager.d.ts +0 -33
  412. package/lib/rust-crypto/KeyClaimManager.d.ts.map +0 -1
  413. package/lib/rust-crypto/KeyClaimManager.js +0 -82
  414. package/lib/rust-crypto/KeyClaimManager.js.map +0 -1
  415. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +0 -43
  416. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +0 -1
  417. package/lib/rust-crypto/OutgoingRequestProcessor.js +0 -195
  418. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +0 -1
  419. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +0 -47
  420. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +0 -1
  421. package/lib/rust-crypto/OutgoingRequestsManager.js +0 -148
  422. package/lib/rust-crypto/OutgoingRequestsManager.js.map +0 -1
  423. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +0 -120
  424. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +0 -1
  425. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +0 -467
  426. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +0 -1
  427. package/lib/rust-crypto/RoomEncryptor.d.ts +0 -98
  428. package/lib/rust-crypto/RoomEncryptor.d.ts.map +0 -1
  429. package/lib/rust-crypto/RoomEncryptor.js +0 -299
  430. package/lib/rust-crypto/RoomEncryptor.js.map +0 -1
  431. package/lib/rust-crypto/backup.d.ts +0 -254
  432. package/lib/rust-crypto/backup.d.ts.map +0 -1
  433. package/lib/rust-crypto/backup.js +0 -837
  434. package/lib/rust-crypto/backup.js.map +0 -1
  435. package/lib/rust-crypto/constants.d.ts +0 -3
  436. package/lib/rust-crypto/constants.d.ts.map +0 -1
  437. package/lib/rust-crypto/constants.js +0 -19
  438. package/lib/rust-crypto/constants.js.map +0 -1
  439. package/lib/rust-crypto/device-converter.d.ts +0 -28
  440. package/lib/rust-crypto/device-converter.d.ts.map +0 -1
  441. package/lib/rust-crypto/device-converter.js +0 -123
  442. package/lib/rust-crypto/device-converter.js.map +0 -1
  443. package/lib/rust-crypto/index.d.ts +0 -61
  444. package/lib/rust-crypto/index.d.ts.map +0 -1
  445. package/lib/rust-crypto/index.js +0 -152
  446. package/lib/rust-crypto/index.js.map +0 -1
  447. package/lib/rust-crypto/libolm_migration.d.ts +0 -81
  448. package/lib/rust-crypto/libolm_migration.d.ts.map +0 -1
  449. package/lib/rust-crypto/libolm_migration.js +0 -459
  450. package/lib/rust-crypto/libolm_migration.js.map +0 -1
  451. package/lib/rust-crypto/rust-crypto.d.ts +0 -556
  452. package/lib/rust-crypto/rust-crypto.d.ts.map +0 -1
  453. package/lib/rust-crypto/rust-crypto.js +0 -2016
  454. package/lib/rust-crypto/rust-crypto.js.map +0 -1
  455. package/lib/rust-crypto/secret-storage.d.ts +0 -22
  456. package/lib/rust-crypto/secret-storage.d.ts.map +0 -1
  457. package/lib/rust-crypto/secret-storage.js +0 -63
  458. package/lib/rust-crypto/secret-storage.js.map +0 -1
  459. package/lib/rust-crypto/verification.d.ts +0 -319
  460. package/lib/rust-crypto/verification.d.ts.map +0 -1
  461. package/lib/rust-crypto/verification.js +0 -816
  462. package/lib/rust-crypto/verification.js.map +0 -1
  463. package/lib/secret-storage.d.ts +0 -370
  464. package/lib/secret-storage.d.ts.map +0 -1
  465. package/lib/secret-storage.js +0 -466
  466. package/lib/secret-storage.js.map +0 -1
  467. package/lib/utils/decryptAESSecretStorageItem.d.ts +0 -12
  468. package/lib/utils/decryptAESSecretStorageItem.d.ts.map +0 -1
  469. package/lib/utils/decryptAESSecretStorageItem.js +0 -50
  470. package/lib/utils/decryptAESSecretStorageItem.js.map +0 -1
  471. package/lib/utils/encryptAESSecretStorageItem.d.ts +0 -16
  472. package/lib/utils/encryptAESSecretStorageItem.d.ts.map +0 -1
  473. package/lib/utils/encryptAESSecretStorageItem.js +0 -68
  474. package/lib/utils/encryptAESSecretStorageItem.js.map +0 -1
  475. package/lib/utils/internal/deriveKeys.d.ts +0 -10
  476. package/lib/utils/internal/deriveKeys.d.ts.map +0 -1
  477. package/lib/utils/internal/deriveKeys.js +0 -60
  478. package/lib/utils/internal/deriveKeys.js.map +0 -1
  479. package/lib/webrtc/audioContext.d.ts +0 -15
  480. package/lib/webrtc/audioContext.d.ts.map +0 -1
  481. package/lib/webrtc/audioContext.js +0 -46
  482. package/lib/webrtc/audioContext.js.map +0 -1
  483. package/lib/webrtc/call.d.ts +0 -560
  484. package/lib/webrtc/call.d.ts.map +0 -1
  485. package/lib/webrtc/call.js +0 -2541
  486. package/lib/webrtc/call.js.map +0 -1
  487. package/lib/webrtc/callEventHandler.d.ts +0 -37
  488. package/lib/webrtc/callEventHandler.d.ts.map +0 -1
  489. package/lib/webrtc/callEventHandler.js +0 -344
  490. package/lib/webrtc/callEventHandler.js.map +0 -1
  491. package/lib/webrtc/callEventTypes.d.ts +0 -73
  492. package/lib/webrtc/callEventTypes.d.ts.map +0 -1
  493. package/lib/webrtc/callEventTypes.js +0 -13
  494. package/lib/webrtc/callEventTypes.js.map +0 -1
  495. package/lib/webrtc/callFeed.d.ts +0 -128
  496. package/lib/webrtc/callFeed.d.ts.map +0 -1
  497. package/lib/webrtc/callFeed.js +0 -289
  498. package/lib/webrtc/callFeed.js.map +0 -1
  499. package/lib/webrtc/groupCall.d.ts +0 -323
  500. package/lib/webrtc/groupCall.d.ts.map +0 -1
  501. package/lib/webrtc/groupCall.js +0 -1337
  502. package/lib/webrtc/groupCall.js.map +0 -1
  503. package/lib/webrtc/groupCallEventHandler.d.ts +0 -31
  504. package/lib/webrtc/groupCallEventHandler.d.ts.map +0 -1
  505. package/lib/webrtc/groupCallEventHandler.js +0 -178
  506. package/lib/webrtc/groupCallEventHandler.js.map +0 -1
  507. package/lib/webrtc/mediaHandler.d.ts +0 -89
  508. package/lib/webrtc/mediaHandler.d.ts.map +0 -1
  509. package/lib/webrtc/mediaHandler.js +0 -437
  510. package/lib/webrtc/mediaHandler.js.map +0 -1
  511. package/lib/webrtc/stats/callFeedStatsReporter.d.ts +0 -8
  512. package/lib/webrtc/stats/callFeedStatsReporter.d.ts.map +0 -1
  513. package/lib/webrtc/stats/callFeedStatsReporter.js +0 -82
  514. package/lib/webrtc/stats/callFeedStatsReporter.js.map +0 -1
  515. package/lib/webrtc/stats/callStatsReportGatherer.d.ts +0 -25
  516. package/lib/webrtc/stats/callStatsReportGatherer.d.ts.map +0 -1
  517. package/lib/webrtc/stats/callStatsReportGatherer.js +0 -199
  518. package/lib/webrtc/stats/callStatsReportGatherer.js.map +0 -1
  519. package/lib/webrtc/stats/callStatsReportSummary.d.ts +0 -17
  520. package/lib/webrtc/stats/callStatsReportSummary.d.ts.map +0 -1
  521. package/lib/webrtc/stats/callStatsReportSummary.js +0 -1
  522. package/lib/webrtc/stats/callStatsReportSummary.js.map +0 -1
  523. package/lib/webrtc/stats/connectionStats.d.ts +0 -28
  524. package/lib/webrtc/stats/connectionStats.d.ts.map +0 -1
  525. package/lib/webrtc/stats/connectionStats.js +0 -26
  526. package/lib/webrtc/stats/connectionStats.js.map +0 -1
  527. package/lib/webrtc/stats/connectionStatsBuilder.d.ts +0 -5
  528. package/lib/webrtc/stats/connectionStatsBuilder.d.ts.map +0 -1
  529. package/lib/webrtc/stats/connectionStatsBuilder.js +0 -27
  530. package/lib/webrtc/stats/connectionStatsBuilder.js.map +0 -1
  531. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts +0 -7
  532. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts.map +0 -1
  533. package/lib/webrtc/stats/connectionStatsReportBuilder.js +0 -121
  534. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +0 -1
  535. package/lib/webrtc/stats/groupCallStats.d.ts +0 -22
  536. package/lib/webrtc/stats/groupCallStats.d.ts.map +0 -1
  537. package/lib/webrtc/stats/groupCallStats.js +0 -78
  538. package/lib/webrtc/stats/groupCallStats.js.map +0 -1
  539. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts +0 -10
  540. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts.map +0 -1
  541. package/lib/webrtc/stats/media/mediaSsrcHandler.js +0 -57
  542. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +0 -1
  543. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts +0 -12
  544. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts.map +0 -1
  545. package/lib/webrtc/stats/media/mediaTrackHandler.js +0 -62
  546. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +0 -1
  547. package/lib/webrtc/stats/media/mediaTrackStats.d.ts +0 -86
  548. package/lib/webrtc/stats/media/mediaTrackStats.d.ts.map +0 -1
  549. package/lib/webrtc/stats/media/mediaTrackStats.js +0 -142
  550. package/lib/webrtc/stats/media/mediaTrackStats.js.map +0 -1
  551. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts +0 -22
  552. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts.map +0 -1
  553. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +0 -76
  554. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +0 -1
  555. package/lib/webrtc/stats/statsReport.d.ts +0 -99
  556. package/lib/webrtc/stats/statsReport.d.ts.map +0 -1
  557. package/lib/webrtc/stats/statsReport.js +0 -32
  558. package/lib/webrtc/stats/statsReport.js.map +0 -1
  559. package/lib/webrtc/stats/statsReportEmitter.d.ts +0 -15
  560. package/lib/webrtc/stats/statsReportEmitter.d.ts.map +0 -1
  561. package/lib/webrtc/stats/statsReportEmitter.js +0 -33
  562. package/lib/webrtc/stats/statsReportEmitter.js.map +0 -1
  563. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts +0 -16
  564. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts.map +0 -1
  565. package/lib/webrtc/stats/summaryStatsReportGatherer.js +0 -116
  566. package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +0 -1
  567. package/lib/webrtc/stats/trackStatsBuilder.d.ts +0 -19
  568. package/lib/webrtc/stats/trackStatsBuilder.d.ts.map +0 -1
  569. package/lib/webrtc/stats/trackStatsBuilder.js +0 -168
  570. package/lib/webrtc/stats/trackStatsBuilder.js.map +0 -1
  571. package/lib/webrtc/stats/transportStats.d.ts +0 -11
  572. package/lib/webrtc/stats/transportStats.d.ts.map +0 -1
  573. package/lib/webrtc/stats/transportStats.js +0 -1
  574. package/lib/webrtc/stats/transportStats.js.map +0 -1
  575. package/lib/webrtc/stats/transportStatsBuilder.d.ts +0 -5
  576. package/lib/webrtc/stats/transportStatsBuilder.d.ts.map +0 -1
  577. package/lib/webrtc/stats/transportStatsBuilder.js +0 -34
  578. package/lib/webrtc/stats/transportStatsBuilder.js.map +0 -1
  579. package/lib/webrtc/stats/valueFormatter.d.ts +0 -4
  580. package/lib/webrtc/stats/valueFormatter.d.ts.map +0 -1
  581. package/lib/webrtc/stats/valueFormatter.js +0 -25
  582. package/lib/webrtc/stats/valueFormatter.js.map +0 -1
  583. package/src/@types/AESEncryptedSecretStoragePayload.ts +0 -29
  584. package/src/@types/crypto.ts +0 -73
  585. package/src/@types/matrix-sdk-crypto-wasm.d.ts +0 -44
  586. package/src/common-crypto/CryptoBackend.ts +0 -302
  587. package/src/common-crypto/README.md +0 -4
  588. package/src/common-crypto/key-passphrase.ts +0 -43
  589. package/src/crypto/CrossSigning.ts +0 -773
  590. package/src/crypto/DeviceList.ts +0 -989
  591. package/src/crypto/EncryptionSetup.ts +0 -351
  592. package/src/crypto/OlmDevice.ts +0 -1500
  593. package/src/crypto/OutgoingRoomKeyRequestManager.ts +0 -485
  594. package/src/crypto/RoomList.ts +0 -70
  595. package/src/crypto/SecretSharing.ts +0 -240
  596. package/src/crypto/SecretStorage.ts +0 -136
  597. package/src/crypto/aes.ts +0 -23
  598. package/src/crypto/algorithms/base.ts +0 -236
  599. package/src/crypto/algorithms/index.ts +0 -20
  600. package/src/crypto/algorithms/megolm.ts +0 -2216
  601. package/src/crypto/algorithms/olm.ts +0 -381
  602. package/src/crypto/api.ts +0 -70
  603. package/src/crypto/backup.ts +0 -922
  604. package/src/crypto/crypto.ts +0 -18
  605. package/src/crypto/dehydration.ts +0 -272
  606. package/src/crypto/device-converter.ts +0 -45
  607. package/src/crypto/deviceinfo.ts +0 -158
  608. package/src/crypto/index.ts +0 -4418
  609. package/src/crypto/key_passphrase.ts +0 -42
  610. package/src/crypto/keybackup.ts +0 -47
  611. package/src/crypto/olmlib.ts +0 -539
  612. package/src/crypto/recoverykey.ts +0 -18
  613. package/src/crypto/store/base.ts +0 -348
  614. package/src/crypto/store/indexeddb-crypto-store-backend.ts +0 -1250
  615. package/src/crypto/store/indexeddb-crypto-store.ts +0 -845
  616. package/src/crypto/store/localStorage-crypto-store.ts +0 -579
  617. package/src/crypto/store/memory-crypto-store.ts +0 -680
  618. package/src/crypto/verification/Base.ts +0 -409
  619. package/src/crypto/verification/Error.ts +0 -76
  620. package/src/crypto/verification/IllegalMethod.ts +0 -50
  621. package/src/crypto/verification/QRCode.ts +0 -310
  622. package/src/crypto/verification/SAS.ts +0 -494
  623. package/src/crypto/verification/SASDecimal.ts +0 -37
  624. package/src/crypto/verification/request/Channel.ts +0 -34
  625. package/src/crypto/verification/request/InRoomChannel.ts +0 -371
  626. package/src/crypto/verification/request/ToDeviceChannel.ts +0 -354
  627. package/src/crypto/verification/request/VerificationRequest.ts +0 -976
  628. package/src/crypto-api/CryptoEvent.ts +0 -93
  629. package/src/crypto-api/CryptoEventHandlerMap.ts +0 -32
  630. package/src/crypto-api/index.ts +0 -1175
  631. package/src/crypto-api/key-passphrase.ts +0 -58
  632. package/src/crypto-api/keybackup.ts +0 -115
  633. package/src/crypto-api/recovery-key.ts +0 -69
  634. package/src/crypto-api/verification.ts +0 -408
  635. package/src/matrixrtc/CallMembership.ts +0 -247
  636. package/src/matrixrtc/LivekitFocus.ts +0 -39
  637. package/src/matrixrtc/MatrixRTCSession.ts +0 -1319
  638. package/src/matrixrtc/MatrixRTCSessionManager.ts +0 -166
  639. package/src/matrixrtc/focus.ts +0 -25
  640. package/src/matrixrtc/index.ts +0 -22
  641. package/src/matrixrtc/types.ts +0 -36
  642. package/src/rendezvous/MSC4108SignInWithQR.ts +0 -444
  643. package/src/rendezvous/RendezvousChannel.ts +0 -48
  644. package/src/rendezvous/RendezvousCode.ts +0 -25
  645. package/src/rendezvous/RendezvousError.ts +0 -26
  646. package/src/rendezvous/RendezvousFailureReason.ts +0 -49
  647. package/src/rendezvous/RendezvousIntent.ts +0 -20
  648. package/src/rendezvous/RendezvousTransport.ts +0 -58
  649. package/src/rendezvous/channels/MSC4108SecureChannel.ts +0 -270
  650. package/src/rendezvous/channels/index.ts +0 -17
  651. package/src/rendezvous/index.ts +0 -25
  652. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +0 -270
  653. package/src/rendezvous/transports/index.ts +0 -17
  654. package/src/rust-crypto/CrossSigningIdentity.ts +0 -183
  655. package/src/rust-crypto/DehydratedDeviceManager.ts +0 -306
  656. package/src/rust-crypto/KeyClaimManager.ts +0 -86
  657. package/src/rust-crypto/OutgoingRequestProcessor.ts +0 -236
  658. package/src/rust-crypto/OutgoingRequestsManager.ts +0 -143
  659. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +0 -501
  660. package/src/rust-crypto/RoomEncryptor.ts +0 -352
  661. package/src/rust-crypto/backup.ts +0 -881
  662. package/src/rust-crypto/constants.ts +0 -18
  663. package/src/rust-crypto/device-converter.ts +0 -128
  664. package/src/rust-crypto/index.ts +0 -237
  665. package/src/rust-crypto/libolm_migration.ts +0 -530
  666. package/src/rust-crypto/rust-crypto.ts +0 -2205
  667. package/src/rust-crypto/secret-storage.ts +0 -60
  668. package/src/rust-crypto/verification.ts +0 -830
  669. package/src/secret-storage.ts +0 -693
  670. package/src/utils/decryptAESSecretStorageItem.ts +0 -54
  671. package/src/utils/encryptAESSecretStorageItem.ts +0 -73
  672. package/src/utils/internal/deriveKeys.ts +0 -63
  673. package/src/webrtc/audioContext.ts +0 -44
  674. package/src/webrtc/call.ts +0 -3074
  675. package/src/webrtc/callEventHandler.ts +0 -425
  676. package/src/webrtc/callEventTypes.ts +0 -93
  677. package/src/webrtc/callFeed.ts +0 -364
  678. package/src/webrtc/groupCall.ts +0 -1735
  679. package/src/webrtc/groupCallEventHandler.ts +0 -234
  680. package/src/webrtc/mediaHandler.ts +0 -484
  681. package/src/webrtc/stats/callFeedStatsReporter.ts +0 -94
  682. package/src/webrtc/stats/callStatsReportGatherer.ts +0 -219
  683. package/src/webrtc/stats/callStatsReportSummary.ts +0 -30
  684. package/src/webrtc/stats/connectionStats.ts +0 -47
  685. package/src/webrtc/stats/connectionStatsBuilder.ts +0 -28
  686. package/src/webrtc/stats/connectionStatsReportBuilder.ts +0 -140
  687. package/src/webrtc/stats/groupCallStats.ts +0 -93
  688. package/src/webrtc/stats/media/mediaSsrcHandler.ts +0 -57
  689. package/src/webrtc/stats/media/mediaTrackHandler.ts +0 -76
  690. package/src/webrtc/stats/media/mediaTrackStats.ts +0 -176
  691. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +0 -90
  692. package/src/webrtc/stats/statsReport.ts +0 -133
  693. package/src/webrtc/stats/statsReportEmitter.ts +0 -49
  694. package/src/webrtc/stats/summaryStatsReportGatherer.ts +0 -148
  695. package/src/webrtc/stats/trackStatsBuilder.ts +0 -207
  696. package/src/webrtc/stats/transportStats.ts +0 -26
  697. package/src/webrtc/stats/transportStatsBuilder.ts +0 -48
  698. package/src/webrtc/stats/valueFormatter.ts +0 -27
@@ -1 +1 @@
1
- {"version":3,"file":"embedded.js","names":["WidgetApiToWidgetAction","WidgetApiResponseError","MatrixCapabilities","MatrixEvent","EventStatus","EventType","logger","MatrixClient","ClientEvent","UNSTABLE_MSC4140_DELAYED_EVENTS","SyncApi","SyncState","SlidingSyncSdk","MatrixError","User","MapWithDefault","recursiveMapToObject","TypedEventEmitter","RoomWidgetClientEvent","RoomWidgetClient","constructor","widgetApi","capabilities","roomId","opts","sendContentLoaded","_this","_capabilities$sendEve","_capabilities$receive","_capabilities$sendSta","_capabilities$receive2","_capabilities$sendEve2","_capabilities$receive3","_capabilities$sendSta2","_capabilities$receive4","_capabilities$sendToD","_capabilities$receive5","_capabilities$sendEve3","_capabilities$sendSta3","this","_defineProperty","_ref","_asyncToGenerator","event","getSender","getUserId","pendingSendingEventsTxId","some","p","getType","type","_this$pendingSendingE","matchingTxId","find","id","getId","txId","length","_this$pendingSendingE2","Promise","resolve","eventEmitter","once","PendingEventsChanged","setTxnId","setUnsigned","_objectSpread","getUnsigned","transaction_id","filter","emit","_x","apply","arguments","_ref2","ev","preventDefault","detail","data","room_id","updateTxId","syncApi","injectRoomEvents","room","Event","setSyncState","Syncing","info","concat","getStateKey","event_id","eventId","ack","_x2","_ref3","sender","content","encrypted","makeEncrypted","RoomMessageEncrypted","ToDeviceEvent","_x3","transportSend","transport","send","bind","_ref4","action","error","processAndThrow","_x4","_x5","transportSendComplete","sendComplete","_ref5","_x6","_x7","widgetApiReady","sendEvent","receiveEvent","sendMessage","Array","isArray","receiveMessage","sendState","receiveState","requestCapabilityForRoomTimeline","forEach","eventType","requestCapabilityToSendEvent","requestCapabilityToReceiveEvent","requestCapabilityToSendMessage","msgType","requestCapabilityToReceiveMessage","_ref6","stateKey","requestCapabilityToSendState","_ref7","requestCapabilityToReceiveState","sendToDevice","requestCapabilityToSendToDevice","receiveToDevice","requestCapabilityToReceiveToDevice","sendDelayedEvents","requestCapability","MSC4157SendDelayedEvent","updateDelayedEvents","MSC4157UpdateDelayedEvent","turnServers","MSC3846TurnServers","on","SendEvent","onEvent","SendToDevice","onToDevice","start","startClient","_arguments","_this2","_this2$capabilities$r","_this2$capabilities$r2","undefined","lifecycle","AbortController","userId","store","storeUser","slidingSync","buildSyncApiOptions","createRoom","storeRoom","all","map","_ref9","_ref8","rawEvents","readStateEvents","events","rawEvent","_x8","clientWellKnownPollPeriod","clientWellKnownIntervalID","setInterval","fetchClientWellKnown","matrixRTC","watchTurnServers","stopClient","off","abort","joinRoom","roomIdOrAlias","_this3","Error","encryptAndSendEvent","delayOpts","_this4","redacts","getContent","response","sendRoomEvent","delay","parent_delay_id","validateSendDelayedEventResponse","getTxnId","push","e","updatePendingEventStatus","NOT_SENT","updatePendingEvent","SENT","sendStateEvent","_arguments2","_this5","_unstable_sendDelayedStateEvent","_arguments3","_this6","doesServerSupportUnstableFeature","delay_id","_unstable_updateDelayedEvent","delayId","_this7","updateDelayedEvent","contentMap","_this8","getOpenIdToken","_this9","token","requestOpenIDConnectToken","access_token","expires_in","matrix_server_name","token_type","queueToDevice","_ref10","_this10","batch","Map","deviceId","payload","getOrCreate","set","encryptAndSendToDevices","userDeviceInfoArr","_this11","deviceInfo","sendToDeviceViaWidgetApi","_this12","checkTurnServers","_this13","getSyncState","syncState","state","oldState","Sync","_this14","reply","_this15","servers","getTurnServers","onClientStopped","return","signal","addEventListener","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_asyncIterator","_step","next","done","server","value","urls","uris","username","credential","password","TurnServers","log","err","warn","removeEventListener","matrix_api_error","fromWidgetApiErrorData"],"sources":["../src/embedded.ts"],"sourcesContent":["/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n WidgetApi,\n WidgetApiToWidgetAction,\n WidgetApiResponseError,\n MatrixCapabilities,\n IWidgetApiRequest,\n IWidgetApiAcknowledgeResponseData,\n ISendEventToWidgetActionRequest,\n ISendToDeviceToWidgetActionRequest,\n ISendEventFromWidgetResponseData,\n IWidgetApiRequestData,\n WidgetApiAction,\n IWidgetApiResponse,\n IWidgetApiResponseData,\n} from \"matrix-widget-api\";\n\nimport { MatrixEvent, IEvent, IContent, EventStatus } from \"./models/event.ts\";\nimport {\n ISendEventResponse,\n SendDelayedEventRequestOpts,\n SendDelayedEventResponse,\n UpdateDelayedEventAction,\n} from \"./@types/requests.ts\";\nimport { EventType, StateEvents } from \"./@types/event.ts\";\nimport { logger } from \"./logger.ts\";\nimport {\n MatrixClient,\n ClientEvent,\n IMatrixClientCreateOpts,\n IStartClientOpts,\n SendToDeviceContentMap,\n IOpenIDToken,\n UNSTABLE_MSC4140_DELAYED_EVENTS,\n} from \"./client.ts\";\nimport { SyncApi, SyncState } from \"./sync.ts\";\nimport { SlidingSyncSdk } from \"./sliding-sync-sdk.ts\";\nimport { MatrixError } from \"./http-api/errors.ts\";\nimport { User } from \"./models/user.ts\";\nimport { Room } from \"./models/room.ts\";\nimport { ToDeviceBatch, ToDevicePayload } from \"./models/ToDeviceMessage.ts\";\nimport { DeviceInfo } from \"./crypto/deviceinfo.ts\";\nimport { IOlmDevice } from \"./crypto/algorithms/megolm.ts\";\nimport { MapWithDefault, recursiveMapToObject } from \"./utils.ts\";\nimport { TypedEventEmitter } from \"./matrix.ts\";\n\ninterface IStateEventRequest {\n eventType: string;\n stateKey?: string;\n}\n\nexport interface ICapabilities {\n /**\n * Event types that this client expects to send.\n */\n sendEvent?: string[];\n /**\n * Event types that this client expects to receive.\n */\n receiveEvent?: string[];\n\n /**\n * Message types that this client expects to send, or true for all message\n * types.\n */\n sendMessage?: string[] | true;\n /**\n * Message types that this client expects to receive, or true for all\n * message types.\n */\n receiveMessage?: string[] | true;\n\n /**\n * Types of state events that this client expects to send.\n */\n sendState?: IStateEventRequest[];\n /**\n * Types of state events that this client expects to receive.\n */\n receiveState?: IStateEventRequest[];\n\n /**\n * To-device event types that this client expects to send.\n */\n sendToDevice?: string[];\n /**\n * To-device event types that this client expects to receive.\n */\n receiveToDevice?: string[];\n\n /**\n * Whether this client needs access to TURN servers.\n * @defaultValue false\n */\n turnServers?: boolean;\n\n /**\n * Whether this client needs to be able to send delayed events.\n * @experimental Part of MSC4140 & MSC4157\n * @defaultValue false\n */\n sendDelayedEvents?: boolean;\n\n /**\n * Whether this client needs to be able to update delayed events.\n * @experimental Part of MSC4140 & MSC4157\n * @defaultValue false\n */\n updateDelayedEvents?: boolean;\n}\n\nexport enum RoomWidgetClientEvent {\n PendingEventsChanged = \"PendingEvent.pendingEventsChanged\",\n}\nexport type EventHandlerMap = { [RoomWidgetClientEvent.PendingEventsChanged]: () => void };\n/**\n * A MatrixClient that routes its requests through the widget API instead of the\n * real CS API.\n * @experimental This class is considered unstable!\n */\nexport class RoomWidgetClient extends MatrixClient {\n private room?: Room;\n private readonly widgetApiReady: Promise<void>;\n private lifecycle?: AbortController;\n private syncState: SyncState | null = null;\n\n private pendingSendingEventsTxId: { type: string; id: string | undefined; txId: string }[] = [];\n private eventEmitter = new TypedEventEmitter<keyof EventHandlerMap, EventHandlerMap>();\n\n /**\n *\n * @param widgetApi - The widget api to use for communication.\n * @param capabilities - The capabilities the widget client will request.\n * @param roomId - The room id the widget is associated with.\n * @param opts - The configuration options for this client.\n * @param sendContentLoaded - Whether to send a content loaded widget action immediately after initial setup.\n * Set to `false` if the widget uses `waitForIFrameLoad=true` (in this case the client does not expect a content loaded action at all),\n * or if the the widget wants to send the `ContentLoaded` action at a later point in time after the initial setup.\n */\n public constructor(\n private readonly widgetApi: WidgetApi,\n private readonly capabilities: ICapabilities,\n private readonly roomId: string,\n opts: IMatrixClientCreateOpts,\n sendContentLoaded: boolean,\n ) {\n super(opts);\n\n const transportSend = this.widgetApi.transport.send.bind(this.widgetApi.transport);\n this.widgetApi.transport.send = async <\n T extends IWidgetApiRequestData,\n R extends IWidgetApiResponseData = IWidgetApiAcknowledgeResponseData,\n >(\n action: WidgetApiAction,\n data: T,\n ): Promise<R> => {\n try {\n return await transportSend(action, data);\n } catch (error) {\n processAndThrow(error);\n }\n };\n\n const transportSendComplete = this.widgetApi.transport.sendComplete.bind(this.widgetApi.transport);\n this.widgetApi.transport.sendComplete = async <T extends IWidgetApiRequestData, R extends IWidgetApiResponse>(\n action: WidgetApiAction,\n data: T,\n ): Promise<R> => {\n try {\n return await transportSendComplete(action, data);\n } catch (error) {\n processAndThrow(error);\n }\n };\n\n this.widgetApiReady = new Promise<void>((resolve) => this.widgetApi.once(\"ready\", resolve));\n\n // Request capabilities for the functionality this client needs to support\n if (\n capabilities.sendEvent?.length ||\n capabilities.receiveEvent?.length ||\n capabilities.sendMessage === true ||\n (Array.isArray(capabilities.sendMessage) && capabilities.sendMessage.length) ||\n capabilities.receiveMessage === true ||\n (Array.isArray(capabilities.receiveMessage) && capabilities.receiveMessage.length) ||\n capabilities.sendState?.length ||\n capabilities.receiveState?.length\n ) {\n widgetApi.requestCapabilityForRoomTimeline(roomId);\n }\n capabilities.sendEvent?.forEach((eventType) => widgetApi.requestCapabilityToSendEvent(eventType));\n capabilities.receiveEvent?.forEach((eventType) => widgetApi.requestCapabilityToReceiveEvent(eventType));\n if (capabilities.sendMessage === true) {\n widgetApi.requestCapabilityToSendMessage();\n } else if (Array.isArray(capabilities.sendMessage)) {\n capabilities.sendMessage.forEach((msgType) => widgetApi.requestCapabilityToSendMessage(msgType));\n }\n if (capabilities.receiveMessage === true) {\n widgetApi.requestCapabilityToReceiveMessage();\n } else if (Array.isArray(capabilities.receiveMessage)) {\n capabilities.receiveMessage.forEach((msgType) => widgetApi.requestCapabilityToReceiveMessage(msgType));\n }\n capabilities.sendState?.forEach(({ eventType, stateKey }) =>\n widgetApi.requestCapabilityToSendState(eventType, stateKey),\n );\n capabilities.receiveState?.forEach(({ eventType, stateKey }) =>\n widgetApi.requestCapabilityToReceiveState(eventType, stateKey),\n );\n capabilities.sendToDevice?.forEach((eventType) => widgetApi.requestCapabilityToSendToDevice(eventType));\n capabilities.receiveToDevice?.forEach((eventType) => widgetApi.requestCapabilityToReceiveToDevice(eventType));\n if (\n capabilities.sendDelayedEvents &&\n (capabilities.sendEvent?.length ||\n capabilities.sendMessage === true ||\n (Array.isArray(capabilities.sendMessage) && capabilities.sendMessage.length) ||\n capabilities.sendState?.length)\n ) {\n widgetApi.requestCapability(MatrixCapabilities.MSC4157SendDelayedEvent);\n }\n if (capabilities.updateDelayedEvents) {\n widgetApi.requestCapability(MatrixCapabilities.MSC4157UpdateDelayedEvent);\n }\n if (capabilities.turnServers) {\n widgetApi.requestCapability(MatrixCapabilities.MSC3846TurnServers);\n }\n\n widgetApi.on(`action:${WidgetApiToWidgetAction.SendEvent}`, this.onEvent);\n widgetApi.on(`action:${WidgetApiToWidgetAction.SendToDevice}`, this.onToDevice);\n\n // Open communication with the host\n widgetApi.start();\n // Send a content loaded event now we've started the widget API\n // Note that element-web currently does not use waitForIFrameLoad=false and so\n // does *not* (yes, that is the right way around) wait for this event. Let's\n // start sending this, then once this has rolled out, we can change element-web to\n // use waitForIFrameLoad=false and have a widget API that's less racy.\n if (sendContentLoaded) widgetApi.sendContentLoaded();\n }\n\n public async startClient(opts: IStartClientOpts = {}): Promise<void> {\n this.lifecycle = new AbortController();\n\n // Create our own user object artificially (instead of waiting for sync)\n // so it's always available, even if the user is not in any rooms etc.\n const userId = this.getUserId();\n if (userId) {\n this.store.storeUser(new User(userId));\n }\n\n // Even though we have no access token and cannot sync, the sync class\n // still has some valuable helper methods that we make use of, so we\n // instantiate it anyways\n if (opts.slidingSync) {\n this.syncApi = new SlidingSyncSdk(opts.slidingSync, this, opts, this.buildSyncApiOptions());\n } else {\n this.syncApi = new SyncApi(this, opts, this.buildSyncApiOptions());\n }\n\n this.room = this.syncApi.createRoom(this.roomId);\n this.store.storeRoom(this.room);\n\n await this.widgetApiReady;\n\n // Backfill the requested events\n // We only get the most recent event for every type + state key combo,\n // so it doesn't really matter what order we inject them in\n await Promise.all(\n this.capabilities.receiveState?.map(async ({ eventType, stateKey }) => {\n const rawEvents = await this.widgetApi.readStateEvents(eventType, undefined, stateKey, [this.roomId]);\n const events = rawEvents.map((rawEvent) => new MatrixEvent(rawEvent as Partial<IEvent>));\n\n await this.syncApi!.injectRoomEvents(this.room!, [], events);\n events.forEach((event) => {\n this.emit(ClientEvent.Event, event);\n logger.info(`Backfilled event ${event.getId()} ${event.getType()} ${event.getStateKey()}`);\n });\n }) ?? [],\n );\n\n if (opts.clientWellKnownPollPeriod !== undefined) {\n this.clientWellKnownIntervalID = setInterval(() => {\n this.fetchClientWellKnown();\n }, 1000 * opts.clientWellKnownPollPeriod);\n this.fetchClientWellKnown();\n }\n\n this.setSyncState(SyncState.Syncing);\n logger.info(\"Finished backfilling events\");\n\n this.matrixRTC.start();\n\n // Watch for TURN servers, if requested\n if (this.capabilities.turnServers) this.watchTurnServers();\n }\n\n public stopClient(): void {\n this.widgetApi.off(`action:${WidgetApiToWidgetAction.SendEvent}`, this.onEvent);\n this.widgetApi.off(`action:${WidgetApiToWidgetAction.SendToDevice}`, this.onToDevice);\n\n super.stopClient();\n this.lifecycle!.abort(); // Signal to other async tasks that the client has stopped\n }\n\n public async joinRoom(roomIdOrAlias: string): Promise<Room> {\n if (roomIdOrAlias === this.roomId) return this.room!;\n throw new Error(`Unknown room: ${roomIdOrAlias}`);\n }\n\n protected async encryptAndSendEvent(room: Room, event: MatrixEvent): Promise<ISendEventResponse>;\n protected async encryptAndSendEvent(\n room: Room,\n event: MatrixEvent,\n delayOpts: SendDelayedEventRequestOpts,\n ): Promise<SendDelayedEventResponse>;\n protected async encryptAndSendEvent(\n room: Room,\n event: MatrixEvent,\n delayOpts?: SendDelayedEventRequestOpts,\n ): Promise<ISendEventResponse | SendDelayedEventResponse> {\n // We need to extend the content with the redacts parameter\n // The js sdk uses event.redacts but the widget api uses event.content.redacts\n // This will be converted back to event.redacts in the widget driver.\n const content = event.event.redacts\n ? { ...event.getContent(), redacts: event.event.redacts }\n : event.getContent();\n\n // Delayed event special case.\n if (delayOpts) {\n // TODO: updatePendingEvent for delayed events?\n const response = await this.widgetApi.sendRoomEvent(\n event.getType(),\n content,\n room.roomId,\n \"delay\" in delayOpts ? delayOpts.delay : undefined,\n \"parent_delay_id\" in delayOpts ? delayOpts.parent_delay_id : undefined,\n );\n return this.validateSendDelayedEventResponse(response);\n }\n\n const txId = event.getTxnId();\n // Add the txnId to the pending list (still with unknown evID)\n if (txId) this.pendingSendingEventsTxId.push({ type: event.getType(), id: undefined, txId });\n\n let response: ISendEventFromWidgetResponseData;\n try {\n response = await this.widgetApi.sendRoomEvent(event.getType(), content, room.roomId);\n } catch (e) {\n this.updatePendingEventStatus(room, event, EventStatus.NOT_SENT);\n throw e;\n }\n // This also checks for an event id on the response\n room.updatePendingEvent(event, EventStatus.SENT, response.event_id);\n\n // Update the pending events list with the eventId\n this.pendingSendingEventsTxId.forEach((p) => {\n if (p.txId === txId) p.id = response.event_id;\n });\n this.eventEmitter.emit(RoomWidgetClientEvent.PendingEventsChanged);\n\n return { event_id: response.event_id! };\n }\n\n public async sendStateEvent(\n roomId: string,\n eventType: string,\n content: any,\n stateKey = \"\",\n ): Promise<ISendEventResponse> {\n const response = await this.widgetApi.sendStateEvent(eventType, stateKey, content, roomId);\n if (response.event_id === undefined) {\n throw new Error(\"'event_id' absent from response to an event request\");\n }\n return { event_id: response.event_id };\n }\n\n /**\n * @experimental This currently relies on an unstable MSC (MSC4140).\n */\n // eslint-disable-next-line\n public async _unstable_sendDelayedStateEvent<K extends keyof StateEvents>(\n roomId: string,\n delayOpts: SendDelayedEventRequestOpts,\n eventType: K,\n content: StateEvents[K],\n stateKey = \"\",\n ): Promise<SendDelayedEventResponse> {\n if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {\n throw Error(\"Server does not support the delayed events API\");\n }\n\n const response = await this.widgetApi.sendStateEvent(\n eventType,\n stateKey,\n content,\n roomId,\n \"delay\" in delayOpts ? delayOpts.delay : undefined,\n \"parent_delay_id\" in delayOpts ? delayOpts.parent_delay_id : undefined,\n );\n return this.validateSendDelayedEventResponse(response);\n }\n\n private validateSendDelayedEventResponse(response: ISendEventFromWidgetResponseData): SendDelayedEventResponse {\n if (response.delay_id === undefined) {\n throw new Error(\"'delay_id' absent from response to a delayed event request\");\n }\n return { delay_id: response.delay_id };\n }\n\n /**\n * @experimental This currently relies on an unstable MSC (MSC4140).\n */\n // eslint-disable-next-line\n public async _unstable_updateDelayedEvent(delayId: string, action: UpdateDelayedEventAction): Promise<{}> {\n if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {\n throw Error(\"Server does not support the delayed events API\");\n }\n\n return await this.widgetApi.updateDelayedEvent(delayId, action);\n }\n\n public async sendToDevice(eventType: string, contentMap: SendToDeviceContentMap): Promise<{}> {\n await this.widgetApi.sendToDevice(eventType, false, recursiveMapToObject(contentMap));\n return {};\n }\n\n public async getOpenIdToken(): Promise<IOpenIDToken> {\n const token = await this.widgetApi.requestOpenIDConnectToken();\n // the IOpenIDCredentials from the widget-api and IOpenIDToken form the matrix-js-sdk are compatible.\n // we still recreate the token to make this transparent and catch'able by the linter in case the types change in the future.\n return <IOpenIDToken>{\n access_token: token.access_token,\n expires_in: token.expires_in,\n matrix_server_name: token.matrix_server_name,\n token_type: token.token_type,\n };\n }\n\n public async queueToDevice({ eventType, batch }: ToDeviceBatch): Promise<void> {\n // map: user Id → device Id → payload\n const contentMap: MapWithDefault<string, Map<string, ToDevicePayload>> = new MapWithDefault(() => new Map());\n for (const { userId, deviceId, payload } of batch) {\n contentMap.getOrCreate(userId).set(deviceId, payload);\n }\n\n await this.widgetApi.sendToDevice(eventType, false, recursiveMapToObject(contentMap));\n }\n\n public async encryptAndSendToDevices(userDeviceInfoArr: IOlmDevice<DeviceInfo>[], payload: object): Promise<void> {\n // map: user Id → device Id → payload\n const contentMap: MapWithDefault<string, Map<string, object>> = new MapWithDefault(() => new Map());\n for (const {\n userId,\n deviceInfo: { deviceId },\n } of userDeviceInfoArr) {\n contentMap.getOrCreate(userId).set(deviceId, payload);\n }\n\n await this.widgetApi.sendToDevice((payload as { type: string }).type, true, recursiveMapToObject(contentMap));\n }\n\n /**\n * Send an event to a specific list of devices via the widget API. Optionally encrypts the event.\n *\n * If you are using a full MatrixClient you would be calling {@link MatrixClient.getCrypto().encryptToDeviceMessages()} followed\n * by {@link MatrixClient.queueToDevice}.\n *\n * However, this is combined into a single step when running as an embedded widget client. So, we expose this method for those\n * that need it.\n *\n * @param eventType - Type of the event to send.\n * @param encrypted - Whether the event should be encrypted.\n * @param contentMap - The content to send. Map from user_id to device_id to content object.\n */\n public async sendToDeviceViaWidgetApi(\n eventType: string,\n encrypted: boolean,\n contentMap: SendToDeviceContentMap,\n ): Promise<void> {\n await this.widgetApi.sendToDevice(eventType, encrypted, recursiveMapToObject(contentMap));\n }\n\n // Overridden since we get TURN servers automatically over the widget API,\n // and this method would otherwise complain about missing an access token\n public async checkTurnServers(): Promise<boolean> {\n return this.turnServers.length > 0;\n }\n\n // Overridden since we 'sync' manually without the sync API\n public getSyncState(): SyncState | null {\n return this.syncState;\n }\n\n private setSyncState(state: SyncState): void {\n const oldState = this.syncState;\n this.syncState = state;\n this.emit(ClientEvent.Sync, state, oldState);\n }\n\n private async ack(ev: CustomEvent<IWidgetApiRequest>): Promise<void> {\n await this.widgetApi.transport.reply<IWidgetApiAcknowledgeResponseData>(ev.detail, {});\n }\n\n private updateTxId = async (event: MatrixEvent): Promise<void> => {\n // We update the txId for remote echos that originate from this client.\n // This happens with the help of `pendingSendingEventsTxId` where we store all events that are currently sending\n // with their widget txId and once ready the final evId.\n if (\n // This could theoretically be an event send by this device\n // In that case we need to update the txId of the event because the embedded client/widget\n // knows this event with a different transaction Id than what was used by the host client.\n event.getSender() === this.getUserId() &&\n // We optimize by not blocking events from types that we have not send\n // with this client.\n this.pendingSendingEventsTxId.some((p) => event.getType() === p.type)\n ) {\n // Compare by event Id if we have a matching pending event where we know the txId.\n let matchingTxId = this.pendingSendingEventsTxId.find((p) => p.id === event.getId())?.txId;\n // Block any further processing of this event until we have received the sending response.\n // -> until we know the event id.\n // -> until we have not pending events anymore.\n while (!matchingTxId && this.pendingSendingEventsTxId.length > 0) {\n // Recheck whenever the PendingEventsChanged\n await new Promise<void>((resolve) =>\n this.eventEmitter.once(RoomWidgetClientEvent.PendingEventsChanged, () => resolve()),\n );\n matchingTxId = this.pendingSendingEventsTxId.find((p) => p.id === event.getId())?.txId;\n }\n\n // We found the correct txId: we update the event and delete the entry of the pending events.\n if (matchingTxId) {\n event.setTxnId(matchingTxId);\n event.setUnsigned({ ...event.getUnsigned(), transaction_id: matchingTxId });\n }\n this.pendingSendingEventsTxId = this.pendingSendingEventsTxId.filter((p) => p.id !== event.getId());\n\n // Emit once there are no pending events anymore to release all other events that got\n // awaited in the `while (!matchingTxId && this.pendingSendingEventsTxId.length > 0)` loop\n // but are not send by this client.\n if (this.pendingSendingEventsTxId.length === 0) {\n this.eventEmitter.emit(RoomWidgetClientEvent.PendingEventsChanged);\n }\n }\n };\n\n private onEvent = async (ev: CustomEvent<ISendEventToWidgetActionRequest>): Promise<void> => {\n ev.preventDefault();\n\n // Verify the room ID matches, since it's possible for the client to\n // send us events from other rooms if this widget is always on screen\n if (ev.detail.data.room_id === this.roomId) {\n const event = new MatrixEvent(ev.detail.data as Partial<IEvent>);\n\n // Only inject once we have update the txId\n await this.updateTxId(event);\n await this.syncApi!.injectRoomEvents(this.room!, [], [event]);\n this.emit(ClientEvent.Event, event);\n this.setSyncState(SyncState.Syncing);\n logger.info(`Received event ${event.getId()} ${event.getType()} ${event.getStateKey()}`);\n } else {\n const { event_id: eventId, room_id: roomId } = ev.detail.data;\n logger.info(`Received event ${eventId} for a different room ${roomId}; discarding`);\n }\n\n await this.ack(ev);\n };\n\n private onToDevice = async (ev: CustomEvent<ISendToDeviceToWidgetActionRequest>): Promise<void> => {\n ev.preventDefault();\n\n const event = new MatrixEvent({\n type: ev.detail.data.type,\n sender: ev.detail.data.sender,\n content: ev.detail.data.content as IContent,\n });\n // Mark the event as encrypted if it was, using fake contents and keys since those are unknown to us\n if (ev.detail.data.encrypted) event.makeEncrypted(EventType.RoomMessageEncrypted, {}, \"\", \"\");\n\n this.emit(ClientEvent.ToDeviceEvent, event);\n this.setSyncState(SyncState.Syncing);\n await this.ack(ev);\n };\n\n private async watchTurnServers(): Promise<void> {\n const servers = this.widgetApi.getTurnServers();\n const onClientStopped = (): void => {\n servers.return(undefined);\n };\n this.lifecycle!.signal.addEventListener(\"abort\", onClientStopped);\n\n try {\n for await (const server of servers) {\n this.turnServers = [\n {\n urls: server.uris,\n username: server.username,\n credential: server.password,\n },\n ];\n this.emit(ClientEvent.TurnServers, this.turnServers);\n logger.log(`Received TURN server: ${server.uris}`);\n }\n } catch (e) {\n logger.warn(\"Error watching TURN servers\", e);\n } finally {\n this.lifecycle!.signal.removeEventListener(\"abort\", onClientStopped);\n }\n }\n}\n\nfunction processAndThrow(error: unknown): never {\n if (error instanceof WidgetApiResponseError && error.data.matrix_api_error) {\n throw MatrixError.fromWidgetApiErrorData(error.data.matrix_api_error);\n } else {\n throw error;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"embedded.js","names":["WidgetApiToWidgetAction","WidgetApiResponseError","MatrixCapabilities","MatrixEvent","logger","MatrixClient","ClientEvent","UNSTABLE_MSC4140_DELAYED_EVENTS","SyncApi","SyncState","SlidingSyncSdk","MatrixError","User","MapWithDefault","recursiveMapToObject","TypedEventEmitter","RoomWidgetClientEvent","RoomWidgetClient","constructor","widgetApi","capabilities","roomId","opts","sendContentLoaded","_this","_capabilities$sendEve","_capabilities$receive","_capabilities$sendSta","_capabilities$receive2","_capabilities$sendEve2","_capabilities$receive3","_capabilities$sendSta2","_capabilities$receive4","_capabilities$sendToD","_capabilities$receive5","_capabilities$sendEve3","_capabilities$sendSta3","this","_defineProperty","_ref","_asyncToGenerator","event","getSender","getUserId","pendingSendingEventsTxId","some","p","getType","type","_this$pendingSendingE","matchingTxId","find","id","getId","txId","length","_this$pendingSendingE2","Promise","resolve","eventEmitter","once","PendingEventsChanged","setTxnId","setUnsigned","_objectSpread","getUnsigned","transaction_id","filter","emit","_x","apply","arguments","_ref2","ev","preventDefault","detail","data","room_id","updateTxId","syncApi","injectRoomEvents","room","undefined","Event","setSyncState","Syncing","info","concat","getStateKey","event_id","eventId","ack","_x2","_ref3","sender","content","ToDeviceEvent","_x3","transportSend","transport","send","bind","_ref4","action","error","processAndThrow","_x4","_x5","transportSendComplete","sendComplete","_ref5","_x6","_x7","widgetApiReady","sendEvent","receiveEvent","sendMessage","Array","isArray","receiveMessage","sendState","receiveState","requestCapabilityForRoomTimeline","forEach","eventType","requestCapabilityToSendEvent","requestCapabilityToReceiveEvent","requestCapabilityToSendMessage","msgType","requestCapabilityToReceiveMessage","_ref6","stateKey","requestCapabilityToSendState","_ref7","requestCapabilityToReceiveState","sendToDevice","requestCapabilityToSendToDevice","receiveToDevice","requestCapabilityToReceiveToDevice","sendDelayedEvents","requestCapability","MSC4157SendDelayedEvent","updateDelayedEvents","MSC4157UpdateDelayedEvent","turnServers","MSC3846TurnServers","on","SendEvent","onEvent","SendToDevice","onToDevice","start","startClient","_arguments","_this2","_this2$capabilities$r","_this2$capabilities$r2","lifecycle","AbortController","userId","store","storeUser","slidingSync","buildSyncApiOptions","createRoom","storeRoom","all","map","_ref9","_ref8","rawEvents","readStateEvents","events","rawEvent","_x8","clientWellKnownPollPeriod","clientWellKnownIntervalID","setInterval","fetchClientWellKnown","stopClient","off","abort","joinRoom","roomIdOrAlias","_this3","Error","sendStateEvent","_arguments2","_this4","response","_unstable_sendDelayedStateEvent","delayOpts","_arguments3","_this5","doesServerSupportUnstableFeature","delay","parent_delay_id","validateSendDelayedEventResponse","delay_id","_unstable_updateDelayedEvent","delayId","_this6","updateDelayedEvent","contentMap","_this7","getOpenIdToken","_this8","token","requestOpenIDConnectToken","access_token","expires_in","matrix_server_name","token_type","queueToDevice","_ref10","_this9","batch","Map","deviceId","payload","getOrCreate","set","getSyncState","syncState","state","oldState","Sync","_this10","reply","matrix_api_error","fromWidgetApiErrorData"],"sources":["../src/embedded.ts"],"sourcesContent":["/*\nCopyright 2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n WidgetApi,\n WidgetApiToWidgetAction,\n WidgetApiResponseError,\n MatrixCapabilities,\n IWidgetApiRequest,\n IWidgetApiAcknowledgeResponseData,\n ISendEventToWidgetActionRequest,\n ISendToDeviceToWidgetActionRequest,\n ISendEventFromWidgetResponseData,\n IWidgetApiRequestData,\n WidgetApiAction,\n IWidgetApiResponse,\n IWidgetApiResponseData,\n} from \"matrix-widget-api\";\n\nimport { MatrixEvent, IEvent, IContent } from \"./models/event.ts\";\nimport {\n ISendEventResponse,\n SendDelayedEventRequestOpts,\n SendDelayedEventResponse,\n UpdateDelayedEventAction,\n} from \"./@types/requests.ts\";\nimport { StateEvents } from \"./@types/event.ts\";\nimport { logger } from \"./logger.ts\";\nimport {\n MatrixClient,\n ClientEvent,\n IMatrixClientCreateOpts,\n IStartClientOpts,\n SendToDeviceContentMap,\n IOpenIDToken,\n UNSTABLE_MSC4140_DELAYED_EVENTS,\n} from \"./client.ts\";\nimport { SyncApi, SyncState } from \"./sync.ts\";\nimport { SlidingSyncSdk } from \"./sliding-sync-sdk.ts\";\nimport { MatrixError } from \"./http-api/errors.ts\";\nimport { User } from \"./models/user.ts\";\nimport { Room } from \"./models/room.ts\";\nimport { ToDeviceBatch, ToDevicePayload } from \"./models/ToDeviceMessage.ts\";\nimport { MapWithDefault, recursiveMapToObject } from \"./utils.ts\";\nimport { TypedEventEmitter } from \"./matrix.ts\";\n\ninterface IStateEventRequest {\n eventType: string;\n stateKey?: string;\n}\n\nexport interface ICapabilities {\n /**\n * Event types that this client expects to send.\n */\n sendEvent?: string[];\n /**\n * Event types that this client expects to receive.\n */\n receiveEvent?: string[];\n\n /**\n * Message types that this client expects to send, or true for all message\n * types.\n */\n sendMessage?: string[] | true;\n /**\n * Message types that this client expects to receive, or true for all\n * message types.\n */\n receiveMessage?: string[] | true;\n\n /**\n * Types of state events that this client expects to send.\n */\n sendState?: IStateEventRequest[];\n /**\n * Types of state events that this client expects to receive.\n */\n receiveState?: IStateEventRequest[];\n\n /**\n * To-device event types that this client expects to send.\n */\n sendToDevice?: string[];\n /**\n * To-device event types that this client expects to receive.\n */\n receiveToDevice?: string[];\n\n /**\n * Whether this client needs access to TURN servers.\n * @defaultValue false\n */\n turnServers?: boolean;\n\n /**\n * Whether this client needs to be able to send delayed events.\n * @experimental Part of MSC4140 & MSC4157\n * @defaultValue false\n */\n sendDelayedEvents?: boolean;\n\n /**\n * Whether this client needs to be able to update delayed events.\n * @experimental Part of MSC4140 & MSC4157\n * @defaultValue false\n */\n updateDelayedEvents?: boolean;\n}\n\nexport enum RoomWidgetClientEvent {\n PendingEventsChanged = \"PendingEvent.pendingEventsChanged\",\n}\nexport type EventHandlerMap = { [RoomWidgetClientEvent.PendingEventsChanged]: () => void };\n/**\n * A MatrixClient that routes its requests through the widget API instead of the\n * real CS API.\n * @experimental This class is considered unstable!\n */\nexport class RoomWidgetClient extends MatrixClient {\n private room?: Room;\n private readonly widgetApiReady: Promise<void>;\n private lifecycle?: AbortController;\n private syncState: SyncState | null = null;\n\n private pendingSendingEventsTxId: { type: string; id: string | undefined; txId: string }[] = [];\n private eventEmitter = new TypedEventEmitter<keyof EventHandlerMap, EventHandlerMap>();\n\n /**\n *\n * @param widgetApi - The widget api to use for communication.\n * @param capabilities - The capabilities the widget client will request.\n * @param roomId - The room id the widget is associated with.\n * @param opts - The configuration options for this client.\n * @param sendContentLoaded - Whether to send a content loaded widget action immediately after initial setup.\n * Set to `false` if the widget uses `waitForIFrameLoad=true` (in this case the client does not expect a content loaded action at all),\n * or if the the widget wants to send the `ContentLoaded` action at a later point in time after the initial setup.\n */\n public constructor(\n private readonly widgetApi: WidgetApi,\n private readonly capabilities: ICapabilities,\n private readonly roomId: string,\n opts: IMatrixClientCreateOpts,\n sendContentLoaded: boolean,\n ) {\n super(opts);\n\n const transportSend = this.widgetApi.transport.send.bind(this.widgetApi.transport);\n this.widgetApi.transport.send = async <\n T extends IWidgetApiRequestData,\n R extends IWidgetApiResponseData = IWidgetApiAcknowledgeResponseData,\n >(\n action: WidgetApiAction,\n data: T,\n ): Promise<R> => {\n try {\n return await transportSend(action, data);\n } catch (error) {\n processAndThrow(error);\n }\n };\n\n const transportSendComplete = this.widgetApi.transport.sendComplete.bind(this.widgetApi.transport);\n this.widgetApi.transport.sendComplete = async <T extends IWidgetApiRequestData, R extends IWidgetApiResponse>(\n action: WidgetApiAction,\n data: T,\n ): Promise<R> => {\n try {\n return await transportSendComplete(action, data);\n } catch (error) {\n processAndThrow(error);\n }\n };\n\n this.widgetApiReady = new Promise<void>((resolve) => this.widgetApi.once(\"ready\", resolve));\n\n // Request capabilities for the functionality this client needs to support\n if (\n capabilities.sendEvent?.length ||\n capabilities.receiveEvent?.length ||\n capabilities.sendMessage === true ||\n (Array.isArray(capabilities.sendMessage) && capabilities.sendMessage.length) ||\n capabilities.receiveMessage === true ||\n (Array.isArray(capabilities.receiveMessage) && capabilities.receiveMessage.length) ||\n capabilities.sendState?.length ||\n capabilities.receiveState?.length\n ) {\n widgetApi.requestCapabilityForRoomTimeline(roomId);\n }\n capabilities.sendEvent?.forEach((eventType) => widgetApi.requestCapabilityToSendEvent(eventType));\n capabilities.receiveEvent?.forEach((eventType) => widgetApi.requestCapabilityToReceiveEvent(eventType));\n if (capabilities.sendMessage === true) {\n widgetApi.requestCapabilityToSendMessage();\n } else if (Array.isArray(capabilities.sendMessage)) {\n capabilities.sendMessage.forEach((msgType) => widgetApi.requestCapabilityToSendMessage(msgType));\n }\n if (capabilities.receiveMessage === true) {\n widgetApi.requestCapabilityToReceiveMessage();\n } else if (Array.isArray(capabilities.receiveMessage)) {\n capabilities.receiveMessage.forEach((msgType) => widgetApi.requestCapabilityToReceiveMessage(msgType));\n }\n capabilities.sendState?.forEach(({ eventType, stateKey }) =>\n widgetApi.requestCapabilityToSendState(eventType, stateKey),\n );\n capabilities.receiveState?.forEach(({ eventType, stateKey }) =>\n widgetApi.requestCapabilityToReceiveState(eventType, stateKey),\n );\n capabilities.sendToDevice?.forEach((eventType) => widgetApi.requestCapabilityToSendToDevice(eventType));\n capabilities.receiveToDevice?.forEach((eventType) => widgetApi.requestCapabilityToReceiveToDevice(eventType));\n if (\n capabilities.sendDelayedEvents &&\n (capabilities.sendEvent?.length ||\n capabilities.sendMessage === true ||\n (Array.isArray(capabilities.sendMessage) && capabilities.sendMessage.length) ||\n capabilities.sendState?.length)\n ) {\n widgetApi.requestCapability(MatrixCapabilities.MSC4157SendDelayedEvent);\n }\n if (capabilities.updateDelayedEvents) {\n widgetApi.requestCapability(MatrixCapabilities.MSC4157UpdateDelayedEvent);\n }\n if (capabilities.turnServers) {\n widgetApi.requestCapability(MatrixCapabilities.MSC3846TurnServers);\n }\n\n widgetApi.on(`action:${WidgetApiToWidgetAction.SendEvent}`, this.onEvent);\n widgetApi.on(`action:${WidgetApiToWidgetAction.SendToDevice}`, this.onToDevice);\n\n // Open communication with the host\n widgetApi.start();\n // Send a content loaded event now we've started the widget API\n // Note that element-web currently does not use waitForIFrameLoad=false and so\n // does *not* (yes, that is the right way around) wait for this event. Let's\n // start sending this, then once this has rolled out, we can change element-web to\n // use waitForIFrameLoad=false and have a widget API that's less racy.\n if (sendContentLoaded) widgetApi.sendContentLoaded();\n }\n\n public async startClient(opts: IStartClientOpts = {}): Promise<void> {\n this.lifecycle = new AbortController();\n\n // Create our own user object artificially (instead of waiting for sync)\n // so it's always available, even if the user is not in any rooms etc.\n const userId = this.getUserId();\n if (userId) {\n this.store.storeUser(new User(userId));\n }\n\n // Even though we have no access token and cannot sync, the sync class\n // still has some valuable helper methods that we make use of, so we\n // instantiate it anyways\n if (opts.slidingSync) {\n this.syncApi = new SlidingSyncSdk(opts.slidingSync, this, opts);\n } else {\n this.syncApi = new SyncApi(this, opts, this.buildSyncApiOptions());\n }\n\n this.room = this.syncApi.createRoom(this.roomId);\n this.store.storeRoom(this.room);\n\n await this.widgetApiReady;\n\n // Backfill the requested events\n // We only get the most recent event for every type + state key combo,\n // so it doesn't really matter what order we inject them in\n await Promise.all(\n this.capabilities.receiveState?.map(async ({ eventType, stateKey }) => {\n const rawEvents = await this.widgetApi.readStateEvents(eventType, undefined, stateKey, [this.roomId]);\n const events = rawEvents.map((rawEvent) => new MatrixEvent(rawEvent as Partial<IEvent>));\n\n if (this.syncApi instanceof SyncApi) {\n // Passing undefined for `stateAfterEventList` allows will make `injectRoomEvents` run in legacy mode\n // -> state events in `timelineEventList` will update the state.\n await this.syncApi.injectRoomEvents(this.room!, undefined, events);\n } else {\n await this.syncApi!.injectRoomEvents(this.room!, events); // Sliding Sync\n }\n events.forEach((event) => {\n this.emit(ClientEvent.Event, event);\n logger.info(`Backfilled event ${event.getId()} ${event.getType()} ${event.getStateKey()}`);\n });\n }) ?? [],\n );\n\n if (opts.clientWellKnownPollPeriod !== undefined) {\n this.clientWellKnownIntervalID = setInterval(() => {\n this.fetchClientWellKnown();\n }, 1000 * opts.clientWellKnownPollPeriod);\n this.fetchClientWellKnown();\n }\n\n this.setSyncState(SyncState.Syncing);\n logger.info(\"Finished backfilling events\");\n }\n\n public stopClient(): void {\n this.widgetApi.off(`action:${WidgetApiToWidgetAction.SendEvent}`, this.onEvent);\n this.widgetApi.off(`action:${WidgetApiToWidgetAction.SendToDevice}`, this.onToDevice);\n\n super.stopClient();\n this.lifecycle!.abort(); // Signal to other async tasks that the client has stopped\n }\n\n public async joinRoom(roomIdOrAlias: string): Promise<Room> {\n if (roomIdOrAlias === this.roomId) return this.room!;\n throw new Error(`Unknown room: ${roomIdOrAlias}`);\n }\n\n public async sendStateEvent(\n roomId: string,\n eventType: string,\n content: any,\n stateKey = \"\",\n ): Promise<ISendEventResponse> {\n const response = await this.widgetApi.sendStateEvent(eventType, stateKey, content, roomId);\n if (response.event_id === undefined) {\n throw new Error(\"'event_id' absent from response to an event request\");\n }\n return { event_id: response.event_id };\n }\n\n /**\n * @experimental This currently relies on an unstable MSC (MSC4140).\n */\n // eslint-disable-next-line\n public async _unstable_sendDelayedStateEvent<K extends keyof StateEvents>(\n roomId: string,\n delayOpts: SendDelayedEventRequestOpts,\n eventType: K,\n content: StateEvents[K],\n stateKey = \"\",\n ): Promise<SendDelayedEventResponse> {\n if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {\n throw Error(\"Server does not support the delayed events API\");\n }\n\n const response = await this.widgetApi.sendStateEvent(\n eventType,\n stateKey,\n content,\n roomId,\n \"delay\" in delayOpts ? delayOpts.delay : undefined,\n \"parent_delay_id\" in delayOpts ? delayOpts.parent_delay_id : undefined,\n );\n return this.validateSendDelayedEventResponse(response);\n }\n\n private validateSendDelayedEventResponse(response: ISendEventFromWidgetResponseData): SendDelayedEventResponse {\n if (response.delay_id === undefined) {\n throw new Error(\"'delay_id' absent from response to a delayed event request\");\n }\n return { delay_id: response.delay_id };\n }\n\n /**\n * @experimental This currently relies on an unstable MSC (MSC4140).\n */\n // eslint-disable-next-line\n public async _unstable_updateDelayedEvent(delayId: string, action: UpdateDelayedEventAction): Promise<{}> {\n if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {\n throw Error(\"Server does not support the delayed events API\");\n }\n\n return await this.widgetApi.updateDelayedEvent(delayId, action);\n }\n\n public async sendToDevice(eventType: string, contentMap: SendToDeviceContentMap): Promise<{}> {\n await this.widgetApi.sendToDevice(eventType, false, recursiveMapToObject(contentMap));\n return {};\n }\n\n public async getOpenIdToken(): Promise<IOpenIDToken> {\n const token = await this.widgetApi.requestOpenIDConnectToken();\n // the IOpenIDCredentials from the widget-api and IOpenIDToken form the matrix-js-sdk are compatible.\n // we still recreate the token to make this transparent and catch'able by the linter in case the types change in the future.\n return <IOpenIDToken>{\n access_token: token.access_token,\n expires_in: token.expires_in,\n matrix_server_name: token.matrix_server_name,\n token_type: token.token_type,\n };\n }\n\n public async queueToDevice({ eventType, batch }: ToDeviceBatch): Promise<void> {\n // map: user Id → device Id → payload\n const contentMap: MapWithDefault<string, Map<string, ToDevicePayload>> = new MapWithDefault(() => new Map());\n for (const { userId, deviceId, payload } of batch) {\n contentMap.getOrCreate(userId).set(deviceId, payload);\n }\n\n await this.widgetApi.sendToDevice(eventType, false, recursiveMapToObject(contentMap));\n }\n\n // Overridden since we 'sync' manually without the sync API\n public getSyncState(): SyncState | null {\n return this.syncState;\n }\n\n private setSyncState(state: SyncState): void {\n const oldState = this.syncState;\n this.syncState = state;\n this.emit(ClientEvent.Sync, state, oldState);\n }\n\n private async ack(ev: CustomEvent<IWidgetApiRequest>): Promise<void> {\n await this.widgetApi.transport.reply<IWidgetApiAcknowledgeResponseData>(ev.detail, {});\n }\n\n private updateTxId = async (event: MatrixEvent): Promise<void> => {\n // We update the txId for remote echos that originate from this client.\n // This happens with the help of `pendingSendingEventsTxId` where we store all events that are currently sending\n // with their widget txId and once ready the final evId.\n if (\n // This could theoretically be an event send by this device\n // In that case we need to update the txId of the event because the embedded client/widget\n // knows this event with a different transaction Id than what was used by the host client.\n event.getSender() === this.getUserId() &&\n // We optimize by not blocking events from types that we have not send\n // with this client.\n this.pendingSendingEventsTxId.some((p) => event.getType() === p.type)\n ) {\n // Compare by event Id if we have a matching pending event where we know the txId.\n let matchingTxId = this.pendingSendingEventsTxId.find((p) => p.id === event.getId())?.txId;\n // Block any further processing of this event until we have received the sending response.\n // -> until we know the event id.\n // -> until we have not pending events anymore.\n while (!matchingTxId && this.pendingSendingEventsTxId.length > 0) {\n // Recheck whenever the PendingEventsChanged\n await new Promise<void>((resolve) =>\n this.eventEmitter.once(RoomWidgetClientEvent.PendingEventsChanged, () => resolve()),\n );\n matchingTxId = this.pendingSendingEventsTxId.find((p) => p.id === event.getId())?.txId;\n }\n\n // We found the correct txId: we update the event and delete the entry of the pending events.\n if (matchingTxId) {\n event.setTxnId(matchingTxId);\n event.setUnsigned({ ...event.getUnsigned(), transaction_id: matchingTxId });\n }\n this.pendingSendingEventsTxId = this.pendingSendingEventsTxId.filter((p) => p.id !== event.getId());\n\n // Emit once there are no pending events anymore to release all other events that got\n // awaited in the `while (!matchingTxId && this.pendingSendingEventsTxId.length > 0)` loop\n // but are not send by this client.\n if (this.pendingSendingEventsTxId.length === 0) {\n this.eventEmitter.emit(RoomWidgetClientEvent.PendingEventsChanged);\n }\n }\n };\n\n private onEvent = async (ev: CustomEvent<ISendEventToWidgetActionRequest>): Promise<void> => {\n ev.preventDefault();\n\n // Verify the room ID matches, since it's possible for the client to\n // send us events from other rooms if this widget is always on screen\n if (ev.detail.data.room_id === this.roomId) {\n const event = new MatrixEvent(ev.detail.data as Partial<IEvent>);\n\n // Only inject once we have update the txId\n await this.updateTxId(event);\n \n // The widget API does not tell us whether a state event came from `state_after` or not so we assume legacy behaviour for now.\n if (this.syncApi instanceof SyncApi) {\n // The code will want to be something like:\n // ```\n // if (!params.addToTimeline && !params.addToState) {\n // // Passing undefined for `stateAfterEventList` makes `injectRoomEvents` run in \"legacy mode\"\n // // -> state events part of the `timelineEventList` parameter will update the state.\n // this.injectRoomEvents(this.room!, [], undefined, [event]);\n // } else {\n // this.injectRoomEvents(this.room!, undefined, params.addToState ? [event] : [], params.addToTimeline ? [event] : []);\n // }\n // ```\n\n // Passing undefined for `stateAfterEventList` allows will make `injectRoomEvents` run in legacy mode\n // -> state events in `timelineEventList` will update the state.\n await this.syncApi.injectRoomEvents(this.room!, [], undefined, [event]);\n } else {\n // The code will want to be something like:\n // ```\n // if (!params.addToTimeline && !params.addToState) {\n // this.injectRoomEvents(this.room!, [], [event]);\n // } else {\n // this.injectRoomEvents(this.room!, params.addToState ? [event] : [], params.addToTimeline ? [event] : []);\n // }\n // ```\n await this.syncApi!.injectRoomEvents(this.room!, [], [event]); // Sliding Sync\n }\n this.emit(ClientEvent.Event, event);\n this.setSyncState(SyncState.Syncing);\n logger.info(`Received event ${event.getId()} ${event.getType()} ${event.getStateKey()}`);\n } else {\n const { event_id: eventId, room_id: roomId } = ev.detail.data;\n logger.info(`Received event ${eventId} for a different room ${roomId}; discarding`);\n }\n\n await this.ack(ev);\n };\n\n private onToDevice = async (ev: CustomEvent<ISendToDeviceToWidgetActionRequest>): Promise<void> => {\n ev.preventDefault();\n\n const event = new MatrixEvent({\n type: ev.detail.data.type,\n sender: ev.detail.data.sender,\n content: ev.detail.data.content as IContent,\n });\n\n this.emit(ClientEvent.ToDeviceEvent, event);\n this.setSyncState(SyncState.Syncing);\n await this.ack(ev);\n };\n}\n\nfunction processAndThrow(error: unknown): never {\n if (error instanceof WidgetApiResponseError && error.data.matrix_api_error) {\n throw MatrixError.fromWidgetApiErrorData(error.data.matrix_api_error);\n } else {\n throw error;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../src/event-mapper.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAG1E,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC;AAEhE,MAAM,WAAW,UAAU;IAEvB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,GAAG,WAAW,CAiErF"}
1
+ {"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../src/event-mapper.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAG1E,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,WAAW,CAAC;AAEhE,MAAM,WAAW,UAAU;IAEvB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,GAAG,WAAW,CA6DrF"}
@@ -21,7 +21,6 @@ import { MatrixEvent, MatrixEventEvent } from "./models/event.js";
21
21
  import { RelationType } from "./@types/event.js";
22
22
  export function eventMapperFor(client, options) {
23
23
  var preventReEmit = Boolean(options.preventReEmit);
24
- var decrypt = options.decrypt !== false;
25
24
  function mapper(plainOldJsObject) {
26
25
  if (options.toDevice) {
27
26
  delete plainOldJsObject.room_id;
@@ -66,9 +65,6 @@ export function eventMapperFor(client, options) {
66
65
  if (!preventReEmit) {
67
66
  client.reEmitter.reEmit(event, [MatrixEventEvent.Decrypted]);
68
67
  }
69
- if (decrypt) {
70
- client.decryptEventIfNeeded(event);
71
- }
72
68
  }
73
69
  if (!preventReEmit) {
74
70
  client.reEmitter.reEmit(event, [MatrixEventEvent.Replaced, MatrixEventEvent.VisibilityChange]);
@@ -1 +1 @@
1
- {"version":3,"file":"event-mapper.js","names":["MatrixEvent","MatrixEventEvent","RelationType","eventMapperFor","client","options","preventReEmit","Boolean","decrypt","mapper","plainOldJsObject","toDevice","room_id","room","getRoom","event","state_key","undefined","findEventById","event_id","status","setUnsigned","_objectSpread","getUnsigned","unsigned","bundledEdit","getServerAggregatedRelation","Replace","content","replacement","makeReplaced","thread","findThreadForEvent","setThread","isEncrypted","reEmitter","reEmit","Decrypted","decryptEventIfNeeded","Replaced","VisibilityChange","BeforeRedaction"],"sources":["../src/event-mapper.ts"],"sourcesContent":["/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { MatrixClient } from \"./client.ts\";\nimport { IEvent, MatrixEvent, MatrixEventEvent } from \"./models/event.ts\";\nimport { RelationType } from \"./@types/event.ts\";\n\nexport type EventMapper = (obj: Partial<IEvent>) => MatrixEvent;\n\nexport interface MapperOpts {\n // don't re-emit events emitted on an event mapped by this mapper on the client\n preventReEmit?: boolean;\n // decrypt event proactively\n decrypt?: boolean;\n // the event is a to_device event\n toDevice?: boolean;\n}\n\nexport function eventMapperFor(client: MatrixClient, options: MapperOpts): EventMapper {\n let preventReEmit = Boolean(options.preventReEmit);\n const decrypt = options.decrypt !== false;\n\n function mapper(plainOldJsObject: Partial<IEvent>): MatrixEvent {\n if (options.toDevice) {\n delete plainOldJsObject.room_id;\n }\n\n const room = client.getRoom(plainOldJsObject.room_id);\n\n let event: MatrixEvent | undefined;\n // If the event is already known to the room, let's re-use the model rather than duplicating.\n // We avoid doing this to state events as they may be forward or backwards looking which tweaks behaviour.\n if (room && plainOldJsObject.state_key === undefined) {\n event = room.findEventById(plainOldJsObject.event_id!);\n }\n\n if (!event || event.status) {\n event = new MatrixEvent(plainOldJsObject);\n } else {\n // merge the latest unsigned data from the server\n event.setUnsigned({ ...event.getUnsigned(), ...plainOldJsObject.unsigned });\n // prevent doubling up re-emitters\n preventReEmit = true;\n }\n\n // if there is a complete edit bundled alongside the event, perform the replacement.\n // (prior to MSC3925, events were automatically replaced on the server-side. MSC3925 proposes that that doesn't\n // happen automatically but the server does provide us with the whole content of the edit event.)\n const bundledEdit = event.getServerAggregatedRelation<Partial<IEvent>>(RelationType.Replace);\n if (bundledEdit?.content) {\n const replacement = mapper(bundledEdit);\n // XXX: it's worth noting that the spec says we should only respect encrypted edits if, once decrypted, the\n // replacement has a `m.new_content` property. The problem is that we haven't yet decrypted the replacement\n // (it should be happening in the background), so we can't enforce this. Possibly we should for decryption\n // to complete, but that sounds a bit racy. For now, we just assume it's ok.\n event.makeReplaced(replacement);\n }\n\n const thread = room?.findThreadForEvent(event);\n if (thread) {\n event.setThread(thread);\n }\n\n // TODO: once we get rid of the old libolm-backed crypto, we can restrict this to room events (rather than\n // to-device events), because the rust implementation decrypts to-device messages at a higher level.\n // Generally we probably want to use a different eventMapper implementation for to-device events because\n if (event.isEncrypted()) {\n if (!preventReEmit) {\n client.reEmitter.reEmit(event, [MatrixEventEvent.Decrypted]);\n }\n if (decrypt) {\n client.decryptEventIfNeeded(event);\n }\n }\n\n if (!preventReEmit) {\n client.reEmitter.reEmit(event, [MatrixEventEvent.Replaced, MatrixEventEvent.VisibilityChange]);\n room?.reEmitter.reEmit(event, [MatrixEventEvent.BeforeRedaction]);\n }\n return event;\n }\n\n return mapper;\n}\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAAiBA,WAAW,EAAEC,gBAAgB,QAAQ,mBAAmB;AACzE,SAASC,YAAY,QAAQ,mBAAmB;AAahD,OAAO,SAASC,cAAcA,CAACC,MAAoB,EAAEC,OAAmB,EAAe;EACnF,IAAIC,aAAa,GAAGC,OAAO,CAACF,OAAO,CAACC,aAAa,CAAC;EAClD,IAAME,OAAO,GAAGH,OAAO,CAACG,OAAO,KAAK,KAAK;EAEzC,SAASC,MAAMA,CAACC,gBAAiC,EAAe;IAC5D,IAAIL,OAAO,CAACM,QAAQ,EAAE;MAClB,OAAOD,gBAAgB,CAACE,OAAO;IACnC;IAEA,IAAMC,IAAI,GAAGT,MAAM,CAACU,OAAO,CAACJ,gBAAgB,CAACE,OAAO,CAAC;IAErD,IAAIG,KAA8B;IAClC;IACA;IACA,IAAIF,IAAI,IAAIH,gBAAgB,CAACM,SAAS,KAAKC,SAAS,EAAE;MAClDF,KAAK,GAAGF,IAAI,CAACK,aAAa,CAACR,gBAAgB,CAACS,QAAS,CAAC;IAC1D;IAEA,IAAI,CAACJ,KAAK,IAAIA,KAAK,CAACK,MAAM,EAAE;MACxBL,KAAK,GAAG,IAAIf,WAAW,CAACU,gBAAgB,CAAC;IAC7C,CAAC,MAAM;MACH;MACAK,KAAK,CAACM,WAAW,CAAAC,aAAA,CAAAA,aAAA,KAAMP,KAAK,CAACQ,WAAW,CAAC,CAAC,GAAKb,gBAAgB,CAACc,QAAQ,CAAE,CAAC;MAC3E;MACAlB,aAAa,GAAG,IAAI;IACxB;;IAEA;IACA;IACA;IACA,IAAMmB,WAAW,GAAGV,KAAK,CAACW,2BAA2B,CAAkBxB,YAAY,CAACyB,OAAO,CAAC;IAC5F,IAAIF,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEG,OAAO,EAAE;MACtB,IAAMC,WAAW,GAAGpB,MAAM,CAACgB,WAAW,CAAC;MACvC;MACA;MACA;MACA;MACAV,KAAK,CAACe,YAAY,CAACD,WAAW,CAAC;IACnC;IAEA,IAAME,MAAM,GAAGlB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEmB,kBAAkB,CAACjB,KAAK,CAAC;IAC9C,IAAIgB,MAAM,EAAE;MACRhB,KAAK,CAACkB,SAAS,CAACF,MAAM,CAAC;IAC3B;;IAEA;IACA;IACA;IACA,IAAIhB,KAAK,CAACmB,WAAW,CAAC,CAAC,EAAE;MACrB,IAAI,CAAC5B,aAAa,EAAE;QAChBF,MAAM,CAAC+B,SAAS,CAACC,MAAM,CAACrB,KAAK,EAAE,CAACd,gBAAgB,CAACoC,SAAS,CAAC,CAAC;MAChE;MACA,IAAI7B,OAAO,EAAE;QACTJ,MAAM,CAACkC,oBAAoB,CAACvB,KAAK,CAAC;MACtC;IACJ;IAEA,IAAI,CAACT,aAAa,EAAE;MAChBF,MAAM,CAAC+B,SAAS,CAACC,MAAM,CAACrB,KAAK,EAAE,CAACd,gBAAgB,CAACsC,QAAQ,EAAEtC,gBAAgB,CAACuC,gBAAgB,CAAC,CAAC;MAC9F3B,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEsB,SAAS,CAACC,MAAM,CAACrB,KAAK,EAAE,CAACd,gBAAgB,CAACwC,eAAe,CAAC,CAAC;IACrE;IACA,OAAO1B,KAAK;EAChB;EAEA,OAAON,MAAM;AACjB","ignoreList":[]}
1
+ {"version":3,"file":"event-mapper.js","names":["MatrixEvent","MatrixEventEvent","RelationType","eventMapperFor","client","options","preventReEmit","Boolean","mapper","plainOldJsObject","toDevice","room_id","room","getRoom","event","state_key","undefined","findEventById","event_id","status","setUnsigned","_objectSpread","getUnsigned","unsigned","bundledEdit","getServerAggregatedRelation","Replace","content","replacement","makeReplaced","thread","findThreadForEvent","setThread","isEncrypted","reEmitter","reEmit","Decrypted","Replaced","VisibilityChange","BeforeRedaction"],"sources":["../src/event-mapper.ts"],"sourcesContent":["/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { MatrixClient } from \"./client.ts\";\nimport { IEvent, MatrixEvent, MatrixEventEvent } from \"./models/event.ts\";\nimport { RelationType } from \"./@types/event.ts\";\n\nexport type EventMapper = (obj: Partial<IEvent>) => MatrixEvent;\n\nexport interface MapperOpts {\n // don't re-emit events emitted on an event mapped by this mapper on the client\n preventReEmit?: boolean;\n // decrypt event proactively\n decrypt?: boolean;\n // the event is a to_device event\n toDevice?: boolean;\n}\n\nexport function eventMapperFor(client: MatrixClient, options: MapperOpts): EventMapper {\n let preventReEmit = Boolean(options.preventReEmit);\n\n function mapper(plainOldJsObject: Partial<IEvent>): MatrixEvent {\n if (options.toDevice) {\n delete plainOldJsObject.room_id;\n }\n\n const room = client.getRoom(plainOldJsObject.room_id);\n\n let event: MatrixEvent | undefined;\n // If the event is already known to the room, let's re-use the model rather than duplicating.\n // We avoid doing this to state events as they may be forward or backwards looking which tweaks behaviour.\n if (room && plainOldJsObject.state_key === undefined) {\n event = room.findEventById(plainOldJsObject.event_id!);\n }\n\n if (!event || event.status) {\n event = new MatrixEvent(plainOldJsObject);\n } else {\n // merge the latest unsigned data from the server\n event.setUnsigned({ ...event.getUnsigned(), ...plainOldJsObject.unsigned });\n // prevent doubling up re-emitters\n preventReEmit = true;\n }\n\n // if there is a complete edit bundled alongside the event, perform the replacement.\n // (prior to MSC3925, events were automatically replaced on the server-side. MSC3925 proposes that that doesn't\n // happen automatically but the server does provide us with the whole content of the edit event.)\n const bundledEdit = event.getServerAggregatedRelation<Partial<IEvent>>(RelationType.Replace);\n if (bundledEdit?.content) {\n const replacement = mapper(bundledEdit);\n // XXX: it's worth noting that the spec says we should only respect encrypted edits if, once decrypted, the\n // replacement has a `m.new_content` property. The problem is that we haven't yet decrypted the replacement\n // (it should be happening in the background), so we can't enforce this. Possibly we should for decryption\n // to complete, but that sounds a bit racy. For now, we just assume it's ok.\n event.makeReplaced(replacement);\n }\n\n const thread = room?.findThreadForEvent(event);\n if (thread) {\n event.setThread(thread);\n }\n\n // TODO: once we get rid of the old libolm-backed crypto, we can restrict this to room events (rather than\n // to-device events), because the rust implementation decrypts to-device messages at a higher level.\n // Generally we probably want to use a different eventMapper implementation for to-device events because\n if (event.isEncrypted()) {\n if (!preventReEmit) {\n client.reEmitter.reEmit(event, [MatrixEventEvent.Decrypted]);\n }\n }\n\n if (!preventReEmit) {\n client.reEmitter.reEmit(event, [MatrixEventEvent.Replaced, MatrixEventEvent.VisibilityChange]);\n room?.reEmitter.reEmit(event, [MatrixEventEvent.BeforeRedaction]);\n }\n return event;\n }\n\n return mapper;\n}\n"],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAAiBA,WAAW,EAAEC,gBAAgB,QAAQ,mBAAmB;AACzE,SAASC,YAAY,QAAQ,mBAAmB;AAahD,OAAO,SAASC,cAAcA,CAACC,MAAoB,EAAEC,OAAmB,EAAe;EACnF,IAAIC,aAAa,GAAGC,OAAO,CAACF,OAAO,CAACC,aAAa,CAAC;EAElD,SAASE,MAAMA,CAACC,gBAAiC,EAAe;IAC5D,IAAIJ,OAAO,CAACK,QAAQ,EAAE;MAClB,OAAOD,gBAAgB,CAACE,OAAO;IACnC;IAEA,IAAMC,IAAI,GAAGR,MAAM,CAACS,OAAO,CAACJ,gBAAgB,CAACE,OAAO,CAAC;IAErD,IAAIG,KAA8B;IAClC;IACA;IACA,IAAIF,IAAI,IAAIH,gBAAgB,CAACM,SAAS,KAAKC,SAAS,EAAE;MAClDF,KAAK,GAAGF,IAAI,CAACK,aAAa,CAACR,gBAAgB,CAACS,QAAS,CAAC;IAC1D;IAEA,IAAI,CAACJ,KAAK,IAAIA,KAAK,CAACK,MAAM,EAAE;MACxBL,KAAK,GAAG,IAAId,WAAW,CAACS,gBAAgB,CAAC;IAC7C,CAAC,MAAM;MACH;MACAK,KAAK,CAACM,WAAW,CAAAC,aAAA,CAAAA,aAAA,KAAMP,KAAK,CAACQ,WAAW,CAAC,CAAC,GAAKb,gBAAgB,CAACc,QAAQ,CAAE,CAAC;MAC3E;MACAjB,aAAa,GAAG,IAAI;IACxB;;IAEA;IACA;IACA;IACA,IAAMkB,WAAW,GAAGV,KAAK,CAACW,2BAA2B,CAAkBvB,YAAY,CAACwB,OAAO,CAAC;IAC5F,IAAIF,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEG,OAAO,EAAE;MACtB,IAAMC,WAAW,GAAGpB,MAAM,CAACgB,WAAW,CAAC;MACvC;MACA;MACA;MACA;MACAV,KAAK,CAACe,YAAY,CAACD,WAAW,CAAC;IACnC;IAEA,IAAME,MAAM,GAAGlB,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEmB,kBAAkB,CAACjB,KAAK,CAAC;IAC9C,IAAIgB,MAAM,EAAE;MACRhB,KAAK,CAACkB,SAAS,CAACF,MAAM,CAAC;IAC3B;;IAEA;IACA;IACA;IACA,IAAIhB,KAAK,CAACmB,WAAW,CAAC,CAAC,EAAE;MACrB,IAAI,CAAC3B,aAAa,EAAE;QAChBF,MAAM,CAAC8B,SAAS,CAACC,MAAM,CAACrB,KAAK,EAAE,CAACb,gBAAgB,CAACmC,SAAS,CAAC,CAAC;MAChE;IACJ;IAEA,IAAI,CAAC9B,aAAa,EAAE;MAChBF,MAAM,CAAC8B,SAAS,CAACC,MAAM,CAACrB,KAAK,EAAE,CAACb,gBAAgB,CAACoC,QAAQ,EAAEpC,gBAAgB,CAACqC,gBAAgB,CAAC,CAAC;MAC9F1B,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEsB,SAAS,CAACC,MAAM,CAACrB,KAAK,EAAE,CAACb,gBAAgB,CAACsC,eAAe,CAAC,CAAC;IACrE;IACA,OAAOzB,KAAK;EAChB;EAEA,OAAON,MAAM;AACjB","ignoreList":[]}
package/lib/matrix.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import { WidgetApi } from "matrix-widget-api";
2
2
  import { MatrixClient, ICreateClientOpts } from "./client.ts";
3
3
  import { ICapabilities } from "./embedded.ts";
4
- import { CryptoStore } from "./crypto/store/base.ts";
5
4
  export * from "./client.ts";
6
5
  export * from "./serverCapabilities.ts";
7
6
  export * from "./embedded.ts";
@@ -31,10 +30,6 @@ export * from "./interactive-auth.ts";
31
30
  export * from "./service-types.ts";
32
31
  export * from "./store/memory.ts";
33
32
  export * from "./store/indexeddb.ts";
34
- export * from "./crypto/store/memory-crypto-store.ts";
35
- export * from "./crypto/store/localStorage-crypto-store.ts";
36
- export * from "./crypto/store/indexeddb-crypto-store.ts";
37
- export type { OutgoingRoomKeyRequest } from "./crypto/store/base.ts";
38
33
  export * from "./content-repo.ts";
39
34
  export type * from "./@types/common.ts";
40
35
  export type * from "./@types/uia.ts";
@@ -52,7 +47,6 @@ export * from "./@types/polls.ts";
52
47
  export type * from "./@types/local_notifications.ts";
53
48
  export type * from "./@types/registration.ts";
54
49
  export * from "./@types/read_receipts.ts";
55
- export type * from "./@types/crypto.ts";
56
50
  export * from "./@types/extensible_events.ts";
57
51
  export type * from "./@types/IIdentityServerProvider.ts";
58
52
  export * from "./@types/membership.ts";
@@ -60,20 +54,9 @@ export * from "./models/room-summary.ts";
60
54
  export * from "./models/event-status.ts";
61
55
  export type { RoomSummary } from "./client.ts";
62
56
  export * as ContentHelpers from "./content-helpers.ts";
63
- export * as SecretStorage from "./secret-storage.ts";
64
- export type { ICryptoCallbacks } from "./crypto/index.ts";
65
- export { createNewMatrixCall, CallEvent } from "./webrtc/call.ts";
66
- export type { MatrixCall } from "./webrtc/call.ts";
67
- export { GroupCall, GroupCallEvent, GroupCallIntent, GroupCallState, GroupCallType, GroupCallStatsReportEvent, } from "./webrtc/groupCall.ts";
68
- export {
69
- /** @deprecated Use {@link Crypto.CryptoEvent} instead */
70
- CryptoEvent, } from "./crypto/index.ts";
71
57
  export { SyncState, SetPresence } from "./sync.ts";
72
58
  export type { ISyncStateData as SyncStateData } from "./sync.ts";
73
59
  export { SlidingSyncEvent } from "./sliding-sync.ts";
74
- export { MediaHandlerEvent } from "./webrtc/mediaHandler.ts";
75
- export { CallFeedEvent } from "./webrtc/callFeed.ts";
76
- export { StatsReport } from "./webrtc/stats/statsReport.ts";
77
60
  export { Relations, RelationsEvent } from "./models/relations.ts";
78
61
  export { TypedEventEmitter } from "./models/typed-event-emitter.ts";
79
62
  export { LocalStorageErrors } from "./store/local-storage-events-emitter.ts";
@@ -81,14 +64,6 @@ export { IdentityProviderBrand, SSOAction } from "./@types/auth.ts";
81
64
  export type { ISSOFlow as SSOFlow, LoginFlow } from "./@types/auth.ts";
82
65
  export type { IHierarchyRelation as HierarchyRelation, IHierarchyRoom as HierarchyRoom } from "./@types/spaces.ts";
83
66
  export { LocationAssetType } from "./@types/location.ts";
84
- /** @deprecated Backwards-compatibility re-export. Import from `crypto-api` directly. */
85
- export * as Crypto from "./crypto-api/index.ts";
86
- /**
87
- * Configure a different factory to be used for creating crypto stores
88
- *
89
- * @param fac - a function which will return a new `CryptoStore`
90
- */
91
- export declare function setCryptoStoreFactory(fac: () => CryptoStore): void;
92
67
  /**
93
68
  * Construct a Matrix Client. Similar to {@link MatrixClient}
94
69
  * except that the 'request', 'store' and 'scheduler' dependencies are satisfied.
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../src/matrix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matrix.d.ts","sourceRoot":"","sources":["../src/matrix.ts"],"names":[],"mappings":"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"}
package/lib/matrix.js CHANGED
@@ -14,7 +14,6 @@ See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  */
16
16
 
17
- import { MemoryCryptoStore } from "./crypto/store/memory-crypto-store.js";
18
17
  import { MemoryStore } from "./store/memory.js";
19
18
  import { MatrixScheduler } from "./scheduler.js";
20
19
  import { MatrixClient } from "./client.js";
@@ -48,9 +47,6 @@ export * from "./interactive-auth.js";
48
47
  export * from "./service-types.js";
49
48
  export * from "./store/memory.js";
50
49
  export * from "./store/indexeddb.js";
51
- export * from "./crypto/store/memory-crypto-store.js";
52
- export * from "./crypto/store/localStorage-crypto-store.js";
53
- export * from "./crypto/store/indexeddb-crypto-store.js";
54
50
  export * from "./content-repo.js";
55
51
  export * from "./@types/event.js";
56
52
  export * from "./@types/PushRules.js";
@@ -70,44 +66,19 @@ export * from "./models/room-summary.js";
70
66
  export * from "./models/event-status.js";
71
67
  import * as _ContentHelpers from "./content-helpers.js";
72
68
  export { _ContentHelpers as ContentHelpers };
73
- import * as _SecretStorage from "./secret-storage.js";
74
- export { _SecretStorage as SecretStorage };
75
- // used to be located here
76
- export { createNewMatrixCall, CallEvent } from "./webrtc/call.js";
77
- export { GroupCall, GroupCallEvent, GroupCallIntent, GroupCallState, GroupCallType, GroupCallStatsReportEvent } from "./webrtc/groupCall.js";
78
- export { /** @deprecated Use {@link Crypto.CryptoEvent} instead */
79
- CryptoEvent } from "./crypto/index.js";
80
69
  export { SyncState, SetPresence } from "./sync.js";
81
70
  export { SlidingSyncEvent } from "./sliding-sync.js";
82
- export { MediaHandlerEvent } from "./webrtc/mediaHandler.js";
83
- export { CallFeedEvent } from "./webrtc/callFeed.js";
84
- export { StatsReport } from "./webrtc/stats/statsReport.js";
85
71
  export { Relations, RelationsEvent } from "./models/relations.js";
86
72
  export { TypedEventEmitter } from "./models/typed-event-emitter.js";
87
73
  export { LocalStorageErrors } from "./store/local-storage-events-emitter.js";
88
74
  export { IdentityProviderBrand, SSOAction } from "./@types/auth.js";
89
75
  export { LocationAssetType } from "./@types/location.js";
90
-
91
- /** @deprecated Backwards-compatibility re-export. Import from `crypto-api` directly. */
92
- import * as _Crypto from "./crypto-api/index.js";
93
- export { _Crypto as Crypto };
94
- var cryptoStoreFactory = () => new MemoryCryptoStore();
95
-
96
- /**
97
- * Configure a different factory to be used for creating crypto stores
98
- *
99
- * @param fac - a function which will return a new `CryptoStore`
100
- */
101
- export function setCryptoStoreFactory(fac) {
102
- cryptoStoreFactory = fac;
103
- }
104
76
  function amendClientOpts(opts) {
105
- var _opts$store, _opts$scheduler, _opts$cryptoStore;
77
+ var _opts$store, _opts$scheduler;
106
78
  opts.store = (_opts$store = opts.store) !== null && _opts$store !== void 0 ? _opts$store : new MemoryStore({
107
79
  localStorage: globalThis.localStorage
108
80
  });
109
81
  opts.scheduler = (_opts$scheduler = opts.scheduler) !== null && _opts$scheduler !== void 0 ? _opts$scheduler : new MatrixScheduler();
110
- opts.cryptoStore = (_opts$cryptoStore = opts.cryptoStore) !== null && _opts$cryptoStore !== void 0 ? _opts$cryptoStore : cryptoStoreFactory();
111
82
  return opts;
112
83
  }
113
84
 
package/lib/matrix.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"matrix.js","names":["MemoryCryptoStore","MemoryStore","MatrixScheduler","MatrixClient","RoomWidgetClient","_ContentHelpers","ContentHelpers","_SecretStorage","SecretStorage","createNewMatrixCall","CallEvent","GroupCall","GroupCallEvent","GroupCallIntent","GroupCallState","GroupCallType","GroupCallStatsReportEvent","CryptoEvent","SyncState","SetPresence","SlidingSyncEvent","MediaHandlerEvent","CallFeedEvent","StatsReport","Relations","RelationsEvent","TypedEventEmitter","LocalStorageErrors","IdentityProviderBrand","SSOAction","LocationAssetType","_Crypto","Crypto","cryptoStoreFactory","setCryptoStoreFactory","fac","amendClientOpts","opts","_opts$store","_opts$scheduler","_opts$cryptoStore","store","localStorage","globalThis","scheduler","cryptoStore","createClient","createRoomWidgetClient","widgetApi","capabilities","roomId","sendContentLoaded","arguments","length","undefined"],"sources":["../src/matrix.ts"],"sourcesContent":["/*\nCopyright 2015-2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { WidgetApi } from \"matrix-widget-api\";\n\nimport { MemoryCryptoStore } from \"./crypto/store/memory-crypto-store.ts\";\nimport { MemoryStore } from \"./store/memory.ts\";\nimport { MatrixScheduler } from \"./scheduler.ts\";\nimport { MatrixClient, ICreateClientOpts } from \"./client.ts\";\nimport { RoomWidgetClient, ICapabilities } from \"./embedded.ts\";\nimport { CryptoStore } from \"./crypto/store/base.ts\";\n\nexport * from \"./client.ts\";\nexport * from \"./serverCapabilities.ts\";\nexport * from \"./embedded.ts\";\nexport * from \"./http-api/index.ts\";\nexport * from \"./autodiscovery.ts\";\nexport * from \"./sync-accumulator.ts\";\nexport * from \"./errors.ts\";\nexport * from \"./base64.ts\";\nexport * from \"./models/beacon.ts\";\nexport * from \"./models/event.ts\";\nexport * from \"./models/room.ts\";\nexport * from \"./models/event-timeline.ts\";\nexport * from \"./models/event-timeline-set.ts\";\nexport * from \"./models/poll.ts\";\nexport * from \"./models/room-member.ts\";\nexport * from \"./models/room-state.ts\";\nexport * from \"./models/thread.ts\";\nexport * from \"./models/typed-event-emitter.ts\";\nexport * from \"./models/user.ts\";\nexport * from \"./models/device.ts\";\nexport * from \"./models/search-result.ts\";\nexport * from \"./oidc/index.ts\";\nexport * from \"./scheduler.ts\";\nexport * from \"./filter.ts\";\nexport * from \"./timeline-window.ts\";\nexport * from \"./interactive-auth.ts\";\nexport * from \"./service-types.ts\";\nexport * from \"./store/memory.ts\";\nexport * from \"./store/indexeddb.ts\";\nexport * from \"./crypto/store/memory-crypto-store.ts\";\nexport * from \"./crypto/store/localStorage-crypto-store.ts\";\nexport * from \"./crypto/store/indexeddb-crypto-store.ts\";\nexport type { OutgoingRoomKeyRequest } from \"./crypto/store/base.ts\";\nexport * from \"./content-repo.ts\";\nexport type * from \"./@types/common.ts\";\nexport type * from \"./@types/uia.ts\";\nexport * from \"./@types/event.ts\";\nexport * from \"./@types/PushRules.ts\";\nexport * from \"./@types/partials.ts\";\nexport * from \"./@types/requests.ts\";\nexport * from \"./@types/search.ts\";\nexport * from \"./@types/beacon.ts\";\nexport * from \"./@types/topic.ts\";\nexport * from \"./@types/location.ts\";\nexport * from \"./@types/threepids.ts\";\nexport * from \"./@types/auth.ts\";\nexport * from \"./@types/polls.ts\";\nexport type * from \"./@types/local_notifications.ts\";\nexport type * from \"./@types/registration.ts\";\nexport * from \"./@types/read_receipts.ts\";\nexport type * from \"./@types/crypto.ts\";\nexport * from \"./@types/extensible_events.ts\";\nexport type * from \"./@types/IIdentityServerProvider.ts\";\nexport * from \"./@types/membership.ts\";\nexport * from \"./models/room-summary.ts\";\nexport * from \"./models/event-status.ts\";\nexport type { RoomSummary } from \"./client.ts\";\nexport * as ContentHelpers from \"./content-helpers.ts\";\nexport * as SecretStorage from \"./secret-storage.ts\";\nexport type { ICryptoCallbacks } from \"./crypto/index.ts\"; // used to be located here\nexport { createNewMatrixCall, CallEvent } from \"./webrtc/call.ts\";\nexport type { MatrixCall } from \"./webrtc/call.ts\";\nexport {\n GroupCall,\n GroupCallEvent,\n GroupCallIntent,\n GroupCallState,\n GroupCallType,\n GroupCallStatsReportEvent,\n} from \"./webrtc/groupCall.ts\";\n\nexport {\n /** @deprecated Use {@link Crypto.CryptoEvent} instead */\n CryptoEvent,\n} from \"./crypto/index.ts\";\nexport { SyncState, SetPresence } from \"./sync.ts\";\nexport type { ISyncStateData as SyncStateData } from \"./sync.ts\";\nexport { SlidingSyncEvent } from \"./sliding-sync.ts\";\nexport { MediaHandlerEvent } from \"./webrtc/mediaHandler.ts\";\nexport { CallFeedEvent } from \"./webrtc/callFeed.ts\";\nexport { StatsReport } from \"./webrtc/stats/statsReport.ts\";\nexport { Relations, RelationsEvent } from \"./models/relations.ts\";\nexport { TypedEventEmitter } from \"./models/typed-event-emitter.ts\";\nexport { LocalStorageErrors } from \"./store/local-storage-events-emitter.ts\";\nexport { IdentityProviderBrand, SSOAction } from \"./@types/auth.ts\";\nexport type { ISSOFlow as SSOFlow, LoginFlow } from \"./@types/auth.ts\";\nexport type { IHierarchyRelation as HierarchyRelation, IHierarchyRoom as HierarchyRoom } from \"./@types/spaces.ts\";\nexport { LocationAssetType } from \"./@types/location.ts\";\n\n/** @deprecated Backwards-compatibility re-export. Import from `crypto-api` directly. */\nexport * as Crypto from \"./crypto-api/index.ts\";\n\nlet cryptoStoreFactory = (): CryptoStore => new MemoryCryptoStore();\n\n/**\n * Configure a different factory to be used for creating crypto stores\n *\n * @param fac - a function which will return a new `CryptoStore`\n */\nexport function setCryptoStoreFactory(fac: () => CryptoStore): void {\n cryptoStoreFactory = fac;\n}\n\nfunction amendClientOpts(opts: ICreateClientOpts): ICreateClientOpts {\n opts.store =\n opts.store ??\n new MemoryStore({\n localStorage: globalThis.localStorage,\n });\n opts.scheduler = opts.scheduler ?? new MatrixScheduler();\n opts.cryptoStore = opts.cryptoStore ?? cryptoStoreFactory();\n\n return opts;\n}\n\n/**\n * Construct a Matrix Client. Similar to {@link MatrixClient}\n * except that the 'request', 'store' and 'scheduler' dependencies are satisfied.\n * @param opts - The configuration options for this client. These configuration\n * options will be passed directly to {@link MatrixClient}.\n *\n * @returns A new matrix client.\n * @see {@link MatrixClient} for the full list of options for\n * `opts`.\n */\nexport function createClient(opts: ICreateClientOpts): MatrixClient {\n return new MatrixClient(amendClientOpts(opts));\n}\n\n/**\n * Construct a Matrix Client that works in a widget.\n * This client has a subset of features compared to a full client.\n * It uses the widget-api to communicate with matrix. (widget \\<-\\> client \\<-\\> homeserver)\n * @returns A new matrix client with a subset of features.\n * @param opts - The configuration options for this client. These configuration\n * options will be passed directly to {@link MatrixClient}.\n * @param widgetApi - The widget api to use for communication.\n * @param capabilities - The capabilities the widget client will request.\n * @param roomId - The room id the widget is associated with.\n * @param sendContentLoaded - Whether to send a content loaded widget action immediately after initial setup.\n * Set to `false` if the widget uses `waitForIFrameLoad=true` (in this case the client does not expect a content loaded action at all),\n * or if the the widget wants to send the `ContentLoaded` action at a later point in time after the initial setup.\n */\nexport function createRoomWidgetClient(\n widgetApi: WidgetApi,\n capabilities: ICapabilities,\n roomId: string,\n opts: ICreateClientOpts,\n sendContentLoaded = true,\n): MatrixClient {\n return new RoomWidgetClient(widgetApi, capabilities, roomId, amendClientOpts(opts), sendContentLoaded);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"matrix.js","names":["MemoryStore","MatrixScheduler","MatrixClient","RoomWidgetClient","_ContentHelpers","ContentHelpers","SyncState","SetPresence","SlidingSyncEvent","Relations","RelationsEvent","TypedEventEmitter","LocalStorageErrors","IdentityProviderBrand","SSOAction","LocationAssetType","amendClientOpts","opts","_opts$store","_opts$scheduler","store","localStorage","globalThis","scheduler","createClient","createRoomWidgetClient","widgetApi","capabilities","roomId","sendContentLoaded","arguments","length","undefined"],"sources":["../src/matrix.ts"],"sourcesContent":["/*\nCopyright 2015-2022 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { WidgetApi } from \"matrix-widget-api\";\n\nimport { MemoryStore } from \"./store/memory.ts\";\nimport { MatrixScheduler } from \"./scheduler.ts\";\nimport { MatrixClient, ICreateClientOpts } from \"./client.ts\";\nimport { RoomWidgetClient, ICapabilities } from \"./embedded.ts\";\n\nexport * from \"./client.ts\";\nexport * from \"./serverCapabilities.ts\";\nexport * from \"./embedded.ts\";\nexport * from \"./http-api/index.ts\";\nexport * from \"./autodiscovery.ts\";\nexport * from \"./sync-accumulator.ts\";\nexport * from \"./errors.ts\";\nexport * from \"./base64.ts\";\nexport * from \"./models/beacon.ts\";\nexport * from \"./models/event.ts\";\nexport * from \"./models/room.ts\";\nexport * from \"./models/event-timeline.ts\";\nexport * from \"./models/event-timeline-set.ts\";\nexport * from \"./models/poll.ts\";\nexport * from \"./models/room-member.ts\";\nexport * from \"./models/room-state.ts\";\nexport * from \"./models/thread.ts\";\nexport * from \"./models/typed-event-emitter.ts\";\nexport * from \"./models/user.ts\";\nexport * from \"./models/device.ts\";\nexport * from \"./models/search-result.ts\";\nexport * from \"./oidc/index.ts\";\nexport * from \"./scheduler.ts\";\nexport * from \"./filter.ts\";\nexport * from \"./timeline-window.ts\";\nexport * from \"./interactive-auth.ts\";\nexport * from \"./service-types.ts\";\nexport * from \"./store/memory.ts\";\nexport * from \"./store/indexeddb.ts\";\nexport * from \"./content-repo.ts\";\nexport type * from \"./@types/common.ts\";\nexport type * from \"./@types/uia.ts\";\nexport * from \"./@types/event.ts\";\nexport * from \"./@types/PushRules.ts\";\nexport * from \"./@types/partials.ts\";\nexport * from \"./@types/requests.ts\";\nexport * from \"./@types/search.ts\";\nexport * from \"./@types/beacon.ts\";\nexport * from \"./@types/topic.ts\";\nexport * from \"./@types/location.ts\";\nexport * from \"./@types/threepids.ts\";\nexport * from \"./@types/auth.ts\";\nexport * from \"./@types/polls.ts\";\nexport type * from \"./@types/local_notifications.ts\";\nexport type * from \"./@types/registration.ts\";\nexport * from \"./@types/read_receipts.ts\";\nexport * from \"./@types/extensible_events.ts\";\nexport type * from \"./@types/IIdentityServerProvider.ts\";\nexport * from \"./@types/membership.ts\";\nexport * from \"./models/room-summary.ts\";\nexport * from \"./models/event-status.ts\";\nexport type { RoomSummary } from \"./client.ts\";\nexport * as ContentHelpers from \"./content-helpers.ts\";\n\nexport { SyncState, SetPresence } from \"./sync.ts\";\nexport type { ISyncStateData as SyncStateData } from \"./sync.ts\";\nexport { SlidingSyncEvent } from \"./sliding-sync.ts\";\nexport { Relations, RelationsEvent } from \"./models/relations.ts\";\nexport { TypedEventEmitter } from \"./models/typed-event-emitter.ts\";\nexport { LocalStorageErrors } from \"./store/local-storage-events-emitter.ts\";\nexport { IdentityProviderBrand, SSOAction } from \"./@types/auth.ts\";\nexport type { ISSOFlow as SSOFlow, LoginFlow } from \"./@types/auth.ts\";\nexport type { IHierarchyRelation as HierarchyRelation, IHierarchyRoom as HierarchyRoom } from \"./@types/spaces.ts\";\nexport { LocationAssetType } from \"./@types/location.ts\";\n\nfunction amendClientOpts(opts: ICreateClientOpts): ICreateClientOpts {\n opts.store =\n opts.store ??\n new MemoryStore({\n localStorage: globalThis.localStorage,\n });\n opts.scheduler = opts.scheduler ?? new MatrixScheduler();\n\n return opts;\n}\n\n/**\n * Construct a Matrix Client. Similar to {@link MatrixClient}\n * except that the 'request', 'store' and 'scheduler' dependencies are satisfied.\n * @param opts - The configuration options for this client. These configuration\n * options will be passed directly to {@link MatrixClient}.\n *\n * @returns A new matrix client.\n * @see {@link MatrixClient} for the full list of options for\n * `opts`.\n */\nexport function createClient(opts: ICreateClientOpts): MatrixClient {\n return new MatrixClient(amendClientOpts(opts));\n}\n\n/**\n * Construct a Matrix Client that works in a widget.\n * This client has a subset of features compared to a full client.\n * It uses the widget-api to communicate with matrix. (widget \\<-\\> client \\<-\\> homeserver)\n * @returns A new matrix client with a subset of features.\n * @param opts - The configuration options for this client. These configuration\n * options will be passed directly to {@link MatrixClient}.\n * @param widgetApi - The widget api to use for communication.\n * @param capabilities - The capabilities the widget client will request.\n * @param roomId - The room id the widget is associated with.\n * @param sendContentLoaded - Whether to send a content loaded widget action immediately after initial setup.\n * Set to `false` if the widget uses `waitForIFrameLoad=true` (in this case the client does not expect a content loaded action at all),\n * or if the the widget wants to send the `ContentLoaded` action at a later point in time after the initial setup.\n */\nexport function createRoomWidgetClient(\n widgetApi: WidgetApi,\n capabilities: ICapabilities,\n roomId: string,\n opts: ICreateClientOpts,\n sendContentLoaded = true,\n): MatrixClient {\n return new RoomWidgetClient(widgetApi, capabilities, roomId, amendClientOpts(opts), sendContentLoaded);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,eAAe,QAAQ,gBAAgB;AAChD,SAASC,YAAY,QAA2B,aAAa;AAC7D,SAASC,gBAAgB,QAAuB,eAAe;AAE/D,cAAc,aAAa;AAC3B,cAAc,yBAAyB;AACvC,cAAc,eAAe;AAC7B,cAAc,qBAAqB;AACnC,cAAc,oBAAoB;AAClC,cAAc,uBAAuB;AACrC,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,oBAAoB;AAClC,cAAc,mBAAmB;AACjC,cAAc,kBAAkB;AAChC,cAAc,4BAA4B;AAC1C,cAAc,gCAAgC;AAC9C,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AACtC,cAAc,oBAAoB;AAClC,cAAc,iCAAiC;AAC/C,cAAc,kBAAkB;AAChC,cAAc,oBAAoB;AAClC,cAAc,2BAA2B;AACzC,cAAc,iBAAiB;AAC/B,cAAc,gBAAgB;AAC9B,cAAc,aAAa;AAC3B,cAAc,sBAAsB;AACpC,cAAc,uBAAuB;AACrC,cAAc,oBAAoB;AAClC,cAAc,mBAAmB;AACjC,cAAc,sBAAsB;AACpC,cAAc,mBAAmB;AAGjC,cAAc,mBAAmB;AACjC,cAAc,uBAAuB;AACrC,cAAc,sBAAsB;AACpC,cAAc,sBAAsB;AACpC,cAAc,oBAAoB;AAClC,cAAc,oBAAoB;AAClC,cAAc,mBAAmB;AACjC,cAAc,sBAAsB;AACpC,cAAc,uBAAuB;AACrC,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AAGjC,cAAc,2BAA2B;AACzC,cAAc,+BAA+B;AAE7C,cAAc,wBAAwB;AACtC,cAAc,0BAA0B;AACxC,cAAc,0BAA0B;AAAC,YAAAC,eAAA,MAET,sBAAsB;AAAA,SAAAA,eAAA,IAA1CC,cAAc;AAE1B,SAASC,SAAS,EAAEC,WAAW,QAAQ,WAAW;AAElD,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,SAAS,EAAEC,cAAc,QAAQ,uBAAuB;AACjE,SAASC,iBAAiB,QAAQ,iCAAiC;AACnE,SAASC,kBAAkB,QAAQ,yCAAyC;AAC5E,SAASC,qBAAqB,EAAEC,SAAS,QAAQ,kBAAkB;AAGnE,SAASC,iBAAiB,QAAQ,sBAAsB;AAExD,SAASC,eAAeA,CAACC,IAAuB,EAAqB;EAAA,IAAAC,WAAA,EAAAC,eAAA;EACjEF,IAAI,CAACG,KAAK,IAAAF,WAAA,GACND,IAAI,CAACG,KAAK,cAAAF,WAAA,cAAAA,WAAA,GACV,IAAIlB,WAAW,CAAC;IACZqB,YAAY,EAAEC,UAAU,CAACD;EAC7B,CAAC,CAAC;EACNJ,IAAI,CAACM,SAAS,IAAAJ,eAAA,GAAGF,IAAI,CAACM,SAAS,cAAAJ,eAAA,cAAAA,eAAA,GAAI,IAAIlB,eAAe,CAAC,CAAC;EAExD,OAAOgB,IAAI;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASO,YAAYA,CAACP,IAAuB,EAAgB;EAChE,OAAO,IAAIf,YAAY,CAACc,eAAe,CAACC,IAAI,CAAC,CAAC;AAClD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASQ,sBAAsBA,CAClCC,SAAoB,EACpBC,YAA2B,EAC3BC,MAAc,EACdX,IAAuB,EAEX;EAAA,IADZY,iBAAiB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAExB,OAAO,IAAI3B,gBAAgB,CAACuB,SAAS,EAAEC,YAAY,EAAEC,MAAM,EAAEZ,eAAe,CAACC,IAAI,CAAC,EAAEY,iBAAiB,CAAC;AAC1G","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MSC3089Branch.d.ts","sourceRoot":"","sources":["../../src/models/MSC3089Branch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,aAAa;IAElB,OAAO,CAAC,MAAM;aACE,UAAU,EAAE,WAAW;aACvB,SAAS,EAAE,gBAAgB;gBAFnC,MAAM,EAAE,YAAY,EACZ,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,gBAAgB;IAK/C;;OAEG;IACH,IAAW,EAAE,IAAI,MAAM,CAMtB;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,OAAO,KAAK,MAAM,GAEjB;IAED;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;;;OAIG;IACU,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjD;;;OAGG;IACI,QAAQ,IAAI,OAAO;IAI1B;;;;OAIG;IACU,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAa7E;;;OAGG;IACU,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IAoBjD;;;;;;;OAOG;IACU,gBAAgB,CACzB,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,QAAQ,EAC3B,IAAI,EAAE,aAAa,EACnB,iBAAiB,CAAC,EAAE,QAAQ,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IAoC9B;;;;OAIG;IACU,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAgC7D"}
1
+ {"version":3,"file":"MSC3089Branch.d.ts","sourceRoot":"","sources":["../../src/models/MSC3089Branch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,mBAAmB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,aAAa;IAElB,OAAO,CAAC,MAAM;aACE,UAAU,EAAE,WAAW;aACvB,SAAS,EAAE,gBAAgB;gBAFnC,MAAM,EAAE,YAAY,EACZ,UAAU,EAAE,WAAW,EACvB,SAAS,EAAE,gBAAgB;IAK/C;;OAEG;IACH,IAAW,EAAE,IAAI,MAAM,CAMtB;IAED;;OAEG;IACH,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,OAAO,KAAK,MAAM,GAEjB;IAED;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpC;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;;;OAIG;IACU,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjD;;;OAGG;IACI,QAAQ,IAAI,OAAO;IAI1B;;;;OAIG;IACU,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtD;;;OAGG;IACU,WAAW,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAa7E;;;OAGG;IACU,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IAiBjD;;;;;;;OAOG;IACU,gBAAgB,CACzB,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,QAAQ,EAC3B,IAAI,EAAE,aAAa,EACnB,iBAAiB,CAAC,EAAE,QAAQ,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IAoC9B;;;;OAIG;IACU,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;CAgC7D"}
@@ -156,9 +156,6 @@ export class MSC3089Branch {
156
156
  event = room.getUnfilteredTimelineSet().findEventById(_this5.id);
157
157
  }
158
158
  if (!event) throw new Error("Failed to find event");
159
-
160
- // Sometimes the event isn't decrypted for us, so do that.
161
- yield _this5.client.decryptEventIfNeeded(event);
162
159
  return event;
163
160
  })();
164
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MSC3089Branch.js","names":["RelationType","UNSTABLE_MSC3089_BRANCH","EventTimeline","MSC3089Branch","constructor","client","indexEvent","directory","id","stateKey","getStateKey","Error","isActive","getContent","version","_this$indexEvent$getC","roomId","getRoomId","delete","_this","_asyncToGenerator","sendStateEvent","name","redactEvent","nextVersion","getVersionHistory","getName","setName","_this2","_objectSpread","isLocked","setLocked","locked","_this3","getFileInfo","_this4","event","getFileEvent","file","getOriginalContent","httpUrl","mxcUrlToHttp","concat","info","_this5","room","getRoom","getUnfilteredTimelineSet","findEventById","getLiveTimeline","getState","BACKWARDS","paginationToken","scrollback","decryptEventIfNeeded","createNewVersion","encryptedContents","additionalContent","_this6","fileEventResponse","createFile","rel_type","Replace","event_id","active","_this7","fileHistory","push","timelineEvents","getEvents","reverse","childEvent","parentEvent","find","e","replacingEventId","getId","branch","getFile"],"sources":["../../src/models/MSC3089Branch.ts"],"sourcesContent":["/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { MatrixClient } from \"../client.ts\";\nimport { RelationType, UNSTABLE_MSC3089_BRANCH } from \"../@types/event.ts\";\nimport { IContent, MatrixEvent } from \"./event.ts\";\nimport { MSC3089TreeSpace } from \"./MSC3089TreeSpace.ts\";\nimport { EventTimeline } from \"./event-timeline.ts\";\nimport { FileType } from \"../http-api/index.ts\";\nimport type { ISendEventResponse } from \"../@types/requests.ts\";\nimport { EncryptedFile } from \"../@types/media.ts\";\n\nexport interface MSC3089EventContent {\n active?: boolean;\n name?: string;\n locked?: boolean;\n version?: number;\n}\n\nexport interface MSC3089EventContent {\n active?: boolean;\n name?: string;\n locked?: boolean;\n version?: number;\n}\n\n/**\n * Represents a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) branch - a reference\n * to a file (leaf) in the tree. Note that this is UNSTABLE and subject to breaking changes\n * without notice.\n */\nexport class MSC3089Branch {\n public constructor(\n private client: MatrixClient,\n public readonly indexEvent: MatrixEvent,\n public readonly directory: MSC3089TreeSpace,\n ) {\n // Nothing to do\n }\n\n /**\n * The file ID.\n */\n public get id(): string {\n const stateKey = this.indexEvent.getStateKey();\n if (!stateKey) {\n throw new Error(\"State key not found for branch\");\n }\n return stateKey;\n }\n\n /**\n * Whether this branch is active/valid.\n */\n public get isActive(): boolean {\n return this.indexEvent.getContent()[\"active\"] === true;\n }\n\n /**\n * Version for the file, one-indexed.\n */\n public get version(): number {\n return this.indexEvent.getContent()[\"version\"] ?? 1;\n }\n\n private get roomId(): string {\n return this.indexEvent.getRoomId()!;\n }\n\n /**\n * Deletes the file from the tree, including all prior edits/versions.\n * @returns Promise which resolves when complete.\n */\n public async delete(): Promise<void> {\n await this.client.sendStateEvent(this.roomId, UNSTABLE_MSC3089_BRANCH.name, {}, this.id);\n await this.client.redactEvent(this.roomId, this.id);\n\n const nextVersion = (await this.getVersionHistory())[1]; // [0] will be us\n if (nextVersion) await nextVersion.delete(); // implicit recursion\n }\n\n /**\n * Gets the name for this file.\n * @returns The name, or \"Unnamed File\" if unknown.\n */\n public getName(): string {\n return this.indexEvent.getContent()[\"name\"] || \"Unnamed File\";\n }\n\n /**\n * Sets the name for this file.\n * @param name - The new name for this file.\n * @returns Promise which resolves when complete.\n */\n public async setName(name: string): Promise<void> {\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n ...this.indexEvent.getContent(),\n name: name,\n },\n this.id,\n );\n }\n\n /**\n * Gets whether or not a file is locked.\n * @returns True if locked, false otherwise.\n */\n public isLocked(): boolean {\n return this.indexEvent.getContent()[\"locked\"] || false;\n }\n\n /**\n * Sets a file as locked or unlocked.\n * @param locked - True to lock the file, false otherwise.\n * @returns Promise which resolves when complete.\n */\n public async setLocked(locked: boolean): Promise<void> {\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n ...this.indexEvent.getContent(),\n locked: locked,\n },\n this.id,\n );\n }\n\n /**\n * Gets information about the file needed to download it.\n * @returns Information about the file.\n */\n public async getFileInfo(): Promise<{ info: EncryptedFile; httpUrl: string }> {\n const event = await this.getFileEvent();\n\n const file = event.getOriginalContent()[\"file\"];\n const httpUrl = this.client.mxcUrlToHttp(file[\"url\"]);\n\n if (!httpUrl) {\n throw new Error(`No HTTP URL available for ${file[\"url\"]}`);\n }\n\n return { info: file, httpUrl: httpUrl };\n }\n\n /**\n * Gets the event the file points to.\n * @returns Promise which resolves to the file's event.\n */\n public async getFileEvent(): Promise<MatrixEvent> {\n const room = this.client.getRoom(this.roomId);\n if (!room) throw new Error(\"Unknown room\");\n\n let event: MatrixEvent | undefined = room.getUnfilteredTimelineSet().findEventById(this.id);\n\n // keep scrolling back if needed until we find the event or reach the start of the room:\n while (!event && room.getLiveTimeline().getState(EventTimeline.BACKWARDS)!.paginationToken) {\n await this.client.scrollback(room, 100);\n event = room.getUnfilteredTimelineSet().findEventById(this.id);\n }\n\n if (!event) throw new Error(\"Failed to find event\");\n\n // Sometimes the event isn't decrypted for us, so do that.\n await this.client.decryptEventIfNeeded(event);\n\n return event;\n }\n\n /**\n * Creates a new version of this file with contents in a type that is compatible with MatrixClient.uploadContent().\n * @param name - The name of the file.\n * @param encryptedContents - The encrypted contents.\n * @param info - The encrypted file information.\n * @param additionalContent - Optional event content fields to include in the message.\n * @returns Promise which resolves to the file event's sent response.\n */\n public async createNewVersion(\n name: string,\n encryptedContents: FileType,\n info: EncryptedFile,\n additionalContent?: IContent,\n ): Promise<ISendEventResponse> {\n const fileEventResponse = await this.directory.createFile(name, encryptedContents, info, {\n ...(additionalContent ?? {}),\n \"m.new_content\": true,\n \"m.relates_to\": {\n rel_type: RelationType.Replace,\n event_id: this.id,\n },\n });\n\n // Update the version of the new event\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n active: true,\n name: name,\n version: this.version + 1,\n },\n fileEventResponse[\"event_id\"],\n );\n\n // Deprecate ourselves\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n ...this.indexEvent.getContent(),\n active: false,\n },\n this.id,\n );\n\n return fileEventResponse;\n }\n\n /**\n * Gets the file's version history, starting at this file.\n * @returns Promise which resolves to the file's version history, with the\n * first element being the current version and the last element being the first version.\n */\n public async getVersionHistory(): Promise<MSC3089Branch[]> {\n const fileHistory: MSC3089Branch[] = [];\n fileHistory.push(this); // start with ourselves\n\n const room = this.client.getRoom(this.roomId);\n if (!room) throw new Error(\"Invalid or unknown room\");\n\n // Clone the timeline to reverse it, getting most-recent-first ordering, hopefully\n // shortening the awful loop below. Without the clone, we can unintentionally mutate\n // the timeline.\n const timelineEvents = [...room.getLiveTimeline().getEvents()].reverse();\n\n // XXX: This is a very inefficient search, but it's the best we can do with the\n // relations structure we have in the SDK. As of writing, it is not worth the\n // investment in improving the structure.\n let childEvent: MatrixEvent | undefined;\n let parentEvent = await this.getFileEvent();\n do {\n childEvent = timelineEvents.find((e) => e.replacingEventId() === parentEvent.getId());\n if (childEvent) {\n const branch = this.directory.getFile(childEvent.getId()!);\n if (branch) {\n fileHistory.push(branch);\n parentEvent = childEvent;\n } else {\n break; // prevent infinite loop\n }\n }\n } while (childEvent);\n\n return fileHistory;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MSC3089Branch.js","names":["RelationType","UNSTABLE_MSC3089_BRANCH","EventTimeline","MSC3089Branch","constructor","client","indexEvent","directory","id","stateKey","getStateKey","Error","isActive","getContent","version","_this$indexEvent$getC","roomId","getRoomId","delete","_this","_asyncToGenerator","sendStateEvent","name","redactEvent","nextVersion","getVersionHistory","getName","setName","_this2","_objectSpread","isLocked","setLocked","locked","_this3","getFileInfo","_this4","event","getFileEvent","file","getOriginalContent","httpUrl","mxcUrlToHttp","concat","info","_this5","room","getRoom","getUnfilteredTimelineSet","findEventById","getLiveTimeline","getState","BACKWARDS","paginationToken","scrollback","createNewVersion","encryptedContents","additionalContent","_this6","fileEventResponse","createFile","rel_type","Replace","event_id","active","_this7","fileHistory","push","timelineEvents","getEvents","reverse","childEvent","parentEvent","find","e","replacingEventId","getId","branch","getFile"],"sources":["../../src/models/MSC3089Branch.ts"],"sourcesContent":["/*\nCopyright 2021 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { MatrixClient } from \"../client.ts\";\nimport { RelationType, UNSTABLE_MSC3089_BRANCH } from \"../@types/event.ts\";\nimport { IContent, MatrixEvent } from \"./event.ts\";\nimport { MSC3089TreeSpace } from \"./MSC3089TreeSpace.ts\";\nimport { EventTimeline } from \"./event-timeline.ts\";\nimport { FileType } from \"../http-api/index.ts\";\nimport type { ISendEventResponse } from \"../@types/requests.ts\";\nimport { EncryptedFile } from \"../@types/media.ts\";\n\nexport interface MSC3089EventContent {\n active?: boolean;\n name?: string;\n locked?: boolean;\n version?: number;\n}\n\nexport interface MSC3089EventContent {\n active?: boolean;\n name?: string;\n locked?: boolean;\n version?: number;\n}\n\n/**\n * Represents a [MSC3089](https://github.com/matrix-org/matrix-doc/pull/3089) branch - a reference\n * to a file (leaf) in the tree. Note that this is UNSTABLE and subject to breaking changes\n * without notice.\n */\nexport class MSC3089Branch {\n public constructor(\n private client: MatrixClient,\n public readonly indexEvent: MatrixEvent,\n public readonly directory: MSC3089TreeSpace,\n ) {\n // Nothing to do\n }\n\n /**\n * The file ID.\n */\n public get id(): string {\n const stateKey = this.indexEvent.getStateKey();\n if (!stateKey) {\n throw new Error(\"State key not found for branch\");\n }\n return stateKey;\n }\n\n /**\n * Whether this branch is active/valid.\n */\n public get isActive(): boolean {\n return this.indexEvent.getContent()[\"active\"] === true;\n }\n\n /**\n * Version for the file, one-indexed.\n */\n public get version(): number {\n return this.indexEvent.getContent()[\"version\"] ?? 1;\n }\n\n private get roomId(): string {\n return this.indexEvent.getRoomId()!;\n }\n\n /**\n * Deletes the file from the tree, including all prior edits/versions.\n * @returns Promise which resolves when complete.\n */\n public async delete(): Promise<void> {\n await this.client.sendStateEvent(this.roomId, UNSTABLE_MSC3089_BRANCH.name, {}, this.id);\n await this.client.redactEvent(this.roomId, this.id);\n\n const nextVersion = (await this.getVersionHistory())[1]; // [0] will be us\n if (nextVersion) await nextVersion.delete(); // implicit recursion\n }\n\n /**\n * Gets the name for this file.\n * @returns The name, or \"Unnamed File\" if unknown.\n */\n public getName(): string {\n return this.indexEvent.getContent()[\"name\"] || \"Unnamed File\";\n }\n\n /**\n * Sets the name for this file.\n * @param name - The new name for this file.\n * @returns Promise which resolves when complete.\n */\n public async setName(name: string): Promise<void> {\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n ...this.indexEvent.getContent(),\n name: name,\n },\n this.id,\n );\n }\n\n /**\n * Gets whether or not a file is locked.\n * @returns True if locked, false otherwise.\n */\n public isLocked(): boolean {\n return this.indexEvent.getContent()[\"locked\"] || false;\n }\n\n /**\n * Sets a file as locked or unlocked.\n * @param locked - True to lock the file, false otherwise.\n * @returns Promise which resolves when complete.\n */\n public async setLocked(locked: boolean): Promise<void> {\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n ...this.indexEvent.getContent(),\n locked: locked,\n },\n this.id,\n );\n }\n\n /**\n * Gets information about the file needed to download it.\n * @returns Information about the file.\n */\n public async getFileInfo(): Promise<{ info: EncryptedFile; httpUrl: string }> {\n const event = await this.getFileEvent();\n\n const file = event.getOriginalContent()[\"file\"];\n const httpUrl = this.client.mxcUrlToHttp(file[\"url\"]);\n\n if (!httpUrl) {\n throw new Error(`No HTTP URL available for ${file[\"url\"]}`);\n }\n\n return { info: file, httpUrl: httpUrl };\n }\n\n /**\n * Gets the event the file points to.\n * @returns Promise which resolves to the file's event.\n */\n public async getFileEvent(): Promise<MatrixEvent> {\n const room = this.client.getRoom(this.roomId);\n if (!room) throw new Error(\"Unknown room\");\n\n let event: MatrixEvent | undefined = room.getUnfilteredTimelineSet().findEventById(this.id);\n\n // keep scrolling back if needed until we find the event or reach the start of the room:\n while (!event && room.getLiveTimeline().getState(EventTimeline.BACKWARDS)!.paginationToken) {\n await this.client.scrollback(room, 100);\n event = room.getUnfilteredTimelineSet().findEventById(this.id);\n }\n\n if (!event) throw new Error(\"Failed to find event\");\n\n return event;\n }\n\n /**\n * Creates a new version of this file with contents in a type that is compatible with MatrixClient.uploadContent().\n * @param name - The name of the file.\n * @param encryptedContents - The encrypted contents.\n * @param info - The encrypted file information.\n * @param additionalContent - Optional event content fields to include in the message.\n * @returns Promise which resolves to the file event's sent response.\n */\n public async createNewVersion(\n name: string,\n encryptedContents: FileType,\n info: EncryptedFile,\n additionalContent?: IContent,\n ): Promise<ISendEventResponse> {\n const fileEventResponse = await this.directory.createFile(name, encryptedContents, info, {\n ...(additionalContent ?? {}),\n \"m.new_content\": true,\n \"m.relates_to\": {\n rel_type: RelationType.Replace,\n event_id: this.id,\n },\n });\n\n // Update the version of the new event\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n active: true,\n name: name,\n version: this.version + 1,\n },\n fileEventResponse[\"event_id\"],\n );\n\n // Deprecate ourselves\n await this.client.sendStateEvent(\n this.roomId,\n UNSTABLE_MSC3089_BRANCH.name,\n {\n ...this.indexEvent.getContent(),\n active: false,\n },\n this.id,\n );\n\n return fileEventResponse;\n }\n\n /**\n * Gets the file's version history, starting at this file.\n * @returns Promise which resolves to the file's version history, with the\n * first element being the current version and the last element being the first version.\n */\n public async getVersionHistory(): Promise<MSC3089Branch[]> {\n const fileHistory: MSC3089Branch[] = [];\n fileHistory.push(this); // start with ourselves\n\n const room = this.client.getRoom(this.roomId);\n if (!room) throw new Error(\"Invalid or unknown room\");\n\n // Clone the timeline to reverse it, getting most-recent-first ordering, hopefully\n // shortening the awful loop below. Without the clone, we can unintentionally mutate\n // the timeline.\n const timelineEvents = [...room.getLiveTimeline().getEvents()].reverse();\n\n // XXX: This is a very inefficient search, but it's the best we can do with the\n // relations structure we have in the SDK. As of writing, it is not worth the\n // investment in improving the structure.\n let childEvent: MatrixEvent | undefined;\n let parentEvent = await this.getFileEvent();\n do {\n childEvent = timelineEvents.find((e) => e.replacingEventId() === parentEvent.getId());\n if (childEvent) {\n const branch = this.directory.getFile(childEvent.getId()!);\n if (branch) {\n fileHistory.push(branch);\n parentEvent = childEvent;\n } else {\n break; // prevent infinite loop\n }\n }\n } while (childEvent);\n\n return fileHistory;\n }\n}\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,YAAY,EAAEC,uBAAuB,QAAQ,oBAAoB;AAG1E,SAASC,aAAa,QAAQ,qBAAqB;AAmBnD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,CAAC;EAChBC,WAAWA,CACNC,MAAoB,EACZC,UAAuB,EACvBC,SAA2B,EAC7C;IAAA,KAHUF,MAAoB,GAApBA,MAAoB;IAAA,KACZC,UAAuB,GAAvBA,UAAuB;IAAA,KACvBC,SAA2B,GAA3BA,SAA2B;EAG/C,CAAC,CADG;;EAGJ;AACJ;AACA;EACI,IAAWC,EAAEA,CAAA,EAAW;IACpB,IAAMC,QAAQ,GAAG,IAAI,CAACH,UAAU,CAACI,WAAW,CAAC,CAAC;IAC9C,IAAI,CAACD,QAAQ,EAAE;MACX,MAAM,IAAIE,KAAK,CAAC,gCAAgC,CAAC;IACrD;IACA,OAAOF,QAAQ;EACnB;;EAEA;AACJ;AACA;EACI,IAAWG,QAAQA,CAAA,EAAY;IAC3B,OAAO,IAAI,CAACN,UAAU,CAACO,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI;EAC1D;;EAEA;AACJ;AACA;EACI,IAAWC,OAAOA,CAAA,EAAW;IAAA,IAAAC,qBAAA;IACzB,QAAAA,qBAAA,GAAO,IAAI,CAACT,UAAU,CAACO,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,cAAAE,qBAAA,cAAAA,qBAAA,GAAI,CAAC;EACvD;EAEA,IAAYC,MAAMA,CAAA,EAAW;IACzB,OAAO,IAAI,CAACV,UAAU,CAACW,SAAS,CAAC,CAAC;EACtC;;EAEA;AACJ;AACA;AACA;EACiBC,MAAMA,CAAA,EAAkB;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MACjC,MAAMD,KAAI,CAACd,MAAM,CAACgB,cAAc,CAACF,KAAI,CAACH,MAAM,EAAEf,uBAAuB,CAACqB,IAAI,EAAE,CAAC,CAAC,EAAEH,KAAI,CAACX,EAAE,CAAC;MACxF,MAAMW,KAAI,CAACd,MAAM,CAACkB,WAAW,CAACJ,KAAI,CAACH,MAAM,EAAEG,KAAI,CAACX,EAAE,CAAC;MAEnD,IAAMgB,WAAW,GAAG,OAAOL,KAAI,CAACM,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MACzD,IAAID,WAAW,EAAE,MAAMA,WAAW,CAACN,MAAM,CAAC,CAAC,CAAC,CAAC;IAAA;EACjD;;EAEA;AACJ;AACA;AACA;EACWQ,OAAOA,CAAA,EAAW;IACrB,OAAO,IAAI,CAACpB,UAAU,CAACO,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,cAAc;EACjE;;EAEA;AACJ;AACA;AACA;AACA;EACiBc,OAAOA,CAACL,IAAY,EAAiB;IAAA,IAAAM,MAAA;IAAA,OAAAR,iBAAA;MAC9C,MAAMQ,MAAI,CAACvB,MAAM,CAACgB,cAAc,CAC5BO,MAAI,CAACZ,MAAM,EACXf,uBAAuB,CAACqB,IAAI,EAAAO,aAAA,CAAAA,aAAA,KAErBD,MAAI,CAACtB,UAAU,CAACO,UAAU,CAAC,CAAC;QAC/BS,IAAI,EAAEA;MAAI,IAEdM,MAAI,CAACpB,EACT,CAAC;IAAC;EACN;;EAEA;AACJ;AACA;AACA;EACWsB,QAAQA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACxB,UAAU,CAACO,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK;EAC1D;;EAEA;AACJ;AACA;AACA;AACA;EACiBkB,SAASA,CAACC,MAAe,EAAiB;IAAA,IAAAC,MAAA;IAAA,OAAAb,iBAAA;MACnD,MAAMa,MAAI,CAAC5B,MAAM,CAACgB,cAAc,CAC5BY,MAAI,CAACjB,MAAM,EACXf,uBAAuB,CAACqB,IAAI,EAAAO,aAAA,CAAAA,aAAA,KAErBI,MAAI,CAAC3B,UAAU,CAACO,UAAU,CAAC,CAAC;QAC/BmB,MAAM,EAAEA;MAAM,IAElBC,MAAI,CAACzB,EACT,CAAC;IAAC;EACN;;EAEA;AACJ;AACA;AACA;EACiB0B,WAAWA,CAAA,EAAsD;IAAA,IAAAC,MAAA;IAAA,OAAAf,iBAAA;MAC1E,IAAMgB,KAAK,SAASD,MAAI,CAACE,YAAY,CAAC,CAAC;MAEvC,IAAMC,IAAI,GAAGF,KAAK,CAACG,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;MAC/C,IAAMC,OAAO,GAAGL,MAAI,CAAC9B,MAAM,CAACoC,YAAY,CAACH,IAAI,CAAC,KAAK,CAAC,CAAC;MAErD,IAAI,CAACE,OAAO,EAAE;QACV,MAAM,IAAI7B,KAAK,8BAAA+B,MAAA,CAA8BJ,IAAI,CAAC,KAAK,CAAC,CAAE,CAAC;MAC/D;MAEA,OAAO;QAAEK,IAAI,EAAEL,IAAI;QAAEE,OAAO,EAAEA;MAAQ,CAAC;IAAC;EAC5C;;EAEA;AACJ;AACA;AACA;EACiBH,YAAYA,CAAA,EAAyB;IAAA,IAAAO,MAAA;IAAA,OAAAxB,iBAAA;MAC9C,IAAMyB,IAAI,GAAGD,MAAI,CAACvC,MAAM,CAACyC,OAAO,CAACF,MAAI,CAAC5B,MAAM,CAAC;MAC7C,IAAI,CAAC6B,IAAI,EAAE,MAAM,IAAIlC,KAAK,CAAC,cAAc,CAAC;MAE1C,IAAIyB,KAA8B,GAAGS,IAAI,CAACE,wBAAwB,CAAC,CAAC,CAACC,aAAa,CAACJ,MAAI,CAACpC,EAAE,CAAC;;MAE3F;MACA,OAAO,CAAC4B,KAAK,IAAIS,IAAI,CAACI,eAAe,CAAC,CAAC,CAACC,QAAQ,CAAChD,aAAa,CAACiD,SAAS,CAAC,CAAEC,eAAe,EAAE;QACxF,MAAMR,MAAI,CAACvC,MAAM,CAACgD,UAAU,CAACR,IAAI,EAAE,GAAG,CAAC;QACvCT,KAAK,GAAGS,IAAI,CAACE,wBAAwB,CAAC,CAAC,CAACC,aAAa,CAACJ,MAAI,CAACpC,EAAE,CAAC;MAClE;MAEA,IAAI,CAAC4B,KAAK,EAAE,MAAM,IAAIzB,KAAK,CAAC,sBAAsB,CAAC;MAEnD,OAAOyB,KAAK;IAAC;EACjB;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACiBkB,gBAAgBA,CACzBhC,IAAY,EACZiC,iBAA2B,EAC3BZ,IAAmB,EACnBa,iBAA4B,EACD;IAAA,IAAAC,MAAA;IAAA,OAAArC,iBAAA;MAC3B,IAAMsC,iBAAiB,SAASD,MAAI,CAAClD,SAAS,CAACoD,UAAU,CAACrC,IAAI,EAAEiC,iBAAiB,EAAEZ,IAAI,EAAAd,aAAA,CAAAA,aAAA,KAC/E2B,iBAAiB,aAAjBA,iBAAiB,cAAjBA,iBAAiB,GAAI,CAAC,CAAC;QAC3B,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE;UACZI,QAAQ,EAAE5D,YAAY,CAAC6D,OAAO;UAC9BC,QAAQ,EAAEL,MAAI,CAACjD;QACnB;MAAC,EACJ,CAAC;;MAEF;MACA,MAAMiD,MAAI,CAACpD,MAAM,CAACgB,cAAc,CAC5BoC,MAAI,CAACzC,MAAM,EACXf,uBAAuB,CAACqB,IAAI,EAC5B;QACIyC,MAAM,EAAE,IAAI;QACZzC,IAAI,EAAEA,IAAI;QACVR,OAAO,EAAE2C,MAAI,CAAC3C,OAAO,GAAG;MAC5B,CAAC,EACD4C,iBAAiB,CAAC,UAAU,CAChC,CAAC;;MAED;MACA,MAAMD,MAAI,CAACpD,MAAM,CAACgB,cAAc,CAC5BoC,MAAI,CAACzC,MAAM,EACXf,uBAAuB,CAACqB,IAAI,EAAAO,aAAA,CAAAA,aAAA,KAErB4B,MAAI,CAACnD,UAAU,CAACO,UAAU,CAAC,CAAC;QAC/BkD,MAAM,EAAE;MAAK,IAEjBN,MAAI,CAACjD,EACT,CAAC;MAED,OAAOkD,iBAAiB;IAAC;EAC7B;;EAEA;AACJ;AACA;AACA;AACA;EACiBjC,iBAAiBA,CAAA,EAA6B;IAAA,IAAAuC,MAAA;IAAA,OAAA5C,iBAAA;MACvD,IAAM6C,WAA4B,GAAG,EAAE;MACvCA,WAAW,CAACC,IAAI,CAACF,MAAI,CAAC,CAAC,CAAC;;MAExB,IAAMnB,IAAI,GAAGmB,MAAI,CAAC3D,MAAM,CAACyC,OAAO,CAACkB,MAAI,CAAChD,MAAM,CAAC;MAC7C,IAAI,CAAC6B,IAAI,EAAE,MAAM,IAAIlC,KAAK,CAAC,yBAAyB,CAAC;;MAErD;MACA;MACA;MACA,IAAMwD,cAAc,GAAG,CAAC,GAAGtB,IAAI,CAACI,eAAe,CAAC,CAAC,CAACmB,SAAS,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;;MAExE;MACA;MACA;MACA,IAAIC,UAAmC;MACvC,IAAIC,WAAW,SAASP,MAAI,CAAC3B,YAAY,CAAC,CAAC;MAC3C,GAAG;QACCiC,UAAU,GAAGH,cAAc,CAACK,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,gBAAgB,CAAC,CAAC,KAAKH,WAAW,CAACI,KAAK,CAAC,CAAC,CAAC;QACrF,IAAIL,UAAU,EAAE;UACZ,IAAMM,MAAM,GAAGZ,MAAI,CAACzD,SAAS,CAACsE,OAAO,CAACP,UAAU,CAACK,KAAK,CAAC,CAAE,CAAC;UAC1D,IAAIC,MAAM,EAAE;YACRX,WAAW,CAACC,IAAI,CAACU,MAAM,CAAC;YACxBL,WAAW,GAAGD,UAAU;UAC5B,CAAC,MAAM;YACH,MAAM,CAAC;UACX;QACJ;MACJ,CAAC,QAAQA,UAAU;MAEnB,OAAOL,WAAW;IAAC;EACvB;AACJ","ignoreList":[]}