@unwanted/matrix-sdk-mini 34.12.0-1

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 (1203) hide show
  1. package/CHANGELOG.md +5910 -0
  2. package/LICENSE +177 -0
  3. package/README.md +459 -0
  4. package/git-revision.txt +1 -0
  5. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +14 -0
  6. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +1 -0
  7. package/lib/@types/AESEncryptedSecretStoragePayload.js +1 -0
  8. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +1 -0
  9. package/lib/@types/IIdentityServerProvider.d.ts +9 -0
  10. package/lib/@types/IIdentityServerProvider.d.ts.map +1 -0
  11. package/lib/@types/IIdentityServerProvider.js +1 -0
  12. package/lib/@types/IIdentityServerProvider.js.map +1 -0
  13. package/lib/@types/PushRules.d.ts +140 -0
  14. package/lib/@types/PushRules.d.ts.map +1 -0
  15. package/lib/@types/PushRules.js +94 -0
  16. package/lib/@types/PushRules.js.map +1 -0
  17. package/lib/@types/another-json.d.js +0 -0
  18. package/lib/@types/another-json.d.js.map +1 -0
  19. package/lib/@types/auth.d.ts +208 -0
  20. package/lib/@types/auth.d.ts.map +1 -0
  21. package/lib/@types/auth.js +99 -0
  22. package/lib/@types/auth.js.map +1 -0
  23. package/lib/@types/beacon.d.ts +106 -0
  24. package/lib/@types/beacon.d.ts.map +1 -0
  25. package/lib/@types/beacon.js +119 -0
  26. package/lib/@types/beacon.js.map +1 -0
  27. package/lib/@types/common.d.ts +9 -0
  28. package/lib/@types/common.d.ts.map +1 -0
  29. package/lib/@types/common.js +1 -0
  30. package/lib/@types/common.js.map +1 -0
  31. package/lib/@types/crypto.d.ts +47 -0
  32. package/lib/@types/crypto.d.ts.map +1 -0
  33. package/lib/@types/crypto.js +1 -0
  34. package/lib/@types/crypto.js.map +1 -0
  35. package/lib/@types/event.d.ts +258 -0
  36. package/lib/@types/event.d.ts.map +1 -0
  37. package/lib/@types/event.js +239 -0
  38. package/lib/@types/event.js.map +1 -0
  39. package/lib/@types/events.d.ts +92 -0
  40. package/lib/@types/events.d.ts.map +1 -0
  41. package/lib/@types/events.js +1 -0
  42. package/lib/@types/events.js.map +1 -0
  43. package/lib/@types/extensible_events.d.ts +98 -0
  44. package/lib/@types/extensible_events.d.ts.map +1 -0
  45. package/lib/@types/extensible_events.js +116 -0
  46. package/lib/@types/extensible_events.js.map +1 -0
  47. package/lib/@types/global.d.js +20 -0
  48. package/lib/@types/global.d.js.map +1 -0
  49. package/lib/@types/local_notifications.d.ts +4 -0
  50. package/lib/@types/local_notifications.d.ts.map +1 -0
  51. package/lib/@types/local_notifications.js +1 -0
  52. package/lib/@types/local_notifications.js.map +1 -0
  53. package/lib/@types/location.d.ts +60 -0
  54. package/lib/@types/location.d.ts.map +1 -0
  55. package/lib/@types/location.js +67 -0
  56. package/lib/@types/location.js.map +1 -0
  57. package/lib/@types/matrix-sdk-crypto-wasm.d.js +1 -0
  58. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +1 -0
  59. package/lib/@types/media.d.ts +220 -0
  60. package/lib/@types/media.d.ts.map +1 -0
  61. package/lib/@types/media.js +1 -0
  62. package/lib/@types/media.js.map +1 -0
  63. package/lib/@types/membership.d.ts +41 -0
  64. package/lib/@types/membership.d.ts.map +1 -0
  65. package/lib/@types/membership.js +37 -0
  66. package/lib/@types/membership.js.map +1 -0
  67. package/lib/@types/oidc-client-ts.d.js +18 -0
  68. package/lib/@types/oidc-client-ts.d.js.map +1 -0
  69. package/lib/@types/partials.d.ts +39 -0
  70. package/lib/@types/partials.d.ts.map +1 -0
  71. package/lib/@types/partials.js +53 -0
  72. package/lib/@types/partials.js.map +1 -0
  73. package/lib/@types/polls.d.ts +88 -0
  74. package/lib/@types/polls.d.ts.map +1 -0
  75. package/lib/@types/polls.js +86 -0
  76. package/lib/@types/polls.js.map +1 -0
  77. package/lib/@types/read_receipts.d.ts +36 -0
  78. package/lib/@types/read_receipts.d.ts.map +1 -0
  79. package/lib/@types/read_receipts.js +27 -0
  80. package/lib/@types/read_receipts.js.map +1 -0
  81. package/lib/@types/registration.d.ts +85 -0
  82. package/lib/@types/registration.d.ts.map +1 -0
  83. package/lib/@types/registration.js +1 -0
  84. package/lib/@types/registration.js.map +1 -0
  85. package/lib/@types/requests.d.ts +241 -0
  86. package/lib/@types/requests.d.ts.map +1 -0
  87. package/lib/@types/requests.js +28 -0
  88. package/lib/@types/requests.js.map +1 -0
  89. package/lib/@types/search.d.ts +90 -0
  90. package/lib/@types/search.d.ts.map +1 -0
  91. package/lib/@types/search.js +30 -0
  92. package/lib/@types/search.js.map +1 -0
  93. package/lib/@types/signed.d.ts +9 -0
  94. package/lib/@types/signed.d.ts.map +1 -0
  95. package/lib/@types/signed.js +1 -0
  96. package/lib/@types/signed.js.map +1 -0
  97. package/lib/@types/spaces.d.ts +16 -0
  98. package/lib/@types/spaces.d.ts.map +1 -0
  99. package/lib/@types/spaces.js +1 -0
  100. package/lib/@types/spaces.js.map +1 -0
  101. package/lib/@types/state_events.d.ts +116 -0
  102. package/lib/@types/state_events.d.ts.map +1 -0
  103. package/lib/@types/state_events.js +1 -0
  104. package/lib/@types/state_events.js.map +1 -0
  105. package/lib/@types/synapse.d.ts +19 -0
  106. package/lib/@types/synapse.d.ts.map +1 -0
  107. package/lib/@types/synapse.js +1 -0
  108. package/lib/@types/synapse.js.map +1 -0
  109. package/lib/@types/sync.d.ts +8 -0
  110. package/lib/@types/sync.d.ts.map +1 -0
  111. package/lib/@types/sync.js +25 -0
  112. package/lib/@types/sync.js.map +1 -0
  113. package/lib/@types/threepids.d.ts +12 -0
  114. package/lib/@types/threepids.d.ts.map +1 -0
  115. package/lib/@types/threepids.js +24 -0
  116. package/lib/@types/threepids.js.map +1 -0
  117. package/lib/@types/topic.d.ts +48 -0
  118. package/lib/@types/topic.d.ts.map +1 -0
  119. package/lib/@types/topic.js +57 -0
  120. package/lib/@types/topic.js.map +1 -0
  121. package/lib/@types/uia.d.ts +12 -0
  122. package/lib/@types/uia.d.ts.map +1 -0
  123. package/lib/@types/uia.js +1 -0
  124. package/lib/@types/uia.js.map +1 -0
  125. package/lib/NamespacedValue.d.ts +33 -0
  126. package/lib/NamespacedValue.d.ts.map +1 -0
  127. package/lib/NamespacedValue.js +113 -0
  128. package/lib/NamespacedValue.js.map +1 -0
  129. package/lib/ReEmitter.d.ts +15 -0
  130. package/lib/ReEmitter.d.ts.map +1 -0
  131. package/lib/ReEmitter.js +87 -0
  132. package/lib/ReEmitter.js.map +1 -0
  133. package/lib/ToDeviceMessageQueue.d.ts +28 -0
  134. package/lib/ToDeviceMessageQueue.d.ts.map +1 -0
  135. package/lib/ToDeviceMessageQueue.js +135 -0
  136. package/lib/ToDeviceMessageQueue.js.map +1 -0
  137. package/lib/autodiscovery.d.ts +136 -0
  138. package/lib/autodiscovery.d.ts.map +1 -0
  139. package/lib/autodiscovery.js +464 -0
  140. package/lib/autodiscovery.js.map +1 -0
  141. package/lib/base64.d.ts +28 -0
  142. package/lib/base64.d.ts.map +1 -0
  143. package/lib/base64.js +88 -0
  144. package/lib/base64.js.map +1 -0
  145. package/lib/browser-index.d.ts +8 -0
  146. package/lib/browser-index.d.ts.map +1 -0
  147. package/lib/browser-index.js +35 -0
  148. package/lib/browser-index.js.map +1 -0
  149. package/lib/client.d.ts +4232 -0
  150. package/lib/client.d.ts.map +1 -0
  151. package/lib/client.js +8622 -0
  152. package/lib/client.js.map +1 -0
  153. package/lib/common-crypto/CryptoBackend.d.ts +240 -0
  154. package/lib/common-crypto/CryptoBackend.d.ts.map +1 -0
  155. package/lib/common-crypto/CryptoBackend.js +73 -0
  156. package/lib/common-crypto/CryptoBackend.js.map +1 -0
  157. package/lib/common-crypto/key-passphrase.d.ts +14 -0
  158. package/lib/common-crypto/key-passphrase.d.ts.map +1 -0
  159. package/lib/common-crypto/key-passphrase.js +33 -0
  160. package/lib/common-crypto/key-passphrase.js.map +1 -0
  161. package/lib/content-helpers.d.ts +90 -0
  162. package/lib/content-helpers.d.ts.map +1 -0
  163. package/lib/content-helpers.js +250 -0
  164. package/lib/content-helpers.js.map +1 -0
  165. package/lib/content-repo.d.ts +24 -0
  166. package/lib/content-repo.d.ts.map +1 -0
  167. package/lib/content-repo.js +104 -0
  168. package/lib/content-repo.js.map +1 -0
  169. package/lib/crypto/CrossSigning.d.ts +184 -0
  170. package/lib/crypto/CrossSigning.d.ts.map +1 -0
  171. package/lib/crypto/CrossSigning.js +718 -0
  172. package/lib/crypto/CrossSigning.js.map +1 -0
  173. package/lib/crypto/DeviceList.d.ts +216 -0
  174. package/lib/crypto/DeviceList.d.ts.map +1 -0
  175. package/lib/crypto/DeviceList.js +892 -0
  176. package/lib/crypto/DeviceList.js.map +1 -0
  177. package/lib/crypto/EncryptionSetup.d.ts +152 -0
  178. package/lib/crypto/EncryptionSetup.d.ts.map +1 -0
  179. package/lib/crypto/EncryptionSetup.js +356 -0
  180. package/lib/crypto/EncryptionSetup.js.map +1 -0
  181. package/lib/crypto/OlmDevice.d.ts +457 -0
  182. package/lib/crypto/OlmDevice.d.ts.map +1 -0
  183. package/lib/crypto/OlmDevice.js +1241 -0
  184. package/lib/crypto/OlmDevice.js.map +1 -0
  185. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts +109 -0
  186. package/lib/crypto/OutgoingRoomKeyRequestManager.d.ts.map +1 -0
  187. package/lib/crypto/OutgoingRoomKeyRequestManager.js +415 -0
  188. package/lib/crypto/OutgoingRoomKeyRequestManager.js.map +1 -0
  189. package/lib/crypto/RoomList.d.ts +26 -0
  190. package/lib/crypto/RoomList.d.ts.map +1 -0
  191. package/lib/crypto/RoomList.js +71 -0
  192. package/lib/crypto/RoomList.js.map +1 -0
  193. package/lib/crypto/SecretSharing.d.ts +24 -0
  194. package/lib/crypto/SecretSharing.d.ts.map +1 -0
  195. package/lib/crypto/SecretSharing.js +194 -0
  196. package/lib/crypto/SecretSharing.js.map +1 -0
  197. package/lib/crypto/SecretStorage.d.ts +55 -0
  198. package/lib/crypto/SecretStorage.d.ts.map +1 -0
  199. package/lib/crypto/SecretStorage.js +118 -0
  200. package/lib/crypto/SecretStorage.js.map +1 -0
  201. package/lib/crypto/aes.d.ts +6 -0
  202. package/lib/crypto/aes.d.ts.map +1 -0
  203. package/lib/crypto/aes.js +24 -0
  204. package/lib/crypto/aes.js.map +1 -0
  205. package/lib/crypto/algorithms/base.d.ts +156 -0
  206. package/lib/crypto/algorithms/base.d.ts.map +1 -0
  207. package/lib/crypto/algorithms/base.js +187 -0
  208. package/lib/crypto/algorithms/base.js.map +1 -0
  209. package/lib/crypto/algorithms/index.d.ts +4 -0
  210. package/lib/crypto/algorithms/index.d.ts.map +1 -0
  211. package/lib/crypto/algorithms/index.js +20 -0
  212. package/lib/crypto/algorithms/index.js.map +1 -0
  213. package/lib/crypto/algorithms/megolm.d.ts +385 -0
  214. package/lib/crypto/algorithms/megolm.d.ts.map +1 -0
  215. package/lib/crypto/algorithms/megolm.js +1822 -0
  216. package/lib/crypto/algorithms/megolm.js.map +1 -0
  217. package/lib/crypto/algorithms/olm.d.ts +5 -0
  218. package/lib/crypto/algorithms/olm.d.ts.map +1 -0
  219. package/lib/crypto/algorithms/olm.js +299 -0
  220. package/lib/crypto/algorithms/olm.js.map +1 -0
  221. package/lib/crypto/api.d.ts +32 -0
  222. package/lib/crypto/api.d.ts.map +1 -0
  223. package/lib/crypto/api.js +22 -0
  224. package/lib/crypto/api.js.map +1 -0
  225. package/lib/crypto/backup.d.ts +227 -0
  226. package/lib/crypto/backup.d.ts.map +1 -0
  227. package/lib/crypto/backup.js +824 -0
  228. package/lib/crypto/backup.js.map +1 -0
  229. package/lib/crypto/crypto.d.ts +3 -0
  230. package/lib/crypto/crypto.d.ts.map +1 -0
  231. package/lib/crypto/crypto.js +19 -0
  232. package/lib/crypto/crypto.js.map +1 -0
  233. package/lib/crypto/dehydration.d.ts +34 -0
  234. package/lib/crypto/dehydration.d.ts.map +1 -0
  235. package/lib/crypto/dehydration.js +252 -0
  236. package/lib/crypto/dehydration.js.map +1 -0
  237. package/lib/crypto/device-converter.d.ts +9 -0
  238. package/lib/crypto/device-converter.d.ts.map +1 -0
  239. package/lib/crypto/device-converter.js +42 -0
  240. package/lib/crypto/device-converter.js.map +1 -0
  241. package/lib/crypto/deviceinfo.d.ts +99 -0
  242. package/lib/crypto/deviceinfo.d.ts.map +1 -0
  243. package/lib/crypto/deviceinfo.js +148 -0
  244. package/lib/crypto/deviceinfo.js.map +1 -0
  245. package/lib/crypto/index.d.ts +1209 -0
  246. package/lib/crypto/index.d.ts.map +1 -0
  247. package/lib/crypto/index.js +4097 -0
  248. package/lib/crypto/index.js.map +1 -0
  249. package/lib/crypto/key_passphrase.d.ts +14 -0
  250. package/lib/crypto/key_passphrase.d.ts.map +1 -0
  251. package/lib/crypto/key_passphrase.js +44 -0
  252. package/lib/crypto/key_passphrase.js.map +1 -0
  253. package/lib/crypto/keybackup.d.ts +18 -0
  254. package/lib/crypto/keybackup.d.ts.map +1 -0
  255. package/lib/crypto/keybackup.js +1 -0
  256. package/lib/crypto/keybackup.js.map +1 -0
  257. package/lib/crypto/olmlib.d.ts +129 -0
  258. package/lib/crypto/olmlib.d.ts.map +1 -0
  259. package/lib/crypto/olmlib.js +492 -0
  260. package/lib/crypto/olmlib.js.map +1 -0
  261. package/lib/crypto/recoverykey.d.ts +2 -0
  262. package/lib/crypto/recoverykey.d.ts.map +1 -0
  263. package/lib/crypto/recoverykey.js +19 -0
  264. package/lib/crypto/recoverykey.js.map +1 -0
  265. package/lib/crypto/store/base.d.ts +252 -0
  266. package/lib/crypto/store/base.d.ts.map +1 -0
  267. package/lib/crypto/store/base.js +64 -0
  268. package/lib/crypto/store/base.js.map +1 -0
  269. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +187 -0
  270. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +1 -0
  271. package/lib/crypto/store/indexeddb-crypto-store-backend.js +1145 -0
  272. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -0
  273. package/lib/crypto/store/indexeddb-crypto-store.d.ts +432 -0
  274. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +1 -0
  275. package/lib/crypto/store/indexeddb-crypto-store.js +728 -0
  276. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -0
  277. package/lib/crypto/store/localStorage-crypto-store.d.ts +119 -0
  278. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +1 -0
  279. package/lib/crypto/store/localStorage-crypto-store.js +531 -0
  280. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -0
  281. package/lib/crypto/store/memory-crypto-store.d.ts +215 -0
  282. package/lib/crypto/store/memory-crypto-store.d.ts.map +1 -0
  283. package/lib/crypto/store/memory-crypto-store.js +622 -0
  284. package/lib/crypto/store/memory-crypto-store.js.map +1 -0
  285. package/lib/crypto/verification/Base.d.ts +105 -0
  286. package/lib/crypto/verification/Base.d.ts.map +1 -0
  287. package/lib/crypto/verification/Base.js +372 -0
  288. package/lib/crypto/verification/Base.js.map +1 -0
  289. package/lib/crypto/verification/Error.d.ts +35 -0
  290. package/lib/crypto/verification/Error.d.ts.map +1 -0
  291. package/lib/crypto/verification/Error.js +86 -0
  292. package/lib/crypto/verification/Error.js.map +1 -0
  293. package/lib/crypto/verification/IllegalMethod.d.ts +15 -0
  294. package/lib/crypto/verification/IllegalMethod.d.ts.map +1 -0
  295. package/lib/crypto/verification/IllegalMethod.js +43 -0
  296. package/lib/crypto/verification/IllegalMethod.js.map +1 -0
  297. package/lib/crypto/verification/QRCode.d.ts +51 -0
  298. package/lib/crypto/verification/QRCode.d.ts.map +1 -0
  299. package/lib/crypto/verification/QRCode.js +277 -0
  300. package/lib/crypto/verification/QRCode.js.map +1 -0
  301. package/lib/crypto/verification/SAS.d.ts +27 -0
  302. package/lib/crypto/verification/SAS.d.ts.map +1 -0
  303. package/lib/crypto/verification/SAS.js +485 -0
  304. package/lib/crypto/verification/SAS.js.map +1 -0
  305. package/lib/crypto/verification/SASDecimal.d.ts +8 -0
  306. package/lib/crypto/verification/SASDecimal.d.ts.map +1 -0
  307. package/lib/crypto/verification/SASDecimal.js +34 -0
  308. package/lib/crypto/verification/SASDecimal.js.map +1 -0
  309. package/lib/crypto/verification/request/Channel.d.ts +18 -0
  310. package/lib/crypto/verification/request/Channel.d.ts.map +1 -0
  311. package/lib/crypto/verification/request/Channel.js +1 -0
  312. package/lib/crypto/verification/request/Channel.js.map +1 -0
  313. package/lib/crypto/verification/request/InRoomChannel.d.ts +113 -0
  314. package/lib/crypto/verification/request/InRoomChannel.d.ts.map +1 -0
  315. package/lib/crypto/verification/request/InRoomChannel.js +351 -0
  316. package/lib/crypto/verification/request/InRoomChannel.js.map +1 -0
  317. package/lib/crypto/verification/request/ToDeviceChannel.d.ts +105 -0
  318. package/lib/crypto/verification/request/ToDeviceChannel.d.ts.map +1 -0
  319. package/lib/crypto/verification/request/ToDeviceChannel.js +328 -0
  320. package/lib/crypto/verification/request/ToDeviceChannel.js.map +1 -0
  321. package/lib/crypto/verification/request/VerificationRequest.d.ts +227 -0
  322. package/lib/crypto/verification/request/VerificationRequest.d.ts.map +1 -0
  323. package/lib/crypto/verification/request/VerificationRequest.js +937 -0
  324. package/lib/crypto/verification/request/VerificationRequest.js.map +1 -0
  325. package/lib/crypto-api/CryptoEvent.d.ts +69 -0
  326. package/lib/crypto-api/CryptoEvent.d.ts.map +1 -0
  327. package/lib/crypto-api/CryptoEvent.js +33 -0
  328. package/lib/crypto-api/CryptoEvent.js.map +1 -0
  329. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +16 -0
  330. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +1 -0
  331. package/lib/crypto-api/CryptoEventHandlerMap.js +22 -0
  332. package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -0
  333. package/lib/crypto-api/index.d.ts +978 -0
  334. package/lib/crypto-api/index.d.ts.map +1 -0
  335. package/lib/crypto-api/index.js +304 -0
  336. package/lib/crypto-api/index.js.map +1 -0
  337. package/lib/crypto-api/key-passphrase.d.ts +11 -0
  338. package/lib/crypto-api/key-passphrase.d.ts.map +1 -0
  339. package/lib/crypto-api/key-passphrase.js +51 -0
  340. package/lib/crypto-api/key-passphrase.js.map +1 -0
  341. package/lib/crypto-api/keybackup.d.ts +88 -0
  342. package/lib/crypto-api/keybackup.d.ts.map +1 -0
  343. package/lib/crypto-api/keybackup.js +1 -0
  344. package/lib/crypto-api/keybackup.js.map +1 -0
  345. package/lib/crypto-api/recovery-key.d.ts +11 -0
  346. package/lib/crypto-api/recovery-key.d.ts.map +1 -0
  347. package/lib/crypto-api/recovery-key.js +65 -0
  348. package/lib/crypto-api/recovery-key.js.map +1 -0
  349. package/lib/crypto-api/verification.d.ts +344 -0
  350. package/lib/crypto-api/verification.d.ts.map +1 -0
  351. package/lib/crypto-api/verification.js +91 -0
  352. package/lib/crypto-api/verification.js.map +1 -0
  353. package/lib/digest.d.ts +10 -0
  354. package/lib/digest.d.ts.map +1 -0
  355. package/lib/digest.js +40 -0
  356. package/lib/digest.js.map +1 -0
  357. package/lib/embedded.d.ts +143 -0
  358. package/lib/embedded.d.ts.map +1 -0
  359. package/lib/embedded.js +567 -0
  360. package/lib/embedded.js.map +1 -0
  361. package/lib/errors.d.ts +24 -0
  362. package/lib/errors.d.ts.map +1 -0
  363. package/lib/errors.js +51 -0
  364. package/lib/errors.js.map +1 -0
  365. package/lib/event-mapper.d.ts +10 -0
  366. package/lib/event-mapper.d.ts.map +1 -0
  367. package/lib/event-mapper.js +81 -0
  368. package/lib/event-mapper.js.map +1 -0
  369. package/lib/extensible_events_v1/ExtensibleEvent.d.ts +38 -0
  370. package/lib/extensible_events_v1/ExtensibleEvent.d.ts.map +1 -0
  371. package/lib/extensible_events_v1/ExtensibleEvent.js +57 -0
  372. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -0
  373. package/lib/extensible_events_v1/InvalidEventError.d.ts +7 -0
  374. package/lib/extensible_events_v1/InvalidEventError.d.ts.map +1 -0
  375. package/lib/extensible_events_v1/InvalidEventError.js +25 -0
  376. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -0
  377. package/lib/extensible_events_v1/MessageEvent.d.ts +45 -0
  378. package/lib/extensible_events_v1/MessageEvent.d.ts.map +1 -0
  379. package/lib/extensible_events_v1/MessageEvent.js +134 -0
  380. package/lib/extensible_events_v1/MessageEvent.js.map +1 -0
  381. package/lib/extensible_events_v1/PollEndEvent.d.ts +33 -0
  382. package/lib/extensible_events_v1/PollEndEvent.d.ts.map +1 -0
  383. package/lib/extensible_events_v1/PollEndEvent.js +88 -0
  384. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -0
  385. package/lib/extensible_events_v1/PollResponseEvent.d.ts +49 -0
  386. package/lib/extensible_events_v1/PollResponseEvent.d.ts.map +1 -0
  387. package/lib/extensible_events_v1/PollResponseEvent.js +135 -0
  388. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -0
  389. package/lib/extensible_events_v1/PollStartEvent.d.ts +71 -0
  390. package/lib/extensible_events_v1/PollStartEvent.d.ts.map +1 -0
  391. package/lib/extensible_events_v1/PollStartEvent.js +185 -0
  392. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -0
  393. package/lib/extensible_events_v1/utilities.d.ts +14 -0
  394. package/lib/extensible_events_v1/utilities.d.ts.map +1 -0
  395. package/lib/extensible_events_v1/utilities.js +34 -0
  396. package/lib/extensible_events_v1/utilities.js.map +1 -0
  397. package/lib/feature.d.ts +20 -0
  398. package/lib/feature.d.ts.map +1 -0
  399. package/lib/feature.js +85 -0
  400. package/lib/feature.js.map +1 -0
  401. package/lib/filter-component.d.ts +64 -0
  402. package/lib/filter-component.d.ts.map +1 -0
  403. package/lib/filter-component.js +167 -0
  404. package/lib/filter-component.js.map +1 -0
  405. package/lib/filter.d.ts +97 -0
  406. package/lib/filter.d.ts.map +1 -0
  407. package/lib/filter.js +207 -0
  408. package/lib/filter.js.map +1 -0
  409. package/lib/http-api/errors.d.ts +80 -0
  410. package/lib/http-api/errors.d.ts.map +1 -0
  411. package/lib/http-api/errors.js +185 -0
  412. package/lib/http-api/errors.js.map +1 -0
  413. package/lib/http-api/fetch.d.ts +114 -0
  414. package/lib/http-api/fetch.d.ts.map +1 -0
  415. package/lib/http-api/fetch.js +346 -0
  416. package/lib/http-api/fetch.js.map +1 -0
  417. package/lib/http-api/index.d.ts +33 -0
  418. package/lib/http-api/index.d.ts.map +1 -0
  419. package/lib/http-api/index.js +180 -0
  420. package/lib/http-api/index.js.map +1 -0
  421. package/lib/http-api/interface.d.ts +142 -0
  422. package/lib/http-api/interface.d.ts.map +1 -0
  423. package/lib/http-api/interface.js +35 -0
  424. package/lib/http-api/interface.js.map +1 -0
  425. package/lib/http-api/method.d.ts +10 -0
  426. package/lib/http-api/method.d.ts.map +1 -0
  427. package/lib/http-api/method.js +27 -0
  428. package/lib/http-api/method.js.map +1 -0
  429. package/lib/http-api/prefix.d.ts +31 -0
  430. package/lib/http-api/prefix.d.ts.map +1 -0
  431. package/lib/http-api/prefix.js +32 -0
  432. package/lib/http-api/prefix.js.map +1 -0
  433. package/lib/http-api/utils.d.ts +37 -0
  434. package/lib/http-api/utils.d.ts.map +1 -0
  435. package/lib/http-api/utils.js +178 -0
  436. package/lib/http-api/utils.js.map +1 -0
  437. package/lib/index.d.ts +4 -0
  438. package/lib/index.d.ts.map +1 -0
  439. package/lib/index.js +24 -0
  440. package/lib/index.js.map +1 -0
  441. package/lib/indexeddb-helpers.d.ts +10 -0
  442. package/lib/indexeddb-helpers.d.ts.map +1 -0
  443. package/lib/indexeddb-helpers.js +51 -0
  444. package/lib/indexeddb-helpers.js.map +1 -0
  445. package/lib/indexeddb-worker.d.ts +7 -0
  446. package/lib/indexeddb-worker.d.ts.map +1 -0
  447. package/lib/indexeddb-worker.js +25 -0
  448. package/lib/indexeddb-worker.js.map +1 -0
  449. package/lib/interactive-auth.d.ts +337 -0
  450. package/lib/interactive-auth.d.ts.map +1 -0
  451. package/lib/interactive-auth.js +557 -0
  452. package/lib/interactive-auth.js.map +1 -0
  453. package/lib/logger.d.ts +81 -0
  454. package/lib/logger.d.ts.map +1 -0
  455. package/lib/logger.js +139 -0
  456. package/lib/logger.js.map +1 -0
  457. package/lib/matrix.d.ts +118 -0
  458. package/lib/matrix.d.ts.map +1 -0
  459. package/lib/matrix.js +146 -0
  460. package/lib/matrix.js.map +1 -0
  461. package/lib/matrixrtc/CallMembership.d.ts +66 -0
  462. package/lib/matrixrtc/CallMembership.d.ts.map +1 -0
  463. package/lib/matrixrtc/CallMembership.js +197 -0
  464. package/lib/matrixrtc/CallMembership.js.map +1 -0
  465. package/lib/matrixrtc/LivekitFocus.d.ts +16 -0
  466. package/lib/matrixrtc/LivekitFocus.d.ts.map +1 -0
  467. package/lib/matrixrtc/LivekitFocus.js +20 -0
  468. package/lib/matrixrtc/LivekitFocus.js.map +1 -0
  469. package/lib/matrixrtc/MatrixRTCSession.d.ts +295 -0
  470. package/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -0
  471. package/lib/matrixrtc/MatrixRTCSession.js +1043 -0
  472. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -0
  473. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +40 -0
  474. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +1 -0
  475. package/lib/matrixrtc/MatrixRTCSessionManager.js +146 -0
  476. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -0
  477. package/lib/matrixrtc/focus.d.ts +10 -0
  478. package/lib/matrixrtc/focus.d.ts.map +1 -0
  479. package/lib/matrixrtc/focus.js +1 -0
  480. package/lib/matrixrtc/focus.js.map +1 -0
  481. package/lib/matrixrtc/index.d.ts +7 -0
  482. package/lib/matrixrtc/index.d.ts.map +1 -0
  483. package/lib/matrixrtc/index.js +21 -0
  484. package/lib/matrixrtc/index.js.map +1 -0
  485. package/lib/matrixrtc/types.d.ts +19 -0
  486. package/lib/matrixrtc/types.d.ts.map +1 -0
  487. package/lib/matrixrtc/types.js +1 -0
  488. package/lib/matrixrtc/types.js.map +1 -0
  489. package/lib/models/MSC3089Branch.d.ts +98 -0
  490. package/lib/models/MSC3089Branch.d.ts.map +1 -0
  491. package/lib/models/MSC3089Branch.js +240 -0
  492. package/lib/models/MSC3089Branch.js.map +1 -0
  493. package/lib/models/MSC3089TreeSpace.d.ts +165 -0
  494. package/lib/models/MSC3089TreeSpace.d.ts.map +1 -0
  495. package/lib/models/MSC3089TreeSpace.js +520 -0
  496. package/lib/models/MSC3089TreeSpace.js.map +1 -0
  497. package/lib/models/ToDeviceMessage.d.ts +17 -0
  498. package/lib/models/ToDeviceMessage.d.ts.map +1 -0
  499. package/lib/models/ToDeviceMessage.js +1 -0
  500. package/lib/models/ToDeviceMessage.js.map +1 -0
  501. package/lib/models/beacon.d.ts +53 -0
  502. package/lib/models/beacon.d.ts.map +1 -0
  503. package/lib/models/beacon.js +174 -0
  504. package/lib/models/beacon.js.map +1 -0
  505. package/lib/models/compare-event-ordering.d.ts +24 -0
  506. package/lib/models/compare-event-ordering.d.ts.map +1 -0
  507. package/lib/models/compare-event-ordering.js +120 -0
  508. package/lib/models/compare-event-ordering.js.map +1 -0
  509. package/lib/models/device.d.ts +45 -0
  510. package/lib/models/device.d.ts.map +1 -0
  511. package/lib/models/device.js +77 -0
  512. package/lib/models/device.js.map +1 -0
  513. package/lib/models/event-context.d.ts +62 -0
  514. package/lib/models/event-context.d.ts.map +1 -0
  515. package/lib/models/event-context.js +113 -0
  516. package/lib/models/event-context.js.map +1 -0
  517. package/lib/models/event-status.d.ts +19 -0
  518. package/lib/models/event-status.d.ts.map +1 -0
  519. package/lib/models/event-status.js +30 -0
  520. package/lib/models/event-status.js.map +1 -0
  521. package/lib/models/event-timeline-set.d.ts +312 -0
  522. package/lib/models/event-timeline-set.d.ts.map +1 -0
  523. package/lib/models/event-timeline-set.js +813 -0
  524. package/lib/models/event-timeline-set.js.map +1 -0
  525. package/lib/models/event-timeline.d.ts +219 -0
  526. package/lib/models/event-timeline.d.ts.map +1 -0
  527. package/lib/models/event-timeline.js +455 -0
  528. package/lib/models/event-timeline.js.map +1 -0
  529. package/lib/models/event.d.ts +811 -0
  530. package/lib/models/event.d.ts.map +1 -0
  531. package/lib/models/event.js +1520 -0
  532. package/lib/models/event.js.map +1 -0
  533. package/lib/models/invites-ignorer.d.ts +136 -0
  534. package/lib/models/invites-ignorer.d.ts.map +1 -0
  535. package/lib/models/invites-ignorer.js +382 -0
  536. package/lib/models/invites-ignorer.js.map +1 -0
  537. package/lib/models/poll.d.ts +67 -0
  538. package/lib/models/poll.d.ts.map +1 -0
  539. package/lib/models/poll.js +241 -0
  540. package/lib/models/poll.js.map +1 -0
  541. package/lib/models/profile-keys.d.ts +8 -0
  542. package/lib/models/profile-keys.d.ts.map +1 -0
  543. package/lib/models/profile-keys.js +8 -0
  544. package/lib/models/profile-keys.js.map +1 -0
  545. package/lib/models/read-receipt.d.ts +115 -0
  546. package/lib/models/read-receipt.d.ts.map +1 -0
  547. package/lib/models/read-receipt.js +366 -0
  548. package/lib/models/read-receipt.js.map +1 -0
  549. package/lib/models/related-relations.d.ts +11 -0
  550. package/lib/models/related-relations.d.ts.map +1 -0
  551. package/lib/models/related-relations.js +33 -0
  552. package/lib/models/related-relations.js.map +1 -0
  553. package/lib/models/relations-container.d.ts +44 -0
  554. package/lib/models/relations-container.d.ts.map +1 -0
  555. package/lib/models/relations-container.js +132 -0
  556. package/lib/models/relations-container.js.map +1 -0
  557. package/lib/models/relations.d.ts +114 -0
  558. package/lib/models/relations.d.ts.map +1 -0
  559. package/lib/models/relations.js +354 -0
  560. package/lib/models/relations.js.map +1 -0
  561. package/lib/models/room-member.d.ts +204 -0
  562. package/lib/models/room-member.d.ts.map +1 -0
  563. package/lib/models/room-member.js +360 -0
  564. package/lib/models/room-member.js.map +1 -0
  565. package/lib/models/room-receipts.d.ts +39 -0
  566. package/lib/models/room-receipts.d.ts.map +1 -0
  567. package/lib/models/room-receipts.js +392 -0
  568. package/lib/models/room-receipts.js.map +1 -0
  569. package/lib/models/room-state.d.ts +468 -0
  570. package/lib/models/room-state.d.ts.map +1 -0
  571. package/lib/models/room-state.js +984 -0
  572. package/lib/models/room-state.js.map +1 -0
  573. package/lib/models/room-summary.d.ts +29 -0
  574. package/lib/models/room-summary.d.ts.map +1 -0
  575. package/lib/models/room-summary.js +28 -0
  576. package/lib/models/room-summary.js.map +1 -0
  577. package/lib/models/room.d.ts +1203 -0
  578. package/lib/models/room.d.ts.map +1 -0
  579. package/lib/models/room.js +3336 -0
  580. package/lib/models/room.js.map +1 -0
  581. package/lib/models/search-result.d.ts +20 -0
  582. package/lib/models/search-result.d.ts.map +1 -0
  583. package/lib/models/search-result.js +52 -0
  584. package/lib/models/search-result.js.map +1 -0
  585. package/lib/models/thread.d.ts +246 -0
  586. package/lib/models/thread.d.ts.map +1 -0
  587. package/lib/models/thread.js +861 -0
  588. package/lib/models/thread.js.map +1 -0
  589. package/lib/models/typed-event-emitter.d.ts +157 -0
  590. package/lib/models/typed-event-emitter.d.ts.map +1 -0
  591. package/lib/models/typed-event-emitter.js +227 -0
  592. package/lib/models/typed-event-emitter.js.map +1 -0
  593. package/lib/models/user.d.ts +195 -0
  594. package/lib/models/user.d.ts.map +1 -0
  595. package/lib/models/user.js +218 -0
  596. package/lib/models/user.js.map +1 -0
  597. package/lib/oidc/authorize.d.ts +90 -0
  598. package/lib/oidc/authorize.d.ts.map +1 -0
  599. package/lib/oidc/authorize.js +278 -0
  600. package/lib/oidc/authorize.js.map +1 -0
  601. package/lib/oidc/discovery.d.ts +14 -0
  602. package/lib/oidc/discovery.d.ts.map +1 -0
  603. package/lib/oidc/discovery.js +66 -0
  604. package/lib/oidc/discovery.js.map +1 -0
  605. package/lib/oidc/error.d.ts +18 -0
  606. package/lib/oidc/error.d.ts.map +1 -0
  607. package/lib/oidc/error.js +35 -0
  608. package/lib/oidc/error.js.map +1 -0
  609. package/lib/oidc/index.d.ts +17 -0
  610. package/lib/oidc/index.d.ts.map +1 -0
  611. package/lib/oidc/index.js +29 -0
  612. package/lib/oidc/index.js.map +1 -0
  613. package/lib/oidc/register.d.ts +43 -0
  614. package/lib/oidc/register.d.ts.map +1 -0
  615. package/lib/oidc/register.js +96 -0
  616. package/lib/oidc/register.js.map +1 -0
  617. package/lib/oidc/tokenRefresher.d.ts +69 -0
  618. package/lib/oidc/tokenRefresher.d.ts.map +1 -0
  619. package/lib/oidc/tokenRefresher.js +148 -0
  620. package/lib/oidc/tokenRefresher.js.map +1 -0
  621. package/lib/oidc/validate.d.ts +90 -0
  622. package/lib/oidc/validate.d.ts.map +1 -0
  623. package/lib/oidc/validate.js +194 -0
  624. package/lib/oidc/validate.js.map +1 -0
  625. package/lib/pushprocessor.d.ts +128 -0
  626. package/lib/pushprocessor.d.ts.map +1 -0
  627. package/lib/pushprocessor.js +685 -0
  628. package/lib/pushprocessor.js.map +1 -0
  629. package/lib/randomstring.d.ts +5 -0
  630. package/lib/randomstring.d.ts.map +1 -0
  631. package/lib/randomstring.js +43 -0
  632. package/lib/randomstring.js.map +1 -0
  633. package/lib/realtime-callbacks.d.ts +18 -0
  634. package/lib/realtime-callbacks.d.ts.map +1 -0
  635. package/lib/realtime-callbacks.js +177 -0
  636. package/lib/realtime-callbacks.js.map +1 -0
  637. package/lib/receipt-accumulator.d.ts +51 -0
  638. package/lib/receipt-accumulator.d.ts.map +1 -0
  639. package/lib/receipt-accumulator.js +164 -0
  640. package/lib/receipt-accumulator.js.map +1 -0
  641. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +112 -0
  642. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +1 -0
  643. package/lib/rendezvous/MSC4108SignInWithQR.js +392 -0
  644. package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -0
  645. package/lib/rendezvous/RendezvousChannel.d.ts +27 -0
  646. package/lib/rendezvous/RendezvousChannel.d.ts.map +1 -0
  647. package/lib/rendezvous/RendezvousChannel.js +1 -0
  648. package/lib/rendezvous/RendezvousChannel.js.map +1 -0
  649. package/lib/rendezvous/RendezvousCode.d.ts +9 -0
  650. package/lib/rendezvous/RendezvousCode.d.ts.map +1 -0
  651. package/lib/rendezvous/RendezvousCode.js +1 -0
  652. package/lib/rendezvous/RendezvousCode.js.map +1 -0
  653. package/lib/rendezvous/RendezvousError.d.ts +6 -0
  654. package/lib/rendezvous/RendezvousError.d.ts.map +1 -0
  655. package/lib/rendezvous/RendezvousError.js +23 -0
  656. package/lib/rendezvous/RendezvousError.js.map +1 -0
  657. package/lib/rendezvous/RendezvousFailureReason.d.ts +31 -0
  658. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +1 -0
  659. package/lib/rendezvous/RendezvousFailureReason.js +38 -0
  660. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -0
  661. package/lib/rendezvous/RendezvousIntent.d.ts +5 -0
  662. package/lib/rendezvous/RendezvousIntent.d.ts.map +1 -0
  663. package/lib/rendezvous/RendezvousIntent.js +22 -0
  664. package/lib/rendezvous/RendezvousIntent.js.map +1 -0
  665. package/lib/rendezvous/RendezvousTransport.d.ts +36 -0
  666. package/lib/rendezvous/RendezvousTransport.d.ts.map +1 -0
  667. package/lib/rendezvous/RendezvousTransport.js +1 -0
  668. package/lib/rendezvous/RendezvousTransport.js.map +1 -0
  669. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +58 -0
  670. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +1 -0
  671. package/lib/rendezvous/channels/MSC4108SecureChannel.js +246 -0
  672. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -0
  673. package/lib/rendezvous/channels/index.d.ts +2 -0
  674. package/lib/rendezvous/channels/index.d.ts.map +1 -0
  675. package/lib/rendezvous/channels/index.js +18 -0
  676. package/lib/rendezvous/channels/index.js.map +1 -0
  677. package/lib/rendezvous/index.d.ts +10 -0
  678. package/lib/rendezvous/index.d.ts.map +1 -0
  679. package/lib/rendezvous/index.js +23 -0
  680. package/lib/rendezvous/index.js.map +1 -0
  681. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +61 -0
  682. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +1 -0
  683. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +253 -0
  684. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -0
  685. package/lib/rendezvous/transports/index.d.ts +2 -0
  686. package/lib/rendezvous/transports/index.d.ts.map +1 -0
  687. package/lib/rendezvous/transports/index.js +18 -0
  688. package/lib/rendezvous/transports/index.js.map +1 -0
  689. package/lib/room-hierarchy.d.ts +35 -0
  690. package/lib/room-hierarchy.d.ts.map +1 -0
  691. package/lib/room-hierarchy.js +136 -0
  692. package/lib/room-hierarchy.js.map +1 -0
  693. package/lib/rust-crypto/CrossSigningIdentity.d.ts +33 -0
  694. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +1 -0
  695. package/lib/rust-crypto/CrossSigningIdentity.js +157 -0
  696. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -0
  697. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +98 -0
  698. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +1 -0
  699. package/lib/rust-crypto/DehydratedDeviceManager.js +285 -0
  700. package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -0
  701. package/lib/rust-crypto/KeyClaimManager.d.ts +33 -0
  702. package/lib/rust-crypto/KeyClaimManager.d.ts.map +1 -0
  703. package/lib/rust-crypto/KeyClaimManager.js +82 -0
  704. package/lib/rust-crypto/KeyClaimManager.js.map +1 -0
  705. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +43 -0
  706. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +1 -0
  707. package/lib/rust-crypto/OutgoingRequestProcessor.js +195 -0
  708. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -0
  709. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +47 -0
  710. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +1 -0
  711. package/lib/rust-crypto/OutgoingRequestsManager.js +148 -0
  712. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -0
  713. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +120 -0
  714. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +1 -0
  715. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +467 -0
  716. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -0
  717. package/lib/rust-crypto/RoomEncryptor.d.ts +98 -0
  718. package/lib/rust-crypto/RoomEncryptor.d.ts.map +1 -0
  719. package/lib/rust-crypto/RoomEncryptor.js +299 -0
  720. package/lib/rust-crypto/RoomEncryptor.js.map +1 -0
  721. package/lib/rust-crypto/backup.d.ts +254 -0
  722. package/lib/rust-crypto/backup.d.ts.map +1 -0
  723. package/lib/rust-crypto/backup.js +837 -0
  724. package/lib/rust-crypto/backup.js.map +1 -0
  725. package/lib/rust-crypto/constants.d.ts +3 -0
  726. package/lib/rust-crypto/constants.d.ts.map +1 -0
  727. package/lib/rust-crypto/constants.js +19 -0
  728. package/lib/rust-crypto/constants.js.map +1 -0
  729. package/lib/rust-crypto/device-converter.d.ts +28 -0
  730. package/lib/rust-crypto/device-converter.d.ts.map +1 -0
  731. package/lib/rust-crypto/device-converter.js +123 -0
  732. package/lib/rust-crypto/device-converter.js.map +1 -0
  733. package/lib/rust-crypto/index.d.ts +61 -0
  734. package/lib/rust-crypto/index.d.ts.map +1 -0
  735. package/lib/rust-crypto/index.js +152 -0
  736. package/lib/rust-crypto/index.js.map +1 -0
  737. package/lib/rust-crypto/libolm_migration.d.ts +81 -0
  738. package/lib/rust-crypto/libolm_migration.d.ts.map +1 -0
  739. package/lib/rust-crypto/libolm_migration.js +459 -0
  740. package/lib/rust-crypto/libolm_migration.js.map +1 -0
  741. package/lib/rust-crypto/rust-crypto.d.ts +556 -0
  742. package/lib/rust-crypto/rust-crypto.d.ts.map +1 -0
  743. package/lib/rust-crypto/rust-crypto.js +2016 -0
  744. package/lib/rust-crypto/rust-crypto.js.map +1 -0
  745. package/lib/rust-crypto/secret-storage.d.ts +22 -0
  746. package/lib/rust-crypto/secret-storage.d.ts.map +1 -0
  747. package/lib/rust-crypto/secret-storage.js +63 -0
  748. package/lib/rust-crypto/secret-storage.js.map +1 -0
  749. package/lib/rust-crypto/verification.d.ts +319 -0
  750. package/lib/rust-crypto/verification.d.ts.map +1 -0
  751. package/lib/rust-crypto/verification.js +816 -0
  752. package/lib/rust-crypto/verification.js.map +1 -0
  753. package/lib/scheduler.d.ts +132 -0
  754. package/lib/scheduler.d.ts.map +1 -0
  755. package/lib/scheduler.js +259 -0
  756. package/lib/scheduler.js.map +1 -0
  757. package/lib/secret-storage.d.ts +370 -0
  758. package/lib/secret-storage.d.ts.map +1 -0
  759. package/lib/secret-storage.js +466 -0
  760. package/lib/secret-storage.js.map +1 -0
  761. package/lib/serverCapabilities.d.ts +72 -0
  762. package/lib/serverCapabilities.d.ts.map +1 -0
  763. package/lib/serverCapabilities.js +105 -0
  764. package/lib/serverCapabilities.js.map +1 -0
  765. package/lib/service-types.d.ts +5 -0
  766. package/lib/service-types.d.ts.map +1 -0
  767. package/lib/service-types.js +22 -0
  768. package/lib/service-types.js.map +1 -0
  769. package/lib/sliding-sync-sdk.d.ts +107 -0
  770. package/lib/sliding-sync-sdk.d.ts.map +1 -0
  771. package/lib/sliding-sync-sdk.js +903 -0
  772. package/lib/sliding-sync-sdk.js.map +1 -0
  773. package/lib/sliding-sync.d.ts +343 -0
  774. package/lib/sliding-sync.d.ts.map +1 -0
  775. package/lib/sliding-sync.js +817 -0
  776. package/lib/sliding-sync.js.map +1 -0
  777. package/lib/store/index.d.ts +201 -0
  778. package/lib/store/index.d.ts.map +1 -0
  779. package/lib/store/index.js +1 -0
  780. package/lib/store/index.js.map +1 -0
  781. package/lib/store/indexeddb-backend.d.ts +24 -0
  782. package/lib/store/indexeddb-backend.d.ts.map +1 -0
  783. package/lib/store/indexeddb-backend.js +1 -0
  784. package/lib/store/indexeddb-backend.js.map +1 -0
  785. package/lib/store/indexeddb-local-backend.d.ts +129 -0
  786. package/lib/store/indexeddb-local-backend.d.ts.map +1 -0
  787. package/lib/store/indexeddb-local-backend.js +597 -0
  788. package/lib/store/indexeddb-local-backend.js.map +1 -0
  789. package/lib/store/indexeddb-remote-backend.d.ts +79 -0
  790. package/lib/store/indexeddb-remote-backend.d.ts.map +1 -0
  791. package/lib/store/indexeddb-remote-backend.js +210 -0
  792. package/lib/store/indexeddb-remote-backend.js.map +1 -0
  793. package/lib/store/indexeddb-store-worker.d.ts +35 -0
  794. package/lib/store/indexeddb-store-worker.d.ts.map +1 -0
  795. package/lib/store/indexeddb-store-worker.js +146 -0
  796. package/lib/store/indexeddb-store-worker.js.map +1 -0
  797. package/lib/store/indexeddb.d.ts +142 -0
  798. package/lib/store/indexeddb.d.ts.map +1 -0
  799. package/lib/store/indexeddb.js +347 -0
  800. package/lib/store/indexeddb.js.map +1 -0
  801. package/lib/store/local-storage-events-emitter.d.ts +30 -0
  802. package/lib/store/local-storage-events-emitter.d.ts.map +1 -0
  803. package/lib/store/local-storage-events-emitter.js +37 -0
  804. package/lib/store/local-storage-events-emitter.js.map +1 -0
  805. package/lib/store/memory.d.ts +209 -0
  806. package/lib/store/memory.d.ts.map +1 -0
  807. package/lib/store/memory.js +432 -0
  808. package/lib/store/memory.js.map +1 -0
  809. package/lib/store/stub.d.ts +161 -0
  810. package/lib/store/stub.d.ts.map +1 -0
  811. package/lib/store/stub.js +268 -0
  812. package/lib/store/stub.js.map +1 -0
  813. package/lib/sync-accumulator.d.ts +172 -0
  814. package/lib/sync-accumulator.d.ts.map +1 -0
  815. package/lib/sync-accumulator.js +532 -0
  816. package/lib/sync-accumulator.js.map +1 -0
  817. package/lib/sync.d.ts +260 -0
  818. package/lib/sync.d.ts.map +1 -0
  819. package/lib/sync.js +1686 -0
  820. package/lib/sync.js.map +1 -0
  821. package/lib/testing.d.ts +81 -0
  822. package/lib/testing.d.ts.map +1 -0
  823. package/lib/testing.js +162 -0
  824. package/lib/testing.js.map +1 -0
  825. package/lib/thread-utils.d.ts +10 -0
  826. package/lib/thread-utils.d.ts.map +1 -0
  827. package/lib/thread-utils.js +31 -0
  828. package/lib/thread-utils.js.map +1 -0
  829. package/lib/timeline-window.d.ts +168 -0
  830. package/lib/timeline-window.d.ts.map +1 -0
  831. package/lib/timeline-window.js +494 -0
  832. package/lib/timeline-window.js.map +1 -0
  833. package/lib/types.d.ts +33 -0
  834. package/lib/types.d.ts.map +1 -0
  835. package/lib/types.js +33 -0
  836. package/lib/types.js.map +1 -0
  837. package/lib/utils/decryptAESSecretStorageItem.d.ts +12 -0
  838. package/lib/utils/decryptAESSecretStorageItem.d.ts.map +1 -0
  839. package/lib/utils/decryptAESSecretStorageItem.js +50 -0
  840. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -0
  841. package/lib/utils/encryptAESSecretStorageItem.d.ts +16 -0
  842. package/lib/utils/encryptAESSecretStorageItem.d.ts.map +1 -0
  843. package/lib/utils/encryptAESSecretStorageItem.js +68 -0
  844. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -0
  845. package/lib/utils/internal/deriveKeys.d.ts +10 -0
  846. package/lib/utils/internal/deriveKeys.d.ts.map +1 -0
  847. package/lib/utils/internal/deriveKeys.js +60 -0
  848. package/lib/utils/internal/deriveKeys.js.map +1 -0
  849. package/lib/utils.d.ts +267 -0
  850. package/lib/utils.d.ts.map +1 -0
  851. package/lib/utils.js +749 -0
  852. package/lib/utils.js.map +1 -0
  853. package/lib/version-support.d.ts +19 -0
  854. package/lib/version-support.d.ts.map +1 -0
  855. package/lib/version-support.js +37 -0
  856. package/lib/version-support.js.map +1 -0
  857. package/lib/webrtc/audioContext.d.ts +15 -0
  858. package/lib/webrtc/audioContext.d.ts.map +1 -0
  859. package/lib/webrtc/audioContext.js +46 -0
  860. package/lib/webrtc/audioContext.js.map +1 -0
  861. package/lib/webrtc/call.d.ts +560 -0
  862. package/lib/webrtc/call.d.ts.map +1 -0
  863. package/lib/webrtc/call.js +2541 -0
  864. package/lib/webrtc/call.js.map +1 -0
  865. package/lib/webrtc/callEventHandler.d.ts +37 -0
  866. package/lib/webrtc/callEventHandler.d.ts.map +1 -0
  867. package/lib/webrtc/callEventHandler.js +344 -0
  868. package/lib/webrtc/callEventHandler.js.map +1 -0
  869. package/lib/webrtc/callEventTypes.d.ts +73 -0
  870. package/lib/webrtc/callEventTypes.d.ts.map +1 -0
  871. package/lib/webrtc/callEventTypes.js +13 -0
  872. package/lib/webrtc/callEventTypes.js.map +1 -0
  873. package/lib/webrtc/callFeed.d.ts +128 -0
  874. package/lib/webrtc/callFeed.d.ts.map +1 -0
  875. package/lib/webrtc/callFeed.js +289 -0
  876. package/lib/webrtc/callFeed.js.map +1 -0
  877. package/lib/webrtc/groupCall.d.ts +323 -0
  878. package/lib/webrtc/groupCall.d.ts.map +1 -0
  879. package/lib/webrtc/groupCall.js +1337 -0
  880. package/lib/webrtc/groupCall.js.map +1 -0
  881. package/lib/webrtc/groupCallEventHandler.d.ts +31 -0
  882. package/lib/webrtc/groupCallEventHandler.d.ts.map +1 -0
  883. package/lib/webrtc/groupCallEventHandler.js +178 -0
  884. package/lib/webrtc/groupCallEventHandler.js.map +1 -0
  885. package/lib/webrtc/mediaHandler.d.ts +89 -0
  886. package/lib/webrtc/mediaHandler.d.ts.map +1 -0
  887. package/lib/webrtc/mediaHandler.js +437 -0
  888. package/lib/webrtc/mediaHandler.js.map +1 -0
  889. package/lib/webrtc/stats/callFeedStatsReporter.d.ts +8 -0
  890. package/lib/webrtc/stats/callFeedStatsReporter.d.ts.map +1 -0
  891. package/lib/webrtc/stats/callFeedStatsReporter.js +82 -0
  892. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -0
  893. package/lib/webrtc/stats/callStatsReportGatherer.d.ts +25 -0
  894. package/lib/webrtc/stats/callStatsReportGatherer.d.ts.map +1 -0
  895. package/lib/webrtc/stats/callStatsReportGatherer.js +199 -0
  896. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -0
  897. package/lib/webrtc/stats/callStatsReportSummary.d.ts +17 -0
  898. package/lib/webrtc/stats/callStatsReportSummary.d.ts.map +1 -0
  899. package/lib/webrtc/stats/callStatsReportSummary.js +1 -0
  900. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -0
  901. package/lib/webrtc/stats/connectionStats.d.ts +28 -0
  902. package/lib/webrtc/stats/connectionStats.d.ts.map +1 -0
  903. package/lib/webrtc/stats/connectionStats.js +26 -0
  904. package/lib/webrtc/stats/connectionStats.js.map +1 -0
  905. package/lib/webrtc/stats/connectionStatsBuilder.d.ts +5 -0
  906. package/lib/webrtc/stats/connectionStatsBuilder.d.ts.map +1 -0
  907. package/lib/webrtc/stats/connectionStatsBuilder.js +27 -0
  908. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -0
  909. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts +7 -0
  910. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts.map +1 -0
  911. package/lib/webrtc/stats/connectionStatsReportBuilder.js +121 -0
  912. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -0
  913. package/lib/webrtc/stats/groupCallStats.d.ts +22 -0
  914. package/lib/webrtc/stats/groupCallStats.d.ts.map +1 -0
  915. package/lib/webrtc/stats/groupCallStats.js +78 -0
  916. package/lib/webrtc/stats/groupCallStats.js.map +1 -0
  917. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts +10 -0
  918. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts.map +1 -0
  919. package/lib/webrtc/stats/media/mediaSsrcHandler.js +57 -0
  920. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -0
  921. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts +12 -0
  922. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts.map +1 -0
  923. package/lib/webrtc/stats/media/mediaTrackHandler.js +62 -0
  924. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -0
  925. package/lib/webrtc/stats/media/mediaTrackStats.d.ts +86 -0
  926. package/lib/webrtc/stats/media/mediaTrackStats.d.ts.map +1 -0
  927. package/lib/webrtc/stats/media/mediaTrackStats.js +142 -0
  928. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -0
  929. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts +22 -0
  930. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts.map +1 -0
  931. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +76 -0
  932. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -0
  933. package/lib/webrtc/stats/statsReport.d.ts +99 -0
  934. package/lib/webrtc/stats/statsReport.d.ts.map +1 -0
  935. package/lib/webrtc/stats/statsReport.js +32 -0
  936. package/lib/webrtc/stats/statsReport.js.map +1 -0
  937. package/lib/webrtc/stats/statsReportEmitter.d.ts +15 -0
  938. package/lib/webrtc/stats/statsReportEmitter.d.ts.map +1 -0
  939. package/lib/webrtc/stats/statsReportEmitter.js +33 -0
  940. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -0
  941. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts +16 -0
  942. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts.map +1 -0
  943. package/lib/webrtc/stats/summaryStatsReportGatherer.js +116 -0
  944. package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -0
  945. package/lib/webrtc/stats/trackStatsBuilder.d.ts +19 -0
  946. package/lib/webrtc/stats/trackStatsBuilder.d.ts.map +1 -0
  947. package/lib/webrtc/stats/trackStatsBuilder.js +168 -0
  948. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -0
  949. package/lib/webrtc/stats/transportStats.d.ts +11 -0
  950. package/lib/webrtc/stats/transportStats.d.ts.map +1 -0
  951. package/lib/webrtc/stats/transportStats.js +1 -0
  952. package/lib/webrtc/stats/transportStats.js.map +1 -0
  953. package/lib/webrtc/stats/transportStatsBuilder.d.ts +5 -0
  954. package/lib/webrtc/stats/transportStatsBuilder.d.ts.map +1 -0
  955. package/lib/webrtc/stats/transportStatsBuilder.js +34 -0
  956. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -0
  957. package/lib/webrtc/stats/valueFormatter.d.ts +4 -0
  958. package/lib/webrtc/stats/valueFormatter.d.ts.map +1 -0
  959. package/lib/webrtc/stats/valueFormatter.js +25 -0
  960. package/lib/webrtc/stats/valueFormatter.js.map +1 -0
  961. package/package.json +134 -0
  962. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -0
  963. package/src/@types/IIdentityServerProvider.ts +24 -0
  964. package/src/@types/PushRules.ts +209 -0
  965. package/src/@types/another-json.d.ts +19 -0
  966. package/src/@types/auth.ts +252 -0
  967. package/src/@types/beacon.ts +140 -0
  968. package/src/@types/common.ts +22 -0
  969. package/src/@types/crypto.ts +73 -0
  970. package/src/@types/event.ts +370 -0
  971. package/src/@types/events.ts +119 -0
  972. package/src/@types/extensible_events.ts +150 -0
  973. package/src/@types/global.d.ts +70 -0
  974. package/src/@types/local_notifications.ts +19 -0
  975. package/src/@types/location.ts +92 -0
  976. package/src/@types/matrix-sdk-crypto-wasm.d.ts +44 -0
  977. package/src/@types/media.ts +245 -0
  978. package/src/@types/membership.ts +57 -0
  979. package/src/@types/oidc-client-ts.d.ts +24 -0
  980. package/src/@types/partials.ts +67 -0
  981. package/src/@types/polls.ts +119 -0
  982. package/src/@types/read_receipts.ts +61 -0
  983. package/src/@types/registration.ts +102 -0
  984. package/src/@types/requests.ts +314 -0
  985. package/src/@types/search.ts +119 -0
  986. package/src/@types/signed.ts +25 -0
  987. package/src/@types/spaces.ts +37 -0
  988. package/src/@types/state_events.ts +147 -0
  989. package/src/@types/synapse.ts +40 -0
  990. package/src/@types/sync.ts +27 -0
  991. package/src/@types/threepids.ts +29 -0
  992. package/src/@types/topic.ts +63 -0
  993. package/src/@types/uia.ts +29 -0
  994. package/src/NamespacedValue.ts +123 -0
  995. package/src/ReEmitter.ts +93 -0
  996. package/src/ToDeviceMessageQueue.ts +153 -0
  997. package/src/autodiscovery.ts +505 -0
  998. package/src/base64.ts +88 -0
  999. package/src/browser-index.ts +44 -0
  1000. package/src/client.ts +10474 -0
  1001. package/src/common-crypto/CryptoBackend.ts +302 -0
  1002. package/src/common-crypto/README.md +4 -0
  1003. package/src/common-crypto/key-passphrase.ts +43 -0
  1004. package/src/content-helpers.ts +288 -0
  1005. package/src/content-repo.ts +117 -0
  1006. package/src/crypto/CrossSigning.ts +773 -0
  1007. package/src/crypto/DeviceList.ts +989 -0
  1008. package/src/crypto/EncryptionSetup.ts +351 -0
  1009. package/src/crypto/OlmDevice.ts +1500 -0
  1010. package/src/crypto/OutgoingRoomKeyRequestManager.ts +485 -0
  1011. package/src/crypto/RoomList.ts +70 -0
  1012. package/src/crypto/SecretSharing.ts +240 -0
  1013. package/src/crypto/SecretStorage.ts +136 -0
  1014. package/src/crypto/aes.ts +23 -0
  1015. package/src/crypto/algorithms/base.ts +236 -0
  1016. package/src/crypto/algorithms/index.ts +20 -0
  1017. package/src/crypto/algorithms/megolm.ts +2216 -0
  1018. package/src/crypto/algorithms/olm.ts +381 -0
  1019. package/src/crypto/api.ts +70 -0
  1020. package/src/crypto/backup.ts +922 -0
  1021. package/src/crypto/crypto.ts +18 -0
  1022. package/src/crypto/dehydration.ts +272 -0
  1023. package/src/crypto/device-converter.ts +45 -0
  1024. package/src/crypto/deviceinfo.ts +158 -0
  1025. package/src/crypto/index.ts +4414 -0
  1026. package/src/crypto/key_passphrase.ts +42 -0
  1027. package/src/crypto/keybackup.ts +47 -0
  1028. package/src/crypto/olmlib.ts +539 -0
  1029. package/src/crypto/recoverykey.ts +18 -0
  1030. package/src/crypto/store/base.ts +348 -0
  1031. package/src/crypto/store/indexeddb-crypto-store-backend.ts +1250 -0
  1032. package/src/crypto/store/indexeddb-crypto-store.ts +845 -0
  1033. package/src/crypto/store/localStorage-crypto-store.ts +579 -0
  1034. package/src/crypto/store/memory-crypto-store.ts +680 -0
  1035. package/src/crypto/verification/Base.ts +409 -0
  1036. package/src/crypto/verification/Error.ts +76 -0
  1037. package/src/crypto/verification/IllegalMethod.ts +50 -0
  1038. package/src/crypto/verification/QRCode.ts +310 -0
  1039. package/src/crypto/verification/SAS.ts +494 -0
  1040. package/src/crypto/verification/SASDecimal.ts +37 -0
  1041. package/src/crypto/verification/request/Channel.ts +34 -0
  1042. package/src/crypto/verification/request/InRoomChannel.ts +371 -0
  1043. package/src/crypto/verification/request/ToDeviceChannel.ts +354 -0
  1044. package/src/crypto/verification/request/VerificationRequest.ts +976 -0
  1045. package/src/crypto-api/CryptoEvent.ts +93 -0
  1046. package/src/crypto-api/CryptoEventHandlerMap.ts +32 -0
  1047. package/src/crypto-api/index.ts +1175 -0
  1048. package/src/crypto-api/key-passphrase.ts +58 -0
  1049. package/src/crypto-api/keybackup.ts +115 -0
  1050. package/src/crypto-api/recovery-key.ts +69 -0
  1051. package/src/crypto-api/verification.ts +408 -0
  1052. package/src/digest.ts +34 -0
  1053. package/src/embedded.ts +631 -0
  1054. package/src/errors.ts +54 -0
  1055. package/src/event-mapper.ts +97 -0
  1056. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -0
  1057. package/src/extensible_events_v1/InvalidEventError.ts +24 -0
  1058. package/src/extensible_events_v1/MessageEvent.ts +145 -0
  1059. package/src/extensible_events_v1/PollEndEvent.ts +97 -0
  1060. package/src/extensible_events_v1/PollResponseEvent.ts +148 -0
  1061. package/src/extensible_events_v1/PollStartEvent.ts +207 -0
  1062. package/src/extensible_events_v1/utilities.ts +35 -0
  1063. package/src/feature.ts +87 -0
  1064. package/src/filter-component.ts +207 -0
  1065. package/src/filter.ts +245 -0
  1066. package/src/http-api/errors.ts +199 -0
  1067. package/src/http-api/fetch.ts +383 -0
  1068. package/src/http-api/index.ts +191 -0
  1069. package/src/http-api/interface.ts +178 -0
  1070. package/src/http-api/method.ts +25 -0
  1071. package/src/http-api/prefix.ts +48 -0
  1072. package/src/http-api/utils.ts +200 -0
  1073. package/src/index.ts +25 -0
  1074. package/src/indexeddb-helpers.ts +50 -0
  1075. package/src/indexeddb-worker.ts +24 -0
  1076. package/src/interactive-auth.ts +694 -0
  1077. package/src/logger.ts +185 -0
  1078. package/src/matrix.ts +177 -0
  1079. package/src/matrixrtc/CallMembership.ts +247 -0
  1080. package/src/matrixrtc/LivekitFocus.ts +39 -0
  1081. package/src/matrixrtc/MatrixRTCSession.ts +1319 -0
  1082. package/src/matrixrtc/MatrixRTCSessionManager.ts +166 -0
  1083. package/src/matrixrtc/focus.ts +25 -0
  1084. package/src/matrixrtc/index.ts +22 -0
  1085. package/src/matrixrtc/types.ts +36 -0
  1086. package/src/models/MSC3089Branch.ts +272 -0
  1087. package/src/models/MSC3089TreeSpace.ts +565 -0
  1088. package/src/models/ToDeviceMessage.ts +38 -0
  1089. package/src/models/beacon.ts +214 -0
  1090. package/src/models/compare-event-ordering.ts +139 -0
  1091. package/src/models/device.ts +85 -0
  1092. package/src/models/event-context.ts +110 -0
  1093. package/src/models/event-status.ts +39 -0
  1094. package/src/models/event-timeline-set.ts +979 -0
  1095. package/src/models/event-timeline.ts +476 -0
  1096. package/src/models/event.ts +1751 -0
  1097. package/src/models/invites-ignorer.ts +376 -0
  1098. package/src/models/poll.ts +285 -0
  1099. package/src/models/profile-keys.ts +7 -0
  1100. package/src/models/read-receipt.ts +422 -0
  1101. package/src/models/related-relations.ts +39 -0
  1102. package/src/models/relations-container.ts +149 -0
  1103. package/src/models/relations.ts +368 -0
  1104. package/src/models/room-member.ts +457 -0
  1105. package/src/models/room-receipts.ts +439 -0
  1106. package/src/models/room-state.ts +1130 -0
  1107. package/src/models/room-summary.ts +47 -0
  1108. package/src/models/room.ts +3822 -0
  1109. package/src/models/search-result.ts +57 -0
  1110. package/src/models/thread.ts +923 -0
  1111. package/src/models/typed-event-emitter.ts +246 -0
  1112. package/src/models/user.ts +302 -0
  1113. package/src/oidc/authorize.ts +274 -0
  1114. package/src/oidc/discovery.ts +60 -0
  1115. package/src/oidc/error.ts +33 -0
  1116. package/src/oidc/index.ts +34 -0
  1117. package/src/oidc/register.ts +123 -0
  1118. package/src/oidc/tokenRefresher.ts +149 -0
  1119. package/src/oidc/validate.ts +282 -0
  1120. package/src/pushprocessor.ts +837 -0
  1121. package/src/randomstring.ts +51 -0
  1122. package/src/realtime-callbacks.ts +191 -0
  1123. package/src/receipt-accumulator.ts +189 -0
  1124. package/src/rendezvous/MSC4108SignInWithQR.ts +444 -0
  1125. package/src/rendezvous/RendezvousChannel.ts +48 -0
  1126. package/src/rendezvous/RendezvousCode.ts +25 -0
  1127. package/src/rendezvous/RendezvousError.ts +26 -0
  1128. package/src/rendezvous/RendezvousFailureReason.ts +49 -0
  1129. package/src/rendezvous/RendezvousIntent.ts +20 -0
  1130. package/src/rendezvous/RendezvousTransport.ts +58 -0
  1131. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -0
  1132. package/src/rendezvous/channels/index.ts +17 -0
  1133. package/src/rendezvous/index.ts +25 -0
  1134. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +270 -0
  1135. package/src/rendezvous/transports/index.ts +17 -0
  1136. package/src/room-hierarchy.ts +152 -0
  1137. package/src/rust-crypto/CrossSigningIdentity.ts +183 -0
  1138. package/src/rust-crypto/DehydratedDeviceManager.ts +306 -0
  1139. package/src/rust-crypto/KeyClaimManager.ts +86 -0
  1140. package/src/rust-crypto/OutgoingRequestProcessor.ts +236 -0
  1141. package/src/rust-crypto/OutgoingRequestsManager.ts +143 -0
  1142. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +501 -0
  1143. package/src/rust-crypto/RoomEncryptor.ts +352 -0
  1144. package/src/rust-crypto/backup.ts +881 -0
  1145. package/src/rust-crypto/constants.ts +18 -0
  1146. package/src/rust-crypto/device-converter.ts +128 -0
  1147. package/src/rust-crypto/index.ts +237 -0
  1148. package/src/rust-crypto/libolm_migration.ts +530 -0
  1149. package/src/rust-crypto/rust-crypto.ts +2205 -0
  1150. package/src/rust-crypto/secret-storage.ts +60 -0
  1151. package/src/rust-crypto/verification.ts +830 -0
  1152. package/src/scheduler.ts +309 -0
  1153. package/src/secret-storage.ts +693 -0
  1154. package/src/serverCapabilities.ts +139 -0
  1155. package/src/service-types.ts +20 -0
  1156. package/src/sliding-sync-sdk.ts +1026 -0
  1157. package/src/sliding-sync.ts +965 -0
  1158. package/src/store/index.ts +261 -0
  1159. package/src/store/indexeddb-backend.ts +41 -0
  1160. package/src/store/indexeddb-local-backend.ts +610 -0
  1161. package/src/store/indexeddb-remote-backend.ts +213 -0
  1162. package/src/store/indexeddb-store-worker.ts +157 -0
  1163. package/src/store/indexeddb.ts +397 -0
  1164. package/src/store/local-storage-events-emitter.ts +46 -0
  1165. package/src/store/memory.ts +448 -0
  1166. package/src/store/stub.ts +280 -0
  1167. package/src/sync-accumulator.ts +689 -0
  1168. package/src/sync.ts +1920 -0
  1169. package/src/testing.ts +191 -0
  1170. package/src/thread-utils.ts +31 -0
  1171. package/src/timeline-window.ts +536 -0
  1172. package/src/types.ts +59 -0
  1173. package/src/utils/decryptAESSecretStorageItem.ts +54 -0
  1174. package/src/utils/encryptAESSecretStorageItem.ts +73 -0
  1175. package/src/utils/internal/deriveKeys.ts +63 -0
  1176. package/src/utils.ts +763 -0
  1177. package/src/version-support.ts +36 -0
  1178. package/src/webrtc/audioContext.ts +44 -0
  1179. package/src/webrtc/call.ts +3074 -0
  1180. package/src/webrtc/callEventHandler.ts +425 -0
  1181. package/src/webrtc/callEventTypes.ts +93 -0
  1182. package/src/webrtc/callFeed.ts +364 -0
  1183. package/src/webrtc/groupCall.ts +1735 -0
  1184. package/src/webrtc/groupCallEventHandler.ts +234 -0
  1185. package/src/webrtc/mediaHandler.ts +484 -0
  1186. package/src/webrtc/stats/callFeedStatsReporter.ts +94 -0
  1187. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -0
  1188. package/src/webrtc/stats/callStatsReportSummary.ts +30 -0
  1189. package/src/webrtc/stats/connectionStats.ts +47 -0
  1190. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -0
  1191. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -0
  1192. package/src/webrtc/stats/groupCallStats.ts +93 -0
  1193. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -0
  1194. package/src/webrtc/stats/media/mediaTrackHandler.ts +76 -0
  1195. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -0
  1196. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -0
  1197. package/src/webrtc/stats/statsReport.ts +133 -0
  1198. package/src/webrtc/stats/statsReportEmitter.ts +49 -0
  1199. package/src/webrtc/stats/summaryStatsReportGatherer.ts +148 -0
  1200. package/src/webrtc/stats/trackStatsBuilder.ts +207 -0
  1201. package/src/webrtc/stats/transportStats.ts +26 -0
  1202. package/src/webrtc/stats/transportStatsBuilder.ts +48 -0
  1203. package/src/webrtc/stats/valueFormatter.ts +27 -0
