@textrp/briij-js-sdk 41.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1104) hide show
  1. package/CHANGELOG.md +6464 -0
  2. package/LICENSE +177 -0
  3. package/README.md +477 -0
  4. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts +14 -0
  5. package/lib/@types/AESEncryptedSecretStoragePayload.d.ts.map +1 -0
  6. package/lib/@types/AESEncryptedSecretStoragePayload.js +1 -0
  7. package/lib/@types/AESEncryptedSecretStoragePayload.js.map +1 -0
  8. package/lib/@types/IIdentityServerProvider.d.ts +9 -0
  9. package/lib/@types/IIdentityServerProvider.d.ts.map +1 -0
  10. package/lib/@types/IIdentityServerProvider.js +1 -0
  11. package/lib/@types/IIdentityServerProvider.js.map +1 -0
  12. package/lib/@types/PushRules.d.ts +140 -0
  13. package/lib/@types/PushRules.d.ts.map +1 -0
  14. package/lib/@types/PushRules.js +94 -0
  15. package/lib/@types/PushRules.js.map +1 -0
  16. package/lib/@types/another-json.d.js +0 -0
  17. package/lib/@types/another-json.d.js.map +1 -0
  18. package/lib/@types/auth.d.ts +213 -0
  19. package/lib/@types/auth.d.ts.map +1 -0
  20. package/lib/@types/auth.js +107 -0
  21. package/lib/@types/auth.js.map +1 -0
  22. package/lib/@types/beacon.d.ts +106 -0
  23. package/lib/@types/beacon.d.ts.map +1 -0
  24. package/lib/@types/beacon.js +119 -0
  25. package/lib/@types/beacon.js.map +1 -0
  26. package/lib/@types/common.d.ts +10 -0
  27. package/lib/@types/common.d.ts.map +1 -0
  28. package/lib/@types/common.js +1 -0
  29. package/lib/@types/common.js.map +1 -0
  30. package/lib/@types/crypto.d.ts +46 -0
  31. package/lib/@types/crypto.d.ts.map +1 -0
  32. package/lib/@types/crypto.js +1 -0
  33. package/lib/@types/crypto.js.map +1 -0
  34. package/lib/@types/event.d.ts +356 -0
  35. package/lib/@types/event.d.ts.map +1 -0
  36. package/lib/@types/event.js +280 -0
  37. package/lib/@types/event.js.map +1 -0
  38. package/lib/@types/events.d.ts +92 -0
  39. package/lib/@types/events.d.ts.map +1 -0
  40. package/lib/@types/events.js +1 -0
  41. package/lib/@types/events.js.map +1 -0
  42. package/lib/@types/extensible_events.d.ts +98 -0
  43. package/lib/@types/extensible_events.d.ts.map +1 -0
  44. package/lib/@types/extensible_events.js +116 -0
  45. package/lib/@types/extensible_events.js.map +1 -0
  46. package/lib/@types/global.d.js +18 -0
  47. package/lib/@types/global.d.js.map +1 -0
  48. package/lib/@types/local_notifications.d.ts +4 -0
  49. package/lib/@types/local_notifications.d.ts.map +1 -0
  50. package/lib/@types/local_notifications.js +1 -0
  51. package/lib/@types/local_notifications.js.map +1 -0
  52. package/lib/@types/location.d.ts +60 -0
  53. package/lib/@types/location.d.ts.map +1 -0
  54. package/lib/@types/location.js +66 -0
  55. package/lib/@types/location.js.map +1 -0
  56. package/lib/@types/matrix-sdk-crypto-wasm.d.js +1 -0
  57. package/lib/@types/matrix-sdk-crypto-wasm.d.js.map +1 -0
  58. package/lib/@types/media.d.ts +220 -0
  59. package/lib/@types/media.d.ts.map +1 -0
  60. package/lib/@types/media.js +1 -0
  61. package/lib/@types/media.js.map +1 -0
  62. package/lib/@types/membership.d.ts +41 -0
  63. package/lib/@types/membership.d.ts.map +1 -0
  64. package/lib/@types/membership.js +58 -0
  65. package/lib/@types/membership.js.map +1 -0
  66. package/lib/@types/partials.d.ts +72 -0
  67. package/lib/@types/partials.d.ts.map +1 -0
  68. package/lib/@types/partials.js +71 -0
  69. package/lib/@types/partials.js.map +1 -0
  70. package/lib/@types/polls.d.ts +89 -0
  71. package/lib/@types/polls.d.ts.map +1 -0
  72. package/lib/@types/polls.js +86 -0
  73. package/lib/@types/polls.js.map +1 -0
  74. package/lib/@types/read_receipts.d.ts +36 -0
  75. package/lib/@types/read_receipts.d.ts.map +1 -0
  76. package/lib/@types/read_receipts.js +27 -0
  77. package/lib/@types/read_receipts.js.map +1 -0
  78. package/lib/@types/registration.d.ts +85 -0
  79. package/lib/@types/registration.d.ts.map +1 -0
  80. package/lib/@types/registration.js +1 -0
  81. package/lib/@types/registration.js.map +1 -0
  82. package/lib/@types/requests.d.ts +267 -0
  83. package/lib/@types/requests.d.ts.map +1 -0
  84. package/lib/@types/requests.js +42 -0
  85. package/lib/@types/requests.js.map +1 -0
  86. package/lib/@types/search.d.ts +90 -0
  87. package/lib/@types/search.d.ts.map +1 -0
  88. package/lib/@types/search.js +30 -0
  89. package/lib/@types/search.js.map +1 -0
  90. package/lib/@types/signed.d.ts +9 -0
  91. package/lib/@types/signed.d.ts.map +1 -0
  92. package/lib/@types/signed.js +1 -0
  93. package/lib/@types/signed.js.map +1 -0
  94. package/lib/@types/spaces.d.ts +16 -0
  95. package/lib/@types/spaces.d.ts.map +1 -0
  96. package/lib/@types/spaces.js +1 -0
  97. package/lib/@types/spaces.js.map +1 -0
  98. package/lib/@types/state_events.d.ts +121 -0
  99. package/lib/@types/state_events.d.ts.map +1 -0
  100. package/lib/@types/state_events.js +1 -0
  101. package/lib/@types/state_events.js.map +1 -0
  102. package/lib/@types/synapse.d.ts +19 -0
  103. package/lib/@types/synapse.d.ts.map +1 -0
  104. package/lib/@types/synapse.js +1 -0
  105. package/lib/@types/synapse.js.map +1 -0
  106. package/lib/@types/sync.d.ts +8 -0
  107. package/lib/@types/sync.d.ts.map +1 -0
  108. package/lib/@types/sync.js +25 -0
  109. package/lib/@types/sync.js.map +1 -0
  110. package/lib/@types/threepids.d.ts +12 -0
  111. package/lib/@types/threepids.d.ts.map +1 -0
  112. package/lib/@types/threepids.js +24 -0
  113. package/lib/@types/threepids.js.map +1 -0
  114. package/lib/@types/topic.d.ts +55 -0
  115. package/lib/@types/topic.d.ts.map +1 -0
  116. package/lib/@types/topic.js +62 -0
  117. package/lib/@types/topic.js.map +1 -0
  118. package/lib/@types/uia.d.ts +8 -0
  119. package/lib/@types/uia.d.ts.map +1 -0
  120. package/lib/@types/uia.js +1 -0
  121. package/lib/@types/uia.js.map +1 -0
  122. package/lib/NamespacedValue.d.ts +32 -0
  123. package/lib/NamespacedValue.d.ts.map +1 -0
  124. package/lib/NamespacedValue.js +113 -0
  125. package/lib/NamespacedValue.js.map +1 -0
  126. package/lib/ReEmitter.d.ts +15 -0
  127. package/lib/ReEmitter.d.ts.map +1 -0
  128. package/lib/ReEmitter.js +87 -0
  129. package/lib/ReEmitter.js.map +1 -0
  130. package/lib/ToDeviceMessageQueue.d.ts +30 -0
  131. package/lib/ToDeviceMessageQueue.d.ts.map +1 -0
  132. package/lib/ToDeviceMessageQueue.js +135 -0
  133. package/lib/ToDeviceMessageQueue.js.map +1 -0
  134. package/lib/autodiscovery.d.ts +136 -0
  135. package/lib/autodiscovery.d.ts.map +1 -0
  136. package/lib/autodiscovery.js +464 -0
  137. package/lib/autodiscovery.js.map +1 -0
  138. package/lib/base64.d.ts +25 -0
  139. package/lib/base64.d.ts.map +1 -0
  140. package/lib/base64.js +95 -0
  141. package/lib/base64.js.map +1 -0
  142. package/lib/briij.d.ts +116 -0
  143. package/lib/briij.d.ts.map +1 -0
  144. package/lib/briij.js +145 -0
  145. package/lib/briij.js.map +1 -0
  146. package/lib/browser-index.d.ts +8 -0
  147. package/lib/browser-index.d.ts.map +1 -0
  148. package/lib/browser-index.js +35 -0
  149. package/lib/browser-index.js.map +1 -0
  150. package/lib/client.d.ts +3493 -0
  151. package/lib/client.d.ts.map +1 -0
  152. package/lib/client.js +7482 -0
  153. package/lib/client.js.map +1 -0
  154. package/lib/common-crypto/CryptoBackend.d.ts +234 -0
  155. package/lib/common-crypto/CryptoBackend.d.ts.map +1 -0
  156. package/lib/common-crypto/CryptoBackend.js +69 -0
  157. package/lib/common-crypto/CryptoBackend.js.map +1 -0
  158. package/lib/common-crypto/key-passphrase.d.ts +14 -0
  159. package/lib/common-crypto/key-passphrase.d.ts.map +1 -0
  160. package/lib/common-crypto/key-passphrase.js +33 -0
  161. package/lib/common-crypto/key-passphrase.js.map +1 -0
  162. package/lib/content-helpers.d.ts +90 -0
  163. package/lib/content-helpers.d.ts.map +1 -0
  164. package/lib/content-helpers.js +262 -0
  165. package/lib/content-helpers.js.map +1 -0
  166. package/lib/content-repo.d.ts +25 -0
  167. package/lib/content-repo.d.ts.map +1 -0
  168. package/lib/content-repo.js +109 -0
  169. package/lib/content-repo.js.map +1 -0
  170. package/lib/crypto/store/base.d.ts +301 -0
  171. package/lib/crypto/store/base.d.ts.map +1 -0
  172. package/lib/crypto/store/base.js +145 -0
  173. package/lib/crypto/store/base.js.map +1 -0
  174. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts +94 -0
  175. package/lib/crypto/store/indexeddb-crypto-store-backend.d.ts.map +1 -0
  176. package/lib/crypto/store/indexeddb-crypto-store-backend.js +604 -0
  177. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -0
  178. package/lib/crypto/store/indexeddb-crypto-store.d.ts +251 -0
  179. package/lib/crypto/store/indexeddb-crypto-store.d.ts.map +1 -0
  180. package/lib/crypto/store/indexeddb-crypto-store.js +477 -0
  181. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -0
  182. package/lib/crypto/store/localStorage-crypto-store.d.ts +102 -0
  183. package/lib/crypto/store/localStorage-crypto-store.d.ts.map +1 -0
  184. package/lib/crypto/store/localStorage-crypto-store.js +374 -0
  185. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -0
  186. package/lib/crypto/store/memory-crypto-store.d.ts +117 -0
  187. package/lib/crypto/store/memory-crypto-store.d.ts.map +1 -0
  188. package/lib/crypto/store/memory-crypto-store.js +311 -0
  189. package/lib/crypto/store/memory-crypto-store.js.map +1 -0
  190. package/lib/crypto-api/CryptoEvent.d.ts +120 -0
  191. package/lib/crypto-api/CryptoEvent.d.ts.map +1 -0
  192. package/lib/crypto-api/CryptoEvent.js +137 -0
  193. package/lib/crypto-api/CryptoEvent.js.map +1 -0
  194. package/lib/crypto-api/CryptoEventHandlerMap.d.ts +26 -0
  195. package/lib/crypto-api/CryptoEventHandlerMap.d.ts.map +1 -0
  196. package/lib/crypto-api/CryptoEventHandlerMap.js +1 -0
  197. package/lib/crypto-api/CryptoEventHandlerMap.js.map +1 -0
  198. package/lib/crypto-api/index.d.ts +1160 -0
  199. package/lib/crypto-api/index.d.ts.map +1 -0
  200. package/lib/crypto-api/index.js +410 -0
  201. package/lib/crypto-api/index.js.map +1 -0
  202. package/lib/crypto-api/key-passphrase.d.ts +11 -0
  203. package/lib/crypto-api/key-passphrase.d.ts.map +1 -0
  204. package/lib/crypto-api/key-passphrase.js +51 -0
  205. package/lib/crypto-api/key-passphrase.js.map +1 -0
  206. package/lib/crypto-api/keybackup.d.ts +87 -0
  207. package/lib/crypto-api/keybackup.d.ts.map +1 -0
  208. package/lib/crypto-api/keybackup.js +1 -0
  209. package/lib/crypto-api/keybackup.js.map +1 -0
  210. package/lib/crypto-api/recovery-key.d.ts +11 -0
  211. package/lib/crypto-api/recovery-key.d.ts.map +1 -0
  212. package/lib/crypto-api/recovery-key.js +65 -0
  213. package/lib/crypto-api/recovery-key.js.map +1 -0
  214. package/lib/crypto-api/verification.d.ts +315 -0
  215. package/lib/crypto-api/verification.d.ts.map +1 -0
  216. package/lib/crypto-api/verification.js +130 -0
  217. package/lib/crypto-api/verification.js.map +1 -0
  218. package/lib/digest.d.ts +10 -0
  219. package/lib/digest.d.ts.map +1 -0
  220. package/lib/digest.js +40 -0
  221. package/lib/digest.js.map +1 -0
  222. package/lib/embedded.d.ts +182 -0
  223. package/lib/embedded.d.ts.map +1 -0
  224. package/lib/embedded.js +746 -0
  225. package/lib/embedded.js.map +1 -0
  226. package/lib/errors.d.ts +38 -0
  227. package/lib/errors.d.ts.map +1 -0
  228. package/lib/errors.js +73 -0
  229. package/lib/errors.js.map +1 -0
  230. package/lib/event-mapper.d.ts +9 -0
  231. package/lib/event-mapper.d.ts.map +1 -0
  232. package/lib/event-mapper.js +74 -0
  233. package/lib/event-mapper.js.map +1 -0
  234. package/lib/extensible_events_v1/ExtensibleEvent.d.ts +38 -0
  235. package/lib/extensible_events_v1/ExtensibleEvent.d.ts.map +1 -0
  236. package/lib/extensible_events_v1/ExtensibleEvent.js +57 -0
  237. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -0
  238. package/lib/extensible_events_v1/InvalidEventError.d.ts +7 -0
  239. package/lib/extensible_events_v1/InvalidEventError.d.ts.map +1 -0
  240. package/lib/extensible_events_v1/InvalidEventError.js +25 -0
  241. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -0
  242. package/lib/extensible_events_v1/MessageEvent.d.ts +44 -0
  243. package/lib/extensible_events_v1/MessageEvent.d.ts.map +1 -0
  244. package/lib/extensible_events_v1/MessageEvent.js +134 -0
  245. package/lib/extensible_events_v1/MessageEvent.js.map +1 -0
  246. package/lib/extensible_events_v1/PollEndEvent.d.ts +33 -0
  247. package/lib/extensible_events_v1/PollEndEvent.d.ts.map +1 -0
  248. package/lib/extensible_events_v1/PollEndEvent.js +88 -0
  249. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -0
  250. package/lib/extensible_events_v1/PollResponseEvent.d.ts +49 -0
  251. package/lib/extensible_events_v1/PollResponseEvent.d.ts.map +1 -0
  252. package/lib/extensible_events_v1/PollResponseEvent.js +135 -0
  253. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -0
  254. package/lib/extensible_events_v1/PollStartEvent.d.ts +71 -0
  255. package/lib/extensible_events_v1/PollStartEvent.d.ts.map +1 -0
  256. package/lib/extensible_events_v1/PollStartEvent.js +185 -0
  257. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -0
  258. package/lib/extensible_events_v1/utilities.d.ts +14 -0
  259. package/lib/extensible_events_v1/utilities.d.ts.map +1 -0
  260. package/lib/extensible_events_v1/utilities.js +34 -0
  261. package/lib/extensible_events_v1/utilities.js.map +1 -0
  262. package/lib/feature.d.ts +20 -0
  263. package/lib/feature.d.ts.map +1 -0
  264. package/lib/feature.js +89 -0
  265. package/lib/feature.js.map +1 -0
  266. package/lib/filter-component.d.ts +64 -0
  267. package/lib/filter-component.d.ts.map +1 -0
  268. package/lib/filter-component.js +170 -0
  269. package/lib/filter-component.js.map +1 -0
  270. package/lib/filter.d.ts +97 -0
  271. package/lib/filter.d.ts.map +1 -0
  272. package/lib/filter.js +207 -0
  273. package/lib/filter.js.map +1 -0
  274. package/lib/http-api/errors.d.ts +117 -0
  275. package/lib/http-api/errors.d.ts.map +1 -0
  276. package/lib/http-api/errors.js +245 -0
  277. package/lib/http-api/errors.js.map +1 -0
  278. package/lib/http-api/fetch.d.ts +80 -0
  279. package/lib/http-api/fetch.d.ts.map +1 -0
  280. package/lib/http-api/fetch.js +332 -0
  281. package/lib/http-api/fetch.js.map +1 -0
  282. package/lib/http-api/index.d.ts +33 -0
  283. package/lib/http-api/index.d.ts.map +1 -0
  284. package/lib/http-api/index.js +178 -0
  285. package/lib/http-api/index.js.map +1 -0
  286. package/lib/http-api/interface.d.ts +186 -0
  287. package/lib/http-api/interface.d.ts.map +1 -0
  288. package/lib/http-api/interface.js +39 -0
  289. package/lib/http-api/interface.js.map +1 -0
  290. package/lib/http-api/method.d.ts +10 -0
  291. package/lib/http-api/method.d.ts.map +1 -0
  292. package/lib/http-api/method.js +27 -0
  293. package/lib/http-api/method.js.map +1 -0
  294. package/lib/http-api/prefix.d.ts +31 -0
  295. package/lib/http-api/prefix.d.ts.map +1 -0
  296. package/lib/http-api/prefix.js +50 -0
  297. package/lib/http-api/prefix.js.map +1 -0
  298. package/lib/http-api/refresh.d.ts +53 -0
  299. package/lib/http-api/refresh.d.ts.map +1 -0
  300. package/lib/http-api/refresh.js +174 -0
  301. package/lib/http-api/refresh.js.map +1 -0
  302. package/lib/http-api/utils.d.ts +37 -0
  303. package/lib/http-api/utils.d.ts.map +1 -0
  304. package/lib/http-api/utils.js +182 -0
  305. package/lib/http-api/utils.js.map +1 -0
  306. package/lib/index.d.ts +4 -0
  307. package/lib/index.d.ts.map +1 -0
  308. package/lib/index.js +24 -0
  309. package/lib/index.js.map +1 -0
  310. package/lib/indexeddb-helpers.d.ts +10 -0
  311. package/lib/indexeddb-helpers.d.ts.map +1 -0
  312. package/lib/indexeddb-helpers.js +51 -0
  313. package/lib/indexeddb-helpers.js.map +1 -0
  314. package/lib/indexeddb-worker.d.ts +7 -0
  315. package/lib/indexeddb-worker.d.ts.map +1 -0
  316. package/lib/indexeddb-worker.js +25 -0
  317. package/lib/indexeddb-worker.js.map +1 -0
  318. package/lib/interactive-auth.d.ts +341 -0
  319. package/lib/interactive-auth.d.ts.map +1 -0
  320. package/lib/interactive-auth.js +563 -0
  321. package/lib/interactive-auth.js.map +1 -0
  322. package/lib/logger.d.ts +124 -0
  323. package/lib/logger.d.ts.map +1 -0
  324. package/lib/logger.js +230 -0
  325. package/lib/logger.js.map +1 -0
  326. package/lib/matrixrtc/CallMembership.d.ts +154 -0
  327. package/lib/matrixrtc/CallMembership.d.ts.map +1 -0
  328. package/lib/matrixrtc/CallMembership.js +469 -0
  329. package/lib/matrixrtc/CallMembership.js.map +1 -0
  330. package/lib/matrixrtc/EncryptionManager.d.ts +44 -0
  331. package/lib/matrixrtc/EncryptionManager.d.ts.map +1 -0
  332. package/lib/matrixrtc/EncryptionManager.js +13 -0
  333. package/lib/matrixrtc/EncryptionManager.js.map +1 -0
  334. package/lib/matrixrtc/IKeyTransport.d.ts +37 -0
  335. package/lib/matrixrtc/IKeyTransport.d.ts.map +1 -0
  336. package/lib/matrixrtc/IKeyTransport.js +27 -0
  337. package/lib/matrixrtc/IKeyTransport.js.map +1 -0
  338. package/lib/matrixrtc/IMembershipManager.d.ts +94 -0
  339. package/lib/matrixrtc/IMembershipManager.d.ts.map +1 -0
  340. package/lib/matrixrtc/IMembershipManager.js +40 -0
  341. package/lib/matrixrtc/IMembershipManager.js.map +1 -0
  342. package/lib/matrixrtc/LivekitTransport.d.ts +23 -0
  343. package/lib/matrixrtc/LivekitTransport.d.ts.map +1 -0
  344. package/lib/matrixrtc/LivekitTransport.js +29 -0
  345. package/lib/matrixrtc/LivekitTransport.js.map +1 -0
  346. package/lib/matrixrtc/MatrixRTCSession.d.ts +343 -0
  347. package/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -0
  348. package/lib/matrixrtc/MatrixRTCSession.js +623 -0
  349. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -0
  350. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts +46 -0
  351. package/lib/matrixrtc/MatrixRTCSessionManager.d.ts.map +1 -0
  352. package/lib/matrixrtc/MatrixRTCSessionManager.js +149 -0
  353. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -0
  354. package/lib/matrixrtc/MembershipManager.d.ts +210 -0
  355. package/lib/matrixrtc/MembershipManager.d.ts.map +1 -0
  356. package/lib/matrixrtc/MembershipManager.js +977 -0
  357. package/lib/matrixrtc/MembershipManager.js.map +1 -0
  358. package/lib/matrixrtc/MembershipManagerActionScheduler.d.ts +59 -0
  359. package/lib/matrixrtc/MembershipManagerActionScheduler.d.ts.map +1 -0
  360. package/lib/matrixrtc/MembershipManagerActionScheduler.js +125 -0
  361. package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -0
  362. package/lib/matrixrtc/RTCEncryptionManager.d.ts +110 -0
  363. package/lib/matrixrtc/RTCEncryptionManager.d.ts.map +1 -0
  364. package/lib/matrixrtc/RTCEncryptionManager.js +376 -0
  365. package/lib/matrixrtc/RTCEncryptionManager.js.map +1 -0
  366. package/lib/matrixrtc/ToDeviceKeyTransport.d.ts +30 -0
  367. package/lib/matrixrtc/ToDeviceKeyTransport.d.ts.map +1 -0
  368. package/lib/matrixrtc/ToDeviceKeyTransport.js +164 -0
  369. package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -0
  370. package/lib/matrixrtc/index.d.ts +9 -0
  371. package/lib/matrixrtc/index.d.ts.map +1 -0
  372. package/lib/matrixrtc/index.js +23 -0
  373. package/lib/matrixrtc/index.js.map +1 -0
  374. package/lib/matrixrtc/membershipData/common.d.ts +8 -0
  375. package/lib/matrixrtc/membershipData/common.d.ts.map +1 -0
  376. package/lib/matrixrtc/membershipData/common.js +26 -0
  377. package/lib/matrixrtc/membershipData/common.js.map +1 -0
  378. package/lib/matrixrtc/membershipData/index.d.ts +4 -0
  379. package/lib/matrixrtc/membershipData/index.d.ts.map +1 -0
  380. package/lib/matrixrtc/membershipData/index.js +20 -0
  381. package/lib/matrixrtc/membershipData/index.js.map +1 -0
  382. package/lib/matrixrtc/membershipData/rtc.d.ts +33 -0
  383. package/lib/matrixrtc/membershipData/rtc.d.ts.map +1 -0
  384. package/lib/matrixrtc/membershipData/rtc.js +137 -0
  385. package/lib/matrixrtc/membershipData/rtc.js.map +1 -0
  386. package/lib/matrixrtc/membershipData/session.d.ts +77 -0
  387. package/lib/matrixrtc/membershipData/session.d.ts.map +1 -0
  388. package/lib/matrixrtc/membershipData/session.js +62 -0
  389. package/lib/matrixrtc/membershipData/session.js.map +1 -0
  390. package/lib/matrixrtc/types.d.ts +169 -0
  391. package/lib/matrixrtc/types.d.ts.map +1 -0
  392. package/lib/matrixrtc/types.js +117 -0
  393. package/lib/matrixrtc/types.js.map +1 -0
  394. package/lib/matrixrtc/utils.d.ts +27 -0
  395. package/lib/matrixrtc/utils.d.ts.map +1 -0
  396. package/lib/matrixrtc/utils.js +72 -0
  397. package/lib/matrixrtc/utils.js.map +1 -0
  398. package/lib/models/MSC3089Branch.d.ts +98 -0
  399. package/lib/models/MSC3089Branch.d.ts.map +1 -0
  400. package/lib/models/MSC3089Branch.js +240 -0
  401. package/lib/models/MSC3089Branch.js.map +1 -0
  402. package/lib/models/MSC3089TreeSpace.d.ts +166 -0
  403. package/lib/models/MSC3089TreeSpace.d.ts.map +1 -0
  404. package/lib/models/MSC3089TreeSpace.js +521 -0
  405. package/lib/models/MSC3089TreeSpace.js.map +1 -0
  406. package/lib/models/ToDeviceMessage.d.ts +17 -0
  407. package/lib/models/ToDeviceMessage.d.ts.map +1 -0
  408. package/lib/models/ToDeviceMessage.js +1 -0
  409. package/lib/models/ToDeviceMessage.js.map +1 -0
  410. package/lib/models/beacon.d.ts +52 -0
  411. package/lib/models/beacon.d.ts.map +1 -0
  412. package/lib/models/beacon.js +174 -0
  413. package/lib/models/beacon.js.map +1 -0
  414. package/lib/models/compare-event-ordering.d.ts +24 -0
  415. package/lib/models/compare-event-ordering.d.ts.map +1 -0
  416. package/lib/models/compare-event-ordering.js +120 -0
  417. package/lib/models/compare-event-ordering.js.map +1 -0
  418. package/lib/models/device.d.ts +45 -0
  419. package/lib/models/device.d.ts.map +1 -0
  420. package/lib/models/device.js +77 -0
  421. package/lib/models/device.js.map +1 -0
  422. package/lib/models/event-context.d.ts +62 -0
  423. package/lib/models/event-context.d.ts.map +1 -0
  424. package/lib/models/event-context.js +113 -0
  425. package/lib/models/event-context.js.map +1 -0
  426. package/lib/models/event-status.d.ts +19 -0
  427. package/lib/models/event-status.d.ts.map +1 -0
  428. package/lib/models/event-status.js +36 -0
  429. package/lib/models/event-status.js.map +1 -0
  430. package/lib/models/event-timeline-set.d.ts +308 -0
  431. package/lib/models/event-timeline-set.d.ts.map +1 -0
  432. package/lib/models/event-timeline-set.js +805 -0
  433. package/lib/models/event-timeline-set.js.map +1 -0
  434. package/lib/models/event-timeline.d.ts +224 -0
  435. package/lib/models/event-timeline.d.ts.map +1 -0
  436. package/lib/models/event-timeline.js +434 -0
  437. package/lib/models/event-timeline.js.map +1 -0
  438. package/lib/models/event.d.ts +844 -0
  439. package/lib/models/event.d.ts.map +1 -0
  440. package/lib/models/event.js +1600 -0
  441. package/lib/models/event.js.map +1 -0
  442. package/lib/models/invites-ignorer-types.d.ts +27 -0
  443. package/lib/models/invites-ignorer-types.d.ts.map +1 -0
  444. package/lib/models/invites-ignorer-types.js +56 -0
  445. package/lib/models/invites-ignorer-types.js.map +1 -0
  446. package/lib/models/invites-ignorer.d.ts +112 -0
  447. package/lib/models/invites-ignorer.d.ts.map +1 -0
  448. package/lib/models/invites-ignorer.js +357 -0
  449. package/lib/models/invites-ignorer.js.map +1 -0
  450. package/lib/models/poll.d.ts +67 -0
  451. package/lib/models/poll.d.ts.map +1 -0
  452. package/lib/models/poll.js +241 -0
  453. package/lib/models/poll.js.map +1 -0
  454. package/lib/models/profile-keys.d.ts +17 -0
  455. package/lib/models/profile-keys.d.ts.map +1 -0
  456. package/lib/models/profile-keys.js +34 -0
  457. package/lib/models/profile-keys.js.map +1 -0
  458. package/lib/models/read-receipt.d.ts +115 -0
  459. package/lib/models/read-receipt.d.ts.map +1 -0
  460. package/lib/models/read-receipt.js +366 -0
  461. package/lib/models/read-receipt.js.map +1 -0
  462. package/lib/models/related-relations.d.ts +11 -0
  463. package/lib/models/related-relations.d.ts.map +1 -0
  464. package/lib/models/related-relations.js +33 -0
  465. package/lib/models/related-relations.js.map +1 -0
  466. package/lib/models/relations-container.d.ts +44 -0
  467. package/lib/models/relations-container.d.ts.map +1 -0
  468. package/lib/models/relations-container.js +132 -0
  469. package/lib/models/relations-container.js.map +1 -0
  470. package/lib/models/relations.d.ts +123 -0
  471. package/lib/models/relations.d.ts.map +1 -0
  472. package/lib/models/relations.js +378 -0
  473. package/lib/models/relations.js.map +1 -0
  474. package/lib/models/room-member.d.ts +221 -0
  475. package/lib/models/room-member.d.ts.map +1 -0
  476. package/lib/models/room-member.js +376 -0
  477. package/lib/models/room-member.js.map +1 -0
  478. package/lib/models/room-receipts.d.ts +39 -0
  479. package/lib/models/room-receipts.d.ts.map +1 -0
  480. package/lib/models/room-receipts.js +392 -0
  481. package/lib/models/room-receipts.js.map +1 -0
  482. package/lib/models/room-state.d.ts +463 -0
  483. package/lib/models/room-state.d.ts.map +1 -0
  484. package/lib/models/room-state.js +1066 -0
  485. package/lib/models/room-state.js.map +1 -0
  486. package/lib/models/room-sticky-events.d.ts +110 -0
  487. package/lib/models/room-sticky-events.d.ts.map +1 -0
  488. package/lib/models/room-sticky-events.js +353 -0
  489. package/lib/models/room-sticky-events.js.map +1 -0
  490. package/lib/models/room-summary.d.ts +59 -0
  491. package/lib/models/room-summary.d.ts.map +1 -0
  492. package/lib/models/room-summary.js +39 -0
  493. package/lib/models/room-summary.js.map +1 -0
  494. package/lib/models/room.d.ts +1285 -0
  495. package/lib/models/room.d.ts.map +1 -0
  496. package/lib/models/room.js +3548 -0
  497. package/lib/models/room.js.map +1 -0
  498. package/lib/models/search-result.d.ts +20 -0
  499. package/lib/models/search-result.d.ts.map +1 -0
  500. package/lib/models/search-result.js +52 -0
  501. package/lib/models/search-result.js.map +1 -0
  502. package/lib/models/thread.d.ts +245 -0
  503. package/lib/models/thread.d.ts.map +1 -0
  504. package/lib/models/thread.js +866 -0
  505. package/lib/models/thread.js.map +1 -0
  506. package/lib/models/typed-event-emitter.d.ts +157 -0
  507. package/lib/models/typed-event-emitter.d.ts.map +1 -0
  508. package/lib/models/typed-event-emitter.js +227 -0
  509. package/lib/models/typed-event-emitter.js.map +1 -0
  510. package/lib/models/user.d.ts +195 -0
  511. package/lib/models/user.d.ts.map +1 -0
  512. package/lib/models/user.js +218 -0
  513. package/lib/models/user.js.map +1 -0
  514. package/lib/oidc/authorize.d.ts +93 -0
  515. package/lib/oidc/authorize.d.ts.map +1 -0
  516. package/lib/oidc/authorize.js +282 -0
  517. package/lib/oidc/authorize.js.map +1 -0
  518. package/lib/oidc/discovery.d.ts +22 -0
  519. package/lib/oidc/discovery.d.ts.map +1 -0
  520. package/lib/oidc/discovery.js +78 -0
  521. package/lib/oidc/discovery.js.map +1 -0
  522. package/lib/oidc/error.d.ts +18 -0
  523. package/lib/oidc/error.d.ts.map +1 -0
  524. package/lib/oidc/error.js +35 -0
  525. package/lib/oidc/error.js.map +1 -0
  526. package/lib/oidc/index.d.ts +16 -0
  527. package/lib/oidc/index.d.ts.map +1 -0
  528. package/lib/oidc/index.js +29 -0
  529. package/lib/oidc/index.js.map +1 -0
  530. package/lib/oidc/register.d.ts +70 -0
  531. package/lib/oidc/register.d.ts.map +1 -0
  532. package/lib/oidc/register.js +135 -0
  533. package/lib/oidc/register.js.map +1 -0
  534. package/lib/oidc/tokenRefresher.d.ts +91 -0
  535. package/lib/oidc/tokenRefresher.d.ts.map +1 -0
  536. package/lib/oidc/tokenRefresher.js +187 -0
  537. package/lib/oidc/tokenRefresher.js.map +1 -0
  538. package/lib/oidc/validate.d.ts +78 -0
  539. package/lib/oidc/validate.d.ts.map +1 -0
  540. package/lib/oidc/validate.js +181 -0
  541. package/lib/oidc/validate.js.map +1 -0
  542. package/lib/pushprocessor.d.ts +140 -0
  543. package/lib/pushprocessor.d.ts.map +1 -0
  544. package/lib/pushprocessor.js +702 -0
  545. package/lib/pushprocessor.js.map +1 -0
  546. package/lib/randomstring.d.ts +32 -0
  547. package/lib/randomstring.d.ts.map +1 -0
  548. package/lib/randomstring.js +97 -0
  549. package/lib/randomstring.js.map +1 -0
  550. package/lib/realtime-callbacks.d.ts +18 -0
  551. package/lib/realtime-callbacks.d.ts.map +1 -0
  552. package/lib/realtime-callbacks.js +177 -0
  553. package/lib/realtime-callbacks.js.map +1 -0
  554. package/lib/receipt-accumulator.d.ts +51 -0
  555. package/lib/receipt-accumulator.d.ts.map +1 -0
  556. package/lib/receipt-accumulator.js +164 -0
  557. package/lib/receipt-accumulator.js.map +1 -0
  558. package/lib/rendezvous/MSC4108SignInWithQR.d.ts +112 -0
  559. package/lib/rendezvous/MSC4108SignInWithQR.d.ts.map +1 -0
  560. package/lib/rendezvous/MSC4108SignInWithQR.js +389 -0
  561. package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -0
  562. package/lib/rendezvous/RendezvousChannel.d.ts +27 -0
  563. package/lib/rendezvous/RendezvousChannel.d.ts.map +1 -0
  564. package/lib/rendezvous/RendezvousChannel.js +1 -0
  565. package/lib/rendezvous/RendezvousChannel.js.map +1 -0
  566. package/lib/rendezvous/RendezvousCode.d.ts +9 -0
  567. package/lib/rendezvous/RendezvousCode.d.ts.map +1 -0
  568. package/lib/rendezvous/RendezvousCode.js +1 -0
  569. package/lib/rendezvous/RendezvousCode.js.map +1 -0
  570. package/lib/rendezvous/RendezvousError.d.ts +6 -0
  571. package/lib/rendezvous/RendezvousError.d.ts.map +1 -0
  572. package/lib/rendezvous/RendezvousError.js +23 -0
  573. package/lib/rendezvous/RendezvousError.js.map +1 -0
  574. package/lib/rendezvous/RendezvousFailureReason.d.ts +31 -0
  575. package/lib/rendezvous/RendezvousFailureReason.d.ts.map +1 -0
  576. package/lib/rendezvous/RendezvousFailureReason.js +47 -0
  577. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -0
  578. package/lib/rendezvous/RendezvousIntent.d.ts +5 -0
  579. package/lib/rendezvous/RendezvousIntent.d.ts.map +1 -0
  580. package/lib/rendezvous/RendezvousIntent.js +22 -0
  581. package/lib/rendezvous/RendezvousIntent.js.map +1 -0
  582. package/lib/rendezvous/RendezvousTransport.d.ts +36 -0
  583. package/lib/rendezvous/RendezvousTransport.d.ts.map +1 -0
  584. package/lib/rendezvous/RendezvousTransport.js +1 -0
  585. package/lib/rendezvous/RendezvousTransport.js.map +1 -0
  586. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts +58 -0
  587. package/lib/rendezvous/channels/MSC4108SecureChannel.d.ts.map +1 -0
  588. package/lib/rendezvous/channels/MSC4108SecureChannel.js +246 -0
  589. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -0
  590. package/lib/rendezvous/channels/index.d.ts +2 -0
  591. package/lib/rendezvous/channels/index.d.ts.map +1 -0
  592. package/lib/rendezvous/channels/index.js +18 -0
  593. package/lib/rendezvous/channels/index.js.map +1 -0
  594. package/lib/rendezvous/index.d.ts +10 -0
  595. package/lib/rendezvous/index.d.ts.map +1 -0
  596. package/lib/rendezvous/index.js +23 -0
  597. package/lib/rendezvous/index.js.map +1 -0
  598. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +61 -0
  599. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts.map +1 -0
  600. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +254 -0
  601. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -0
  602. package/lib/rendezvous/transports/index.d.ts +2 -0
  603. package/lib/rendezvous/transports/index.d.ts.map +1 -0
  604. package/lib/rendezvous/transports/index.js +18 -0
  605. package/lib/rendezvous/transports/index.js.map +1 -0
  606. package/lib/room-hierarchy.d.ts +35 -0
  607. package/lib/room-hierarchy.d.ts.map +1 -0
  608. package/lib/room-hierarchy.js +136 -0
  609. package/lib/room-hierarchy.js.map +1 -0
  610. package/lib/rust-crypto/CrossSigningIdentity.d.ts +35 -0
  611. package/lib/rust-crypto/CrossSigningIdentity.d.ts.map +1 -0
  612. package/lib/rust-crypto/CrossSigningIdentity.js +163 -0
  613. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -0
  614. package/lib/rust-crypto/DehydratedDeviceManager.d.ts +118 -0
  615. package/lib/rust-crypto/DehydratedDeviceManager.d.ts.map +1 -0
  616. package/lib/rust-crypto/DehydratedDeviceManager.js +361 -0
  617. package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -0
  618. package/lib/rust-crypto/KeyClaimManager.d.ts +33 -0
  619. package/lib/rust-crypto/KeyClaimManager.d.ts.map +1 -0
  620. package/lib/rust-crypto/KeyClaimManager.js +82 -0
  621. package/lib/rust-crypto/KeyClaimManager.js.map +1 -0
  622. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts +36 -0
  623. package/lib/rust-crypto/OutgoingRequestProcessor.d.ts.map +1 -0
  624. package/lib/rust-crypto/OutgoingRequestProcessor.js +194 -0
  625. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -0
  626. package/lib/rust-crypto/OutgoingRequestsManager.d.ts +47 -0
  627. package/lib/rust-crypto/OutgoingRequestsManager.d.ts.map +1 -0
  628. package/lib/rust-crypto/OutgoingRequestsManager.js +175 -0
  629. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -0
  630. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +120 -0
  631. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts.map +1 -0
  632. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +469 -0
  633. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -0
  634. package/lib/rust-crypto/RoomEncryptor.d.ts +100 -0
  635. package/lib/rust-crypto/RoomEncryptor.d.ts.map +1 -0
  636. package/lib/rust-crypto/RoomEncryptor.js +308 -0
  637. package/lib/rust-crypto/RoomEncryptor.js.map +1 -0
  638. package/lib/rust-crypto/backup.d.ts +278 -0
  639. package/lib/rust-crypto/backup.d.ts.map +1 -0
  640. package/lib/rust-crypto/backup.js +898 -0
  641. package/lib/rust-crypto/backup.js.map +1 -0
  642. package/lib/rust-crypto/constants.d.ts +3 -0
  643. package/lib/rust-crypto/constants.d.ts.map +1 -0
  644. package/lib/rust-crypto/constants.js +19 -0
  645. package/lib/rust-crypto/constants.js.map +1 -0
  646. package/lib/rust-crypto/device-converter.d.ts +28 -0
  647. package/lib/rust-crypto/device-converter.d.ts.map +1 -0
  648. package/lib/rust-crypto/device-converter.js +123 -0
  649. package/lib/rust-crypto/device-converter.js.map +1 -0
  650. package/lib/rust-crypto/index.d.ts +65 -0
  651. package/lib/rust-crypto/index.d.ts.map +1 -0
  652. package/lib/rust-crypto/index.js +149 -0
  653. package/lib/rust-crypto/index.js.map +1 -0
  654. package/lib/rust-crypto/libolm_migration.d.ts +81 -0
  655. package/lib/rust-crypto/libolm_migration.d.ts.map +1 -0
  656. package/lib/rust-crypto/libolm_migration.js +456 -0
  657. package/lib/rust-crypto/libolm_migration.js.map +1 -0
  658. package/lib/rust-crypto/rust-crypto.d.ts +576 -0
  659. package/lib/rust-crypto/rust-crypto.d.ts.map +1 -0
  660. package/lib/rust-crypto/rust-crypto.js +2324 -0
  661. package/lib/rust-crypto/rust-crypto.js.map +1 -0
  662. package/lib/rust-crypto/secret-storage.d.ts +22 -0
  663. package/lib/rust-crypto/secret-storage.d.ts.map +1 -0
  664. package/lib/rust-crypto/secret-storage.js +63 -0
  665. package/lib/rust-crypto/secret-storage.js.map +1 -0
  666. package/lib/rust-crypto/verification.d.ts +321 -0
  667. package/lib/rust-crypto/verification.d.ts.map +1 -0
  668. package/lib/rust-crypto/verification.js +817 -0
  669. package/lib/rust-crypto/verification.js.map +1 -0
  670. package/lib/scheduler.d.ts +132 -0
  671. package/lib/scheduler.d.ts.map +1 -0
  672. package/lib/scheduler.js +259 -0
  673. package/lib/scheduler.js.map +1 -0
  674. package/lib/secret-storage.d.ts +383 -0
  675. package/lib/secret-storage.d.ts.map +1 -0
  676. package/lib/secret-storage.js +487 -0
  677. package/lib/secret-storage.js.map +1 -0
  678. package/lib/serverCapabilities.d.ts +78 -0
  679. package/lib/serverCapabilities.d.ts.map +1 -0
  680. package/lib/serverCapabilities.js +104 -0
  681. package/lib/serverCapabilities.js.map +1 -0
  682. package/lib/service-types.d.ts +5 -0
  683. package/lib/service-types.d.ts.map +1 -0
  684. package/lib/service-types.js +23 -0
  685. package/lib/service-types.js.map +1 -0
  686. package/lib/sliding-sync-sdk.d.ts +107 -0
  687. package/lib/sliding-sync-sdk.d.ts.map +1 -0
  688. package/lib/sliding-sync-sdk.js +892 -0
  689. package/lib/sliding-sync-sdk.js.map +1 -0
  690. package/lib/sliding-sync.d.ts +306 -0
  691. package/lib/sliding-sync.d.ts.map +1 -0
  692. package/lib/sliding-sync.js +585 -0
  693. package/lib/sliding-sync.js.map +1 -0
  694. package/lib/store/index.d.ts +201 -0
  695. package/lib/store/index.d.ts.map +1 -0
  696. package/lib/store/index.js +1 -0
  697. package/lib/store/index.js.map +1 -0
  698. package/lib/store/indexeddb-backend.d.ts +24 -0
  699. package/lib/store/indexeddb-backend.d.ts.map +1 -0
  700. package/lib/store/indexeddb-backend.js +1 -0
  701. package/lib/store/indexeddb-backend.js.map +1 -0
  702. package/lib/store/indexeddb-local-backend.d.ts +129 -0
  703. package/lib/store/indexeddb-local-backend.d.ts.map +1 -0
  704. package/lib/store/indexeddb-local-backend.js +599 -0
  705. package/lib/store/indexeddb-local-backend.js.map +1 -0
  706. package/lib/store/indexeddb-remote-backend.d.ts +79 -0
  707. package/lib/store/indexeddb-remote-backend.d.ts.map +1 -0
  708. package/lib/store/indexeddb-remote-backend.js +209 -0
  709. package/lib/store/indexeddb-remote-backend.js.map +1 -0
  710. package/lib/store/indexeddb-store-worker.d.ts +35 -0
  711. package/lib/store/indexeddb-store-worker.d.ts.map +1 -0
  712. package/lib/store/indexeddb-store-worker.js +146 -0
  713. package/lib/store/indexeddb-store-worker.js.map +1 -0
  714. package/lib/store/indexeddb.d.ts +142 -0
  715. package/lib/store/indexeddb.d.ts.map +1 -0
  716. package/lib/store/indexeddb.js +347 -0
  717. package/lib/store/indexeddb.js.map +1 -0
  718. package/lib/store/local-storage-events-emitter.d.ts +30 -0
  719. package/lib/store/local-storage-events-emitter.d.ts.map +1 -0
  720. package/lib/store/local-storage-events-emitter.js +37 -0
  721. package/lib/store/local-storage-events-emitter.js.map +1 -0
  722. package/lib/store/memory.d.ts +209 -0
  723. package/lib/store/memory.d.ts.map +1 -0
  724. package/lib/store/memory.js +432 -0
  725. package/lib/store/memory.js.map +1 -0
  726. package/lib/store/stub.d.ts +161 -0
  727. package/lib/store/stub.d.ts.map +1 -0
  728. package/lib/store/stub.js +268 -0
  729. package/lib/store/stub.js.map +1 -0
  730. package/lib/sync-accumulator.d.ts +207 -0
  731. package/lib/sync-accumulator.d.ts.map +1 -0
  732. package/lib/sync-accumulator.js +588 -0
  733. package/lib/sync-accumulator.js.map +1 -0
  734. package/lib/sync.d.ts +273 -0
  735. package/lib/sync.d.ts.map +1 -0
  736. package/lib/sync.js +1764 -0
  737. package/lib/sync.js.map +1 -0
  738. package/lib/testing.d.ts +98 -0
  739. package/lib/testing.d.ts.map +1 -0
  740. package/lib/testing.js +205 -0
  741. package/lib/testing.js.map +1 -0
  742. package/lib/thread-utils.d.ts +10 -0
  743. package/lib/thread-utils.d.ts.map +1 -0
  744. package/lib/thread-utils.js +31 -0
  745. package/lib/thread-utils.js.map +1 -0
  746. package/lib/timeline-window.d.ts +168 -0
  747. package/lib/timeline-window.d.ts.map +1 -0
  748. package/lib/timeline-window.js +494 -0
  749. package/lib/timeline-window.js.map +1 -0
  750. package/lib/types.d.ts +33 -0
  751. package/lib/types.d.ts.map +1 -0
  752. package/lib/types.js +52 -0
  753. package/lib/types.js.map +1 -0
  754. package/lib/utils/decryptAESSecretStorageItem.d.ts +12 -0
  755. package/lib/utils/decryptAESSecretStorageItem.d.ts.map +1 -0
  756. package/lib/utils/decryptAESSecretStorageItem.js +50 -0
  757. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -0
  758. package/lib/utils/encryptAESSecretStorageItem.d.ts +16 -0
  759. package/lib/utils/encryptAESSecretStorageItem.d.ts.map +1 -0
  760. package/lib/utils/encryptAESSecretStorageItem.js +68 -0
  761. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -0
  762. package/lib/utils/internal/deriveKeys.d.ts +10 -0
  763. package/lib/utils/internal/deriveKeys.d.ts.map +1 -0
  764. package/lib/utils/internal/deriveKeys.js +60 -0
  765. package/lib/utils/internal/deriveKeys.js.map +1 -0
  766. package/lib/utils/roomVersion.d.ts +13 -0
  767. package/lib/utils/roomVersion.d.ts.map +1 -0
  768. package/lib/utils/roomVersion.js +36 -0
  769. package/lib/utils/roomVersion.js.map +1 -0
  770. package/lib/utils.d.ts +270 -0
  771. package/lib/utils.d.ts.map +1 -0
  772. package/lib/utils.js +764 -0
  773. package/lib/utils.js.map +1 -0
  774. package/lib/version-support.d.ts +19 -0
  775. package/lib/version-support.d.ts.map +1 -0
  776. package/lib/version-support.js +37 -0
  777. package/lib/version-support.js.map +1 -0
  778. package/lib/webrtc/audioContext.d.ts +15 -0
  779. package/lib/webrtc/audioContext.d.ts.map +1 -0
  780. package/lib/webrtc/audioContext.js +46 -0
  781. package/lib/webrtc/audioContext.js.map +1 -0
  782. package/lib/webrtc/call.d.ts +560 -0
  783. package/lib/webrtc/call.d.ts.map +1 -0
  784. package/lib/webrtc/call.js +2596 -0
  785. package/lib/webrtc/call.js.map +1 -0
  786. package/lib/webrtc/callEventHandler.d.ts +37 -0
  787. package/lib/webrtc/callEventHandler.d.ts.map +1 -0
  788. package/lib/webrtc/callEventHandler.js +344 -0
  789. package/lib/webrtc/callEventHandler.js.map +1 -0
  790. package/lib/webrtc/callEventTypes.d.ts +79 -0
  791. package/lib/webrtc/callEventTypes.d.ts.map +1 -0
  792. package/lib/webrtc/callEventTypes.js +13 -0
  793. package/lib/webrtc/callEventTypes.js.map +1 -0
  794. package/lib/webrtc/callFeed.d.ts +128 -0
  795. package/lib/webrtc/callFeed.d.ts.map +1 -0
  796. package/lib/webrtc/callFeed.js +289 -0
  797. package/lib/webrtc/callFeed.js.map +1 -0
  798. package/lib/webrtc/groupCall.d.ts +319 -0
  799. package/lib/webrtc/groupCall.d.ts.map +1 -0
  800. package/lib/webrtc/groupCall.js +1334 -0
  801. package/lib/webrtc/groupCall.js.map +1 -0
  802. package/lib/webrtc/groupCallEventHandler.d.ts +31 -0
  803. package/lib/webrtc/groupCallEventHandler.d.ts.map +1 -0
  804. package/lib/webrtc/groupCallEventHandler.js +178 -0
  805. package/lib/webrtc/groupCallEventHandler.js.map +1 -0
  806. package/lib/webrtc/mediaHandler.d.ts +89 -0
  807. package/lib/webrtc/mediaHandler.d.ts.map +1 -0
  808. package/lib/webrtc/mediaHandler.js +454 -0
  809. package/lib/webrtc/mediaHandler.js.map +1 -0
  810. package/lib/webrtc/stats/callFeedStatsReporter.d.ts +8 -0
  811. package/lib/webrtc/stats/callFeedStatsReporter.d.ts.map +1 -0
  812. package/lib/webrtc/stats/callFeedStatsReporter.js +79 -0
  813. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -0
  814. package/lib/webrtc/stats/callStatsReportGatherer.d.ts +25 -0
  815. package/lib/webrtc/stats/callStatsReportGatherer.d.ts.map +1 -0
  816. package/lib/webrtc/stats/callStatsReportGatherer.js +199 -0
  817. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -0
  818. package/lib/webrtc/stats/callStatsReportSummary.d.ts +17 -0
  819. package/lib/webrtc/stats/callStatsReportSummary.d.ts.map +1 -0
  820. package/lib/webrtc/stats/callStatsReportSummary.js +1 -0
  821. package/lib/webrtc/stats/callStatsReportSummary.js.map +1 -0
  822. package/lib/webrtc/stats/connectionStats.d.ts +28 -0
  823. package/lib/webrtc/stats/connectionStats.d.ts.map +1 -0
  824. package/lib/webrtc/stats/connectionStats.js +26 -0
  825. package/lib/webrtc/stats/connectionStats.js.map +1 -0
  826. package/lib/webrtc/stats/connectionStatsBuilder.d.ts +5 -0
  827. package/lib/webrtc/stats/connectionStatsBuilder.d.ts.map +1 -0
  828. package/lib/webrtc/stats/connectionStatsBuilder.js +27 -0
  829. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -0
  830. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts +7 -0
  831. package/lib/webrtc/stats/connectionStatsReportBuilder.d.ts.map +1 -0
  832. package/lib/webrtc/stats/connectionStatsReportBuilder.js +121 -0
  833. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -0
  834. package/lib/webrtc/stats/groupCallStats.d.ts +22 -0
  835. package/lib/webrtc/stats/groupCallStats.d.ts.map +1 -0
  836. package/lib/webrtc/stats/groupCallStats.js +78 -0
  837. package/lib/webrtc/stats/groupCallStats.js.map +1 -0
  838. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts +10 -0
  839. package/lib/webrtc/stats/media/mediaSsrcHandler.d.ts.map +1 -0
  840. package/lib/webrtc/stats/media/mediaSsrcHandler.js +57 -0
  841. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -0
  842. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts +12 -0
  843. package/lib/webrtc/stats/media/mediaTrackHandler.d.ts.map +1 -0
  844. package/lib/webrtc/stats/media/mediaTrackHandler.js +58 -0
  845. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -0
  846. package/lib/webrtc/stats/media/mediaTrackStats.d.ts +86 -0
  847. package/lib/webrtc/stats/media/mediaTrackStats.d.ts.map +1 -0
  848. package/lib/webrtc/stats/media/mediaTrackStats.js +142 -0
  849. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -0
  850. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts +22 -0
  851. package/lib/webrtc/stats/media/mediaTrackStatsHandler.d.ts.map +1 -0
  852. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +76 -0
  853. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -0
  854. package/lib/webrtc/stats/statsReport.d.ts +99 -0
  855. package/lib/webrtc/stats/statsReport.d.ts.map +1 -0
  856. package/lib/webrtc/stats/statsReport.js +32 -0
  857. package/lib/webrtc/stats/statsReport.js.map +1 -0
  858. package/lib/webrtc/stats/statsReportEmitter.d.ts +15 -0
  859. package/lib/webrtc/stats/statsReportEmitter.d.ts.map +1 -0
  860. package/lib/webrtc/stats/statsReportEmitter.js +33 -0
  861. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -0
  862. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts +16 -0
  863. package/lib/webrtc/stats/summaryStatsReportGatherer.d.ts.map +1 -0
  864. package/lib/webrtc/stats/summaryStatsReportGatherer.js +116 -0
  865. package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -0
  866. package/lib/webrtc/stats/trackStatsBuilder.d.ts +19 -0
  867. package/lib/webrtc/stats/trackStatsBuilder.d.ts.map +1 -0
  868. package/lib/webrtc/stats/trackStatsBuilder.js +168 -0
  869. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -0
  870. package/lib/webrtc/stats/transportStats.d.ts +11 -0
  871. package/lib/webrtc/stats/transportStats.d.ts.map +1 -0
  872. package/lib/webrtc/stats/transportStats.js +1 -0
  873. package/lib/webrtc/stats/transportStats.js.map +1 -0
  874. package/lib/webrtc/stats/transportStatsBuilder.d.ts +5 -0
  875. package/lib/webrtc/stats/transportStatsBuilder.d.ts.map +1 -0
  876. package/lib/webrtc/stats/transportStatsBuilder.js +34 -0
  877. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -0
  878. package/lib/webrtc/stats/valueFormatter.d.ts +4 -0
  879. package/lib/webrtc/stats/valueFormatter.d.ts.map +1 -0
  880. package/lib/webrtc/stats/valueFormatter.js +25 -0
  881. package/lib/webrtc/stats/valueFormatter.js.map +1 -0
  882. package/package.json +129 -0
  883. package/src/@types/AESEncryptedSecretStoragePayload.ts +29 -0
  884. package/src/@types/IIdentityServerProvider.ts +24 -0
  885. package/src/@types/PushRules.ts +208 -0
  886. package/src/@types/another-json.d.ts +19 -0
  887. package/src/@types/auth.ts +258 -0
  888. package/src/@types/beacon.ts +140 -0
  889. package/src/@types/common.ts +24 -0
  890. package/src/@types/crypto.ts +71 -0
  891. package/src/@types/event.ts +449 -0
  892. package/src/@types/events.ts +119 -0
  893. package/src/@types/extensible_events.ts +147 -0
  894. package/src/@types/global.d.ts +67 -0
  895. package/src/@types/local_notifications.ts +19 -0
  896. package/src/@types/location.ts +92 -0
  897. package/src/@types/matrix-sdk-crypto-wasm.d.ts +39 -0
  898. package/src/@types/media.ts +245 -0
  899. package/src/@types/membership.ts +57 -0
  900. package/src/@types/partials.ts +103 -0
  901. package/src/@types/polls.ts +120 -0
  902. package/src/@types/read_receipts.ts +61 -0
  903. package/src/@types/registration.ts +102 -0
  904. package/src/@types/requests.ts +346 -0
  905. package/src/@types/search.ts +119 -0
  906. package/src/@types/signed.ts +25 -0
  907. package/src/@types/spaces.ts +37 -0
  908. package/src/@types/state_events.ts +153 -0
  909. package/src/@types/synapse.ts +40 -0
  910. package/src/@types/sync.ts +27 -0
  911. package/src/@types/threepids.ts +29 -0
  912. package/src/@types/topic.ts +69 -0
  913. package/src/@types/uia.ts +24 -0
  914. package/src/NamespacedValue.ts +121 -0
  915. package/src/ReEmitter.ts +93 -0
  916. package/src/ToDeviceMessageQueue.ts +156 -0
  917. package/src/autodiscovery.ts +505 -0
  918. package/src/base64.ts +86 -0
  919. package/src/briij.ts +173 -0
  920. package/src/browser-index.ts +44 -0
  921. package/src/client.ts +9031 -0
  922. package/src/common-crypto/CryptoBackend.ts +295 -0
  923. package/src/common-crypto/README.md +4 -0
  924. package/src/common-crypto/key-passphrase.ts +43 -0
  925. package/src/content-helpers.ts +298 -0
  926. package/src/content-repo.ts +122 -0
  927. package/src/crypto/store/base.ts +388 -0
  928. package/src/crypto/store/indexeddb-crypto-store-backend.ts +655 -0
  929. package/src/crypto/store/indexeddb-crypto-store.ts +555 -0
  930. package/src/crypto/store/localStorage-crypto-store.ts +409 -0
  931. package/src/crypto/store/memory-crypto-store.ts +326 -0
  932. package/src/crypto-api/CryptoEvent.ts +152 -0
  933. package/src/crypto-api/CryptoEventHandlerMap.ts +42 -0
  934. package/src/crypto-api/index.ts +1362 -0
  935. package/src/crypto-api/key-passphrase.ts +58 -0
  936. package/src/crypto-api/keybackup.ts +114 -0
  937. package/src/crypto-api/recovery-key.ts +69 -0
  938. package/src/crypto-api/verification.ts +382 -0
  939. package/src/digest.ts +34 -0
  940. package/src/embedded.ts +865 -0
  941. package/src/errors.ts +87 -0
  942. package/src/event-mapper.ts +88 -0
  943. package/src/extensible_events_v1/ExtensibleEvent.ts +58 -0
  944. package/src/extensible_events_v1/InvalidEventError.ts +24 -0
  945. package/src/extensible_events_v1/MessageEvent.ts +143 -0
  946. package/src/extensible_events_v1/PollEndEvent.ts +97 -0
  947. package/src/extensible_events_v1/PollResponseEvent.ts +148 -0
  948. package/src/extensible_events_v1/PollStartEvent.ts +207 -0
  949. package/src/extensible_events_v1/utilities.ts +35 -0
  950. package/src/feature.ts +88 -0
  951. package/src/filter-component.ts +209 -0
  952. package/src/filter.ts +245 -0
  953. package/src/http-api/errors.ts +261 -0
  954. package/src/http-api/fetch.ts +377 -0
  955. package/src/http-api/index.ts +194 -0
  956. package/src/http-api/interface.ts +229 -0
  957. package/src/http-api/method.ts +25 -0
  958. package/src/http-api/prefix.ts +48 -0
  959. package/src/http-api/refresh.ts +167 -0
  960. package/src/http-api/utils.ts +217 -0
  961. package/src/index.ts +25 -0
  962. package/src/indexeddb-helpers.ts +50 -0
  963. package/src/indexeddb-worker.ts +24 -0
  964. package/src/interactive-auth.ts +700 -0
  965. package/src/logger.ts +279 -0
  966. package/src/matrixrtc/CallMembership.ts +438 -0
  967. package/src/matrixrtc/EncryptionManager.ts +54 -0
  968. package/src/matrixrtc/IKeyTransport.ts +63 -0
  969. package/src/matrixrtc/IMembershipManager.ts +120 -0
  970. package/src/matrixrtc/LivekitTransport.ts +46 -0
  971. package/src/matrixrtc/MatrixRTCSession.ts +934 -0
  972. package/src/matrixrtc/MatrixRTCSessionManager.ts +170 -0
  973. package/src/matrixrtc/MembershipManager.ts +1122 -0
  974. package/src/matrixrtc/MembershipManagerActionScheduler.ts +135 -0
  975. package/src/matrixrtc/RTCEncryptionManager.ts +459 -0
  976. package/src/matrixrtc/ToDeviceKeyTransport.ts +197 -0
  977. package/src/matrixrtc/index.ts +24 -0
  978. package/src/matrixrtc/membershipData/common.ts +27 -0
  979. package/src/matrixrtc/membershipData/index.ts +19 -0
  980. package/src/matrixrtc/membershipData/rtc.ts +156 -0
  981. package/src/matrixrtc/membershipData/session.ts +146 -0
  982. package/src/matrixrtc/types.ts +227 -0
  983. package/src/matrixrtc/utils.ts +71 -0
  984. package/src/models/MSC3089Branch.ts +272 -0
  985. package/src/models/MSC3089TreeSpace.ts +565 -0
  986. package/src/models/ToDeviceMessage.ts +38 -0
  987. package/src/models/beacon.ts +213 -0
  988. package/src/models/compare-event-ordering.ts +139 -0
  989. package/src/models/device.ts +85 -0
  990. package/src/models/event-context.ts +110 -0
  991. package/src/models/event-status.ts +39 -0
  992. package/src/models/event-timeline-set.ts +962 -0
  993. package/src/models/event-timeline.ts +461 -0
  994. package/src/models/event.ts +1819 -0
  995. package/src/models/invites-ignorer-types.ts +58 -0
  996. package/src/models/invites-ignorer.ts +341 -0
  997. package/src/models/poll.ts +285 -0
  998. package/src/models/profile-keys.ts +33 -0
  999. package/src/models/read-receipt.ts +422 -0
  1000. package/src/models/related-relations.ts +39 -0
  1001. package/src/models/relations-container.ts +149 -0
  1002. package/src/models/relations.ts +392 -0
  1003. package/src/models/room-member.ts +486 -0
  1004. package/src/models/room-receipts.ts +439 -0
  1005. package/src/models/room-state.ts +1230 -0
  1006. package/src/models/room-sticky-events.ts +383 -0
  1007. package/src/models/room-summary.ts +78 -0
  1008. package/src/models/room.ts +4067 -0
  1009. package/src/models/search-result.ts +57 -0
  1010. package/src/models/thread.ts +928 -0
  1011. package/src/models/typed-event-emitter.ts +246 -0
  1012. package/src/models/user.ts +302 -0
  1013. package/src/oidc/authorize.ts +279 -0
  1014. package/src/oidc/discovery.ts +67 -0
  1015. package/src/oidc/error.ts +33 -0
  1016. package/src/oidc/index.ts +33 -0
  1017. package/src/oidc/register.ts +163 -0
  1018. package/src/oidc/tokenRefresher.ts +184 -0
  1019. package/src/oidc/validate.ts +265 -0
  1020. package/src/pushprocessor.ts +856 -0
  1021. package/src/randomstring.ts +103 -0
  1022. package/src/realtime-callbacks.ts +191 -0
  1023. package/src/receipt-accumulator.ts +189 -0
  1024. package/src/rendezvous/MSC4108SignInWithQR.ts +443 -0
  1025. package/src/rendezvous/RendezvousChannel.ts +48 -0
  1026. package/src/rendezvous/RendezvousCode.ts +25 -0
  1027. package/src/rendezvous/RendezvousError.ts +26 -0
  1028. package/src/rendezvous/RendezvousFailureReason.ts +49 -0
  1029. package/src/rendezvous/RendezvousIntent.ts +20 -0
  1030. package/src/rendezvous/RendezvousTransport.ts +58 -0
  1031. package/src/rendezvous/channels/MSC4108SecureChannel.ts +270 -0
  1032. package/src/rendezvous/channels/index.ts +17 -0
  1033. package/src/rendezvous/index.ts +25 -0
  1034. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +272 -0
  1035. package/src/rendezvous/transports/index.ts +17 -0
  1036. package/src/room-hierarchy.ts +152 -0
  1037. package/src/rust-crypto/CrossSigningIdentity.ts +195 -0
  1038. package/src/rust-crypto/DehydratedDeviceManager.ts +392 -0
  1039. package/src/rust-crypto/KeyClaimManager.ts +86 -0
  1040. package/src/rust-crypto/OutgoingRequestProcessor.ts +233 -0
  1041. package/src/rust-crypto/OutgoingRequestsManager.ts +170 -0
  1042. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +501 -0
  1043. package/src/rust-crypto/RoomEncryptor.ts +362 -0
  1044. package/src/rust-crypto/backup.ts +942 -0
  1045. package/src/rust-crypto/constants.ts +18 -0
  1046. package/src/rust-crypto/device-converter.ts +128 -0
  1047. package/src/rust-crypto/index.ts +251 -0
  1048. package/src/rust-crypto/libolm_migration.ts +532 -0
  1049. package/src/rust-crypto/rust-crypto.ts +2542 -0
  1050. package/src/rust-crypto/secret-storage.ts +60 -0
  1051. package/src/rust-crypto/verification.ts +833 -0
  1052. package/src/scheduler.ts +309 -0
  1053. package/src/secret-storage.ts +714 -0
  1054. package/src/serverCapabilities.ts +146 -0
  1055. package/src/service-types.ts +20 -0
  1056. package/src/sliding-sync-sdk.ts +1005 -0
  1057. package/src/sliding-sync.ts +674 -0
  1058. package/src/store/index.ts +261 -0
  1059. package/src/store/indexeddb-backend.ts +41 -0
  1060. package/src/store/indexeddb-local-backend.ts +610 -0
  1061. package/src/store/indexeddb-remote-backend.ts +212 -0
  1062. package/src/store/indexeddb-store-worker.ts +157 -0
  1063. package/src/store/indexeddb.ts +397 -0
  1064. package/src/store/local-storage-events-emitter.ts +46 -0
  1065. package/src/store/memory.ts +448 -0
  1066. package/src/store/stub.ts +280 -0
  1067. package/src/sync-accumulator.ts +779 -0
  1068. package/src/sync.ts +2020 -0
  1069. package/src/testing.ts +231 -0
  1070. package/src/thread-utils.ts +31 -0
  1071. package/src/timeline-window.ts +534 -0
  1072. package/src/types.ts +59 -0
  1073. package/src/utils/decryptAESSecretStorageItem.ts +54 -0
  1074. package/src/utils/encryptAESSecretStorageItem.ts +73 -0
  1075. package/src/utils/internal/deriveKeys.ts +63 -0
  1076. package/src/utils/roomVersion.ts +35 -0
  1077. package/src/utils.ts +775 -0
  1078. package/src/version-support.ts +50 -0
  1079. package/src/webrtc/audioContext.ts +44 -0
  1080. package/src/webrtc/call.ts +3061 -0
  1081. package/src/webrtc/callEventHandler.ts +425 -0
  1082. package/src/webrtc/callEventTypes.ts +101 -0
  1083. package/src/webrtc/callFeed.ts +364 -0
  1084. package/src/webrtc/groupCall.ts +1729 -0
  1085. package/src/webrtc/groupCallEventHandler.ts +234 -0
  1086. package/src/webrtc/mediaHandler.ts +501 -0
  1087. package/src/webrtc/stats/callFeedStatsReporter.ts +91 -0
  1088. package/src/webrtc/stats/callStatsReportGatherer.ts +219 -0
  1089. package/src/webrtc/stats/callStatsReportSummary.ts +30 -0
  1090. package/src/webrtc/stats/connectionStats.ts +47 -0
  1091. package/src/webrtc/stats/connectionStatsBuilder.ts +28 -0
  1092. package/src/webrtc/stats/connectionStatsReportBuilder.ts +140 -0
  1093. package/src/webrtc/stats/groupCallStats.ts +93 -0
  1094. package/src/webrtc/stats/media/mediaSsrcHandler.ts +57 -0
  1095. package/src/webrtc/stats/media/mediaTrackHandler.ts +70 -0
  1096. package/src/webrtc/stats/media/mediaTrackStats.ts +176 -0
  1097. package/src/webrtc/stats/media/mediaTrackStatsHandler.ts +90 -0
  1098. package/src/webrtc/stats/statsReport.ts +133 -0
  1099. package/src/webrtc/stats/statsReportEmitter.ts +49 -0
  1100. package/src/webrtc/stats/summaryStatsReportGatherer.ts +148 -0
  1101. package/src/webrtc/stats/trackStatsBuilder.ts +207 -0
  1102. package/src/webrtc/stats/transportStats.ts +26 -0
  1103. package/src/webrtc/stats/transportStatsBuilder.ts +48 -0
  1104. package/src/webrtc/stats/valueFormatter.ts +27 -0
