@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,1334 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ import { TypedEventEmitter } from "../models/typed-event-emitter.js";
6
+ import { CallFeed, SPEAKING_THRESHOLD } from "./callFeed.js";
7
+ import { CallErrorCode, CallEvent, CallState, genCallID, setTracksEnabled, createNewBriijCall, CallError } from "./call.js";
8
+ import { RoomStateEvent } from "../models/room-state.js";
9
+ import { logger } from "../logger.js";
10
+ import { ReEmitter } from "../ReEmitter.js";
11
+ import { SDPStreamMetadataPurpose } from "./callEventTypes.js";
12
+ import { EventType } from "../@types/event.js";
13
+ import { CallEventHandlerEvent } from "./callEventHandler.js";
14
+ import { GroupCallEventHandlerEvent } from "./groupCallEventHandler.js";
15
+ import { mapsEqual } from "../utils.js";
16
+ import { GroupCallStats } from "./stats/groupCallStats.js";
17
+ import { StatsReport } from "./stats/statsReport.js";
18
+ import { SummaryStatsReportGatherer } from "./stats/summaryStatsReportGatherer.js";
19
+ import { CallFeedStatsReporter } from "./stats/callFeedStatsReporter.js";
20
+ import { KnownMembership } from "../@types/membership.js";
21
+ export var GroupCallIntent = /*#__PURE__*/function (GroupCallIntent) {
22
+ GroupCallIntent["Ring"] = "m.ring";
23
+ GroupCallIntent["Prompt"] = "m.prompt";
24
+ GroupCallIntent["Room"] = "m.room";
25
+ return GroupCallIntent;
26
+ }({});
27
+ export var GroupCallType = /*#__PURE__*/function (GroupCallType) {
28
+ GroupCallType["Video"] = "m.video";
29
+ GroupCallType["Voice"] = "m.voice";
30
+ return GroupCallType;
31
+ }({});
32
+ export var GroupCallTerminationReason = /*#__PURE__*/function (GroupCallTerminationReason) {
33
+ GroupCallTerminationReason["CallEnded"] = "call_ended";
34
+ return GroupCallTerminationReason;
35
+ }({});
36
+ /**
37
+ * Because event names are just strings, they do need
38
+ * to be unique over all event types of event emitter.
39
+ * Some objects could emit more then one set of events.
40
+ */
41
+ export var GroupCallEvent = /*#__PURE__*/function (GroupCallEvent) {
42
+ GroupCallEvent["GroupCallStateChanged"] = "group_call_state_changed";
43
+ GroupCallEvent["ActiveSpeakerChanged"] = "active_speaker_changed";
44
+ GroupCallEvent["CallsChanged"] = "calls_changed";
45
+ GroupCallEvent["UserMediaFeedsChanged"] = "user_media_feeds_changed";
46
+ GroupCallEvent["ScreenshareFeedsChanged"] = "screenshare_feeds_changed";
47
+ GroupCallEvent["LocalScreenshareStateChanged"] = "local_screenshare_state_changed";
48
+ GroupCallEvent["LocalMuteStateChanged"] = "local_mute_state_changed";
49
+ GroupCallEvent["ParticipantsChanged"] = "participants_changed";
50
+ GroupCallEvent["Error"] = "group_call_error";
51
+ return GroupCallEvent;
52
+ }({});
53
+ export var GroupCallStatsReportEvent = /*#__PURE__*/function (GroupCallStatsReportEvent) {
54
+ GroupCallStatsReportEvent["ConnectionStats"] = "GroupCall.connection_stats";
55
+ GroupCallStatsReportEvent["ByteSentStats"] = "GroupCall.byte_sent_stats";
56
+ GroupCallStatsReportEvent["SummaryStats"] = "GroupCall.summary_stats";
57
+ GroupCallStatsReportEvent["CallFeedStats"] = "GroupCall.call_feed_stats";
58
+ return GroupCallStatsReportEvent;
59
+ }({});
60
+
61
+ /**
62
+ * The final report-events that get consumed by client.
63
+ */
64
+
65
+ export var GroupCallErrorCode = /*#__PURE__*/function (GroupCallErrorCode) {
66
+ GroupCallErrorCode["NoUserMedia"] = "no_user_media";
67
+ GroupCallErrorCode["UnknownDevice"] = "unknown_device";
68
+ GroupCallErrorCode["PlaceCallFailed"] = "place_call_failed";
69
+ return GroupCallErrorCode;
70
+ }({});
71
+ export class GroupCallError extends Error {
72
+ constructor(code, msg, err) {
73
+ // Still don't think there's any way to have proper nested errors
74
+ if (err) {
75
+ super(msg + ": " + err);
76
+ _defineProperty(this, "code", void 0);
77
+ } else {
78
+ super(msg);
79
+ _defineProperty(this, "code", void 0);
80
+ }
81
+ this.code = code;
82
+ }
83
+ }
84
+ export class GroupCallUnknownDeviceError extends GroupCallError {
85
+ constructor(userId) {
86
+ super(GroupCallErrorCode.UnknownDevice, "No device found for " + userId);
87
+ this.userId = userId;
88
+ }
89
+ }
90
+ export class OtherUserSpeakingError extends Error {
91
+ constructor() {
92
+ super("Cannot unmute: another user is speaking");
93
+ }
94
+ }
95
+ export var GroupCallState = /*#__PURE__*/function (GroupCallState) {
96
+ GroupCallState["LocalCallFeedUninitialized"] = "local_call_feed_uninitialized";
97
+ GroupCallState["InitializingLocalCallFeed"] = "initializing_local_call_feed";
98
+ GroupCallState["LocalCallFeedInitialized"] = "local_call_feed_initialized";
99
+ GroupCallState["Entered"] = "entered";
100
+ GroupCallState["Ended"] = "ended";
101
+ return GroupCallState;
102
+ }({});
103
+ var DEVICE_TIMEOUT = 1000 * 60 * 60; // 1 hour
104
+
105
+ function getCallUserId(call) {
106
+ var _call$getOpponentMemb;
107
+ return ((_call$getOpponentMemb = call.getOpponentMember()) === null || _call$getOpponentMemb === void 0 ? void 0 : _call$getOpponentMemb.userId) || call.invitee || null;
108
+ }
109
+ export class GroupCall extends TypedEventEmitter {
110
+ constructor(client, room, type, isPtt, intent, groupCallId, dataChannelsEnabled, dataChannelOptions, isCallWithoutVideoAndAudio) {
111
+ var _room$currentState$ge, _room$currentState$ge2;
112
+ var useLivekit = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : false;
113
+ var livekitServiceURL = arguments.length > 10 ? arguments[10] : undefined;
114
+ super();
115
+ this.client = client;
116
+ this.room = room;
117
+ this.type = type;
118
+ this.isPtt = isPtt;
119
+ this.intent = intent;
120
+ this.dataChannelsEnabled = dataChannelsEnabled;
121
+ this.dataChannelOptions = dataChannelOptions;
122
+ this.useLivekit = useLivekit;
123
+ // Config
124
+ _defineProperty(this, "activeSpeakerInterval", 1000);
125
+ _defineProperty(this, "retryCallInterval", 5000);
126
+ _defineProperty(this, "participantTimeout", 1000 * 15);
127
+ _defineProperty(this, "pttMaxTransmitTime", 1000 * 20);
128
+ _defineProperty(this, "activeSpeaker", void 0);
129
+ _defineProperty(this, "localCallFeed", void 0);
130
+ _defineProperty(this, "localScreenshareFeed", void 0);
131
+ _defineProperty(this, "localDesktopCapturerSourceId", void 0);
132
+ _defineProperty(this, "userMediaFeeds", []);
133
+ _defineProperty(this, "screenshareFeeds", []);
134
+ _defineProperty(this, "groupCallId", void 0);
135
+ _defineProperty(this, "allowCallWithoutVideoAndAudio", void 0);
136
+ _defineProperty(this, "calls", new Map());
137
+ // user_id -> device_id -> BriijCall
138
+ _defineProperty(this, "callHandlers", new Map());
139
+ // user_id -> device_id -> ICallHandlers
140
+ _defineProperty(this, "activeSpeakerLoopInterval", void 0);
141
+ _defineProperty(this, "retryCallLoopInterval", void 0);
142
+ _defineProperty(this, "retryCallCounts", new Map());
143
+ // user_id -> device_id -> count
144
+ _defineProperty(this, "reEmitter", void 0);
145
+ _defineProperty(this, "transmitTimer", null);
146
+ _defineProperty(this, "participantsExpirationTimer", null);
147
+ _defineProperty(this, "resendMemberStateTimer", null);
148
+ _defineProperty(this, "initWithAudioMuted", false);
149
+ _defineProperty(this, "initWithVideoMuted", false);
150
+ _defineProperty(this, "initCallFeedPromise", void 0);
151
+ _defineProperty(this, "_livekitServiceURL", void 0);
152
+ _defineProperty(this, "stats", void 0);
153
+ /**
154
+ * Configure default webrtc stats collection interval in ms
155
+ * Disable collecting webrtc stats by setting interval to 0
156
+ */
157
+ _defineProperty(this, "statsCollectIntervalTime", 0);
158
+ _defineProperty(this, "onConnectionStats", report => {
159
+ // Final emit of the summary event, to be consumed by the client
160
+ this.emit(GroupCallStatsReportEvent.ConnectionStats, {
161
+ report
162
+ });
163
+ });
164
+ _defineProperty(this, "onByteSentStats", report => {
165
+ // Final emit of the summary event, to be consumed by the client
166
+ this.emit(GroupCallStatsReportEvent.ByteSentStats, {
167
+ report
168
+ });
169
+ });
170
+ _defineProperty(this, "onSummaryStats", report => {
171
+ SummaryStatsReportGatherer.extendSummaryReport(report, this.participants);
172
+ // Final emit of the summary event, to be consumed by the client
173
+ this.emit(GroupCallStatsReportEvent.SummaryStats, {
174
+ report
175
+ });
176
+ });
177
+ _defineProperty(this, "onCallFeedReport", report => {
178
+ if (this.localCallFeed) {
179
+ report = CallFeedStatsReporter.expandCallFeedReport(report, [this.localCallFeed], "from-local-feed");
180
+ }
181
+ var callFeeds = [];
182
+ this.forEachCall(call => {
183
+ if (call.callId === report.callId) {
184
+ call.getFeeds().forEach(f => callFeeds.push(f));
185
+ }
186
+ });
187
+ report = CallFeedStatsReporter.expandCallFeedReport(report, callFeeds, "from-call-feed");
188
+ this.emit(GroupCallStatsReportEvent.CallFeedStats, {
189
+ report
190
+ });
191
+ });
192
+ _defineProperty(this, "_state", GroupCallState.LocalCallFeedUninitialized);
193
+ _defineProperty(this, "_participants", new Map());
194
+ _defineProperty(this, "_creationTs", null);
195
+ _defineProperty(this, "_enteredViaAnotherSession", false);
196
+ /*
197
+ * Call Setup
198
+ *
199
+ * There are two different paths for calls to be created:
200
+ * 1. Incoming calls triggered by the Call.incoming event.
201
+ * 2. Outgoing calls to the initial members of a room or new members
202
+ * as they are observed by the RoomState.members event.
203
+ */
204
+ _defineProperty(this, "onIncomingCall", newCall => {
205
+ var _newCall$getOpponentM, _this$calls$get;
206
+ // The incoming calls may be for another room, which we will ignore.
207
+ if (newCall.roomId !== this.room.roomId) {
208
+ return;
209
+ }
210
+ if (newCall.state !== CallState.Ringing) {
211
+ logger.warn("GroupCall ".concat(this.groupCallId, " onIncomingCall() incoming call no longer in ringing state - ignoring"));
212
+ return;
213
+ }
214
+ if (!newCall.groupCallId || newCall.groupCallId !== this.groupCallId) {
215
+ logger.log("GroupCall ".concat(this.groupCallId, " onIncomingCall() ignored because it doesn't match the current group call"));
216
+ newCall.reject();
217
+ return;
218
+ }
219
+ var opponentUserId = (_newCall$getOpponentM = newCall.getOpponentMember()) === null || _newCall$getOpponentM === void 0 ? void 0 : _newCall$getOpponentM.userId;
220
+ if (opponentUserId === undefined) {
221
+ logger.warn("GroupCall ".concat(this.groupCallId, " onIncomingCall() incoming call with no member - ignoring"));
222
+ return;
223
+ }
224
+ if (this.useLivekit) {
225
+ logger.info("Received incoming call whilst in signaling-only mode! Ignoring.");
226
+ return;
227
+ }
228
+ var deviceMap = (_this$calls$get = this.calls.get(opponentUserId)) !== null && _this$calls$get !== void 0 ? _this$calls$get : new Map();
229
+ var prevCall = deviceMap.get(newCall.getOpponentDeviceId());
230
+ if ((prevCall === null || prevCall === void 0 ? void 0 : prevCall.callId) === newCall.callId) return;
231
+ logger.log("GroupCall ".concat(this.groupCallId, " onIncomingCall() incoming call (userId=").concat(opponentUserId, ", callId=").concat(newCall.callId, ")"));
232
+ if (prevCall) prevCall.hangup(CallErrorCode.Replaced, false);
233
+ // We must do this before we start initialising / answering the call as we
234
+ // need to know it is the active call for this user+deviceId and to not ignore
235
+ // events from it.
236
+ deviceMap.set(newCall.getOpponentDeviceId(), newCall);
237
+ this.calls.set(opponentUserId, deviceMap);
238
+ this.initCall(newCall);
239
+ var feeds = this.getLocalFeeds().map(feed => feed.clone());
240
+ if (!this.callExpected(newCall)) {
241
+ // Disable our tracks for users not explicitly participating in the
242
+ // call but trying to receive the feeds
243
+ for (var feed of feeds) {
244
+ setTracksEnabled(feed.stream.getAudioTracks(), false);
245
+ setTracksEnabled(feed.stream.getVideoTracks(), false);
246
+ }
247
+ }
248
+ newCall.answerWithCallFeeds(feeds);
249
+ this.emit(GroupCallEvent.CallsChanged, this.calls);
250
+ });
251
+ _defineProperty(this, "onRetryCallLoop", () => {
252
+ var needsRetry = false;
253
+ for (var [{
254
+ userId: _userId
255
+ }, participantMap] of this.participants) {
256
+ var callMap = this.calls.get(_userId);
257
+ var retriesMap = this.retryCallCounts.get(_userId);
258
+ for (var [deviceId, participant] of participantMap) {
259
+ var _retriesMap$get, _retriesMap;
260
+ var call = callMap === null || callMap === void 0 ? void 0 : callMap.get(deviceId);
261
+ var retries = (_retriesMap$get = (_retriesMap = retriesMap) === null || _retriesMap === void 0 ? void 0 : _retriesMap.get(deviceId)) !== null && _retriesMap$get !== void 0 ? _retriesMap$get : 0;
262
+ if ((call === null || call === void 0 ? void 0 : call.getOpponentSessionId()) !== participant.sessionId && this.wantsOutgoingCall(_userId, deviceId) && retries < 3) {
263
+ if (retriesMap === undefined) {
264
+ retriesMap = new Map();
265
+ this.retryCallCounts.set(_userId, retriesMap);
266
+ }
267
+ retriesMap.set(deviceId, retries + 1);
268
+ needsRetry = true;
269
+ }
270
+ }
271
+ }
272
+ if (needsRetry) this.placeOutgoingCalls();
273
+ });
274
+ _defineProperty(this, "onCallFeedsChanged", call => {
275
+ var opponentMemberId = getCallUserId(call);
276
+ var opponentDeviceId = call.getOpponentDeviceId();
277
+ if (!opponentMemberId) {
278
+ throw new Error("Cannot change call feeds without user id");
279
+ }
280
+ var currentUserMediaFeed = this.getUserMediaFeed(opponentMemberId, opponentDeviceId);
281
+ var remoteUsermediaFeed = call.remoteUsermediaFeed;
282
+ var remoteFeedChanged = remoteUsermediaFeed !== currentUserMediaFeed;
283
+ var deviceMap = this.calls.get(opponentMemberId);
284
+ var currentCallForUserDevice = deviceMap === null || deviceMap === void 0 ? void 0 : deviceMap.get(opponentDeviceId);
285
+ if ((currentCallForUserDevice === null || currentCallForUserDevice === void 0 ? void 0 : currentCallForUserDevice.callId) !== call.callId) {
286
+ // the call in question is not the current call for this user/deviceId
287
+ // so ignore feed events from it otherwise we'll remove our real feeds
288
+ return;
289
+ }
290
+ if (remoteFeedChanged) {
291
+ if (!currentUserMediaFeed && remoteUsermediaFeed) {
292
+ this.addUserMediaFeed(remoteUsermediaFeed);
293
+ } else if (currentUserMediaFeed && remoteUsermediaFeed) {
294
+ this.replaceUserMediaFeed(currentUserMediaFeed, remoteUsermediaFeed);
295
+ } else if (currentUserMediaFeed && !remoteUsermediaFeed) {
296
+ this.removeUserMediaFeed(currentUserMediaFeed);
297
+ }
298
+ }
299
+ var currentScreenshareFeed = this.getScreenshareFeed(opponentMemberId, opponentDeviceId);
300
+ var remoteScreensharingFeed = call.remoteScreensharingFeed;
301
+ var remoteScreenshareFeedChanged = remoteScreensharingFeed !== currentScreenshareFeed;
302
+ if (remoteScreenshareFeedChanged) {
303
+ if (!currentScreenshareFeed && remoteScreensharingFeed) {
304
+ this.addScreenshareFeed(remoteScreensharingFeed);
305
+ } else if (currentScreenshareFeed && remoteScreensharingFeed) {
306
+ this.replaceScreenshareFeed(currentScreenshareFeed, remoteScreensharingFeed);
307
+ } else if (currentScreenshareFeed && !remoteScreensharingFeed) {
308
+ this.removeScreenshareFeed(currentScreenshareFeed);
309
+ }
310
+ }
311
+ });
312
+ _defineProperty(this, "onCallStateChanged", (call, state, _oldState) => {
313
+ var _call$getOpponentMemb2;
314
+ if (state === CallState.Ended) return;
315
+ var audioMuted = this.localCallFeed.isAudioMuted();
316
+ if (call.localUsermediaStream && call.isMicrophoneMuted() !== audioMuted) {
317
+ call.setMicrophoneMuted(audioMuted);
318
+ }
319
+ var videoMuted = this.localCallFeed.isVideoMuted();
320
+ if (call.localUsermediaStream && call.isLocalVideoMuted() !== videoMuted) {
321
+ call.setLocalVideoMuted(videoMuted);
322
+ }
323
+ var opponentUserId = (_call$getOpponentMemb2 = call.getOpponentMember()) === null || _call$getOpponentMemb2 === void 0 ? void 0 : _call$getOpponentMemb2.userId;
324
+ if (state === CallState.Connected && opponentUserId) {
325
+ var retriesMap = this.retryCallCounts.get(opponentUserId);
326
+ retriesMap === null || retriesMap === void 0 || retriesMap.delete(call.getOpponentDeviceId());
327
+ if ((retriesMap === null || retriesMap === void 0 ? void 0 : retriesMap.size) === 0) this.retryCallCounts.delete(opponentUserId);
328
+ }
329
+ });
330
+ _defineProperty(this, "onCallHangup", call => {
331
+ var _call$getOpponentMemb3, _call$getOpponentMemb4;
332
+ if (call.hangupReason === CallErrorCode.Replaced) return;
333
+ var opponentUserId = (_call$getOpponentMemb3 = (_call$getOpponentMemb4 = call.getOpponentMember()) === null || _call$getOpponentMemb4 === void 0 ? void 0 : _call$getOpponentMemb4.userId) !== null && _call$getOpponentMemb3 !== void 0 ? _call$getOpponentMemb3 : this.room.getMember(call.invitee).userId;
334
+ var deviceMap = this.calls.get(opponentUserId);
335
+
336
+ // Sanity check that this call is in fact in the map
337
+ if ((deviceMap === null || deviceMap === void 0 ? void 0 : deviceMap.get(call.getOpponentDeviceId())) === call) {
338
+ this.disposeCall(call, call.hangupReason);
339
+ deviceMap.delete(call.getOpponentDeviceId());
340
+ if (deviceMap.size === 0) this.calls.delete(opponentUserId);
341
+ this.emit(GroupCallEvent.CallsChanged, this.calls);
342
+ }
343
+ });
344
+ _defineProperty(this, "onCallReplaced", (prevCall, newCall) => {
345
+ var opponentUserId = prevCall.getOpponentMember().userId;
346
+ var deviceMap = this.calls.get(opponentUserId);
347
+ if (deviceMap === undefined) {
348
+ deviceMap = new Map();
349
+ this.calls.set(opponentUserId, deviceMap);
350
+ }
351
+ prevCall.hangup(CallErrorCode.Replaced, false);
352
+ this.initCall(newCall);
353
+ deviceMap.set(prevCall.getOpponentDeviceId(), newCall);
354
+ this.emit(GroupCallEvent.CallsChanged, this.calls);
355
+ });
356
+ _defineProperty(this, "onActiveSpeakerLoop", () => {
357
+ var topAvg = undefined;
358
+ var nextActiveSpeaker = undefined;
359
+ for (var callFeed of this.userMediaFeeds) {
360
+ if (callFeed.isLocal() && this.userMediaFeeds.length > 1) continue;
361
+ var total = callFeed.speakingVolumeSamples.reduce((acc, volume) => acc + Math.max(volume, SPEAKING_THRESHOLD));
362
+ var avg = total / callFeed.speakingVolumeSamples.length;
363
+ if (!topAvg || avg > topAvg) {
364
+ topAvg = avg;
365
+ nextActiveSpeaker = callFeed;
366
+ }
367
+ }
368
+ if (nextActiveSpeaker && this.activeSpeaker !== nextActiveSpeaker && topAvg && topAvg > SPEAKING_THRESHOLD) {
369
+ this.activeSpeaker = nextActiveSpeaker;
370
+ this.emit(GroupCallEvent.ActiveSpeakerChanged, this.activeSpeaker);
371
+ }
372
+ });
373
+ _defineProperty(this, "onRoomState", () => this.updateParticipants());
374
+ _defineProperty(this, "onParticipantsChanged", () => {
375
+ // Re-run setTracksEnabled on all calls, so that participants that just
376
+ // left get denied access to our media, and participants that just
377
+ // joined get granted access
378
+ this.forEachCall(call => {
379
+ var expected = this.callExpected(call);
380
+ for (var feed of call.getLocalFeeds()) {
381
+ setTracksEnabled(feed.stream.getAudioTracks(), !feed.isAudioMuted() && expected);
382
+ setTracksEnabled(feed.stream.getVideoTracks(), !feed.isVideoMuted() && expected);
383
+ }
384
+ });
385
+ if (this.state === GroupCallState.Entered && !this.useLivekit) this.placeOutgoingCalls();
386
+
387
+ // Update the participants stored in the stats object
388
+ });
389
+ _defineProperty(this, "onStateChanged", (newState, oldState) => {
390
+ if (newState === GroupCallState.Entered || oldState === GroupCallState.Entered || newState === GroupCallState.Ended) {
391
+ // We either entered, left, or ended the call
392
+ this.updateParticipants();
393
+ this.updateMemberState().catch(e => logger.error("GroupCall ".concat(this.groupCallId, " onStateChanged() failed to update member state devices\""), e));
394
+ }
395
+ });
396
+ _defineProperty(this, "onLocalFeedsChanged", () => {
397
+ if (this.state === GroupCallState.Entered) {
398
+ this.updateMemberState().catch(e => logger.error("GroupCall ".concat(this.groupCallId, " onLocalFeedsChanged() failed to update member state feeds"), e));
399
+ }
400
+ });
401
+ this.reEmitter = new ReEmitter(this);
402
+ this.groupCallId = groupCallId !== null && groupCallId !== void 0 ? groupCallId : genCallID();
403
+ this._livekitServiceURL = livekitServiceURL;
404
+ this.creationTs = (_room$currentState$ge = (_room$currentState$ge2 = room.currentState.getStateEvents(EventType.GroupCallPrefix, this.groupCallId)) === null || _room$currentState$ge2 === void 0 ? void 0 : _room$currentState$ge2.getTs()) !== null && _room$currentState$ge !== void 0 ? _room$currentState$ge : null;
405
+ this.updateParticipants();
406
+ room.on(RoomStateEvent.Update, this.onRoomState);
407
+ this.on(GroupCallEvent.ParticipantsChanged, this.onParticipantsChanged);
408
+ this.on(GroupCallEvent.GroupCallStateChanged, this.onStateChanged);
409
+ this.on(GroupCallEvent.LocalScreenshareStateChanged, this.onLocalFeedsChanged);
410
+ this.allowCallWithoutVideoAndAudio = !!isCallWithoutVideoAndAudio;
411
+ }
412
+ create() {
413
+ var _this = this;
414
+ return _asyncToGenerator(function* () {
415
+ _this.creationTs = Date.now();
416
+ _this.client.groupCallEventHandler.groupCalls.set(_this.room.roomId, _this);
417
+ _this.client.emit(GroupCallEventHandlerEvent.Outgoing, _this);
418
+ yield _this.sendCallStateEvent();
419
+ return _this;
420
+ })();
421
+ }
422
+ sendCallStateEvent() {
423
+ var _this2 = this;
424
+ return _asyncToGenerator(function* () {
425
+ var groupCallState = {
426
+ "m.intent": _this2.intent,
427
+ "m.type": _this2.type,
428
+ "io.element.ptt": _this2.isPtt,
429
+ // TODO: Specify data-channels better
430
+ "dataChannelsEnabled": _this2.dataChannelsEnabled,
431
+ "dataChannelOptions": _this2.dataChannelsEnabled ? _this2.dataChannelOptions : undefined
432
+ };
433
+ if (_this2.livekitServiceURL) {
434
+ groupCallState["io.element.livekit_service_url"] = _this2.livekitServiceURL;
435
+ }
436
+ yield _this2.client.sendStateEvent(_this2.room.roomId, EventType.GroupCallPrefix, groupCallState, _this2.groupCallId);
437
+ })();
438
+ }
439
+ get livekitServiceURL() {
440
+ return this._livekitServiceURL;
441
+ }
442
+ updateLivekitServiceURL(newURL) {
443
+ this._livekitServiceURL = newURL;
444
+ return this.sendCallStateEvent();
445
+ }
446
+ /**
447
+ * The group call's state.
448
+ */
449
+ get state() {
450
+ return this._state;
451
+ }
452
+ set state(value) {
453
+ var prevValue = this._state;
454
+ if (value !== prevValue) {
455
+ this._state = value;
456
+ this.emit(GroupCallEvent.GroupCallStateChanged, value, prevValue);
457
+ }
458
+ }
459
+ /**
460
+ * The current participants in the call, as a map from members to device IDs
461
+ * to participant info.
462
+ */
463
+ get participants() {
464
+ return this._participants;
465
+ }
466
+ set participants(value) {
467
+ var prevValue = this._participants;
468
+ var participantStateEqual = (x, y) => x.sessionId === y.sessionId && x.screensharing === y.screensharing;
469
+ var deviceMapsEqual = (x, y) => mapsEqual(x, y, participantStateEqual);
470
+
471
+ // Only update if the map actually changed
472
+ if (!mapsEqual(value, prevValue, deviceMapsEqual)) {
473
+ this._participants = value;
474
+ this.emit(GroupCallEvent.ParticipantsChanged, value);
475
+ }
476
+ }
477
+ /**
478
+ * The timestamp at which the call was created, or null if it has not yet
479
+ * been created.
480
+ */
481
+ get creationTs() {
482
+ return this._creationTs;
483
+ }
484
+ set creationTs(value) {
485
+ this._creationTs = value;
486
+ }
487
+ /**
488
+ * Whether the local device has entered this call via another session, such
489
+ * as a widget.
490
+ */
491
+ get enteredViaAnotherSession() {
492
+ return this._enteredViaAnotherSession;
493
+ }
494
+ set enteredViaAnotherSession(value) {
495
+ this._enteredViaAnotherSession = value;
496
+ this.updateParticipants();
497
+ }
498
+
499
+ /**
500
+ * Executes the given callback on all calls in this group call.
501
+ * @param f - The callback.
502
+ */
503
+ forEachCall(f) {
504
+ for (var deviceMap of this.calls.values()) {
505
+ for (var call of deviceMap.values()) f(call);
506
+ }
507
+ }
508
+ getLocalFeeds() {
509
+ var feeds = [];
510
+ if (this.localCallFeed) feeds.push(this.localCallFeed);
511
+ if (this.localScreenshareFeed) feeds.push(this.localScreenshareFeed);
512
+ return feeds;
513
+ }
514
+ hasLocalParticipant() {
515
+ var _this$participants$ge, _this$participants$ge2;
516
+ return (_this$participants$ge = (_this$participants$ge2 = this.participants.get(this.room.getMember(this.client.getUserId()))) === null || _this$participants$ge2 === void 0 ? void 0 : _this$participants$ge2.has(this.client.getDeviceId())) !== null && _this$participants$ge !== void 0 ? _this$participants$ge : false;
517
+ }
518
+
519
+ /**
520
+ * Determines whether the given call is one that we were expecting to exist
521
+ * given our knowledge of who is participating in the group call.
522
+ */
523
+ callExpected(call) {
524
+ var _this$participants$ge3;
525
+ var userId = getCallUserId(call);
526
+ var member = userId === null ? null : this.room.getMember(userId);
527
+ var deviceId = call.getOpponentDeviceId();
528
+ return member !== null && deviceId !== undefined && ((_this$participants$ge3 = this.participants.get(member)) === null || _this$participants$ge3 === void 0 ? void 0 : _this$participants$ge3.get(deviceId)) !== undefined;
529
+ }
530
+ initLocalCallFeed() {
531
+ var _this3 = this;
532
+ return _asyncToGenerator(function* () {
533
+ if (_this3.useLivekit) {
534
+ logger.info("Livekit group call: not starting local call feed.");
535
+ return;
536
+ }
537
+ if (_this3.state !== GroupCallState.LocalCallFeedUninitialized) {
538
+ throw new Error("Cannot initialize local call feed in the \"".concat(_this3.state, "\" state."));
539
+ }
540
+ _this3.state = GroupCallState.InitializingLocalCallFeed;
541
+
542
+ // wraps the real method to serialise calls, because we don't want to try starting
543
+ // multiple call feeds at once
544
+ if (_this3.initCallFeedPromise) return _this3.initCallFeedPromise;
545
+ try {
546
+ _this3.initCallFeedPromise = _this3.initLocalCallFeedInternal();
547
+ yield _this3.initCallFeedPromise;
548
+ } finally {
549
+ _this3.initCallFeedPromise = undefined;
550
+ }
551
+ })();
552
+ }
553
+ initLocalCallFeedInternal() {
554
+ var _this4 = this;
555
+ return _asyncToGenerator(function* () {
556
+ logger.log("GroupCall ".concat(_this4.groupCallId, " initLocalCallFeedInternal() running"));
557
+ var stream;
558
+ try {
559
+ stream = yield _this4.client.getMediaHandler().getUserMediaStream(true, _this4.type === GroupCallType.Video);
560
+ } catch (error) {
561
+ // If is allowed to join a call without a media stream, then we
562
+ // don't throw an error here. But we need an empty Local Feed to establish
563
+ // a connection later.
564
+ if (_this4.allowCallWithoutVideoAndAudio) {
565
+ stream = new MediaStream();
566
+ } else {
567
+ _this4.state = GroupCallState.LocalCallFeedUninitialized;
568
+ throw error;
569
+ }
570
+ }
571
+
572
+ // The call could've been disposed while we were waiting, and could
573
+ // also have been started back up again (hello, React 18) so if we're
574
+ // still in this 'initializing' state, carry on, otherwise bail.
575
+ if (_this4._state !== GroupCallState.InitializingLocalCallFeed) {
576
+ _this4.client.getMediaHandler().stopUserMediaStream(stream);
577
+ throw new Error("Group call disposed while gathering media stream");
578
+ }
579
+ var callFeed = new CallFeed({
580
+ client: _this4.client,
581
+ roomId: _this4.room.roomId,
582
+ userId: _this4.client.getUserId(),
583
+ deviceId: _this4.client.getDeviceId(),
584
+ stream,
585
+ purpose: SDPStreamMetadataPurpose.Usermedia,
586
+ audioMuted: _this4.initWithAudioMuted || stream.getAudioTracks().length === 0 || _this4.isPtt,
587
+ videoMuted: _this4.initWithVideoMuted || stream.getVideoTracks().length === 0
588
+ });
589
+ setTracksEnabled(stream.getAudioTracks(), !callFeed.isAudioMuted());
590
+ setTracksEnabled(stream.getVideoTracks(), !callFeed.isVideoMuted());
591
+ _this4.localCallFeed = callFeed;
592
+ _this4.addUserMediaFeed(callFeed);
593
+ _this4.state = GroupCallState.LocalCallFeedInitialized;
594
+ })();
595
+ }
596
+ updateLocalUsermediaStream(stream) {
597
+ var _this5 = this;
598
+ return _asyncToGenerator(function* () {
599
+ if (_this5.localCallFeed) {
600
+ var oldStream = _this5.localCallFeed.stream;
601
+ _this5.localCallFeed.setNewStream(stream);
602
+ var micShouldBeMuted = _this5.localCallFeed.isAudioMuted();
603
+ var vidShouldBeMuted = _this5.localCallFeed.isVideoMuted();
604
+ logger.log("GroupCall ".concat(_this5.groupCallId, " updateLocalUsermediaStream() (oldStreamId=").concat(oldStream.id, ", newStreamId=").concat(stream.id, ", micShouldBeMuted=").concat(micShouldBeMuted, ", vidShouldBeMuted=").concat(vidShouldBeMuted, ")"));
605
+ setTracksEnabled(stream.getAudioTracks(), !micShouldBeMuted);
606
+ setTracksEnabled(stream.getVideoTracks(), !vidShouldBeMuted);
607
+ _this5.client.getMediaHandler().stopUserMediaStream(oldStream);
608
+ }
609
+ })();
610
+ }
611
+ enter() {
612
+ var _this6 = this;
613
+ return _asyncToGenerator(function* () {
614
+ if (_this6.state === GroupCallState.LocalCallFeedUninitialized) {
615
+ yield _this6.initLocalCallFeed();
616
+ } else if (_this6.state !== GroupCallState.LocalCallFeedInitialized) {
617
+ throw new Error("Cannot enter call in the \"".concat(_this6.state, "\" state"));
618
+ }
619
+ logger.log("GroupCall ".concat(_this6.groupCallId, " enter() running"));
620
+ _this6.state = GroupCallState.Entered;
621
+ _this6.client.on(CallEventHandlerEvent.Incoming, _this6.onIncomingCall);
622
+ for (var call of _this6.client.callEventHandler.calls.values()) {
623
+ _this6.onIncomingCall(call);
624
+ }
625
+ if (!_this6.useLivekit) {
626
+ _this6.retryCallLoopInterval = setInterval(_this6.onRetryCallLoop, _this6.retryCallInterval);
627
+ _this6.activeSpeaker = undefined;
628
+ _this6.onActiveSpeakerLoop();
629
+ _this6.activeSpeakerLoopInterval = setInterval(_this6.onActiveSpeakerLoop, _this6.activeSpeakerInterval);
630
+ }
631
+ })();
632
+ }
633
+ dispose() {
634
+ var _this$stats;
635
+ if (this.localCallFeed) {
636
+ this.removeUserMediaFeed(this.localCallFeed);
637
+ this.localCallFeed = undefined;
638
+ }
639
+ if (this.localScreenshareFeed) {
640
+ this.client.getMediaHandler().stopScreensharingStream(this.localScreenshareFeed.stream);
641
+ this.removeScreenshareFeed(this.localScreenshareFeed);
642
+ this.localScreenshareFeed = undefined;
643
+ this.localDesktopCapturerSourceId = undefined;
644
+ }
645
+ this.client.getMediaHandler().stopAllStreams();
646
+ if (this.transmitTimer !== null) {
647
+ clearTimeout(this.transmitTimer);
648
+ this.transmitTimer = null;
649
+ }
650
+ if (this.retryCallLoopInterval !== undefined) {
651
+ clearInterval(this.retryCallLoopInterval);
652
+ this.retryCallLoopInterval = undefined;
653
+ }
654
+ if (this.participantsExpirationTimer !== null) {
655
+ clearTimeout(this.participantsExpirationTimer);
656
+ this.participantsExpirationTimer = null;
657
+ }
658
+ if (this.state !== GroupCallState.Entered) {
659
+ return;
660
+ }
661
+ this.forEachCall(call => call.hangup(CallErrorCode.UserHangup, false));
662
+ this.activeSpeaker = undefined;
663
+ clearInterval(this.activeSpeakerLoopInterval);
664
+ this.retryCallCounts.clear();
665
+ clearInterval(this.retryCallLoopInterval);
666
+ this.client.removeListener(CallEventHandlerEvent.Incoming, this.onIncomingCall);
667
+ (_this$stats = this.stats) === null || _this$stats === void 0 || _this$stats.stop();
668
+ }
669
+ leave() {
670
+ this.dispose();
671
+ this.state = GroupCallState.LocalCallFeedUninitialized;
672
+ }
673
+ terminate() {
674
+ var _arguments = arguments,
675
+ _this7 = this;
676
+ return _asyncToGenerator(function* () {
677
+ var emitStateEvent = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : true;
678
+ _this7.dispose();
679
+ _this7.room.off(RoomStateEvent.Update, _this7.onRoomState);
680
+ _this7.client.groupCallEventHandler.groupCalls.delete(_this7.room.roomId);
681
+ _this7.client.emit(GroupCallEventHandlerEvent.Ended, _this7);
682
+ _this7.state = GroupCallState.Ended;
683
+ if (emitStateEvent) {
684
+ var existingStateEvent = _this7.room.currentState.getStateEvents(EventType.GroupCallPrefix, _this7.groupCallId);
685
+ yield _this7.client.sendStateEvent(_this7.room.roomId, EventType.GroupCallPrefix, _objectSpread(_objectSpread({}, existingStateEvent.getContent()), {}, {
686
+ "m.terminated": GroupCallTerminationReason.CallEnded
687
+ }), _this7.groupCallId);
688
+ }
689
+ })();
690
+ }
691
+
692
+ /*
693
+ * Local Usermedia
694
+ */
695
+
696
+ isLocalVideoMuted() {
697
+ if (this.localCallFeed) {
698
+ return this.localCallFeed.isVideoMuted();
699
+ }
700
+ return true;
701
+ }
702
+ isMicrophoneMuted() {
703
+ if (this.localCallFeed) {
704
+ return this.localCallFeed.isAudioMuted();
705
+ }
706
+ return true;
707
+ }
708
+
709
+ /**
710
+ * Sets the mute state of the local participants's microphone.
711
+ * @param muted - Whether to mute the microphone
712
+ * @returns Whether muting/unmuting was successful
713
+ */
714
+ setMicrophoneMuted(muted) {
715
+ var _this8 = this;
716
+ return _asyncToGenerator(function* () {
717
+ // hasAudioDevice can block indefinitely if the window has lost focus,
718
+ // and it doesn't make much sense to keep a device from being muted, so
719
+ // we always allow muted = true changes to go through
720
+ if (!muted && !(yield _this8.client.getMediaHandler().hasAudioDevice())) {
721
+ return false;
722
+ }
723
+ var sendUpdatesBefore = !muted && _this8.isPtt;
724
+
725
+ // set a timer for the maximum transmit time on PTT calls
726
+ if (_this8.isPtt) {
727
+ // Set or clear the max transmit timer
728
+ if (!muted && _this8.isMicrophoneMuted()) {
729
+ _this8.transmitTimer = setTimeout(() => {
730
+ _this8.setMicrophoneMuted(true);
731
+ }, _this8.pttMaxTransmitTime);
732
+ } else if (muted && !_this8.isMicrophoneMuted()) {
733
+ if (_this8.transmitTimer !== null) clearTimeout(_this8.transmitTimer);
734
+ _this8.transmitTimer = null;
735
+ }
736
+ }
737
+ _this8.forEachCall(call => {
738
+ var _call$localUsermediaF;
739
+ return (_call$localUsermediaF = call.localUsermediaFeed) === null || _call$localUsermediaF === void 0 ? void 0 : _call$localUsermediaF.setAudioVideoMuted(muted, null);
740
+ });
741
+ var sendUpdates = /*#__PURE__*/function () {
742
+ var _ref = _asyncToGenerator(function* () {
743
+ var updates = [];
744
+ _this8.forEachCall(call => updates.push(call.sendMetadataUpdate()));
745
+ yield Promise.all(updates).catch(e => logger.info("GroupCall ".concat(_this8.groupCallId, " setMicrophoneMuted() failed to send some metadata updates"), e));
746
+ });
747
+ return function sendUpdates() {
748
+ return _ref.apply(this, arguments);
749
+ };
750
+ }();
751
+ if (sendUpdatesBefore) yield sendUpdates();
752
+ if (_this8.localCallFeed) {
753
+ logger.log("GroupCall ".concat(_this8.groupCallId, " setMicrophoneMuted() (streamId=").concat(_this8.localCallFeed.stream.id, ", muted=").concat(muted, ")"));
754
+ var hasPermission = yield _this8.checkAudioPermissionIfNecessary(muted);
755
+ if (!hasPermission) {
756
+ return false;
757
+ }
758
+ _this8.localCallFeed.setAudioVideoMuted(muted, null);
759
+ // I don't believe its actually necessary to enable these tracks: they
760
+ // are the one on the GroupCall's own CallFeed and are cloned before being
761
+ // given to any of the actual calls, so these tracks don't actually go
762
+ // anywhere. Let's do it anyway to avoid confusion.
763
+ setTracksEnabled(_this8.localCallFeed.stream.getAudioTracks(), !muted);
764
+ } else {
765
+ logger.log("GroupCall ".concat(_this8.groupCallId, " setMicrophoneMuted() no stream muted (muted=").concat(muted, ")"));
766
+ _this8.initWithAudioMuted = muted;
767
+ }
768
+ _this8.forEachCall(call => setTracksEnabled(call.localUsermediaFeed.stream.getAudioTracks(), !muted && _this8.callExpected(call)));
769
+ _this8.emit(GroupCallEvent.LocalMuteStateChanged, muted, _this8.isLocalVideoMuted());
770
+ if (!sendUpdatesBefore) yield sendUpdates();
771
+ return true;
772
+ })();
773
+ }
774
+
775
+ /**
776
+ * If we allow entering a call without a camera and without video, it can happen that the access rights to the
777
+ * devices have not yet been queried. If a stream does not yet have an audio track, we assume that the rights have
778
+ * not yet been checked.
779
+ *
780
+ * `this.client.getMediaHandler().getUserMediaStream` clones the current stream, so it only wanted to be called when
781
+ * not Audio Track exists.
782
+ * As such, this is a compromise, because, the access rights should always be queried before the call.
783
+ */
784
+ checkAudioPermissionIfNecessary(muted) {
785
+ var _this9 = this;
786
+ return _asyncToGenerator(function* () {
787
+ // We needed this here to avoid an error in case user join a call without a device.
788
+ try {
789
+ if (!muted && _this9.localCallFeed && !_this9.localCallFeed.hasAudioTrack) {
790
+ var stream = yield _this9.client.getMediaHandler().getUserMediaStream(true, !_this9.localCallFeed.isVideoMuted());
791
+ if ((stream === null || stream === void 0 ? void 0 : stream.getTracks().length) === 0) {
792
+ // if case permission denied to get a stream stop this here
793
+ /* istanbul ignore next */
794
+ logger.log("GroupCall ".concat(_this9.groupCallId, " setMicrophoneMuted() no device to receive local stream, muted=").concat(muted));
795
+ return false;
796
+ }
797
+ }
798
+ } catch (_unused) {
799
+ /* istanbul ignore next */
800
+ logger.log("GroupCall ".concat(_this9.groupCallId, " setMicrophoneMuted() no device or permission to receive local stream, muted=").concat(muted));
801
+ return false;
802
+ }
803
+ return true;
804
+ })();
805
+ }
806
+
807
+ /**
808
+ * Sets the mute state of the local participants's video.
809
+ * @param muted - Whether to mute the video
810
+ * @returns Whether muting/unmuting was successful
811
+ */
812
+ setLocalVideoMuted(muted) {
813
+ var _this0 = this;
814
+ return _asyncToGenerator(function* () {
815
+ // hasAudioDevice can block indefinitely if the window has lost focus,
816
+ // and it doesn't make much sense to keep a device from being muted, so
817
+ // we always allow muted = true changes to go through
818
+ if (!muted && !(yield _this0.client.getMediaHandler().hasVideoDevice())) {
819
+ return false;
820
+ }
821
+ if (_this0.localCallFeed) {
822
+ /* istanbul ignore next */
823
+ logger.log("GroupCall ".concat(_this0.groupCallId, " setLocalVideoMuted() (stream=").concat(_this0.localCallFeed.stream.id, ", muted=").concat(muted, ")"));
824
+ try {
825
+ var stream = yield _this0.client.getMediaHandler().getUserMediaStream(true, !muted);
826
+ yield _this0.updateLocalUsermediaStream(stream);
827
+ _this0.localCallFeed.setAudioVideoMuted(null, muted);
828
+ setTracksEnabled(_this0.localCallFeed.stream.getVideoTracks(), !muted);
829
+ } catch (_unused2) {
830
+ // No permission to video device
831
+ /* istanbul ignore next */
832
+ logger.log("GroupCall ".concat(_this0.groupCallId, " setLocalVideoMuted() no device or permission to receive local stream, muted=").concat(muted));
833
+ return false;
834
+ }
835
+ } else {
836
+ logger.log("GroupCall ".concat(_this0.groupCallId, " setLocalVideoMuted() no stream muted (muted=").concat(muted, ")"));
837
+ _this0.initWithVideoMuted = muted;
838
+ }
839
+ var updates = [];
840
+ _this0.forEachCall(call => updates.push(call.setLocalVideoMuted(muted)));
841
+ yield Promise.all(updates);
842
+
843
+ // We setTracksEnabled again, independently from the call doing it
844
+ // internally, since we might not be expecting the call
845
+ _this0.forEachCall(call => setTracksEnabled(call.localUsermediaFeed.stream.getVideoTracks(), !muted && _this0.callExpected(call)));
846
+ _this0.emit(GroupCallEvent.LocalMuteStateChanged, _this0.isMicrophoneMuted(), muted);
847
+ return true;
848
+ })();
849
+ }
850
+ setScreensharingEnabled(enabled) {
851
+ var _arguments2 = arguments,
852
+ _this1 = this;
853
+ return _asyncToGenerator(function* () {
854
+ var opts = _arguments2.length > 1 && _arguments2[1] !== undefined ? _arguments2[1] : {};
855
+ if (enabled === _this1.isScreensharing()) {
856
+ return enabled;
857
+ }
858
+ if (enabled) {
859
+ try {
860
+ logger.log("GroupCall ".concat(_this1.groupCallId, " setScreensharingEnabled() is asking for screensharing permissions"));
861
+ var stream = yield _this1.client.getMediaHandler().getScreensharingStream(opts);
862
+ var _loop = function* _loop(track) {
863
+ var onTrackEnded = () => {
864
+ _this1.setScreensharingEnabled(false);
865
+ track.removeEventListener("ended", onTrackEnded);
866
+ };
867
+ track.addEventListener("ended", onTrackEnded);
868
+ };
869
+ for (var track of stream.getTracks()) {
870
+ yield* _loop(track);
871
+ }
872
+ logger.log("GroupCall ".concat(_this1.groupCallId, " setScreensharingEnabled() granted screensharing permissions. Setting screensharing enabled on all calls"));
873
+ _this1.localDesktopCapturerSourceId = opts.desktopCapturerSourceId;
874
+ _this1.localScreenshareFeed = new CallFeed({
875
+ client: _this1.client,
876
+ roomId: _this1.room.roomId,
877
+ userId: _this1.client.getUserId(),
878
+ deviceId: _this1.client.getDeviceId(),
879
+ stream,
880
+ purpose: SDPStreamMetadataPurpose.Screenshare,
881
+ audioMuted: false,
882
+ videoMuted: false
883
+ });
884
+ _this1.addScreenshareFeed(_this1.localScreenshareFeed);
885
+ _this1.emit(GroupCallEvent.LocalScreenshareStateChanged, true, _this1.localScreenshareFeed, _this1.localDesktopCapturerSourceId);
886
+
887
+ // TODO: handle errors
888
+ _this1.forEachCall(call => call.pushLocalFeed(_this1.localScreenshareFeed.clone()));
889
+ return true;
890
+ } catch (error) {
891
+ if (opts.throwOnFail) throw error;
892
+ logger.error("GroupCall ".concat(_this1.groupCallId, " setScreensharingEnabled() enabling screensharing error"), error);
893
+ _this1.emit(GroupCallEvent.Error, new GroupCallError(GroupCallErrorCode.NoUserMedia, "Failed to get screen-sharing stream: ", error));
894
+ return false;
895
+ }
896
+ } else {
897
+ _this1.forEachCall(call => {
898
+ if (call.localScreensharingFeed) call.removeLocalFeed(call.localScreensharingFeed);
899
+ });
900
+ _this1.client.getMediaHandler().stopScreensharingStream(_this1.localScreenshareFeed.stream);
901
+ _this1.removeScreenshareFeed(_this1.localScreenshareFeed);
902
+ _this1.localScreenshareFeed = undefined;
903
+ _this1.localDesktopCapturerSourceId = undefined;
904
+ _this1.emit(GroupCallEvent.LocalScreenshareStateChanged, false, undefined, undefined);
905
+ return false;
906
+ }
907
+ })();
908
+ }
909
+ isScreensharing() {
910
+ return !!this.localScreenshareFeed;
911
+ }
912
+ /**
913
+ * Determines whether a given participant expects us to call them (versus
914
+ * them calling us).
915
+ * @param userId - The participant's user ID.
916
+ * @param deviceId - The participant's device ID.
917
+ * @returns Whether we need to place an outgoing call to the participant.
918
+ */
919
+ wantsOutgoingCall(userId, deviceId) {
920
+ var localUserId = this.client.getUserId();
921
+ var localDeviceId = this.client.getDeviceId();
922
+ return (
923
+ // If a user's ID is less than our own, they'll call us
924
+ userId >= localUserId && (
925
+ // If this is another one of our devices, compare device IDs to tell whether it'll call us
926
+ userId !== localUserId || deviceId > localDeviceId)
927
+ );
928
+ }
929
+
930
+ /**
931
+ * Places calls to all participants that we're responsible for calling.
932
+ */
933
+ placeOutgoingCalls() {
934
+ var _this10 = this;
935
+ var callsChanged = false;
936
+ var _loop2 = function _loop2(_userId2) {
937
+ var _this10$calls$get;
938
+ var callMap = (_this10$calls$get = _this10.calls.get(_userId2)) !== null && _this10$calls$get !== void 0 ? _this10$calls$get : new Map();
939
+ var _loop3 = function _loop3(deviceId) {
940
+ var prevCall = callMap.get(deviceId);
941
+ if ((prevCall === null || prevCall === void 0 ? void 0 : prevCall.getOpponentSessionId()) !== participant.sessionId && _this10.wantsOutgoingCall(_userId2, deviceId)) {
942
+ callsChanged = true;
943
+ if (prevCall !== undefined) {
944
+ logger.debug("GroupCall ".concat(_this10.groupCallId, " placeOutgoingCalls() replacing call (userId=").concat(_userId2, ", deviceId=").concat(deviceId, ", callId=").concat(prevCall.callId, ")"));
945
+ prevCall.hangup(CallErrorCode.NewSession, false);
946
+ }
947
+ var newCall = createNewBriijCall(_this10.client, _this10.room.roomId, {
948
+ invitee: _userId2,
949
+ opponentDeviceId: deviceId,
950
+ opponentSessionId: participant.sessionId,
951
+ groupCallId: _this10.groupCallId
952
+ });
953
+ if (newCall === null) {
954
+ logger.error("GroupCall ".concat(_this10.groupCallId, " placeOutgoingCalls() failed to create call (userId=").concat(_userId2, ", device=").concat(deviceId, ")"));
955
+ callMap.delete(deviceId);
956
+ } else {
957
+ _this10.initCall(newCall);
958
+ callMap.set(deviceId, newCall);
959
+ logger.debug("GroupCall ".concat(_this10.groupCallId, " placeOutgoingCalls() placing call (userId=").concat(_userId2, ", deviceId=").concat(deviceId, ", sessionId=").concat(participant.sessionId, ")"));
960
+ newCall.placeCallWithCallFeeds(_this10.getLocalFeeds().map(feed => feed.clone()), participant.screensharing).then(() => {
961
+ if (_this10.dataChannelsEnabled) {
962
+ newCall.createDataChannel("datachannel", _this10.dataChannelOptions);
963
+ }
964
+ }).catch(e => {
965
+ logger.warn("GroupCall ".concat(_this10.groupCallId, " placeOutgoingCalls() failed to place call (userId=").concat(_userId2, ")"), e);
966
+ if (e instanceof CallError && e.code === GroupCallErrorCode.UnknownDevice) {
967
+ _this10.emit(GroupCallEvent.Error, e);
968
+ } else {
969
+ _this10.emit(GroupCallEvent.Error, new GroupCallError(GroupCallErrorCode.PlaceCallFailed, "Failed to place call to ".concat(_userId2)));
970
+ }
971
+ newCall.hangup(CallErrorCode.SignallingFailed, false);
972
+ if (callMap.get(deviceId) === newCall) callMap.delete(deviceId);
973
+ });
974
+ }
975
+ }
976
+ };
977
+ for (var [deviceId, participant] of participantMap) {
978
+ _loop3(deviceId);
979
+ }
980
+ if (callMap.size > 0) {
981
+ _this10.calls.set(_userId2, callMap);
982
+ } else {
983
+ _this10.calls.delete(_userId2);
984
+ }
985
+ };
986
+ for (var [{
987
+ userId: _userId2
988
+ }, participantMap] of this.participants) {
989
+ _loop2(_userId2);
990
+ }
991
+ if (callsChanged) this.emit(GroupCallEvent.CallsChanged, this.calls);
992
+ }
993
+
994
+ /*
995
+ * Room Member State
996
+ */
997
+
998
+ getMemberStateEvents(userId) {
999
+ return userId === undefined ? this.room.currentState.getStateEvents(EventType.GroupCallMemberPrefix) : this.room.currentState.getStateEvents(EventType.GroupCallMemberPrefix, userId);
1000
+ }
1001
+ initCall(call) {
1002
+ var opponentMemberId = getCallUserId(call);
1003
+ if (!opponentMemberId) {
1004
+ throw new Error("Cannot init call without user id");
1005
+ }
1006
+ var onCallFeedsChanged = () => this.onCallFeedsChanged(call);
1007
+ var onCallStateChanged = (state, oldState) => this.onCallStateChanged(call, state, oldState);
1008
+ var onCallHangup = this.onCallHangup;
1009
+ var onCallReplaced = newCall => this.onCallReplaced(call, newCall);
1010
+ var deviceMap = this.callHandlers.get(opponentMemberId);
1011
+ if (deviceMap === undefined) {
1012
+ deviceMap = new Map();
1013
+ this.callHandlers.set(opponentMemberId, deviceMap);
1014
+ }
1015
+ deviceMap.set(call.getOpponentDeviceId(), {
1016
+ onCallFeedsChanged,
1017
+ onCallStateChanged,
1018
+ onCallHangup,
1019
+ onCallReplaced
1020
+ });
1021
+ call.on(CallEvent.FeedsChanged, onCallFeedsChanged);
1022
+ call.on(CallEvent.State, onCallStateChanged);
1023
+ call.on(CallEvent.Hangup, onCallHangup);
1024
+ call.on(CallEvent.Replaced, onCallReplaced);
1025
+ call.isPtt = this.isPtt;
1026
+ this.reEmitter.reEmit(call, Object.values(CallEvent));
1027
+ call.initStats(this.getGroupCallStats());
1028
+ onCallFeedsChanged();
1029
+ }
1030
+ disposeCall(call, hangupReason) {
1031
+ var opponentMemberId = getCallUserId(call);
1032
+ var opponentDeviceId = call.getOpponentDeviceId();
1033
+ if (!opponentMemberId) {
1034
+ throw new Error("Cannot dispose call without user id");
1035
+ }
1036
+ var deviceMap = this.callHandlers.get(opponentMemberId);
1037
+ var {
1038
+ onCallFeedsChanged,
1039
+ onCallStateChanged,
1040
+ onCallHangup,
1041
+ onCallReplaced
1042
+ } = deviceMap.get(opponentDeviceId);
1043
+ call.removeListener(CallEvent.FeedsChanged, onCallFeedsChanged);
1044
+ call.removeListener(CallEvent.State, onCallStateChanged);
1045
+ call.removeListener(CallEvent.Hangup, onCallHangup);
1046
+ call.removeListener(CallEvent.Replaced, onCallReplaced);
1047
+ deviceMap.delete(opponentMemberId);
1048
+ if (deviceMap.size === 0) this.callHandlers.delete(opponentMemberId);
1049
+ if (call.hangupReason === CallErrorCode.Replaced) {
1050
+ return;
1051
+ }
1052
+ var usermediaFeed = this.getUserMediaFeed(opponentMemberId, opponentDeviceId);
1053
+ if (usermediaFeed) {
1054
+ this.removeUserMediaFeed(usermediaFeed);
1055
+ }
1056
+ var screenshareFeed = this.getScreenshareFeed(opponentMemberId, opponentDeviceId);
1057
+ if (screenshareFeed) {
1058
+ this.removeScreenshareFeed(screenshareFeed);
1059
+ }
1060
+ }
1061
+ /*
1062
+ * UserMedia CallFeed Event Handlers
1063
+ */
1064
+
1065
+ getUserMediaFeed(userId, deviceId) {
1066
+ return this.userMediaFeeds.find(f => f.userId === userId && f.deviceId === deviceId);
1067
+ }
1068
+ addUserMediaFeed(callFeed) {
1069
+ this.userMediaFeeds.push(callFeed);
1070
+ callFeed.measureVolumeActivity(true);
1071
+ this.emit(GroupCallEvent.UserMediaFeedsChanged, this.userMediaFeeds);
1072
+ }
1073
+ replaceUserMediaFeed(existingFeed, replacementFeed) {
1074
+ var feedIndex = this.userMediaFeeds.findIndex(f => f.userId === existingFeed.userId && f.deviceId === existingFeed.deviceId);
1075
+ if (feedIndex === -1) {
1076
+ throw new Error("Couldn't find user media feed to replace");
1077
+ }
1078
+ this.userMediaFeeds.splice(feedIndex, 1, replacementFeed);
1079
+ existingFeed.dispose();
1080
+ replacementFeed.measureVolumeActivity(true);
1081
+ this.emit(GroupCallEvent.UserMediaFeedsChanged, this.userMediaFeeds);
1082
+ }
1083
+ removeUserMediaFeed(callFeed) {
1084
+ var feedIndex = this.userMediaFeeds.findIndex(f => f.userId === callFeed.userId && f.deviceId === callFeed.deviceId);
1085
+ if (feedIndex === -1) {
1086
+ throw new Error("Couldn't find user media feed to remove");
1087
+ }
1088
+ this.userMediaFeeds.splice(feedIndex, 1);
1089
+ callFeed.dispose();
1090
+ this.emit(GroupCallEvent.UserMediaFeedsChanged, this.userMediaFeeds);
1091
+ if (this.activeSpeaker === callFeed) {
1092
+ this.activeSpeaker = this.userMediaFeeds[0];
1093
+ this.emit(GroupCallEvent.ActiveSpeakerChanged, this.activeSpeaker);
1094
+ }
1095
+ }
1096
+ /*
1097
+ * Screenshare Call Feed Event Handlers
1098
+ */
1099
+
1100
+ getScreenshareFeed(userId, deviceId) {
1101
+ return this.screenshareFeeds.find(f => f.userId === userId && f.deviceId === deviceId);
1102
+ }
1103
+ addScreenshareFeed(callFeed) {
1104
+ this.screenshareFeeds.push(callFeed);
1105
+ this.emit(GroupCallEvent.ScreenshareFeedsChanged, this.screenshareFeeds);
1106
+ }
1107
+ replaceScreenshareFeed(existingFeed, replacementFeed) {
1108
+ var feedIndex = this.screenshareFeeds.findIndex(f => f.userId === existingFeed.userId && f.deviceId === existingFeed.deviceId);
1109
+ if (feedIndex === -1) {
1110
+ throw new Error("Couldn't find screenshare feed to replace");
1111
+ }
1112
+ this.screenshareFeeds.splice(feedIndex, 1, replacementFeed);
1113
+ existingFeed.dispose();
1114
+ this.emit(GroupCallEvent.ScreenshareFeedsChanged, this.screenshareFeeds);
1115
+ }
1116
+ removeScreenshareFeed(callFeed) {
1117
+ var feedIndex = this.screenshareFeeds.findIndex(f => f.userId === callFeed.userId && f.deviceId === callFeed.deviceId);
1118
+ if (feedIndex === -1) {
1119
+ throw new Error("Couldn't find screenshare feed to remove");
1120
+ }
1121
+ this.screenshareFeeds.splice(feedIndex, 1);
1122
+ callFeed.dispose();
1123
+ this.emit(GroupCallEvent.ScreenshareFeedsChanged, this.screenshareFeeds);
1124
+ }
1125
+
1126
+ /**
1127
+ * Recalculates and updates the participant map to match the room state.
1128
+ */
1129
+ updateParticipants() {
1130
+ var localMember = this.room.getMember(this.client.getSafeUserId());
1131
+ if (!localMember) {
1132
+ // The client hasn't fetched enough of the room state to get our own member
1133
+ // event. This probably shouldn't happen, but sanity check & exit for now.
1134
+ logger.warn("GroupCall ".concat(this.groupCallId, " updateParticipants() tried to update participants before local room member is available"));
1135
+ return;
1136
+ }
1137
+ if (this.participantsExpirationTimer !== null) {
1138
+ clearTimeout(this.participantsExpirationTimer);
1139
+ this.participantsExpirationTimer = null;
1140
+ }
1141
+ if (this.state === GroupCallState.Ended) {
1142
+ this.participants = new Map();
1143
+ return;
1144
+ }
1145
+ var participants = new Map();
1146
+ var now = Date.now();
1147
+ var entered = this.state === GroupCallState.Entered || this.enteredViaAnotherSession;
1148
+ var nextExpiration = Infinity;
1149
+ for (var e of this.getMemberStateEvents()) {
1150
+ var member = this.room.getMember(e.getStateKey());
1151
+ var content = e.getContent();
1152
+ var calls = Array.isArray(content["m.calls"]) ? content["m.calls"] : [];
1153
+ var call = calls.find(call => call["m.call_id"] === this.groupCallId);
1154
+ var devices = Array.isArray(call === null || call === void 0 ? void 0 : call["m.devices"]) ? call["m.devices"] : [];
1155
+
1156
+ // Filter out invalid and expired devices
1157
+ var validDevices = devices.filter(d => typeof d.device_id === "string" && typeof d.session_id === "string" && typeof d.expires_ts === "number" && d.expires_ts > now && Array.isArray(d.feeds));
1158
+
1159
+ // Apply local echo for the unentered case
1160
+ if (!entered && (member === null || member === void 0 ? void 0 : member.userId) === this.client.getUserId()) {
1161
+ validDevices = validDevices.filter(d => d.device_id !== this.client.getDeviceId());
1162
+ }
1163
+
1164
+ // Must have a connected device and be joined to the room
1165
+ if (validDevices.length > 0 && (member === null || member === void 0 ? void 0 : member.membership) === KnownMembership.Join) {
1166
+ var deviceMap = new Map();
1167
+ participants.set(member, deviceMap);
1168
+ for (var d of validDevices) {
1169
+ deviceMap.set(d.device_id, {
1170
+ sessionId: d.session_id,
1171
+ screensharing: d.feeds.some(f => f.purpose === SDPStreamMetadataPurpose.Screenshare)
1172
+ });
1173
+ if (d.expires_ts < nextExpiration) nextExpiration = d.expires_ts;
1174
+ }
1175
+ }
1176
+ }
1177
+
1178
+ // Apply local echo for the entered case
1179
+ if (entered) {
1180
+ var _deviceMap = participants.get(localMember);
1181
+ if (_deviceMap === undefined) {
1182
+ _deviceMap = new Map();
1183
+ participants.set(localMember, _deviceMap);
1184
+ }
1185
+ if (!_deviceMap.has(this.client.getDeviceId())) {
1186
+ _deviceMap.set(this.client.getDeviceId(), {
1187
+ sessionId: this.client.getSessionId(),
1188
+ screensharing: this.getLocalFeeds().some(f => f.purpose === SDPStreamMetadataPurpose.Screenshare)
1189
+ });
1190
+ }
1191
+ }
1192
+ this.participants = participants;
1193
+ if (nextExpiration < Infinity) {
1194
+ this.participantsExpirationTimer = setTimeout(() => this.updateParticipants(), nextExpiration - now);
1195
+ }
1196
+ }
1197
+
1198
+ /**
1199
+ * Updates the local user's member state with the devices returned by the given function.
1200
+ * @param fn - A function from the current devices to the new devices. If it
1201
+ * returns null, the update will be skipped.
1202
+ * @param keepAlive - Whether the request should outlive the window.
1203
+ */
1204
+ updateDevices(fn) {
1205
+ var _arguments3 = arguments,
1206
+ _this11 = this;
1207
+ return _asyncToGenerator(function* () {
1208
+ var _event$getContent;
1209
+ var keepAlive = _arguments3.length > 1 && _arguments3[1] !== undefined ? _arguments3[1] : false;
1210
+ var now = Date.now();
1211
+ var localUserId = _this11.client.getUserId();
1212
+ var event = _this11.getMemberStateEvents(localUserId);
1213
+ var content = (_event$getContent = event === null || event === void 0 ? void 0 : event.getContent()) !== null && _event$getContent !== void 0 ? _event$getContent : {};
1214
+ var calls = Array.isArray(content["m.calls"]) ? content["m.calls"] : [];
1215
+ var call = null;
1216
+ var otherCalls = [];
1217
+ for (var c of calls) {
1218
+ if (c["m.call_id"] === _this11.groupCallId) {
1219
+ call = c;
1220
+ } else {
1221
+ otherCalls.push(c);
1222
+ }
1223
+ }
1224
+ if (call === null) call = {};
1225
+ var devices = Array.isArray(call["m.devices"]) ? call["m.devices"] : [];
1226
+
1227
+ // Filter out invalid and expired devices
1228
+ var validDevices = devices.filter(d => typeof d.device_id === "string" && typeof d.session_id === "string" && typeof d.expires_ts === "number" && d.expires_ts > now && Array.isArray(d.feeds));
1229
+ var newDevices = fn(validDevices);
1230
+ if (newDevices === null) return;
1231
+ var newCalls = [...otherCalls];
1232
+ if (newDevices.length > 0) {
1233
+ newCalls.push(_objectSpread(_objectSpread({}, call), {}, {
1234
+ "m.call_id": _this11.groupCallId,
1235
+ "m.devices": newDevices
1236
+ }));
1237
+ }
1238
+ var newContent = {
1239
+ "m.calls": newCalls
1240
+ };
1241
+ yield _this11.client.sendStateEvent(_this11.room.roomId, EventType.GroupCallMemberPrefix, newContent, localUserId, {
1242
+ keepAlive
1243
+ });
1244
+ })();
1245
+ }
1246
+ addDeviceToMemberState() {
1247
+ var _this12 = this;
1248
+ return _asyncToGenerator(function* () {
1249
+ yield _this12.updateDevices(devices => [...devices.filter(d => d.device_id !== _this12.client.getDeviceId()), {
1250
+ device_id: _this12.client.getDeviceId(),
1251
+ session_id: _this12.client.getSessionId(),
1252
+ expires_ts: Date.now() + DEVICE_TIMEOUT,
1253
+ feeds: _this12.getLocalFeeds().map(feed => ({
1254
+ purpose: feed.purpose
1255
+ }))
1256
+ // TODO: Add data channels
1257
+ }]);
1258
+ })();
1259
+ }
1260
+ updateMemberState() {
1261
+ var _this13 = this;
1262
+ return _asyncToGenerator(function* () {
1263
+ // Clear the old update interval before proceeding
1264
+ if (_this13.resendMemberStateTimer !== null) {
1265
+ clearInterval(_this13.resendMemberStateTimer);
1266
+ _this13.resendMemberStateTimer = null;
1267
+ }
1268
+ if (_this13.state === GroupCallState.Entered) {
1269
+ // Add the local device
1270
+ yield _this13.addDeviceToMemberState();
1271
+
1272
+ // Resend the state event every so often so it doesn't become stale
1273
+ _this13.resendMemberStateTimer = setInterval(/*#__PURE__*/_asyncToGenerator(function* () {
1274
+ logger.log("GroupCall ".concat(_this13.groupCallId, " updateMemberState() resending call member state\""));
1275
+ try {
1276
+ yield _this13.addDeviceToMemberState();
1277
+ } catch (e) {
1278
+ logger.error("GroupCall ".concat(_this13.groupCallId, " updateMemberState() failed to resend call member state"), e);
1279
+ }
1280
+ }), DEVICE_TIMEOUT * 3 / 4);
1281
+ } else {
1282
+ // Remove the local device
1283
+ yield _this13.updateDevices(devices => devices.filter(d => d.device_id !== _this13.client.getDeviceId()), true);
1284
+ }
1285
+ })();
1286
+ }
1287
+
1288
+ /**
1289
+ * Cleans up our member state by filtering out logged out devices, inactive
1290
+ * devices, and our own device (if we know we haven't entered).
1291
+ */
1292
+ cleanMemberState() {
1293
+ var _this14 = this;
1294
+ return _asyncToGenerator(function* () {
1295
+ var {
1296
+ devices: myDevices
1297
+ } = yield _this14.client.getDevices();
1298
+ var deviceMap = new Map(myDevices.map(d => [d.device_id, d]));
1299
+
1300
+ // updateDevices takes care of filtering out inactive devices for us
1301
+ yield _this14.updateDevices(devices => {
1302
+ var newDevices = devices.filter(d => {
1303
+ var device = deviceMap.get(d.device_id);
1304
+ return (device === null || device === void 0 ? void 0 : device.last_seen_ts) !== undefined && !(d.device_id === _this14.client.getDeviceId() && _this14.state !== GroupCallState.Entered && !_this14.enteredViaAnotherSession);
1305
+ });
1306
+
1307
+ // Skip the update if the devices are unchanged
1308
+ return newDevices.length === devices.length ? null : newDevices;
1309
+ });
1310
+ })();
1311
+ }
1312
+ getGroupCallStats() {
1313
+ if (this.stats === undefined) {
1314
+ var userID = this.client.getUserId() || "unknown";
1315
+ this.stats = new GroupCallStats(this.groupCallId, userID, this.statsCollectIntervalTime);
1316
+ this.stats.reports.on(StatsReport.CONNECTION_STATS, this.onConnectionStats);
1317
+ this.stats.reports.on(StatsReport.BYTE_SENT_STATS, this.onByteSentStats);
1318
+ this.stats.reports.on(StatsReport.SUMMARY_STATS, this.onSummaryStats);
1319
+ this.stats.reports.on(StatsReport.CALL_FEED_REPORT, this.onCallFeedReport);
1320
+ }
1321
+ return this.stats;
1322
+ }
1323
+ setGroupCallStatsInterval(interval) {
1324
+ this.statsCollectIntervalTime = interval;
1325
+ if (this.stats !== undefined) {
1326
+ this.stats.stop();
1327
+ this.stats.setInterval(interval);
1328
+ if (interval > 0) {
1329
+ this.stats.start();
1330
+ }
1331
+ }
1332
+ }
1333
+ }
1334
+ //# sourceMappingURL=groupCall.js.map