@@ -0,0 +1,1250 @@
1
+ /*
2
+ Copyright 2017 - 2021 The Matrix.org Foundation C.I.C.
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ */
16
+
17
+ import { Logger, logger } from "../../logger.ts";
18
+ import { deepCompare } from "../../utils.ts";
19
+ import {
20
+ CryptoStore,
21
+ IDeviceData,
22
+ IProblem,
23
+ ISession,
24
+ SessionExtended,
25
+ ISessionInfo,
26
+ IWithheld,
27
+ MigrationState,
28
+ Mode,
29
+ OutgoingRoomKeyRequest,
30
+ ParkedSharedHistory,
31
+ SecretStorePrivateKeys,
32
+ SESSION_BATCH_SIZE,
33
+ ACCOUNT_OBJECT_KEY_MIGRATION_STATE,
34
+ } from "./base.ts";
35
+ import { IRoomKeyRequestBody, IRoomKeyRequestRecipient } from "../index.ts";
36
+ import { IOlmDevice } from "../algorithms/megolm.ts";
37
+ import { IRoomEncryption } from "../RoomList.ts";
38
+ import { InboundGroupSessionData } from "../OlmDevice.ts";
39
+ import { IndexedDBCryptoStore } from "./indexeddb-crypto-store.ts";
40
+ import { CrossSigningKeyInfo } from "../../crypto-api/index.ts";
41
+
42
+ const PROFILE_TRANSACTIONS = false;
43
+
44
+ /**
45
+ * Implementation of a CryptoStore which is backed by an existing
46
+ * IndexedDB connection. Generally you want IndexedDBCryptoStore
47
+ * which connects to the database and defers to one of these.
48
+ *
49
+ * @internal
50
+ */
51
+ export class Backend implements CryptoStore {
52
+ private nextTxnId = 0;
53
+
54
+ /**
55
+ */
56
+ public constructor(private db: IDBDatabase) {
57
+ // make sure we close the db on `onversionchange` - otherwise
58
+ // attempts to delete the database will block (and subsequent
59
+ // attempts to re-create it will also block).
60
+ db.onversionchange = (): void => {
61
+ logger.log(`versionchange for indexeddb ${this.db.name}: closing`);
62
+ db.close();
63
+ };
64
+ }
65
+
66
+ public async containsData(): Promise<boolean> {
67
+ throw Error("Not implemented for Backend");
68
+ }
69
+
70
+ public async startup(): Promise<CryptoStore> {
71
+ // No work to do, as the startup is done by the caller (e.g IndexedDBCryptoStore)
72
+ // by passing us a ready IDBDatabase instance
73
+ return this;
74
+ }
75
+
76
+ public async deleteAllData(): Promise<void> {
77
+ throw Error("This is not implemented, call IDBFactory::deleteDatabase(dbName) instead.");
78
+ }
79
+
80
+ /**
81
+ * Get data on how much of the libolm to Rust Crypto migration has been done.
82
+ *
83
+ * Implementation of {@link CryptoStore.getMigrationState}.
84
+ */
85
+ public async getMigrationState(): Promise<MigrationState> {
86
+ let migrationState = MigrationState.NOT_STARTED;
87
+ await this.doTxn("readonly", [IndexedDBCryptoStore.STORE_ACCOUNT], (txn) => {
88
+ const objectStore = txn.objectStore(IndexedDBCryptoStore.STORE_ACCOUNT);
89
+ const getReq = objectStore.get(ACCOUNT_OBJECT_KEY_MIGRATION_STATE);
90
+ getReq.onsuccess = (): void => {
91
+ migrationState = getReq.result ?? MigrationState.NOT_STARTED;
92
+ };
93
+ });
94
+ return migrationState;
95
+ }
96
+
97
+ /**
98
+ * Set data on how much of the libolm to Rust Crypto migration has been done.
99
+ *
100
+ * Implementation of {@link CryptoStore.setMigrationState}.
101
+ */
102
+ public async setMigrationState(migrationState: MigrationState): Promise<void> {
103
+ await this.doTxn("readwrite", [IndexedDBCryptoStore.STORE_ACCOUNT], (txn) => {
104
+ const objectStore = txn.objectStore(IndexedDBCryptoStore.STORE_ACCOUNT);
105
+ objectStore.put(migrationState, ACCOUNT_OBJECT_KEY_MIGRATION_STATE);
106
+ });
107
+ }
108
+
109
+ /**
110
+ * Look for an existing outgoing room key request, and if none is found,
111
+ * add a new one
112
+ *
113
+ *
114
+ * @returns resolves to
115
+ * {@link OutgoingRoomKeyRequest}: either the
116
+ * same instance as passed in, or the existing one.
117
+ */
118
+ public getOrAddOutgoingRoomKeyRequest(request: OutgoingRoomKeyRequest): Promise<OutgoingRoomKeyRequest> {
119
+ const requestBody = request.requestBody;
120
+
121
+ return new Promise((resolve, reject) => {
122
+ const txn = this.db.transaction("outgoingRoomKeyRequests", "readwrite");
123
+ txn.onerror = reject;
124
+
125
+ // first see if we already have an entry for this request.
126
+ this._getOutgoingRoomKeyRequest(txn, requestBody, (existing) => {
127
+ if (existing) {
128
+ // this entry matches the request - return it.
129
+ logger.log(
130
+ `already have key request outstanding for ` +
131
+ `${requestBody.room_id} / ${requestBody.session_id}: ` +
132
+ `not sending another`,
133
+ );
134
+ resolve(existing);
135
+ return;
136
+ }
137
+
138
+ // we got to the end of the list without finding a match
139
+ // - add the new request.
140
+ logger.log(`enqueueing key request for ${requestBody.room_id} / ` + requestBody.session_id);
141
+ txn.oncomplete = (): void => {
142
+ resolve(request);
143
+ };
144
+ const store = txn.objectStore("outgoingRoomKeyRequests");
145
+ store.add(request);
146
+ });
147
+ });
148
+ }
149
+
150
+ /**
151
+ * Look for an existing room key request
152
+ *
153
+ * @param requestBody - existing request to look for
154
+ *
155
+ * @returns resolves to the matching
156
+ * {@link OutgoingRoomKeyRequest}, or null if
157
+ * not found
158
+ */
159
+ public getOutgoingRoomKeyRequest(requestBody: IRoomKeyRequestBody): Promise<OutgoingRoomKeyRequest | null> {
160
+ return new Promise((resolve, reject) => {
161
+ const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly");
162
+ txn.onerror = reject;
163
+
164
+ this._getOutgoingRoomKeyRequest(txn, requestBody, (existing) => {
165
+ resolve(existing);
166
+ });
167
+ });
168
+ }
169
+
170
+ /**
171
+ * look for an existing room key request in the db
172
+ *
173
+ * @internal
174
+ * @param txn - database transaction
175
+ * @param requestBody - existing request to look for
176
+ * @param callback - function to call with the results of the
177
+ * search. Either passed a matching
178
+ * {@link OutgoingRoomKeyRequest}, or null if
179
+ * not found.
180
+ */
181
+ // eslint-disable-next-line @typescript-eslint/naming-convention
182
+ private _getOutgoingRoomKeyRequest(
183
+ txn: IDBTransaction,
184
+ requestBody: IRoomKeyRequestBody,
185
+ callback: (req: OutgoingRoomKeyRequest | null) => void,
186
+ ): void {
187
+ const store = txn.objectStore("outgoingRoomKeyRequests");
188
+
189
+ const idx = store.index("session");
190
+ const cursorReq = idx.openCursor([requestBody.room_id, requestBody.session_id]);
191
+
192
+ cursorReq.onsuccess = (): void => {
193
+ const cursor = cursorReq.result;
194
+ if (!cursor) {
195
+ // no match found
196
+ callback(null);
197
+ return;
198
+ }
199
+
200
+ const existing = cursor.value;
201
+
202
+ if (deepCompare(existing.requestBody, requestBody)) {
203
+ // got a match
204
+ callback(existing);
205
+ return;
206
+ }
207
+
208
+ // look at the next entry in the index
209
+ cursor.continue();
210
+ };
211
+ }
212
+
213
+ /**
214
+ * Look for room key requests by state
215
+ *
216
+ * @param wantedStates - list of acceptable states
217
+ *
218
+ * @returns resolves to the a
219
+ * {@link OutgoingRoomKeyRequest}, or null if
220
+ * there are no pending requests in those states. If there are multiple
221
+ * requests in those states, an arbitrary one is chosen.
222
+ */
223
+ public getOutgoingRoomKeyRequestByState(wantedStates: number[]): Promise<OutgoingRoomKeyRequest | null> {
224
+ if (wantedStates.length === 0) {
225
+ return Promise.resolve(null);
226
+ }
227
+
228
+ // this is a bit tortuous because we need to make sure we do the lookup
229
+ // in a single transaction, to avoid having a race with the insertion
230
+ // code.
231
+
232
+ // index into the wantedStates array
233
+ let stateIndex = 0;
234
+ let result: OutgoingRoomKeyRequest;
235
+
236
+ function onsuccess(this: IDBRequest<IDBCursorWithValue | null>): void {
237
+ const cursor = this.result;
238
+ if (cursor) {
239
+ // got a match
240
+ result = cursor.value;
241
+ return;
242
+ }
243
+
244
+ // try the next state in the list
245
+ stateIndex++;
246
+ if (stateIndex >= wantedStates.length) {
247
+ // no matches
248
+ return;
249
+ }
250
+
251
+ const wantedState = wantedStates[stateIndex];
252
+ const cursorReq = (this.source as IDBIndex).openCursor(wantedState);
253
+ cursorReq.onsuccess = onsuccess;
254
+ }
255
+
256
+ const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly");
257
+ const store = txn.objectStore("outgoingRoomKeyRequests");
258
+
259
+ const wantedState = wantedStates[stateIndex];
260
+ const cursorReq = store.index("state").openCursor(wantedState);
261
+ cursorReq.onsuccess = onsuccess;
262
+
263
+ return promiseifyTxn(txn).then(() => result);
264
+ }
265
+
266
+ /**
267
+ *
268
+ * @returns All elements in a given state
269
+ */
270
+ public getAllOutgoingRoomKeyRequestsByState(wantedState: number): Promise<OutgoingRoomKeyRequest[]> {
271
+ return new Promise((resolve, reject) => {
272
+ const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly");
273
+ const store = txn.objectStore("outgoingRoomKeyRequests");
274
+ const index = store.index("state");
275
+ const request = index.getAll(wantedState);
276
+
277
+ request.onsuccess = (): void => resolve(request.result);
278
+ request.onerror = (): void => reject(request.error);
279
+ });
280
+ }
281
+
282
+ public getOutgoingRoomKeyRequestsByTarget(
283
+ userId: string,
284
+ deviceId: string,
285
+ wantedStates: number[],
286
+ ): Promise<OutgoingRoomKeyRequest[]> {
287
+ let stateIndex = 0;
288
+ const results: OutgoingRoomKeyRequest[] = [];
289
+
290
+ function onsuccess(this: IDBRequest<IDBCursorWithValue | null>): void {
291
+ const cursor = this.result;
292
+ if (cursor) {
293
+ const keyReq = cursor.value;
294
+ if (
295
+ keyReq.recipients.some(
296
+ (recipient: IRoomKeyRequestRecipient) =>
297
+ recipient.userId === userId && recipient.deviceId === deviceId,
298
+ )
299
+ ) {
300
+ results.push(keyReq);
301
+ }
302
+ cursor.continue();
303
+ } else {
304
+ // try the next state in the list
305
+ stateIndex++;
306
+ if (stateIndex >= wantedStates.length) {
307
+ // no matches
308
+ return;
309
+ }
310
+
311
+ const wantedState = wantedStates[stateIndex];
312
+ const cursorReq = (this.source as IDBIndex).openCursor(wantedState);
313
+ cursorReq.onsuccess = onsuccess;
314
+ }
315
+ }
316
+
317
+ const txn = this.db.transaction("outgoingRoomKeyRequests", "readonly");
318
+ const store = txn.objectStore("outgoingRoomKeyRequests");
319
+
320
+ const wantedState = wantedStates[stateIndex];
321
+ const cursorReq = store.index("state").openCursor(wantedState);
322
+ cursorReq.onsuccess = onsuccess;
323
+
324
+ return promiseifyTxn(txn).then(() => results);
325
+ }
326
+
327
+ /**
328
+ * Look for an existing room key request by id and state, and update it if
329
+ * found
330
+ *
331
+ * @param requestId - ID of request to update
332
+ * @param expectedState - state we expect to find the request in
333
+ * @param updates - name/value map of updates to apply
334
+ *
335
+ * @returns resolves to
336
+ * {@link OutgoingRoomKeyRequest}
337
+ * updated request, or null if no matching row was found
338
+ */
339
+ public updateOutgoingRoomKeyRequest(
340
+ requestId: string,
341
+ expectedState: number,
342
+ updates: Partial<OutgoingRoomKeyRequest>,
343
+ ): Promise<OutgoingRoomKeyRequest | null> {
344
+ let result: OutgoingRoomKeyRequest | null = null;
345
+
346
+ function onsuccess(this: IDBRequest<IDBCursorWithValue | null>): void {
347
+ const cursor = this.result;
348
+ if (!cursor) {
349
+ return;
350
+ }
351
+ const data = cursor.value;
352
+ if (data.state != expectedState) {
353
+ logger.warn(
354
+ `Cannot update room key request from ${expectedState} ` +
355
+ `as it was already updated to ${data.state}`,
356
+ );
357
+ return;
358
+ }
359
+ Object.assign(data, updates);
360
+ cursor.update(data);
361
+ result = data;
362
+ }
363
+
364
+ const txn = this.db.transaction("outgoingRoomKeyRequests", "readwrite");
365
+ const cursorReq = txn.objectStore("outgoingRoomKeyRequests").openCursor(requestId);
366
+ cursorReq.onsuccess = onsuccess;
367
+ return promiseifyTxn(txn).then(() => result);
368
+ }
369
+
370
+ /**
371
+ * Look for an existing room key request by id and state, and delete it if
372
+ * found
373
+ *
374
+ * @param requestId - ID of request to update
375
+ * @param expectedState - state we expect to find the request in
376
+ *
377
+ * @returns resolves once the operation is completed
378
+ */
379
+ public deleteOutgoingRoomKeyRequest(
380
+ requestId: string,
381
+ expectedState: number,
382
+ ): Promise<OutgoingRoomKeyRequest | null> {
383
+ const txn = this.db.transaction("outgoingRoomKeyRequests", "readwrite");
384
+ const cursorReq = txn.objectStore("outgoingRoomKeyRequests").openCursor(requestId);
385
+ cursorReq.onsuccess = (): void => {
386
+ const cursor = cursorReq.result;
387
+ if (!cursor) {
388
+ return;
389
+ }
390
+ const data = cursor.value;
391
+ if (data.state != expectedState) {
392
+ logger.warn(`Cannot delete room key request in state ${data.state} ` + `(expected ${expectedState})`);
393
+ return;
394
+ }
395
+ cursor.delete();
396
+ };
397
+ return promiseifyTxn<OutgoingRoomKeyRequest | null>(txn);
398
+ }
399
+
400
+ // Olm Account
401
+
402
+ public getAccount(txn: IDBTransaction, func: (accountPickle: string | null) => void): void {
403
+ const objectStore = txn.objectStore("account");
404
+ const getReq = objectStore.get("-");
405
+ getReq.onsuccess = function (): void {
406
+ try {
407
+ func(getReq.result || null);
408
+ } catch (e) {
409
+ abortWithException(txn, <Error>e);
410
+ }
411
+ };
412
+ }
413
+
414
+ public storeAccount(txn: IDBTransaction, accountPickle: string): void {
415
+ const objectStore = txn.objectStore("account");
416
+ objectStore.put(accountPickle, "-");
417
+ }
418
+
419
+ public getCrossSigningKeys(
420
+ txn: IDBTransaction,
421
+ func: (keys: Record<string, CrossSigningKeyInfo> | null) => void,
422
+ ): void {
423
+ const objectStore = txn.objectStore("account");
424
+ const getReq = objectStore.get("crossSigningKeys");
425
+ getReq.onsuccess = function (): void {
426
+ try {
427
+ func(getReq.result || null);
428
+ } catch (e) {
429
+ abortWithException(txn, <Error>e);
430
+ }
431
+ };
432
+ }
433
+
434
+ public getSecretStorePrivateKey<K extends keyof SecretStorePrivateKeys>(
435
+ txn: IDBTransaction,
436
+ func: (key: SecretStorePrivateKeys[K] | null) => void,
437
+ type: K,
438
+ ): void {
439
+ const objectStore = txn.objectStore("account");
440
+ const getReq = objectStore.get(`ssss_cache:${type}`);
441
+ getReq.onsuccess = function (): void {
442
+ try {
443
+ func(getReq.result || null);
444
+ } catch (e) {
445
+ abortWithException(txn, <Error>e);
446
+ }
447
+ };
448
+ }
449
+
450
+ public storeCrossSigningKeys(txn: IDBTransaction, keys: Record<string, CrossSigningKeyInfo>): void {
451
+ const objectStore = txn.objectStore("account");
452
+ objectStore.put(keys, "crossSigningKeys");
453
+ }
454
+
455
+ public storeSecretStorePrivateKey<K extends keyof SecretStorePrivateKeys>(
456
+ txn: IDBTransaction,
457
+ type: K,
458
+ key: SecretStorePrivateKeys[K],
459
+ ): void {
460
+ const objectStore = txn.objectStore("account");
461
+ objectStore.put(key, `ssss_cache:${type}`);
462
+ }
463
+
464
+ // Olm Sessions
465
+
466
+ public countEndToEndSessions(txn: IDBTransaction, func: (count: number) => void): void {
467
+ const objectStore = txn.objectStore("sessions");
468
+ const countReq = objectStore.count();
469
+ countReq.onsuccess = function (): void {
470
+ try {
471
+ func(countReq.result);
472
+ } catch (e) {
473
+ abortWithException(txn, <Error>e);
474
+ }
475
+ };
476
+ }
477
+
478
+ public getEndToEndSessions(
479
+ deviceKey: string,
480
+ txn: IDBTransaction,
481
+ func: (sessions: { [sessionId: string]: ISessionInfo }) => void,
482
+ ): void {
483
+ const objectStore = txn.objectStore("sessions");
484
+ const idx = objectStore.index("deviceKey");
485
+ const getReq = idx.openCursor(deviceKey);
486
+ const results: Parameters<Parameters<Backend["getEndToEndSessions"]>[2]>[0] = {};
487
+ getReq.onsuccess = function (): void {
488
+ const cursor = getReq.result;
489
+ if (cursor) {
490
+ results[cursor.value.sessionId] = {
491
+ session: cursor.value.session,
492
+ lastReceivedMessageTs: cursor.value.lastReceivedMessageTs,
493
+ };
494
+ cursor.continue();
495
+ } else {
496
+ try {
497
+ func(results);
498
+ } catch (e) {
499
+ abortWithException(txn, <Error>e);
500
+ }
501
+ }
502
+ };
503
+ }
504
+
505
+ public getEndToEndSession(
506
+ deviceKey: string,
507
+ sessionId: string,
508
+ txn: IDBTransaction,
509
+ func: (session: ISessionInfo | null) => void,
510
+ ): void {
511
+ const objectStore = txn.objectStore("sessions");
512
+ const getReq = objectStore.get([deviceKey, sessionId]);
513
+ getReq.onsuccess = function (): void {
514
+ try {
515
+ if (getReq.result) {
516
+ func({
517
+ session: getReq.result.session,
518
+ lastReceivedMessageTs: getReq.result.lastReceivedMessageTs,
519
+ });
520
+ } else {
521
+ func(null);
522
+ }
523
+ } catch (e) {
524
+ abortWithException(txn, <Error>e);
525
+ }
526
+ };
527
+ }
528
+
529
+ public getAllEndToEndSessions(txn: IDBTransaction, func: (session: ISessionInfo | null) => void): void {
530
+ const objectStore = txn.objectStore("sessions");
531
+ const getReq = objectStore.openCursor();
532
+ getReq.onsuccess = function (): void {
533
+ try {
534
+ const cursor = getReq.result;
535
+ if (cursor) {
536
+ func(cursor.value);
537
+ cursor.continue();
538
+ } else {
539
+ func(null);
540
+ }
541
+ } catch (e) {
542
+ abortWithException(txn, <Error>e);
543
+ }
544
+ };
545
+ }
546
+
547
+ public storeEndToEndSession(
548
+ deviceKey: string,
549
+ sessionId: string,
550
+ sessionInfo: ISessionInfo,
551
+ txn: IDBTransaction,
552
+ ): void {
553
+ const objectStore = txn.objectStore("sessions");
554
+ objectStore.put({
555
+ deviceKey,
556
+ sessionId,
557
+ session: sessionInfo.session,
558
+ lastReceivedMessageTs: sessionInfo.lastReceivedMessageTs,
559
+ });
560
+ }
561
+
562
+ public async storeEndToEndSessionProblem(deviceKey: string, type: string, fixed: boolean): Promise<void> {
563
+ const txn = this.db.transaction("session_problems", "readwrite");
564
+ const objectStore = txn.objectStore("session_problems");
565
+ objectStore.put({
566
+ deviceKey,
567
+ type,
568
+ fixed,
569
+ time: Date.now(),
570
+ });
571
+ await promiseifyTxn(txn);
572
+ }
573
+
574
+ public async getEndToEndSessionProblem(deviceKey: string, timestamp: number): Promise<IProblem | null> {
575
+ let result: IProblem | null = null;
576
+ const txn = this.db.transaction("session_problems", "readwrite");
577
+ const objectStore = txn.objectStore("session_problems");
578
+ const index = objectStore.index("deviceKey");
579
+ const req = index.getAll(deviceKey);
580
+ req.onsuccess = (): void => {
581
+ const problems = req.result;
582
+ if (!problems.length) {
583
+ result = null;
584
+ return;
585
+ }
586
+ problems.sort((a, b) => {
587
+ return a.time - b.time;
588
+ });
589
+ const lastProblem = problems[problems.length - 1];
590
+ for (const problem of problems) {
591
+ if (problem.time > timestamp) {
592
+ result = Object.assign({}, problem, { fixed: lastProblem.fixed });
593
+ return;
594
+ }
595
+ }
596
+ if (lastProblem.fixed) {
597
+ result = null;
598
+ } else {
599
+ result = lastProblem;
600
+ }
601
+ };
602
+ await promiseifyTxn(txn);
603
+ return result;
604
+ }
605
+
606
+ // FIXME: we should probably prune this when devices get deleted
607
+ public async filterOutNotifiedErrorDevices(devices: IOlmDevice[]): Promise<IOlmDevice[]> {
608
+ const txn = this.db.transaction("notified_error_devices", "readwrite");
609
+ const objectStore = txn.objectStore("notified_error_devices");
610
+
611
+ const ret: IOlmDevice[] = [];
612
+
613
+ await Promise.all(
614
+ devices.map((device) => {
615
+ return new Promise<void>((resolve) => {
616
+ const { userId, deviceInfo } = device;
617
+ const getReq = objectStore.get([userId, deviceInfo.deviceId]);
618
+ getReq.onsuccess = function (): void {
619
+ if (!getReq.result) {
620
+ objectStore.put({ userId, deviceId: deviceInfo.deviceId });
621
+ ret.push(device);
622
+ }
623
+ resolve();
624
+ };
625
+ });
626
+ }),
627
+ );
628
+
629
+ return ret;
630
+ }
631
+
632
+ /**
633
+ * Fetch a batch of Olm sessions from the database.
634
+ *
635
+ * Implementation of {@link CryptoStore.getEndToEndSessionsBatch}.
636
+ */
637
+ public async getEndToEndSessionsBatch(): Promise<null | ISessionInfo[]> {
638
+ const result: ISessionInfo[] = [];
639
+ await this.doTxn("readonly", [IndexedDBCryptoStore.STORE_SESSIONS], (txn) => {
640
+ const objectStore = txn.objectStore(IndexedDBCryptoStore.STORE_SESSIONS);
641
+ const getReq = objectStore.openCursor();
642
+ getReq.onsuccess = function (): void {
643
+ try {
644
+ const cursor = getReq.result;
645
+ if (cursor) {
646
+ result.push(cursor.value);
647
+ if (result.length < SESSION_BATCH_SIZE) {
648
+ cursor.continue();
649
+ }
650
+ }
651
+ } catch (e) {
652
+ abortWithException(txn, <Error>e);
653
+ }
654
+ };
655
+ });
656
+
657
+ if (result.length === 0) {
658
+ // No sessions left.
659
+ return null;
660
+ }
661
+
662
+ return result;
663
+ }
664
+
665
+ /**
666
+ * Delete a batch of Olm sessions from the database.
667
+ *
668
+ * Implementation of {@link CryptoStore.deleteEndToEndSessionsBatch}.
669
+ *
670
+ * @internal
671
+ */
672
+ public async deleteEndToEndSessionsBatch(sessions: { deviceKey: string; sessionId: string }[]): Promise<void> {
673
+ await this.doTxn("readwrite", [IndexedDBCryptoStore.STORE_SESSIONS], async (txn) => {
674
+ try {
675
+ const objectStore = txn.objectStore(IndexedDBCryptoStore.STORE_SESSIONS);
676
+ for (const { deviceKey, sessionId } of sessions) {
677
+ const req = objectStore.delete([deviceKey, sessionId]);
678
+ await new Promise((resolve) => {
679
+ req.onsuccess = resolve;
680
+ });
681
+ }
682
+ } catch (e) {
683
+ abortWithException(txn, <Error>e);
684
+ }
685
+ });
686
+ }
687
+
688
+ // Inbound group sessions
689
+
690
+ public getEndToEndInboundGroupSession(
691
+ senderCurve25519Key: string,
692
+ sessionId: string,
693
+ txn: IDBTransaction,
694
+ func: (groupSession: InboundGroupSessionData | null, groupSessionWithheld: IWithheld | null) => void,
695
+ ): void {
696
+ let session: InboundGroupSessionData | null | boolean = false;
697
+ let withheld: IWithheld | null | boolean = false;
698
+ const objectStore = txn.objectStore("inbound_group_sessions");
699
+ const getReq = objectStore.get([senderCurve25519Key, sessionId]);
700
+ getReq.onsuccess = function (): void {
701
+ try {
702
+ if (getReq.result) {
703
+ session = getReq.result.session;
704
+ } else {
705
+ session = null;
706
+ }
707
+ if (withheld !== false) {
708
+ func(session as InboundGroupSessionData, withheld as IWithheld);
709
+ }
710
+ } catch (e) {
711
+ abortWithException(txn, <Error>e);
712
+ }
713
+ };
714
+
715
+ const withheldObjectStore = txn.objectStore("inbound_group_sessions_withheld");
716
+ const withheldGetReq = withheldObjectStore.get([senderCurve25519Key, sessionId]);
717
+ withheldGetReq.onsuccess = function (): void {
718
+ try {
719
+ if (withheldGetReq.result) {
720
+ withheld = withheldGetReq.result.session;
721
+ } else {
722
+ withheld = null;
723
+ }
724
+ if (session !== false) {
725
+ func(session as InboundGroupSessionData, withheld as IWithheld);
726
+ }
727
+ } catch (e) {
728
+ abortWithException(txn, <Error>e);
729
+ }
730
+ };
731
+ }
732
+
733
+ public getAllEndToEndInboundGroupSessions(txn: IDBTransaction, func: (session: ISession | null) => void): void {
734
+ const objectStore = txn.objectStore("inbound_group_sessions");
735
+ const getReq = objectStore.openCursor();
736
+ getReq.onsuccess = function (): void {
737
+ const cursor = getReq.result;
738
+ if (cursor) {
739
+ try {
740
+ func({
741
+ senderKey: cursor.value.senderCurve25519Key,
742
+ sessionId: cursor.value.sessionId,
743
+ sessionData: cursor.value.session,
744
+ });
745
+ } catch (e) {
746
+ abortWithException(txn, <Error>e);
747
+ }
748
+ cursor.continue();
749
+ } else {
750
+ try {
751
+ func(null);
752
+ } catch (e) {
753
+ abortWithException(txn, <Error>e);
754
+ }
755
+ }
756
+ };
757
+ }
758
+
759
+ public addEndToEndInboundGroupSession(
760
+ senderCurve25519Key: string,
761
+ sessionId: string,
762
+ sessionData: InboundGroupSessionData,
763
+ txn: IDBTransaction,
764
+ ): void {
765
+ const objectStore = txn.objectStore("inbound_group_sessions");
766
+ const addReq = objectStore.add({
767
+ senderCurve25519Key,
768
+ sessionId,
769
+ session: sessionData,
770
+ });
771
+ addReq.onerror = (ev): void => {
772
+ if (addReq.error?.name === "ConstraintError") {
773
+ // This stops the error from triggering the txn's onerror
774
+ ev.stopPropagation();
775
+ // ...and this stops it from aborting the transaction
776
+ ev.preventDefault();
777
+ logger.log("Ignoring duplicate inbound group session: " + senderCurve25519Key + " / " + sessionId);
778
+ } else {
779
+ abortWithException(txn, new Error("Failed to add inbound group session: " + addReq.error));
780
+ }
781
+ };
782
+ }
783
+
784
+ public storeEndToEndInboundGroupSession(
785
+ senderCurve25519Key: string,
786
+ sessionId: string,
787
+ sessionData: InboundGroupSessionData,
788
+ txn: IDBTransaction,
789
+ ): void {
790
+ const objectStore = txn.objectStore("inbound_group_sessions");
791
+ objectStore.put({
792
+ senderCurve25519Key,
793
+ sessionId,
794
+ session: sessionData,
795
+ });
796
+ }
797
+
798
+ public storeEndToEndInboundGroupSessionWithheld(
799
+ senderCurve25519Key: string,
800
+ sessionId: string,
801
+ sessionData: IWithheld,
802
+ txn: IDBTransaction,
803
+ ): void {
804
+ const objectStore = txn.objectStore("inbound_group_sessions_withheld");
805
+ objectStore.put({
806
+ senderCurve25519Key,
807
+ sessionId,
808
+ session: sessionData,
809
+ });
810
+ }
811
+
812
+ /**
813
+ * Count the number of Megolm sessions in the database.
814
+ *
815
+ * Implementation of {@link CryptoStore.countEndToEndInboundGroupSessions}.
816
+ *
817
+ * @internal
818
+ */
819
+ public async countEndToEndInboundGroupSessions(): Promise<number> {
820
+ let result = 0;
821
+ await this.doTxn("readonly", [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], (txn) => {
822
+ const sessionStore = txn.objectStore(IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS);
823
+ const countReq = sessionStore.count();
824
+ countReq.onsuccess = (): void => {
825
+ result = countReq.result;
826
+ };
827
+ });
828
+ return result;
829
+ }
830
+
831
+ /**
832
+ * Fetch a batch of Megolm sessions from the database.
833
+ *
834
+ * Implementation of {@link CryptoStore.getEndToEndInboundGroupSessionsBatch}.
835
+ */
836
+ public async getEndToEndInboundGroupSessionsBatch(): Promise<null | SessionExtended[]> {
837
+ const result: SessionExtended[] = [];
838
+ await this.doTxn(
839
+ "readonly",
840
+ [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS, IndexedDBCryptoStore.STORE_BACKUP],
841
+ (txn) => {
842
+ const sessionStore = txn.objectStore(IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS);
843
+ const backupStore = txn.objectStore(IndexedDBCryptoStore.STORE_BACKUP);
844
+
845
+ const getReq = sessionStore.openCursor();
846
+ getReq.onsuccess = function (): void {
847
+ try {
848
+ const cursor = getReq.result;
849
+ if (cursor) {
850
+ const backupGetReq = backupStore.get(cursor.key);
851
+ backupGetReq.onsuccess = (): void => {
852
+ result.push({
853
+ senderKey: cursor.value.senderCurve25519Key,
854
+ sessionId: cursor.value.sessionId,
855
+ sessionData: cursor.value.session,
856
+ needsBackup: backupGetReq.result !== undefined,
857
+ });
858
+ if (result.length < SESSION_BATCH_SIZE) {
859
+ cursor.continue();
860
+ }
861
+ };
862
+ }
863
+ } catch (e) {
864
+ abortWithException(txn, <Error>e);
865
+ }
866
+ };
867
+ },
868
+ );
869
+
870
+ if (result.length === 0) {
871
+ // No sessions left.
872
+ return null;
873
+ }
874
+
875
+ return result;
876
+ }
877
+
878
+ /**
879
+ * Delete a batch of Megolm sessions from the database.
880
+ *
881
+ * Implementation of {@link CryptoStore.deleteEndToEndInboundGroupSessionsBatch}.
882
+ *
883
+ * @internal
884
+ */
885
+ public async deleteEndToEndInboundGroupSessionsBatch(
886
+ sessions: { senderKey: string; sessionId: string }[],
887
+ ): Promise<void> {
888
+ await this.doTxn("readwrite", [IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS], async (txn) => {
889
+ try {
890
+ const objectStore = txn.objectStore(IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS);
891
+ for (const { senderKey, sessionId } of sessions) {
892
+ const req = objectStore.delete([senderKey, sessionId]);
893
+ await new Promise((resolve) => {
894
+ req.onsuccess = resolve;
895
+ });
896
+ }
897
+ } catch (e) {
898
+ abortWithException(txn, <Error>e);
899
+ }
900
+ });
901
+ }
902
+
903
+ public getEndToEndDeviceData(txn: IDBTransaction, func: (deviceData: IDeviceData | null) => void): void {
904
+ const objectStore = txn.objectStore("device_data");
905
+ const getReq = objectStore.get("-");
906
+ getReq.onsuccess = function (): void {
907
+ try {
908
+ func(getReq.result || null);
909
+ } catch (e) {
910
+ abortWithException(txn, <Error>e);
911
+ }
912
+ };
913
+ }
914
+
915
+ public storeEndToEndDeviceData(deviceData: IDeviceData, txn: IDBTransaction): void {
916
+ const objectStore = txn.objectStore("device_data");
917
+ objectStore.put(deviceData, "-");
918
+ }
919
+
920
+ public storeEndToEndRoom(roomId: string, roomInfo: IRoomEncryption, txn: IDBTransaction): void {
921
+ const objectStore = txn.objectStore("rooms");
922
+ objectStore.put(roomInfo, roomId);
923
+ }
924
+
925
+ public getEndToEndRooms(txn: IDBTransaction, func: (rooms: Record<string, IRoomEncryption>) => void): void {
926
+ const rooms: Parameters<Parameters<Backend["getEndToEndRooms"]>[1]>[0] = {};
927
+ const objectStore = txn.objectStore("rooms");
928
+ const getReq = objectStore.openCursor();
929
+ getReq.onsuccess = function (): void {
930
+ const cursor = getReq.result;
931
+ if (cursor) {
932
+ rooms[cursor.key as string] = cursor.value;
933
+ cursor.continue();
934
+ } else {
935
+ try {
936
+ func(rooms);
937
+ } catch (e) {
938
+ abortWithException(txn, <Error>e);
939
+ }
940
+ }
941
+ };
942
+ }
943
+
944
+ // session backups
945
+
946
+ public getSessionsNeedingBackup(limit: number): Promise<ISession[]> {
947
+ return new Promise((resolve, reject) => {
948
+ const sessions: ISession[] = [];
949
+
950
+ const txn = this.db.transaction(["sessions_needing_backup", "inbound_group_sessions"], "readonly");
951
+ txn.onerror = reject;
952
+ txn.oncomplete = function (): void {
953
+ resolve(sessions);
954
+ };
955
+ const objectStore = txn.objectStore("sessions_needing_backup");
956
+ const sessionStore = txn.objectStore("inbound_group_sessions");
957
+ const getReq = objectStore.openCursor();
958
+ getReq.onsuccess = function (): void {
959
+ const cursor = getReq.result;
960
+ if (cursor) {
961
+ const sessionGetReq = sessionStore.get(cursor.key);
962
+ sessionGetReq.onsuccess = function (): void {
963
+ sessions.push({
964
+ senderKey: sessionGetReq.result.senderCurve25519Key,
965
+ sessionId: sessionGetReq.result.sessionId,
966
+ sessionData: sessionGetReq.result.session,
967
+ });
968
+ };
969
+ if (!limit || sessions.length < limit) {
970
+ cursor.continue();
971
+ }
972
+ }
973
+ };
974
+ });
975
+ }
976
+
977
+ public countSessionsNeedingBackup(txn?: IDBTransaction): Promise<number> {
978
+ if (!txn) {
979
+ txn = this.db.transaction("sessions_needing_backup", "readonly");
980
+ }
981
+ const objectStore = txn.objectStore("sessions_needing_backup");
982
+ return new Promise((resolve, reject) => {
983
+ const req = objectStore.count();
984
+ req.onerror = reject;
985
+ req.onsuccess = (): void => resolve(req.result);
986
+ });
987
+ }
988
+
989
+ public async unmarkSessionsNeedingBackup(sessions: ISession[], txn?: IDBTransaction): Promise<void> {
990
+ if (!txn) {
991
+ txn = this.db.transaction("sessions_needing_backup", "readwrite");
992
+ }
993
+ const objectStore = txn.objectStore("sessions_needing_backup");
994
+ await Promise.all(
995
+ sessions.map((session) => {
996
+ return new Promise((resolve, reject) => {
997
+ const req = objectStore.delete([session.senderKey, session.sessionId]);
998
+ req.onsuccess = resolve;
999
+ req.onerror = reject;
1000
+ });
1001
+ }),
1002
+ );
1003
+ }
1004
+
1005
+ public async markSessionsNeedingBackup(sessions: ISession[], txn?: IDBTransaction): Promise<void> {
1006
+ if (!txn) {
1007
+ txn = this.db.transaction("sessions_needing_backup", "readwrite");
1008
+ }
1009
+ const objectStore = txn.objectStore("sessions_needing_backup");
1010
+ await Promise.all(
1011
+ sessions.map((session) => {
1012
+ return new Promise((resolve, reject) => {
1013
+ const req = objectStore.put({
1014
+ senderCurve25519Key: session.senderKey,
1015
+ sessionId: session.sessionId,
1016
+ });
1017
+ req.onsuccess = resolve;
1018
+ req.onerror = reject;
1019
+ });
1020
+ }),
1021
+ );
1022
+ }
1023
+
1024
+ public addSharedHistoryInboundGroupSession(
1025
+ roomId: string,
1026
+ senderKey: string,
1027
+ sessionId: string,
1028
+ txn?: IDBTransaction,
1029
+ ): void {
1030
+ if (!txn) {
1031
+ txn = this.db.transaction("shared_history_inbound_group_sessions", "readwrite");
1032
+ }
1033
+ const objectStore = txn.objectStore("shared_history_inbound_group_sessions");
1034
+ const req = objectStore.get([roomId]);
1035
+ req.onsuccess = (): void => {
1036
+ const { sessions } = req.result || { sessions: [] };
1037
+ sessions.push([senderKey, sessionId]);
1038
+ objectStore.put({ roomId, sessions });
1039
+ };
1040
+ }
1041
+
1042
+ public getSharedHistoryInboundGroupSessions(
1043
+ roomId: string,
1044
+ txn?: IDBTransaction,
1045
+ ): Promise<[senderKey: string, sessionId: string][]> {
1046
+ if (!txn) {
1047
+ txn = this.db.transaction("shared_history_inbound_group_sessions", "readonly");
1048
+ }
1049
+ const objectStore = txn.objectStore("shared_history_inbound_group_sessions");
1050
+ const req = objectStore.get([roomId]);
1051
+ return new Promise((resolve, reject) => {
1052
+ req.onsuccess = (): void => {
1053
+ const { sessions } = req.result || { sessions: [] };
1054
+ resolve(sessions);
1055
+ };
1056
+ req.onerror = reject;
1057
+ });
1058
+ }
1059
+
1060
+ public addParkedSharedHistory(roomId: string, parkedData: ParkedSharedHistory, txn?: IDBTransaction): void {
1061
+ if (!txn) {
1062
+ txn = this.db.transaction("parked_shared_history", "readwrite");
1063
+ }
1064
+ const objectStore = txn.objectStore("parked_shared_history");
1065
+ const req = objectStore.get([roomId]);
1066
+ req.onsuccess = (): void => {
1067
+ const { parked } = req.result || { parked: [] };
1068
+ parked.push(parkedData);
1069
+ objectStore.put({ roomId, parked });
1070
+ };
1071
+ }
1072
+
1073
+ public takeParkedSharedHistory(roomId: string, txn?: IDBTransaction): Promise<ParkedSharedHistory[]> {
1074
+ if (!txn) {
1075
+ txn = this.db.transaction("parked_shared_history", "readwrite");
1076
+ }
1077
+ const cursorReq = txn.objectStore("parked_shared_history").openCursor(roomId);
1078
+ return new Promise((resolve, reject) => {
1079
+ cursorReq.onsuccess = (): void => {
1080
+ const cursor = cursorReq.result;
1081
+ if (!cursor) {
1082
+ resolve([]);
1083
+ return;
1084
+ }
1085
+ const data = cursor.value;
1086
+ cursor.delete();
1087
+ resolve(data);
1088
+ };
1089
+ cursorReq.onerror = reject;
1090
+ });
1091
+ }
1092
+
1093
+ public doTxn<T>(
1094
+ mode: Mode,
1095
+ stores: string | string[],
1096
+ func: (txn: IDBTransaction) => T,
1097
+ log: Logger = logger,
1098
+ ): Promise<T> {
1099
+ let startTime: number;
1100
+ let description: string;
1101
+ if (PROFILE_TRANSACTIONS) {
1102
+ const txnId = this.nextTxnId++;
1103
+ startTime = Date.now();
1104
+ description = `${mode} crypto store transaction ${txnId} in ${stores}`;
1105
+ log.debug(`Starting ${description}`);
1106
+ }
1107
+ const txn = this.db.transaction(stores, mode);
1108
+ const promise = promiseifyTxn(txn);
1109
+ const result = func(txn);
1110
+ if (PROFILE_TRANSACTIONS) {
1111
+ promise.then(
1112
+ () => {
1113
+ const elapsedTime = Date.now() - startTime;
1114
+ log.debug(`Finished ${description}, took ${elapsedTime} ms`);
1115
+ },
1116
+ () => {
1117
+ const elapsedTime = Date.now() - startTime;
1118
+ log.error(`Failed ${description}, took ${elapsedTime} ms`);
1119
+ },
1120
+ );
1121
+ }
1122
+ return promise.then(() => {
1123
+ return result;
1124
+ });
1125
+ }
1126
+ }
1127
+
1128
+ type DbMigration = (db: IDBDatabase) => void;
1129
+ const DB_MIGRATIONS: DbMigration[] = [
1130
+ (db): void => {
1131
+ createDatabase(db);
1132
+ },
1133
+ (db): void => {
1134
+ db.createObjectStore("account");
1135
+ },
1136
+ (db): void => {
1137
+ const sessionsStore = db.createObjectStore("sessions", {
1138
+ keyPath: ["deviceKey", "sessionId"],
1139
+ });
1140
+ sessionsStore.createIndex("deviceKey", "deviceKey");
1141
+ },
1142
+ (db): void => {
1143
+ db.createObjectStore("inbound_group_sessions", {
1144
+ keyPath: ["senderCurve25519Key", "sessionId"],
1145
+ });
1146
+ },
1147
+ (db): void => {
1148
+ db.createObjectStore("device_data");
1149
+ },
1150
+ (db): void => {
1151
+ db.createObjectStore("rooms");
1152
+ },
1153
+ (db): void => {
1154
+ db.createObjectStore("sessions_needing_backup", {
1155
+ keyPath: ["senderCurve25519Key", "sessionId"],
1156
+ });
1157
+ },
1158
+ (db): void => {
1159
+ db.createObjectStore("inbound_group_sessions_withheld", {
1160
+ keyPath: ["senderCurve25519Key", "sessionId"],
1161
+ });
1162
+ },
1163
+ (db): void => {
1164
+ const problemsStore = db.createObjectStore("session_problems", {
1165
+ keyPath: ["deviceKey", "time"],
1166
+ });
1167
+ problemsStore.createIndex("deviceKey", "deviceKey");
1168
+
1169
+ db.createObjectStore("notified_error_devices", {
1170
+ keyPath: ["userId", "deviceId"],
1171
+ });
1172
+ },
1173
+ (db): void => {
1174
+ db.createObjectStore("shared_history_inbound_group_sessions", {
1175
+ keyPath: ["roomId"],
1176
+ });
1177
+ },
1178
+ (db): void => {
1179
+ db.createObjectStore("parked_shared_history", {
1180
+ keyPath: ["roomId"],
1181
+ });
1182
+ },
1183
+ // Expand as needed.
1184
+ ];
1185
+ export const VERSION = DB_MIGRATIONS.length;
1186
+
1187
+ export function upgradeDatabase(db: IDBDatabase, oldVersion: number): void {
1188
+ logger.log(`Upgrading IndexedDBCryptoStore from version ${oldVersion}` + ` to ${VERSION}`);
1189
+ DB_MIGRATIONS.forEach((migration, index) => {
1190
+ if (oldVersion <= index) migration(db);
1191
+ });
1192
+ }
1193
+
1194
+ function createDatabase(db: IDBDatabase): void {
1195
+ const outgoingRoomKeyRequestsStore = db.createObjectStore("outgoingRoomKeyRequests", { keyPath: "requestId" });
1196
+
1197
+ // we assume that the RoomKeyRequestBody will have room_id and session_id
1198
+ // properties, to make the index efficient.
1199
+ outgoingRoomKeyRequestsStore.createIndex("session", ["requestBody.room_id", "requestBody.session_id"]);
1200
+
1201
+ outgoingRoomKeyRequestsStore.createIndex("state", "state");
1202
+ }
1203
+
1204
+ interface IWrappedIDBTransaction extends IDBTransaction {
1205
+ _mx_abortexception: Error; // eslint-disable-line camelcase
1206
+ }
1207
+
1208
+ /*
1209
+ * Aborts a transaction with a given exception
1210
+ * The transaction promise will be rejected with this exception.
1211
+ */
1212
+ function abortWithException(txn: IDBTransaction, e: Error): void {
1213
+ // We cheekily stick our exception onto the transaction object here
1214
+ // We could alternatively make the thing we pass back to the app
1215
+ // an object containing the transaction and exception.
1216
+ (txn as IWrappedIDBTransaction)._mx_abortexception = e;
1217
+ try {
1218
+ txn.abort();
1219
+ } catch {
1220
+ // sometimes we won't be able to abort the transaction
1221
+ // (ie. if it's aborted or completed)
1222
+ }
1223
+ }
1224
+
1225
+ function promiseifyTxn<T>(txn: IDBTransaction): Promise<T | null> {
1226
+ return new Promise((resolve, reject) => {
1227
+ txn.oncomplete = (): void => {
1228
+ if ((txn as IWrappedIDBTransaction)._mx_abortexception !== undefined) {
1229
+ reject((txn as IWrappedIDBTransaction)._mx_abortexception);
1230
+ }
1231
+ resolve(null);
1232
+ };
1233
+ txn.onerror = (event): void => {
1234
+ if ((txn as IWrappedIDBTransaction)._mx_abortexception !== undefined) {
1235
+ reject((txn as IWrappedIDBTransaction)._mx_abortexception);
1236
+ } else {
1237
+ logger.log("Error performing indexeddb txn", event);
1238
+ reject(txn.error);
1239
+ }
1240
+ };
1241
+ txn.onabort = (event): void => {
1242
+ if ((txn as IWrappedIDBTransaction)._mx_abortexception !== undefined) {
1243
+ reject((txn as IWrappedIDBTransaction)._mx_abortexception);
1244
+ } else {
1245
+ logger.log("Error performing indexeddb txn", event);
1246
+ reject(txn.error);
1247
+ }
1248
+ };
1249
+ });
1250
+ }