@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,531 +0,0 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- /*
3
- Copyright 2017 - 2021 The Matrix.org Foundation C.I.C.
4
-
5
- Licensed under the Apache License, Version 2.0 (the "License");
6
- you may not use this file except in compliance with the License.
7
- You may obtain a copy of the License at
8
-
9
- http://www.apache.org/licenses/LICENSE-2.0
10
-
11
- Unless required by applicable law or agreed to in writing, software
12
- distributed under the License is distributed on an "AS IS" BASIS,
13
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- See the License for the specific language governing permissions and
15
- limitations under the License.
16
- */
17
-
18
- import { logger } from "../../logger.js";
19
- import { MemoryCryptoStore } from "./memory-crypto-store.js";
20
- import { MigrationState, SESSION_BATCH_SIZE } from "./base.js";
21
- import { safeSet } from "../../utils.js";
22
- /**
23
- * Internal module. Partial localStorage backed storage for e2e.
24
- * This is not a full crypto store, just the in-memory store with
25
- * some things backed by localStorage. It exists because indexedDB
26
- * is broken in Firefox private mode or set to, "will not remember
27
- * history".
28
- */
29
-
30
- var E2E_PREFIX = "crypto.";
31
- var KEY_END_TO_END_MIGRATION_STATE = E2E_PREFIX + "migration";
32
- var KEY_END_TO_END_ACCOUNT = E2E_PREFIX + "account";
33
- var KEY_CROSS_SIGNING_KEYS = E2E_PREFIX + "cross_signing_keys";
34
- var KEY_NOTIFIED_ERROR_DEVICES = E2E_PREFIX + "notified_error_devices";
35
- var KEY_DEVICE_DATA = E2E_PREFIX + "device_data";
36
- var KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + "inboundgroupsessions/";
37
- var KEY_INBOUND_SESSION_WITHHELD_PREFIX = E2E_PREFIX + "inboundgroupsessions.withheld/";
38
- var KEY_ROOMS_PREFIX = E2E_PREFIX + "rooms/";
39
- var KEY_SESSIONS_NEEDING_BACKUP = E2E_PREFIX + "sessionsneedingbackup";
40
- function keyEndToEndSessions(deviceKey) {
41
- return E2E_PREFIX + "sessions/" + deviceKey;
42
- }
43
- function keyEndToEndSessionProblems(deviceKey) {
44
- return E2E_PREFIX + "session.problems/" + deviceKey;
45
- }
46
- function keyEndToEndInboundGroupSession(senderKey, sessionId) {
47
- return KEY_INBOUND_SESSION_PREFIX + senderKey + "/" + sessionId;
48
- }
49
- function keyEndToEndInboundGroupSessionWithheld(senderKey, sessionId) {
50
- return KEY_INBOUND_SESSION_WITHHELD_PREFIX + senderKey + "/" + sessionId;
51
- }
52
- function keyEndToEndRoomsPrefix(roomId) {
53
- return KEY_ROOMS_PREFIX + roomId;
54
- }
55
- export class LocalStorageCryptoStore extends MemoryCryptoStore {
56
- static exists(store) {
57
- var length = store.length;
58
- for (var i = 0; i < length; i++) {
59
- var _store$key;
60
- if ((_store$key = store.key(i)) !== null && _store$key !== void 0 && _store$key.startsWith(E2E_PREFIX)) {
61
- return true;
62
- }
63
- }
64
- return false;
65
- }
66
- constructor(store) {
67
- super();
68
- this.store = store;
69
- }
70
-
71
- /**
72
- * Returns true if this CryptoStore has ever been initialised (ie, it might contain data).
73
- *
74
- * Implementation of {@link CryptoStore.containsData}.
75
- *
76
- * @internal
77
- */
78
- containsData() {
79
- var _this = this;
80
- return _asyncToGenerator(function* () {
81
- return LocalStorageCryptoStore.exists(_this.store);
82
- })();
83
- }
84
-
85
- /**
86
- * Get data on how much of the libolm to Rust Crypto migration has been done.
87
- *
88
- * Implementation of {@link CryptoStore.getMigrationState}.
89
- *
90
- * @internal
91
- */
92
- getMigrationState() {
93
- var _this2 = this;
94
- return _asyncToGenerator(function* () {
95
- var _getJsonItem;
96
- return (_getJsonItem = getJsonItem(_this2.store, KEY_END_TO_END_MIGRATION_STATE)) !== null && _getJsonItem !== void 0 ? _getJsonItem : MigrationState.NOT_STARTED;
97
- })();
98
- }
99
-
100
- /**
101
- * Set data on how much of the libolm to Rust Crypto migration has been done.
102
- *
103
- * Implementation of {@link CryptoStore.setMigrationState}.
104
- *
105
- * @internal
106
- */
107
- setMigrationState(migrationState) {
108
- var _this3 = this;
109
- return _asyncToGenerator(function* () {
110
- setJsonItem(_this3.store, KEY_END_TO_END_MIGRATION_STATE, migrationState);
111
- })();
112
- }
113
-
114
- // Olm Sessions
115
-
116
- countEndToEndSessions(txn, func) {
117
- var count = 0;
118
- for (var i = 0; i < this.store.length; ++i) {
119
- var key = this.store.key(i);
120
- if (key !== null && key !== void 0 && key.startsWith(keyEndToEndSessions(""))) {
121
- var sessions = getJsonItem(this.store, key);
122
- count += Object.keys(sessions !== null && sessions !== void 0 ? sessions : {}).length;
123
- }
124
- }
125
- func(count);
126
- }
127
-
128
- // eslint-disable-next-line @typescript-eslint/naming-convention
129
- _getEndToEndSessions(deviceKey) {
130
- var sessions = getJsonItem(this.store, keyEndToEndSessions(deviceKey));
131
- var fixedSessions = {};
132
-
133
- // fix up any old sessions to be objects rather than just the base64 pickle
134
- for (var [sid, val] of Object.entries(sessions || {})) {
135
- if (typeof val === "string") {
136
- fixedSessions[sid] = {
137
- session: val
138
- };
139
- } else {
140
- fixedSessions[sid] = val;
141
- }
142
- }
143
- return fixedSessions;
144
- }
145
- getEndToEndSession(deviceKey, sessionId, txn, func) {
146
- var sessions = this._getEndToEndSessions(deviceKey);
147
- func(sessions[sessionId] || {});
148
- }
149
- getEndToEndSessions(deviceKey, txn, func) {
150
- func(this._getEndToEndSessions(deviceKey) || {});
151
- }
152
- getAllEndToEndSessions(txn, func) {
153
- for (var i = 0; i < this.store.length; ++i) {
154
- var _this$store$key;
155
- if ((_this$store$key = this.store.key(i)) !== null && _this$store$key !== void 0 && _this$store$key.startsWith(keyEndToEndSessions(""))) {
156
- var deviceKey = this.store.key(i).split("/")[1];
157
- for (var sess of Object.values(this._getEndToEndSessions(deviceKey))) {
158
- func(sess);
159
- }
160
- }
161
- }
162
- }
163
- storeEndToEndSession(deviceKey, sessionId, sessionInfo, txn) {
164
- var sessions = this._getEndToEndSessions(deviceKey) || {};
165
- sessions[sessionId] = sessionInfo;
166
- setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);
167
- }
168
- storeEndToEndSessionProblem(deviceKey, type, fixed) {
169
- var _this4 = this;
170
- return _asyncToGenerator(function* () {
171
- var key = keyEndToEndSessionProblems(deviceKey);
172
- var problems = getJsonItem(_this4.store, key) || [];
173
- problems.push({
174
- type,
175
- fixed,
176
- time: Date.now()
177
- });
178
- problems.sort((a, b) => {
179
- return a.time - b.time;
180
- });
181
- setJsonItem(_this4.store, key, problems);
182
- })();
183
- }
184
- getEndToEndSessionProblem(deviceKey, timestamp) {
185
- var _this5 = this;
186
- return _asyncToGenerator(function* () {
187
- var key = keyEndToEndSessionProblems(deviceKey);
188
- var problems = getJsonItem(_this5.store, key) || [];
189
- if (!problems.length) {
190
- return null;
191
- }
192
- var lastProblem = problems[problems.length - 1];
193
- for (var problem of problems) {
194
- if (problem.time > timestamp) {
195
- return Object.assign({}, problem, {
196
- fixed: lastProblem.fixed
197
- });
198
- }
199
- }
200
- if (lastProblem.fixed) {
201
- return null;
202
- } else {
203
- return lastProblem;
204
- }
205
- })();
206
- }
207
- filterOutNotifiedErrorDevices(devices) {
208
- var _this6 = this;
209
- return _asyncToGenerator(function* () {
210
- var notifiedErrorDevices = getJsonItem(_this6.store, KEY_NOTIFIED_ERROR_DEVICES) || {};
211
- var ret = [];
212
- for (var device of devices) {
213
- var {
214
- userId,
215
- deviceInfo
216
- } = device;
217
- if (userId in notifiedErrorDevices) {
218
- if (!(deviceInfo.deviceId in notifiedErrorDevices[userId])) {
219
- ret.push(device);
220
- safeSet(notifiedErrorDevices[userId], deviceInfo.deviceId, true);
221
- }
222
- } else {
223
- ret.push(device);
224
- safeSet(notifiedErrorDevices, userId, {
225
- [deviceInfo.deviceId]: true
226
- });
227
- }
228
- }
229
- setJsonItem(_this6.store, KEY_NOTIFIED_ERROR_DEVICES, notifiedErrorDevices);
230
- return ret;
231
- })();
232
- }
233
-
234
- /**
235
- * Fetch a batch of Olm sessions from the database.
236
- *
237
- * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}.
238
- *
239
- * @internal
240
- */
241
- getEndToEndSessionsBatch() {
242
- var _this7 = this;
243
- return _asyncToGenerator(function* () {
244
- var result = [];
245
- for (var i = 0; i < _this7.store.length; ++i) {
246
- var _this7$store$key;
247
- if ((_this7$store$key = _this7.store.key(i)) !== null && _this7$store$key !== void 0 && _this7$store$key.startsWith(keyEndToEndSessions(""))) {
248
- var deviceKey = _this7.store.key(i).split("/")[1];
249
- for (var session of Object.values(_this7._getEndToEndSessions(deviceKey))) {
250
- result.push(session);
251
- if (result.length >= SESSION_BATCH_SIZE) {
252
- return result;
253
- }
254
- }
255
- }
256
- }
257
- if (result.length === 0) {
258
- // No sessions left.
259
- return null;
260
- }
261
-
262
- // There are fewer sessions than the batch size; return the final batch of sessions.
263
- return result;
264
- })();
265
- }
266
-
267
- /**
268
- * Delete a batch of Olm sessions from the database.
269
- *
270
- * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}.
271
- *
272
- * @internal
273
- */
274
- deleteEndToEndSessionsBatch(sessions) {
275
- var _this8 = this;
276
- return _asyncToGenerator(function* () {
277
- for (var {
278
- deviceKey,
279
- sessionId
280
- } of sessions) {
281
- var deviceSessions = _this8._getEndToEndSessions(deviceKey) || {};
282
- delete deviceSessions[sessionId];
283
- if (Object.keys(deviceSessions).length === 0) {
284
- // No more sessions for this device.
285
- _this8.store.removeItem(keyEndToEndSessions(deviceKey));
286
- } else {
287
- setJsonItem(_this8.store, keyEndToEndSessions(deviceKey), deviceSessions);
288
- }
289
- }
290
- })();
291
- }
292
-
293
- // Inbound Group Sessions
294
-
295
- getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {
296
- func(getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)), getJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId)));
297
- }
298
- getAllEndToEndInboundGroupSessions(txn, func) {
299
- for (var i = 0; i < this.store.length; ++i) {
300
- var key = this.store.key(i);
301
- if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {
302
- // we can't use split, as the components we are trying to split out
303
- // might themselves contain '/' characters. We rely on the
304
- // senderKey being a (32-byte) curve25519 key, base64-encoded
305
- // (hence 43 characters long).
306
-
307
- func({
308
- senderKey: key.slice(KEY_INBOUND_SESSION_PREFIX.length, KEY_INBOUND_SESSION_PREFIX.length + 43),
309
- sessionId: key.slice(KEY_INBOUND_SESSION_PREFIX.length + 44),
310
- sessionData: getJsonItem(this.store, key)
311
- });
312
- }
313
- }
314
- func(null);
315
- }
316
- addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {
317
- var existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));
318
- if (!existing) {
319
- this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);
320
- }
321
- }
322
- storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {
323
- setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);
324
- }
325
- storeEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId, sessionData, txn) {
326
- setJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId), sessionData);
327
- }
328
-
329
- /**
330
- * Count the number of Megolm sessions in the database.
331
- *
332
- * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}.
333
- *
334
- * @internal
335
- */
336
- countEndToEndInboundGroupSessions() {
337
- var _this9 = this;
338
- return _asyncToGenerator(function* () {
339
- var count = 0;
340
- for (var i = 0; i < _this9.store.length; ++i) {
341
- var key = _this9.store.key(i);
342
- if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {
343
- count += 1;
344
- }
345
- }
346
- return count;
347
- })();
348
- }
349
-
350
- /**
351
- * Fetch a batch of Megolm sessions from the database.
352
- *
353
- * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}.
354
- *
355
- * @internal
356
- */
357
- getEndToEndInboundGroupSessionsBatch() {
358
- var _this10 = this;
359
- return _asyncToGenerator(function* () {
360
- var sessionsNeedingBackup = getJsonItem(_this10.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
361
- var result = [];
362
- for (var i = 0; i < _this10.store.length; ++i) {
363
- var key = _this10.store.key(i);
364
- if (key !== null && key !== void 0 && key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {
365
- var key2 = key.slice(KEY_INBOUND_SESSION_PREFIX.length);
366
-
367
- // we can't use split, as the components we are trying to split out
368
- // might themselves contain '/' characters. We rely on the
369
- // senderKey being a (32-byte) curve25519 key, base64-encoded
370
- // (hence 43 characters long).
371
-
372
- result.push({
373
- senderKey: key2.slice(0, 43),
374
- sessionId: key2.slice(44),
375
- sessionData: getJsonItem(_this10.store, key),
376
- needsBackup: key2 in sessionsNeedingBackup
377
- });
378
- if (result.length >= SESSION_BATCH_SIZE) {
379
- return result;
380
- }
381
- }
382
- }
383
- if (result.length === 0) {
384
- // No sessions left.
385
- return null;
386
- }
387
-
388
- // There are fewer sessions than the batch size; return the final batch of sessions.
389
- return result;
390
- })();
391
- }
392
-
393
- /**
394
- * Delete a batch of Megolm sessions from the database.
395
- *
396
- * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}.
397
- *
398
- * @internal
399
- */
400
- deleteEndToEndInboundGroupSessionsBatch(sessions) {
401
- var _this11 = this;
402
- return _asyncToGenerator(function* () {
403
- for (var {
404
- senderKey,
405
- sessionId
406
- } of sessions) {
407
- var k = keyEndToEndInboundGroupSession(senderKey, sessionId);
408
- _this11.store.removeItem(k);
409
- }
410
- })();
411
- }
412
- getEndToEndDeviceData(txn, func) {
413
- func(getJsonItem(this.store, KEY_DEVICE_DATA));
414
- }
415
- storeEndToEndDeviceData(deviceData, txn) {
416
- setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);
417
- }
418
- storeEndToEndRoom(roomId, roomInfo, txn) {
419
- setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);
420
- }
421
- getEndToEndRooms(txn, func) {
422
- var result = {};
423
- var prefix = keyEndToEndRoomsPrefix("");
424
- for (var i = 0; i < this.store.length; ++i) {
425
- var key = this.store.key(i);
426
- if (key !== null && key !== void 0 && key.startsWith(prefix)) {
427
- var roomId = key.slice(prefix.length);
428
- result[roomId] = getJsonItem(this.store, key);
429
- }
430
- }
431
- func(result);
432
- }
433
- getSessionsNeedingBackup(limit) {
434
- var _this12 = this;
435
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
436
- var sessions = [];
437
- var _loop = function _loop() {
438
- if (Object.prototype.hasOwnProperty.call(sessionsNeedingBackup, session)) {
439
- // see getAllEndToEndInboundGroupSessions for the magic number explanations
440
- var senderKey = session.slice(0, 43);
441
- var sessionId = session.slice(44);
442
- _this12.getEndToEndInboundGroupSession(senderKey, sessionId, null, sessionData => {
443
- sessions.push({
444
- senderKey: senderKey,
445
- sessionId: sessionId,
446
- sessionData: sessionData
447
- });
448
- });
449
- if (limit && sessions.length >= limit) {
450
- return 1; // break
451
- }
452
- }
453
- };
454
- for (var session in sessionsNeedingBackup) {
455
- if (_loop()) break;
456
- }
457
- return Promise.resolve(sessions);
458
- }
459
- countSessionsNeedingBackup() {
460
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
461
- return Promise.resolve(Object.keys(sessionsNeedingBackup).length);
462
- }
463
- unmarkSessionsNeedingBackup(sessions) {
464
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
465
- for (var session of sessions) {
466
- delete sessionsNeedingBackup[session.senderKey + "/" + session.sessionId];
467
- }
468
- setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);
469
- return Promise.resolve();
470
- }
471
- markSessionsNeedingBackup(sessions) {
472
- var sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};
473
- for (var session of sessions) {
474
- sessionsNeedingBackup[session.senderKey + "/" + session.sessionId] = true;
475
- }
476
- setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);
477
- return Promise.resolve();
478
- }
479
-
480
- /**
481
- * Delete all data from this store.
482
- *
483
- * @returns Promise which resolves when the store has been cleared.
484
- */
485
- deleteAllData() {
486
- this.store.removeItem(KEY_END_TO_END_ACCOUNT);
487
- return Promise.resolve();
488
- }
489
-
490
- // Olm account
491
-
492
- getAccount(txn, func) {
493
- var accountPickle = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT);
494
- func(accountPickle);
495
- }
496
- storeAccount(txn, accountPickle) {
497
- setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, accountPickle);
498
- }
499
- getCrossSigningKeys(txn, func) {
500
- var keys = getJsonItem(this.store, KEY_CROSS_SIGNING_KEYS);
501
- func(keys);
502
- }
503
- getSecretStorePrivateKey(txn, func, type) {
504
- var key = getJsonItem(this.store, E2E_PREFIX + "ssss_cache.".concat(type));
505
- func(key);
506
- }
507
- storeCrossSigningKeys(txn, keys) {
508
- setJsonItem(this.store, KEY_CROSS_SIGNING_KEYS, keys);
509
- }
510
- storeSecretStorePrivateKey(txn, type, key) {
511
- setJsonItem(this.store, E2E_PREFIX + "ssss_cache.".concat(type), key);
512
- }
513
- doTxn(mode, stores, func) {
514
- return Promise.resolve(func(null));
515
- }
516
- }
517
- function getJsonItem(store, key) {
518
- try {
519
- // if the key is absent, store.getItem() returns null, and
520
- // JSON.parse(null) === null, so this returns null.
521
- return JSON.parse(store.getItem(key));
522
- } catch (e) {
523
- logger.log("Error: Failed to get key %s: %s", key, e.message);
524
- logger.log(e.stack);
525
- }
526
- return null;
527
- }
528
- function setJsonItem(store, key, val) {
529
- store.setItem(key, JSON.stringify(val));
530
- }
531
- //# sourceMappingURL=localStorage-crypto-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"localStorage-crypto-store.js","names":["logger","MemoryCryptoStore","MigrationState","SESSION_BATCH_SIZE","safeSet","E2E_PREFIX","KEY_END_TO_END_MIGRATION_STATE","KEY_END_TO_END_ACCOUNT","KEY_CROSS_SIGNING_KEYS","KEY_NOTIFIED_ERROR_DEVICES","KEY_DEVICE_DATA","KEY_INBOUND_SESSION_PREFIX","KEY_INBOUND_SESSION_WITHHELD_PREFIX","KEY_ROOMS_PREFIX","KEY_SESSIONS_NEEDING_BACKUP","keyEndToEndSessions","deviceKey","keyEndToEndSessionProblems","keyEndToEndInboundGroupSession","senderKey","sessionId","keyEndToEndInboundGroupSessionWithheld","keyEndToEndRoomsPrefix","roomId","LocalStorageCryptoStore","exists","store","length","i","_store$key","key","startsWith","constructor","containsData","_this","_asyncToGenerator","getMigrationState","_this2","_getJsonItem","getJsonItem","NOT_STARTED","setMigrationState","migrationState","_this3","setJsonItem","countEndToEndSessions","txn","func","count","sessions","Object","keys","_getEndToEndSessions","fixedSessions","sid","val","entries","session","getEndToEndSession","getEndToEndSessions","getAllEndToEndSessions","_this$store$key","split","sess","values","storeEndToEndSession","sessionInfo","storeEndToEndSessionProblem","type","fixed","_this4","problems","push","time","Date","now","sort","a","b","getEndToEndSessionProblem","timestamp","_this5","lastProblem","problem","assign","filterOutNotifiedErrorDevices","devices","_this6","notifiedErrorDevices","ret","device","userId","deviceInfo","deviceId","getEndToEndSessionsBatch","_this7","result","_this7$store$key","deleteEndToEndSessionsBatch","_this8","deviceSessions","removeItem","getEndToEndInboundGroupSession","senderCurve25519Key","getAllEndToEndInboundGroupSessions","slice","sessionData","addEndToEndInboundGroupSession","existing","storeEndToEndInboundGroupSession","storeEndToEndInboundGroupSessionWithheld","countEndToEndInboundGroupSessions","_this9","getEndToEndInboundGroupSessionsBatch","_this10","sessionsNeedingBackup","key2","needsBackup","deleteEndToEndInboundGroupSessionsBatch","_this11","k","getEndToEndDeviceData","storeEndToEndDeviceData","deviceData","storeEndToEndRoom","roomInfo","getEndToEndRooms","prefix","getSessionsNeedingBackup","limit","_this12","_loop","prototype","hasOwnProperty","call","Promise","resolve","countSessionsNeedingBackup","unmarkSessionsNeedingBackup","markSessionsNeedingBackup","deleteAllData","getAccount","accountPickle","storeAccount","getCrossSigningKeys","getSecretStorePrivateKey","concat","storeCrossSigningKeys","storeSecretStorePrivateKey","doTxn","mode","stores","JSON","parse","getItem","e","log","message","stack","setItem","stringify"],"sources":["../../../src/crypto/store/localStorage-crypto-store.ts"],"sourcesContent":["/*\nCopyright 2017 - 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 { logger } from \"../../logger.ts\";\nimport { MemoryCryptoStore } from \"./memory-crypto-store.ts\";\nimport {\n CryptoStore,\n IDeviceData,\n IProblem,\n ISession,\n SessionExtended,\n ISessionInfo,\n IWithheld,\n MigrationState,\n Mode,\n SecretStorePrivateKeys,\n SESSION_BATCH_SIZE,\n} from \"./base.ts\";\nimport { IOlmDevice } from \"../algorithms/megolm.ts\";\nimport { IRoomEncryption } from \"../RoomList.ts\";\nimport { InboundGroupSessionData } from \"../OlmDevice.ts\";\nimport { safeSet } from \"../../utils.ts\";\nimport { CrossSigningKeyInfo } from \"../../crypto-api/index.ts\";\n\n/**\n * Internal module. Partial localStorage backed storage for e2e.\n * This is not a full crypto store, just the in-memory store with\n * some things backed by localStorage. It exists because indexedDB\n * is broken in Firefox private mode or set to, \"will not remember\n * history\".\n */\n\nconst E2E_PREFIX = \"crypto.\";\nconst KEY_END_TO_END_MIGRATION_STATE = E2E_PREFIX + \"migration\";\nconst KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nconst KEY_CROSS_SIGNING_KEYS = E2E_PREFIX + \"cross_signing_keys\";\nconst KEY_NOTIFIED_ERROR_DEVICES = E2E_PREFIX + \"notified_error_devices\";\nconst KEY_DEVICE_DATA = E2E_PREFIX + \"device_data\";\nconst KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + \"inboundgroupsessions/\";\nconst KEY_INBOUND_SESSION_WITHHELD_PREFIX = E2E_PREFIX + \"inboundgroupsessions.withheld/\";\nconst KEY_ROOMS_PREFIX = E2E_PREFIX + \"rooms/\";\nconst KEY_SESSIONS_NEEDING_BACKUP = E2E_PREFIX + \"sessionsneedingbackup\";\n\nfunction keyEndToEndSessions(deviceKey: string): string {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndSessionProblems(deviceKey: string): string {\n return E2E_PREFIX + \"session.problems/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey: string, sessionId: string): string {\n return KEY_INBOUND_SESSION_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndInboundGroupSessionWithheld(senderKey: string, sessionId: string): string {\n return KEY_INBOUND_SESSION_WITHHELD_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoomsPrefix(roomId: string): string {\n return KEY_ROOMS_PREFIX + roomId;\n}\n\nexport class LocalStorageCryptoStore extends MemoryCryptoStore implements CryptoStore {\n public static exists(store: Storage): boolean {\n const length = store.length;\n for (let i = 0; i < length; i++) {\n if (store.key(i)?.startsWith(E2E_PREFIX)) {\n return true;\n }\n }\n return false;\n }\n\n public constructor(private readonly store: Storage) {\n super();\n }\n\n /**\n * Returns true if this CryptoStore has ever been initialised (ie, it might contain data).\n *\n * Implementation of {@link CryptoStore.containsData}.\n *\n * @internal\n */\n public async containsData(): Promise<boolean> {\n return LocalStorageCryptoStore.exists(this.store);\n }\n\n /**\n * Get data on how much of the libolm to Rust Crypto migration has been done.\n *\n * Implementation of {@link CryptoStore.getMigrationState}.\n *\n * @internal\n */\n public async getMigrationState(): Promise<MigrationState> {\n return getJsonItem(this.store, KEY_END_TO_END_MIGRATION_STATE) ?? MigrationState.NOT_STARTED;\n }\n\n /**\n * Set data on how much of the libolm to Rust Crypto migration has been done.\n *\n * Implementation of {@link CryptoStore.setMigrationState}.\n *\n * @internal\n */\n public async setMigrationState(migrationState: MigrationState): Promise<void> {\n setJsonItem(this.store, KEY_END_TO_END_MIGRATION_STATE, migrationState);\n }\n\n // Olm Sessions\n\n public countEndToEndSessions(txn: unknown, func: (count: number) => void): void {\n let count = 0;\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(keyEndToEndSessions(\"\"))) {\n const sessions = getJsonItem(this.store, key);\n count += Object.keys(sessions ?? {}).length;\n }\n }\n func(count);\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n private _getEndToEndSessions(deviceKey: string): Record<string, ISessionInfo> {\n const sessions = getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n const fixedSessions: Record<string, ISessionInfo> = {};\n\n // fix up any old sessions to be objects rather than just the base64 pickle\n for (const [sid, val] of Object.entries(sessions || {})) {\n if (typeof val === \"string\") {\n fixedSessions[sid] = {\n session: val,\n };\n } else {\n fixedSessions[sid] = val;\n }\n }\n\n return fixedSessions;\n }\n\n public getEndToEndSession(\n deviceKey: string,\n sessionId: string,\n txn: unknown,\n func: (session: ISessionInfo) => void,\n ): void {\n const sessions = this._getEndToEndSessions(deviceKey);\n func(sessions[sessionId] || {});\n }\n\n public getEndToEndSessions(\n deviceKey: string,\n txn: unknown,\n func: (sessions: { [sessionId: string]: ISessionInfo }) => void,\n ): void {\n func(this._getEndToEndSessions(deviceKey) || {});\n }\n\n public getAllEndToEndSessions(txn: unknown, func: (session: ISessionInfo) => void): void {\n for (let i = 0; i < this.store.length; ++i) {\n if (this.store.key(i)?.startsWith(keyEndToEndSessions(\"\"))) {\n const deviceKey = this.store.key(i)!.split(\"/\")[1];\n for (const sess of Object.values(this._getEndToEndSessions(deviceKey))) {\n func(sess);\n }\n }\n }\n }\n\n public storeEndToEndSession(deviceKey: string, sessionId: string, sessionInfo: ISessionInfo, txn: unknown): void {\n const sessions = this._getEndToEndSessions(deviceKey) || {};\n sessions[sessionId] = sessionInfo;\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);\n }\n\n public async storeEndToEndSessionProblem(deviceKey: string, type: string, fixed: boolean): Promise<void> {\n const key = keyEndToEndSessionProblems(deviceKey);\n const problems = getJsonItem<IProblem[]>(this.store, key) || [];\n problems.push({ type, fixed, time: Date.now() });\n problems.sort((a, b) => {\n return a.time - b.time;\n });\n setJsonItem(this.store, key, problems);\n }\n\n public async getEndToEndSessionProblem(deviceKey: string, timestamp: number): Promise<IProblem | null> {\n const key = keyEndToEndSessionProblems(deviceKey);\n const problems = getJsonItem<IProblem[]>(this.store, key) || [];\n if (!problems.length) {\n return null;\n }\n const lastProblem = problems[problems.length - 1];\n for (const problem of problems) {\n if (problem.time > timestamp) {\n return Object.assign({}, problem, { fixed: lastProblem.fixed });\n }\n }\n if (lastProblem.fixed) {\n return null;\n } else {\n return lastProblem;\n }\n }\n\n public async filterOutNotifiedErrorDevices(devices: IOlmDevice[]): Promise<IOlmDevice[]> {\n const notifiedErrorDevices =\n getJsonItem<MemoryCryptoStore[\"notifiedErrorDevices\"]>(this.store, KEY_NOTIFIED_ERROR_DEVICES) || {};\n const ret: IOlmDevice[] = [];\n\n for (const device of devices) {\n const { userId, deviceInfo } = device;\n if (userId in notifiedErrorDevices) {\n if (!(deviceInfo.deviceId in notifiedErrorDevices[userId])) {\n ret.push(device);\n safeSet(notifiedErrorDevices[userId], deviceInfo.deviceId, true);\n }\n } else {\n ret.push(device);\n safeSet(notifiedErrorDevices, userId, { [deviceInfo.deviceId]: true });\n }\n }\n\n setJsonItem(this.store, KEY_NOTIFIED_ERROR_DEVICES, notifiedErrorDevices);\n\n return ret;\n }\n\n /**\n * Fetch a batch of Olm sessions from the database.\n *\n * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}.\n *\n * @internal\n */\n public async getEndToEndSessionsBatch(): Promise<null | ISessionInfo[]> {\n const result: ISessionInfo[] = [];\n for (let i = 0; i < this.store.length; ++i) {\n if (this.store.key(i)?.startsWith(keyEndToEndSessions(\"\"))) {\n const deviceKey = this.store.key(i)!.split(\"/\")[1];\n for (const session of Object.values(this._getEndToEndSessions(deviceKey))) {\n result.push(session);\n if (result.length >= SESSION_BATCH_SIZE) {\n return result;\n }\n }\n }\n }\n\n if (result.length === 0) {\n // No sessions left.\n return null;\n }\n\n // There are fewer sessions than the batch size; return the final batch of sessions.\n return result;\n }\n\n /**\n * Delete a batch of Olm sessions from the database.\n *\n * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}.\n *\n * @internal\n */\n public async deleteEndToEndSessionsBatch(sessions: { deviceKey: string; sessionId: string }[]): Promise<void> {\n for (const { deviceKey, sessionId } of sessions) {\n const deviceSessions = this._getEndToEndSessions(deviceKey) || {};\n delete deviceSessions[sessionId];\n if (Object.keys(deviceSessions).length === 0) {\n // No more sessions for this device.\n this.store.removeItem(keyEndToEndSessions(deviceKey));\n } else {\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), deviceSessions);\n }\n }\n }\n\n // Inbound Group Sessions\n\n public getEndToEndInboundGroupSession(\n senderCurve25519Key: string,\n sessionId: string,\n txn: unknown,\n func: (groupSession: InboundGroupSessionData | null, groupSessionWithheld: IWithheld | null) => void,\n ): void {\n func(\n getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)),\n getJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId)),\n );\n }\n\n public getAllEndToEndInboundGroupSessions(txn: unknown, func: (session: ISession | null) => void): void {\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.slice(KEY_INBOUND_SESSION_PREFIX.length, KEY_INBOUND_SESSION_PREFIX.length + 43),\n sessionId: key.slice(KEY_INBOUND_SESSION_PREFIX.length + 44),\n sessionData: getJsonItem(this.store, key)!,\n });\n }\n }\n func(null);\n }\n\n public addEndToEndInboundGroupSession(\n senderCurve25519Key: string,\n sessionId: string,\n sessionData: InboundGroupSessionData,\n txn: unknown,\n ): void {\n const existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));\n if (!existing) {\n this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n }\n\n public storeEndToEndInboundGroupSession(\n senderCurve25519Key: string,\n sessionId: string,\n sessionData: InboundGroupSessionData,\n txn: unknown,\n ): void {\n setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);\n }\n\n public storeEndToEndInboundGroupSessionWithheld(\n senderCurve25519Key: string,\n sessionId: string,\n sessionData: IWithheld,\n txn: unknown,\n ): void {\n setJsonItem(this.store, keyEndToEndInboundGroupSessionWithheld(senderCurve25519Key, sessionId), sessionData);\n }\n\n /**\n * Count the number of Megolm sessions in the database.\n *\n * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}.\n *\n * @internal\n */\n public async countEndToEndInboundGroupSessions(): Promise<number> {\n let count = 0;\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n count += 1;\n }\n }\n return count;\n }\n\n /**\n * Fetch a batch of Megolm sessions from the database.\n *\n * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}.\n *\n * @internal\n */\n public async getEndToEndInboundGroupSessionsBatch(): Promise<SessionExtended[] | null> {\n const sessionsNeedingBackup = getJsonItem<string[]>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n const result: SessionExtended[] = [];\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n const key2 = key.slice(KEY_INBOUND_SESSION_PREFIX.length);\n\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n result.push({\n senderKey: key2.slice(0, 43),\n sessionId: key2.slice(44),\n sessionData: getJsonItem(this.store, key)!,\n needsBackup: key2 in sessionsNeedingBackup,\n });\n\n if (result.length >= SESSION_BATCH_SIZE) {\n return result;\n }\n }\n }\n\n if (result.length === 0) {\n // No sessions left.\n return null;\n }\n\n // There are fewer sessions than the batch size; return the final batch of sessions.\n return result;\n }\n\n /**\n * Delete a batch of Megolm sessions from the database.\n *\n * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}.\n *\n * @internal\n */\n public async deleteEndToEndInboundGroupSessionsBatch(\n sessions: { senderKey: string; sessionId: string }[],\n ): Promise<void> {\n for (const { senderKey, sessionId } of sessions) {\n const k = keyEndToEndInboundGroupSession(senderKey, sessionId);\n this.store.removeItem(k);\n }\n }\n\n public getEndToEndDeviceData(txn: unknown, func: (deviceData: IDeviceData | null) => void): void {\n func(getJsonItem(this.store, KEY_DEVICE_DATA));\n }\n\n public storeEndToEndDeviceData(deviceData: IDeviceData, txn: unknown): void {\n setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);\n }\n\n public storeEndToEndRoom(roomId: string, roomInfo: IRoomEncryption, txn: unknown): void {\n setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);\n }\n\n public getEndToEndRooms(txn: unknown, func: (rooms: Record<string, IRoomEncryption>) => void): void {\n const result: Record<string, IRoomEncryption> = {};\n const prefix = keyEndToEndRoomsPrefix(\"\");\n\n for (let i = 0; i < this.store.length; ++i) {\n const key = this.store.key(i);\n if (key?.startsWith(prefix)) {\n const roomId = key.slice(prefix.length);\n result[roomId] = getJsonItem(this.store, key)!;\n }\n }\n func(result);\n }\n\n public getSessionsNeedingBackup(limit: number): Promise<ISession[]> {\n const sessionsNeedingBackup = getJsonItem<string[]>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n const sessions: ISession[] = [];\n\n for (const session in sessionsNeedingBackup) {\n if (Object.prototype.hasOwnProperty.call(sessionsNeedingBackup, session)) {\n // see getAllEndToEndInboundGroupSessions for the magic number explanations\n const senderKey = session.slice(0, 43);\n const sessionId = session.slice(44);\n this.getEndToEndInboundGroupSession(senderKey, sessionId, null, (sessionData) => {\n sessions.push({\n senderKey: senderKey,\n sessionId: sessionId,\n sessionData: sessionData!,\n });\n });\n if (limit && sessions.length >= limit) {\n break;\n }\n }\n }\n return Promise.resolve(sessions);\n }\n\n public countSessionsNeedingBackup(): Promise<number> {\n const sessionsNeedingBackup = getJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n return Promise.resolve(Object.keys(sessionsNeedingBackup).length);\n }\n\n public unmarkSessionsNeedingBackup(sessions: ISession[]): Promise<void> {\n const sessionsNeedingBackup =\n getJsonItem<{\n [senderKeySessionId: string]: string;\n }>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n for (const session of sessions) {\n delete sessionsNeedingBackup[session.senderKey + \"/\" + session.sessionId];\n }\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return Promise.resolve();\n }\n\n public markSessionsNeedingBackup(sessions: ISession[]): Promise<void> {\n const sessionsNeedingBackup =\n getJsonItem<{\n [senderKeySessionId: string]: boolean;\n }>(this.store, KEY_SESSIONS_NEEDING_BACKUP) || {};\n for (const session of sessions) {\n sessionsNeedingBackup[session.senderKey + \"/\" + session.sessionId] = true;\n }\n setJsonItem(this.store, KEY_SESSIONS_NEEDING_BACKUP, sessionsNeedingBackup);\n return Promise.resolve();\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns Promise which resolves when the store has been cleared.\n */\n public deleteAllData(): Promise<void> {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n return Promise.resolve();\n }\n\n // Olm account\n\n public getAccount(txn: unknown, func: (accountPickle: string | null) => void): void {\n const accountPickle = getJsonItem<string>(this.store, KEY_END_TO_END_ACCOUNT);\n func(accountPickle);\n }\n\n public storeAccount(txn: unknown, accountPickle: string): void {\n setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, accountPickle);\n }\n\n public getCrossSigningKeys(txn: unknown, func: (keys: Record<string, CrossSigningKeyInfo> | null) => void): void {\n const keys = getJsonItem<Record<string, CrossSigningKeyInfo>>(this.store, KEY_CROSS_SIGNING_KEYS);\n func(keys);\n }\n\n public getSecretStorePrivateKey<K extends keyof SecretStorePrivateKeys>(\n txn: unknown,\n func: (key: SecretStorePrivateKeys[K] | null) => void,\n type: K,\n ): void {\n const key = getJsonItem<SecretStorePrivateKeys[K]>(this.store, E2E_PREFIX + `ssss_cache.${type}`);\n func(key);\n }\n\n public storeCrossSigningKeys(txn: unknown, keys: Record<string, CrossSigningKeyInfo>): void {\n setJsonItem(this.store, KEY_CROSS_SIGNING_KEYS, keys);\n }\n\n public storeSecretStorePrivateKey<K extends keyof SecretStorePrivateKeys>(\n txn: unknown,\n type: K,\n key: SecretStorePrivateKeys[K],\n ): void {\n setJsonItem(this.store, E2E_PREFIX + `ssss_cache.${type}`, key);\n }\n\n public doTxn<T>(mode: Mode, stores: Iterable<string>, func: (txn: unknown) => T): Promise<T> {\n return Promise.resolve(func(null));\n }\n}\n\nfunction getJsonItem<T>(store: Storage, key: string): T | null {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key)!);\n } catch (e) {\n logger.log(\"Error: Failed to get key %s: %s\", key, (<Error>e).message);\n logger.log((<Error>e).stack);\n }\n return null;\n}\n\nfunction setJsonItem<T>(store: Storage, key: string, val: T): void {\n store.setItem(key, JSON.stringify(val));\n}\n"],"mappings":"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","ignoreList":[]}