@@ -0,0 +1,962 @@
1
+ /*
2
+ Copyright 2016 - 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 { EventTimeline, type IAddEventOptions } from "./event-timeline.ts";
18
+ import { type BriijEvent } from "./event.ts";
19
+ import { logger } from "../logger.ts";
20
+ import { type Room, RoomEvent } from "./room.ts";
21
+ import { type Filter } from "../filter.ts";
22
+ import { type RoomState } from "./room-state.ts";
23
+ import { TypedEventEmitter } from "./typed-event-emitter.ts";
24
+ import { RelationsContainer } from "./relations-container.ts";
25
+ import { type BriijClient } from "../client.ts";
26
+ import { type Thread, type ThreadFilterType } from "./thread.ts";
27
+
28
+ const DEBUG = true;
29
+
30
+ /* istanbul ignore next */
31
+ let debuglog: (...args: any[]) => void;
32
+ if (DEBUG) {
33
+ // using bind means that we get to keep useful line numbers in the console
34
+ debuglog = logger.log.bind(logger);
35
+ } else {
36
+ /* istanbul ignore next */
37
+ debuglog = function (): void {};
38
+ }
39
+
40
+ interface IOpts {
41
+ // Set to true to enable improved timeline support.
42
+ timelineSupport?: boolean;
43
+ // The filter object, if any, for this timelineSet.
44
+ filter?: Filter;
45
+ pendingEvents?: boolean;
46
+ }
47
+
48
+ export enum DuplicateStrategy {
49
+ Ignore = "ignore",
50
+ Replace = "replace",
51
+ }
52
+
53
+ export interface IRoomTimelineData {
54
+ // the timeline the event was added to/removed from
55
+ timeline: EventTimeline;
56
+ // true if the event was a real-time event added to the end of the live timeline
57
+ liveEvent?: boolean;
58
+ }
59
+
60
+ export interface IAddEventToTimelineOptions extends Pick<
61
+ IAddEventOptions,
62
+ "toStartOfTimeline" | "roomState" | "timelineWasEmpty" | "addToState"
63
+ > {
64
+ /** Whether the sync response came from cache */
65
+ fromCache?: boolean;
66
+ }
67
+
68
+ export interface IAddLiveEventOptions extends Pick<
69
+ IAddEventToTimelineOptions,
70
+ "fromCache" | "roomState" | "timelineWasEmpty" | "addToState"
71
+ > {
72
+ /** Applies to events in the timeline only. If this is 'replace' then if a
73
+ * duplicate is encountered, the event passed to this function will replace
74
+ * the existing event in the timeline. If this is not specified, or is
75
+ * 'ignore', then the event passed to this function will be ignored
76
+ * entirely, preserving the existing event in the timeline. Events are
77
+ * identical based on their event ID <b>only</b>. */
78
+ duplicateStrategy?: DuplicateStrategy;
79
+ }
80
+
81
+ type EmittedEvents = RoomEvent.Timeline | RoomEvent.TimelineReset;
82
+
83
+ export type EventTimelineSetHandlerMap = {
84
+ /**
85
+ * Fires whenever the timeline in a room is updated.
86
+ * @param event - The matrix event which caused this event to fire.
87
+ * @param room - The room, if any, whose timeline was updated.
88
+ * @param toStartOfTimeline - True if this event was added to the start
89
+ * @param removed - True if this event has just been removed from the timeline
90
+ * (beginning; oldest) of the timeline e.g. due to pagination.
91
+ *
92
+ * @param data - more data about the event
93
+ *
94
+ * @example
95
+ * ```
96
+ * matrixClient.on("Room.timeline",
97
+ * function(event, room, toStartOfTimeline, removed, data) {
98
+ * if (!toStartOfTimeline && data.liveEvent) {
99
+ * var messageToAppend = room.timeline.[room.timeline.length - 1];
100
+ * }
101
+ * });
102
+ * ```
103
+ */
104
+ [RoomEvent.Timeline]: (
105
+ event: BriijEvent,
106
+ room: Room | undefined,
107
+ toStartOfTimeline: boolean | undefined,
108
+ removed: boolean,
109
+ data: IRoomTimelineData,
110
+ ) => void;
111
+ /**
112
+ * Fires whenever the live timeline in a room is reset.
113
+ *
114
+ * When we get a 'limited' sync (for example, after a network outage), we reset
115
+ * the live timeline to be empty before adding the recent events to the new
116
+ * timeline. This event is fired after the timeline is reset, and before the
117
+ * new events are added.
118
+ *
119
+ * @param room - The room whose live timeline was reset, if any
120
+ * @param timelineSet - timelineSet room whose live timeline was reset
121
+ * @param resetAllTimelines - True if all timelines were reset.
122
+ */
123
+ [RoomEvent.TimelineReset]: (
124
+ room: Room | undefined,
125
+ timelineSet: EventTimelineSet,
126
+ resetAllTimelines: boolean,
127
+ ) => void;
128
+ };
129
+
130
+ export class EventTimelineSet extends TypedEventEmitter<EmittedEvents, EventTimelineSetHandlerMap> {
131
+ public readonly relations: RelationsContainer;
132
+ private readonly timelineSupport: boolean;
133
+ private readonly displayPendingEvents: boolean;
134
+ private liveTimeline: EventTimeline;
135
+ private timelines: EventTimeline[];
136
+ private _eventIdToTimeline = new Map<string, EventTimeline>();
137
+ private filter?: Filter;
138
+
139
+ /**
140
+ * Construct a set of EventTimeline objects, typically on behalf of a given
141
+ * room. A room may have multiple EventTimelineSets for different levels
142
+ * of filtering. The global notification list is also an EventTimelineSet, but
143
+ * lacks a room.
144
+ *
145
+ * <p>This is an ordered sequence of timelines, which may or may not
146
+ * be continuous. Each timeline lists a series of events, as well as tracking
147
+ * the room state at the start and the end of the timeline (if appropriate).
148
+ * It also tracks forward and backward pagination tokens, as well as containing
149
+ * links to the next timeline in the sequence.
150
+ *
151
+ * <p>There is one special timeline - the 'live' timeline, which represents the
152
+ * timeline to which events are being added in real-time as they are received
153
+ * from the /sync API. Note that you should not retain references to this
154
+ * timeline - even if it is the current timeline right now, it may not remain
155
+ * so if the server gives us a timeline gap in /sync.
156
+ *
157
+ * <p>In order that we can find events from their ids later, we also maintain a
158
+ * map from event_id to timeline and index.
159
+ *
160
+ * @param room - Room for this timelineSet. May be null for non-room cases, such as the
161
+ * notification timeline.
162
+ * @param opts - Options inherited from Room.
163
+ * @param client - the Matrix client which owns this EventTimelineSet,
164
+ * can be omitted if room is specified.
165
+ * @param thread - the thread to which this timeline set relates.
166
+ * @param threadListType - the type of thread list represented, if any
167
+ * (e.g., All threads or My threads)
168
+ */
169
+ public constructor(
170
+ public readonly room: Room | undefined,
171
+ opts: IOpts = {},
172
+ client?: BriijClient,
173
+ public readonly thread?: Thread,
174
+ public readonly threadListType: ThreadFilterType | null = null,
175
+ ) {
176
+ super();
177
+
178
+ this.timelineSupport = Boolean(opts.timelineSupport);
179
+ this.liveTimeline = new EventTimeline(this);
180
+ this.displayPendingEvents = opts.pendingEvents !== false;
181
+
182
+ // just a list - *not* ordered.
183
+ this.timelines = [this.liveTimeline];
184
+ this._eventIdToTimeline = new Map<string, EventTimeline>();
185
+
186
+ this.filter = opts.filter;
187
+
188
+ this.relations = this.room?.relations ?? new RelationsContainer(room?.client ?? client!);
189
+ }
190
+
191
+ /**
192
+ * Get all the timelines in this set
193
+ * @returns the timelines in this set
194
+ */
195
+ public getTimelines(): EventTimeline[] {
196
+ return this.timelines;
197
+ }
198
+
199
+ /**
200
+ * Get the filter object this timeline set is filtered on, if any
201
+ * @returns the optional filter for this timelineSet
202
+ */
203
+ public getFilter(): Filter | undefined {
204
+ return this.filter;
205
+ }
206
+
207
+ /**
208
+ * Set the filter object this timeline set is filtered on
209
+ * (passed to the server when paginating via /messages).
210
+ * @param filter - the filter for this timelineSet
211
+ */
212
+ public setFilter(filter?: Filter): void {
213
+ this.filter = filter;
214
+ }
215
+
216
+ /**
217
+ * Get the list of pending sent events for this timelineSet's room, filtered
218
+ * by the timelineSet's filter if appropriate.
219
+ *
220
+ * @returns A list of the sent events
221
+ * waiting for remote echo.
222
+ *
223
+ * @throws If `opts.pendingEventOrdering` was not 'detached'
224
+ */
225
+ public getPendingEvents(): BriijEvent[] {
226
+ if (!this.room || !this.displayPendingEvents) {
227
+ return [];
228
+ }
229
+
230
+ return this.room.getPendingEvents();
231
+ }
232
+ /**
233
+ * Get the live timeline for this room.
234
+ *
235
+ * @returns live timeline
236
+ */
237
+ public getLiveTimeline(): EventTimeline {
238
+ return this.liveTimeline;
239
+ }
240
+
241
+ /**
242
+ * Set the live timeline for this room.
243
+ *
244
+ * @returns live timeline
245
+ */
246
+ public setLiveTimeline(timeline: EventTimeline): void {
247
+ this.liveTimeline = timeline;
248
+ }
249
+
250
+ /**
251
+ * Return the timeline (if any) this event is in.
252
+ * @param eventId - the eventId being sought
253
+ * @returns timeline
254
+ */
255
+ public eventIdToTimeline(eventId: string): EventTimeline | undefined {
256
+ return this._eventIdToTimeline.get(eventId);
257
+ }
258
+
259
+ /**
260
+ * Track a new event as if it were in the same timeline as an old event,
261
+ * replacing it.
262
+ * @param oldEventId - event ID of the original event
263
+ * @param newEventId - event ID of the replacement event
264
+ */
265
+ public replaceEventId(oldEventId: string, newEventId: string): void {
266
+ const existingTimeline = this._eventIdToTimeline.get(oldEventId);
267
+ if (existingTimeline) {
268
+ this._eventIdToTimeline.delete(oldEventId);
269
+ this._eventIdToTimeline.set(newEventId, existingTimeline);
270
+ }
271
+ }
272
+
273
+ /**
274
+ * Reset the live timeline, and start a new one.
275
+ *
276
+ * <p>This is used when /sync returns a 'limited' timeline.
277
+ *
278
+ * @param backPaginationToken - token for back-paginating the new timeline
279
+ * @param forwardPaginationToken - token for forward-paginating the old live timeline,
280
+ * if absent or null, all timelines are reset.
281
+ *
282
+ * @remarks
283
+ * Fires {@link RoomEvent.TimelineReset}
284
+ */
285
+ public resetLiveTimeline(backPaginationToken?: string, forwardPaginationToken?: string): void {
286
+ // Each EventTimeline has RoomState objects tracking the state at the start
287
+ // and end of that timeline. The copies at the end of the live timeline are
288
+ // special because they will have listeners attached to monitor changes to
289
+ // the current room state, so we move this RoomState from the end of the
290
+ // current live timeline to the end of the new one and, if necessary,
291
+ // replace it with a newly created one. We also make a copy for the start
292
+ // of the new timeline.
293
+
294
+ // if timeline support is disabled, forget about the old timelines
295
+ const resetAllTimelines = !this.timelineSupport || !forwardPaginationToken;
296
+
297
+ const oldTimeline = this.liveTimeline;
298
+ const newTimeline = resetAllTimelines
299
+ ? oldTimeline.forkLive(EventTimeline.FORWARDS)
300
+ : oldTimeline.fork(EventTimeline.FORWARDS);
301
+
302
+ if (resetAllTimelines) {
303
+ this.timelines = [newTimeline];
304
+ this._eventIdToTimeline = new Map<string, EventTimeline>();
305
+ } else {
306
+ this.timelines.push(newTimeline);
307
+ }
308
+
309
+ if (forwardPaginationToken) {
310
+ // Now set the forward pagination token on the old live timeline
311
+ // so it can be forward-paginated.
312
+ oldTimeline.setPaginationToken(forwardPaginationToken, EventTimeline.FORWARDS);
313
+ }
314
+
315
+ // make sure we set the pagination token before firing timelineReset,
316
+ // otherwise clients which start back-paginating will fail, and then get
317
+ // stuck without realising that they *can* back-paginate.
318
+ newTimeline.setPaginationToken(backPaginationToken ?? null, EventTimeline.BACKWARDS);
319
+
320
+ // Now we can swap the live timeline to the new one.
321
+ this.liveTimeline = newTimeline;
322
+ this.emit(RoomEvent.TimelineReset, this.room, this, resetAllTimelines);
323
+ }
324
+
325
+ /**
326
+ * Get the timeline which contains the given event, if any
327
+ *
328
+ * @param eventId - event ID to look for
329
+ * @returns timeline containing
330
+ * the given event, or null if unknown
331
+ */
332
+ public getTimelineForEvent(eventId?: string): EventTimeline | null {
333
+ if (eventId === null || eventId === undefined) {
334
+ return null;
335
+ }
336
+ const res = this._eventIdToTimeline.get(eventId);
337
+ return res === undefined ? null : res;
338
+ }
339
+
340
+ /**
341
+ * Get an event which is stored in our timelines
342
+ *
343
+ * @param eventId - event ID to look for
344
+ * @returns the given event, or undefined if unknown
345
+ */
346
+ public findEventById(eventId: string): BriijEvent | undefined {
347
+ const tl = this.getTimelineForEvent(eventId);
348
+ if (!tl) {
349
+ return undefined;
350
+ }
351
+ return tl.getEvents().find(function (ev) {
352
+ return ev.getId() == eventId;
353
+ });
354
+ }
355
+
356
+ /**
357
+ * Add a new timeline to this timeline list
358
+ *
359
+ * @returns newly-created timeline
360
+ */
361
+ public addTimeline(): EventTimeline {
362
+ if (!this.timelineSupport) {
363
+ throw new Error(
364
+ "timeline support is disabled. Set the 'timelineSupport'" +
365
+ " parameter to true when creating BriijClient to enable" +
366
+ " it.",
367
+ );
368
+ }
369
+
370
+ const timeline = new EventTimeline(this);
371
+ this.timelines.push(timeline);
372
+ return timeline;
373
+ }
374
+
375
+ /**
376
+ * Add events to a timeline
377
+ *
378
+ * <p>Will fire "Room.timeline" for each event added.
379
+ *
380
+ * @param events - A list of events to add.
381
+ *
382
+ * @param toStartOfTimeline - True to add these events to the start
383
+ * (oldest) instead of the end (newest) of the timeline. If true, the oldest
384
+ * event will be the <b>last</b> element of 'events'.
385
+ *
386
+ * @param timeline - timeline to
387
+ * add events to.
388
+ *
389
+ * @param paginationToken - token for the next batch of events
390
+ *
391
+ * @remarks
392
+ * Fires {@link RoomEvent.Timeline}
393
+ *
394
+ */
395
+ public addEventsToTimeline(
396
+ events: BriijEvent[],
397
+ toStartOfTimeline: boolean,
398
+ addToState: boolean,
399
+ timeline: EventTimeline,
400
+ paginationToken?: string | null,
401
+ ): void {
402
+ if (!timeline) {
403
+ throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline");
404
+ }
405
+
406
+ if (!toStartOfTimeline && timeline == this.liveTimeline) {
407
+ throw new Error(
408
+ "EventTimelineSet.addEventsToTimeline cannot be used for adding events to " +
409
+ "the live timeline - use Room.addLiveEvents instead",
410
+ );
411
+ }
412
+
413
+ if (this.filter) {
414
+ events = this.filter.filterRoomTimeline(events);
415
+ if (!events.length) {
416
+ return;
417
+ }
418
+ }
419
+
420
+ const direction = toStartOfTimeline ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;
421
+ const inverseDirection = toStartOfTimeline ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;
422
+
423
+ // Adding events to timelines can be quite complicated. The following
424
+ // illustrates some of the corner-cases.
425
+ //
426
+ // Let's say we start by knowing about four timelines. timeline3 and
427
+ // timeline4 are neighbours:
428
+ //
429
+ // timeline1 timeline2 timeline3 timeline4
430
+ // [M] [P] [S] <------> [T]
431
+ //
432
+ // Now we paginate timeline1, and get the following events from the server:
433
+ // [M, N, P, R, S, T, U].
434
+ //
435
+ // 1. First, we ignore event M, since we already know about it.
436
+ //
437
+ // 2. Next, we append N to timeline 1.
438
+ //
439
+ // 3. Next, we don't add event P, since we already know about it,
440
+ // but we do link together the timelines. We now have:
441
+ //
442
+ // timeline1 timeline2 timeline3 timeline4
443
+ // [M, N] <---> [P] [S] <------> [T]
444
+ //
445
+ // 4. Now we add event R to timeline2:
446
+ //
447
+ // timeline1 timeline2 timeline3 timeline4
448
+ // [M, N] <---> [P, R] [S] <------> [T]
449
+ //
450
+ // Note that we have switched the timeline we are working on from
451
+ // timeline1 to timeline2.
452
+ //
453
+ // 5. We ignore event S, but again join the timelines:
454
+ //
455
+ // timeline1 timeline2 timeline3 timeline4
456
+ // [M, N] <---> [P, R] <---> [S] <------> [T]
457
+ //
458
+ // 6. We ignore event T, and the timelines are already joined, so there
459
+ // is nothing to do.
460
+ //
461
+ // 7. Finally, we add event U to timeline4:
462
+ //
463
+ // timeline1 timeline2 timeline3 timeline4
464
+ // [M, N] <---> [P, R] <---> [S] <------> [T, U]
465
+ //
466
+ // The important thing to note in the above is what happened when we
467
+ // already knew about a given event:
468
+ //
469
+ // - if it was appropriate, we joined up the timelines (steps 3, 5).
470
+ // - in any case, we started adding further events to the timeline which
471
+ // contained the event we knew about (steps 3, 5, 6).
472
+ //
473
+ //
474
+ // So much for adding events to the timeline. But what do we want to do
475
+ // with the pagination token?
476
+ //
477
+ // In the case above, we will be given a pagination token which tells us how to
478
+ // get events beyond 'U' - in this case, it makes sense to store this
479
+ // against timeline4. But what if timeline4 already had 'U' and beyond? in
480
+ // that case, our best bet is to throw away the pagination token we were
481
+ // given and stick with whatever token timeline4 had previously. In short,
482
+ // we want to only store the pagination token if the last event we receive
483
+ // is one we didn't previously know about.
484
+ //
485
+ // We make an exception for this if it turns out that we already knew about
486
+ // *all* of the events, and we weren't able to join up any timelines. When
487
+ // that happens, it means our existing pagination token is faulty, since it
488
+ // is only telling us what we already know. Rather than repeatedly
489
+ // paginating with the same token, we might as well use the new pagination
490
+ // token in the hope that we eventually work our way out of the mess.
491
+
492
+ let didUpdate = false;
493
+ let lastEventWasNew = false;
494
+ for (const event of events) {
495
+ const eventId = event.getId()!;
496
+
497
+ const existingTimeline = this._eventIdToTimeline.get(eventId);
498
+
499
+ if (!existingTimeline) {
500
+ // we don't know about this event yet. Just add it to the timeline.
501
+ this.addEventToTimeline(event, timeline, {
502
+ toStartOfTimeline,
503
+ addToState,
504
+ });
505
+ lastEventWasNew = true;
506
+ didUpdate = true;
507
+ continue;
508
+ }
509
+
510
+ lastEventWasNew = false;
511
+
512
+ if (existingTimeline == timeline) {
513
+ debuglog("Event " + eventId + " already in timeline " + timeline);
514
+ continue;
515
+ }
516
+
517
+ const neighbour = timeline.getNeighbouringTimeline(direction);
518
+ if (neighbour) {
519
+ // this timeline already has a neighbour in the relevant direction;
520
+ // let's assume the timelines are already correctly linked up, and
521
+ // skip over to it.
522
+ //
523
+ // there's probably some edge-case here where we end up with an
524
+ // event which is in a timeline a way down the chain, and there is
525
+ // a break in the chain somewhere. But I can't really imagine how
526
+ // that would happen, so I'm going to ignore it for now.
527
+ //
528
+ if (existingTimeline == neighbour) {
529
+ debuglog("Event " + eventId + " in neighbouring timeline - " + "switching to " + existingTimeline);
530
+ } else {
531
+ debuglog("Event " + eventId + " already in a different " + "timeline " + existingTimeline);
532
+ }
533
+ timeline = existingTimeline;
534
+ continue;
535
+ }
536
+
537
+ // time to join the timelines.
538
+ logger.info(
539
+ "Already have timeline for " + eventId + " - joining timeline " + timeline + " to " + existingTimeline,
540
+ );
541
+
542
+ // Variables to keep the line length limited below.
543
+ const existingIsLive = existingTimeline === this.liveTimeline;
544
+ const timelineIsLive = timeline === this.liveTimeline;
545
+
546
+ const backwardsIsLive = direction === EventTimeline.BACKWARDS && existingIsLive;
547
+ const forwardsIsLive = direction === EventTimeline.FORWARDS && timelineIsLive;
548
+
549
+ if (backwardsIsLive || forwardsIsLive) {
550
+ // The live timeline should never be spliced into a non-live position.
551
+ // We use independent logging to better discover the problem at a glance.
552
+ if (backwardsIsLive) {
553
+ logger.warn(
554
+ "Refusing to set a preceding existingTimeLine on our " +
555
+ "timeline as the existingTimeLine is live (" +
556
+ existingTimeline +
557
+ ")",
558
+ );
559
+ }
560
+ if (forwardsIsLive) {
561
+ logger.warn(
562
+ "Refusing to set our preceding timeline on a existingTimeLine " +
563
+ "as our timeline is live (" +
564
+ timeline +
565
+ ")",
566
+ );
567
+ }
568
+ continue; // abort splicing - try next event
569
+ }
570
+
571
+ timeline.setNeighbouringTimeline(existingTimeline, direction);
572
+ existingTimeline.setNeighbouringTimeline(timeline, inverseDirection);
573
+
574
+ timeline = existingTimeline;
575
+ didUpdate = true;
576
+ }
577
+
578
+ // see above - if the last event was new to us, or if we didn't find any
579
+ // new information, we update the pagination token for whatever
580
+ // timeline we ended up on.
581
+ if (lastEventWasNew || !didUpdate) {
582
+ if (direction === EventTimeline.FORWARDS && timeline === this.liveTimeline) {
583
+ logger.warn({ lastEventWasNew, didUpdate }); // for debugging
584
+ logger.warn(
585
+ `Refusing to set forwards pagination token of live timeline ` + `${timeline} to ${paginationToken}`,
586
+ );
587
+ return;
588
+ }
589
+ timeline.setPaginationToken(paginationToken ?? null, direction);
590
+ }
591
+ }
592
+
593
+ /**
594
+ * Add an event to the end of this live timeline.
595
+ *
596
+ * @param event - Event to be added
597
+ * @param options - addLiveEvent options
598
+ */
599
+ public addLiveEvent(
600
+ event: BriijEvent,
601
+ { duplicateStrategy, fromCache, roomState, timelineWasEmpty, addToState }: IAddLiveEventOptions,
602
+ ): void {
603
+ if (this.filter) {
604
+ const events = this.filter.filterRoomTimeline([event]);
605
+ if (!events.length) {
606
+ return;
607
+ }
608
+ }
609
+
610
+ const timeline = this._eventIdToTimeline.get(event.getId()!);
611
+ if (timeline) {
612
+ if (duplicateStrategy === DuplicateStrategy.Replace) {
613
+ debuglog("EventTimelineSet.addLiveEvent: replacing duplicate event " + event.getId());
614
+ const tlEvents = timeline.getEvents();
615
+ for (let j = 0; j < tlEvents.length; j++) {
616
+ if (tlEvents[j].getId() === event.getId()) {
617
+ // still need to set the right metadata on this event
618
+ if (!roomState) {
619
+ roomState = timeline.getState(EventTimeline.FORWARDS);
620
+ }
621
+ EventTimeline.setEventMetadata(event, roomState!, false);
622
+ tlEvents[j] = event;
623
+
624
+ // XXX: we need to fire an event when this happens.
625
+ break;
626
+ }
627
+ }
628
+ } else {
629
+ debuglog("EventTimelineSet.addLiveEvent: ignoring duplicate event " + event.getId());
630
+ }
631
+ return;
632
+ }
633
+
634
+ this.addEventToTimeline(event, this.liveTimeline, {
635
+ toStartOfTimeline: false,
636
+ fromCache,
637
+ roomState,
638
+ timelineWasEmpty,
639
+ addToState,
640
+ });
641
+ }
642
+
643
+ /**
644
+ * Add event to the given timeline, and emit Room.timeline. Assumes
645
+ * we have already checked we don't know about this event.
646
+ *
647
+ * Will fire "Room.timeline" for each event added.
648
+ *
649
+ * @param event - the event to add
650
+ * @param timeline - the timeline onto which to add it
651
+ * @param options - addEventToTimeline options
652
+ *
653
+ * @remarks
654
+ * Fires {@link RoomEvent.Timeline}
655
+ */
656
+ public addEventToTimeline(
657
+ event: BriijEvent,
658
+ timeline: EventTimeline,
659
+ { toStartOfTimeline, fromCache = false, roomState, timelineWasEmpty, addToState }: IAddEventToTimelineOptions,
660
+ ): void {
661
+ if (timeline.getTimelineSet() !== this) {
662
+ throw new Error(`EventTimelineSet.addEventToTimeline: Timeline=${timeline.toString()} does not belong " +
663
+ "in timelineSet(threadId=${this.thread?.id})`);
664
+ }
665
+
666
+ const eventId = event.getId()!;
667
+ this.relations.aggregateParentEvent(event);
668
+ this.relations.aggregateChildEvent(event, this);
669
+
670
+ // Make sure events don't get mixed in timelines they shouldn't be in (e.g. a
671
+ // threaded message should not be in the main timeline).
672
+ //
673
+ // We can only run this check for timelines with a `room` because `canContain`
674
+ // requires it
675
+ if (this.room && !this.canContain(event)) {
676
+ let eventDebugString = `event=${eventId}`;
677
+ if (event.threadRootId) {
678
+ eventDebugString += `(belongs to thread=${event.threadRootId})`;
679
+ }
680
+ logger.warn(
681
+ `EventTimelineSet.addEventToTimeline: Ignoring ${eventDebugString} that does not belong ` +
682
+ `in timeline=${timeline.toString()} timelineSet(threadId=${this.thread?.id})`,
683
+ );
684
+ return;
685
+ }
686
+
687
+ timeline.addEvent(event, {
688
+ toStartOfTimeline,
689
+ roomState,
690
+ timelineWasEmpty,
691
+ addToState,
692
+ });
693
+ this._eventIdToTimeline.set(eventId, timeline);
694
+
695
+ const data: IRoomTimelineData = {
696
+ timeline: timeline,
697
+ liveEvent: !toStartOfTimeline && timeline == this.liveTimeline && !fromCache,
698
+ };
699
+ this.emit(RoomEvent.Timeline, event, this.room, Boolean(toStartOfTimeline), false, data);
700
+ }
701
+
702
+ /**
703
+ * Insert event to the given timeline, and emit Room.timeline. Assumes
704
+ * we have already checked we don't know about this event.
705
+ *
706
+ * TEMPORARY: until we have recursive relations, we need this function
707
+ * to exist to allow us to insert events in timeline order, which is our
708
+ * best guess for Sync Order.
709
+ * This is a copy of addEventToTimeline above, modified to insert the event
710
+ * after the event it relates to, and before any event with a later
711
+ * timestamp. This is our best guess at Sync Order.
712
+ *
713
+ * Will fire "Room.timeline" for each event added.
714
+ *
715
+ * @internal
716
+ *
717
+ * @remarks
718
+ * Fires {@link RoomEvent.Timeline}
719
+ */
720
+ public insertEventIntoTimeline(
721
+ event: BriijEvent,
722
+ timeline: EventTimeline,
723
+ roomState: RoomState,
724
+ addToState: boolean,
725
+ ): void {
726
+ if (timeline.getTimelineSet() !== this) {
727
+ throw new Error(`EventTimelineSet.insertEventIntoTimeline: Timeline=${timeline.toString()} does not belong " +
728
+ "in timelineSet(threadId=${this.thread?.id})`);
729
+ }
730
+
731
+ const eventId = event.getId()!;
732
+ this.relations.aggregateParentEvent(event);
733
+ this.relations.aggregateChildEvent(event, this);
734
+
735
+ // Make sure events don't get mixed in timelines they shouldn't be in (e.g. a
736
+ // threaded message should not be in the main timeline).
737
+ //
738
+ // We can only run this check for timelines with a `room` because `canContain`
739
+ // requires it
740
+ if (this.room && !this.canContain(event)) {
741
+ let eventDebugString = `event=${eventId}`;
742
+ if (event.threadRootId) {
743
+ eventDebugString += `(belongs to thread=${event.threadRootId})`;
744
+ }
745
+ logger.warn(
746
+ `EventTimelineSet.insertEventIntoTimeline: Ignoring ${eventDebugString} that does not belong ` +
747
+ `in timeline=${timeline.toString()} timelineSet(threadId=${this.thread?.id})`,
748
+ );
749
+ return;
750
+ }
751
+
752
+ // Find the event that this event is related to - the "parent"
753
+ const parentEventId = event.relationEventId;
754
+ if (!parentEventId) {
755
+ // Not related to anything - we just append
756
+ this.addEventToTimeline(event, timeline, {
757
+ toStartOfTimeline: false,
758
+ fromCache: false,
759
+ timelineWasEmpty: false,
760
+ roomState,
761
+ addToState,
762
+ });
763
+ return;
764
+ }
765
+
766
+ const parentEvent = this.findEventById(parentEventId);
767
+
768
+ const timelineEvents = timeline.getEvents();
769
+
770
+ // Start searching from the parent event, or if it's not loaded, start
771
+ // at the beginning and insert purely using timestamp order.
772
+ const parentIndex = parentEvent !== undefined ? timelineEvents.indexOf(parentEvent) : 0;
773
+ let insertIndex = parentIndex;
774
+ for (; insertIndex < timelineEvents.length; insertIndex++) {
775
+ const nextEvent = timelineEvents[insertIndex];
776
+ if (nextEvent.getTs() > event.getTs()) {
777
+ // We found an event later than ours, so insert before that.
778
+ break;
779
+ }
780
+ }
781
+ // If we got to the end of the loop, insertIndex points at the end of
782
+ // the list.
783
+
784
+ timeline.insertEvent(event, insertIndex, roomState, addToState);
785
+ this._eventIdToTimeline.set(eventId, timeline);
786
+
787
+ const data: IRoomTimelineData = {
788
+ timeline: timeline,
789
+ // The purpose of this method is inserting events in the middle of the
790
+ // timeline, so the events are, by definition, not live (whether or not
791
+ // we're adding them to the live timeline).
792
+ liveEvent: false,
793
+ };
794
+ this.emit(RoomEvent.Timeline, event, this.room, false, false, data);
795
+ }
796
+
797
+ /**
798
+ * Replaces event with ID oldEventId with one with newEventId, if oldEventId is
799
+ * recognised. Otherwise, add to the live timeline. Used to handle remote echos.
800
+ *
801
+ * @param localEvent - the new event to be added to the timeline
802
+ * @param oldEventId - the ID of the original event
803
+ * @param newEventId - the ID of the replacement event
804
+ *
805
+ * @remarks
806
+ * Fires {@link RoomEvent.Timeline}
807
+ */
808
+ public handleRemoteEcho(localEvent: BriijEvent, oldEventId: string, newEventId: string): void {
809
+ // XXX: why don't we infer newEventId from localEvent?
810
+ const existingTimeline = this._eventIdToTimeline.get(oldEventId);
811
+ if (existingTimeline) {
812
+ this._eventIdToTimeline.delete(oldEventId);
813
+ this._eventIdToTimeline.set(newEventId, existingTimeline);
814
+ } else if (!this.filter || this.filter.filterRoomTimeline([localEvent]).length) {
815
+ this.addEventToTimeline(localEvent, this.liveTimeline, {
816
+ toStartOfTimeline: false,
817
+ addToState: false,
818
+ });
819
+ }
820
+ }
821
+
822
+ /**
823
+ * Removes a single event from this room.
824
+ *
825
+ * @param eventId - The id of the event to remove
826
+ *
827
+ * @returns the removed event, or null if the event was not found
828
+ * in this room.
829
+ */
830
+ public removeEvent(eventId: string): BriijEvent | null {
831
+ const timeline = this._eventIdToTimeline.get(eventId);
832
+ if (!timeline) {
833
+ return null;
834
+ }
835
+
836
+ const removed = timeline.removeEvent(eventId);
837
+ if (removed) {
838
+ this._eventIdToTimeline.delete(eventId);
839
+ const data = {
840
+ timeline: timeline,
841
+ };
842
+ this.emit(RoomEvent.Timeline, removed, this.room, undefined, true, data);
843
+ }
844
+ return removed;
845
+ }
846
+
847
+ /**
848
+ * Determine where two events appear in the timeline relative to one another
849
+ *
850
+ * @param eventId1 - The id of the first event
851
+ * @param eventId2 - The id of the second event
852
+
853
+ * @returns -1 if eventId1 precedes eventId2, and +1 eventId1 succeeds
854
+ * eventId2. 0 if they are the same event; null if we can't tell (either
855
+ * because we don't know about one of the events, or because they are in
856
+ * separate timelines which don't join up).
857
+ */
858
+ public compareEventOrdering(eventId1: string, eventId2: string): number | null {
859
+ if (eventId1 == eventId2) {
860
+ // optimise this case
861
+ return 0;
862
+ }
863
+
864
+ const timeline1 = this._eventIdToTimeline.get(eventId1);
865
+ const timeline2 = this._eventIdToTimeline.get(eventId2);
866
+
867
+ if (timeline1 === undefined) {
868
+ return null;
869
+ }
870
+ if (timeline2 === undefined) {
871
+ return null;
872
+ }
873
+
874
+ if (timeline1 === timeline2) {
875
+ // both events are in the same timeline - figure out their relative indices
876
+ let idx1: number | undefined = undefined;
877
+ let idx2: number | undefined = undefined;
878
+ const events = timeline1.getEvents();
879
+ for (let idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) {
880
+ const evId = events[idx].getId();
881
+ if (evId == eventId1) {
882
+ idx1 = idx;
883
+ }
884
+ if (evId == eventId2) {
885
+ idx2 = idx;
886
+ }
887
+ }
888
+ const difference = idx1! - idx2!;
889
+
890
+ // Return the sign of difference.
891
+ if (difference < 0) {
892
+ return -1;
893
+ } else if (difference > 0) {
894
+ return 1;
895
+ } else {
896
+ return 0;
897
+ }
898
+ }
899
+
900
+ // the events are in different timelines. Iterate through the
901
+ // linkedlist to see which comes first.
902
+
903
+ // first work forwards from timeline1
904
+ let tl: EventTimeline | null = timeline1;
905
+ while (tl) {
906
+ if (tl === timeline2) {
907
+ // timeline1 is before timeline2
908
+ return -1;
909
+ }
910
+ tl = tl.getNeighbouringTimeline(EventTimeline.FORWARDS);
911
+ }
912
+
913
+ // now try backwards from timeline1
914
+ tl = timeline1;
915
+ while (tl) {
916
+ if (tl === timeline2) {
917
+ // timeline2 is before timeline1
918
+ return 1;
919
+ }
920
+ tl = tl.getNeighbouringTimeline(EventTimeline.BACKWARDS);
921
+ }
922
+
923
+ // the timelines are not contiguous.
924
+ return null;
925
+ }
926
+
927
+ /**
928
+ * Determine whether a given event can sanely be added to this event timeline set,
929
+ * for timeline sets relating to a thread, only return true for events in the same
930
+ * thread timeline, for timeline sets not relating to a thread only return true
931
+ * for events which should be shown in the main room timeline.
932
+ * Requires the `room` property to have been set at EventTimelineSet construction time.
933
+ *
934
+ * @param event - the event to check whether it belongs to this timeline set.
935
+ * @throws Error if `room` was not set when constructing this timeline set.
936
+ * @returns whether the event belongs to this timeline set.
937
+ */
938
+ public canContain(event: BriijEvent): boolean {
939
+ if (!this.room) {
940
+ throw new Error(
941
+ "Cannot call `EventTimelineSet::canContain without a `room` set. " +
942
+ "Set the room when creating the EventTimelineSet to call this method.",
943
+ );
944
+ }
945
+
946
+ const { threadId, shouldLiveInRoom, shouldLiveInThread } = this.room.eventShouldLiveIn(event);
947
+
948
+ if (this.thread) {
949
+ return this.thread.id === threadId;
950
+ }
951
+
952
+ if (!shouldLiveInRoom && !shouldLiveInThread) {
953
+ logger.warn(
954
+ `EventTimelineSet:canContain event encountered which cannot be added to any timeline roomId=${
955
+ this.room?.roomId
956
+ } eventId=${event.getId()} threadId=${event.threadRootId}`,
957
+ );
958
+ }
959
+
960
+ return shouldLiveInRoom;
961
+ }
962
+ }