matrix-js-sdk 41.8.0 → 41.9.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 (458) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +1 -1
  3. package/lib/@types/AESEncryptedSecretStoragePayload.js +3 -1
  4. package/lib/@types/IIdentityServerProvider.js +3 -1
  5. package/lib/@types/PushRules.js +7 -7
  6. package/lib/@types/PushRules.js.map +1 -1
  7. package/lib/@types/auth.js +4 -4
  8. package/lib/@types/auth.js.map +1 -1
  9. package/lib/@types/beacon.js +2 -2
  10. package/lib/@types/beacon.js.map +1 -1
  11. package/lib/@types/common.js +3 -1
  12. package/lib/@types/crypto.js +3 -1
  13. package/lib/@types/event.js +20 -20
  14. package/lib/@types/event.js.map +1 -1
  15. package/lib/@types/events.js +3 -1
  16. package/lib/@types/extensible_events.js +6 -6
  17. package/lib/@types/extensible_events.js.map +1 -1
  18. package/lib/@types/global.d.js.map +1 -1
  19. package/lib/@types/json.js +3 -1
  20. package/lib/@types/local_notifications.js +3 -1
  21. package/lib/@types/location.js +4 -4
  22. package/lib/@types/location.js.map +1 -1
  23. package/lib/@types/matrix-sdk-crypto-wasm.d.js +3 -1
  24. package/lib/@types/media.js +3 -1
  25. package/lib/@types/membership.js +1 -1
  26. package/lib/@types/membership.js.map +1 -1
  27. package/lib/@types/partials.js +6 -6
  28. package/lib/@types/partials.js.map +1 -1
  29. package/lib/@types/polls.js +5 -5
  30. package/lib/@types/polls.js.map +1 -1
  31. package/lib/@types/read_receipts.js +2 -2
  32. package/lib/@types/read_receipts.js.map +1 -1
  33. package/lib/@types/registration.js +3 -1
  34. package/lib/@types/requests.js +1 -1
  35. package/lib/@types/requests.js.map +1 -1
  36. package/lib/@types/retention.js +1 -1
  37. package/lib/@types/retention.js.map +1 -1
  38. package/lib/@types/search.js +1 -1
  39. package/lib/@types/search.js.map +1 -1
  40. package/lib/@types/signed.js +3 -1
  41. package/lib/@types/spaces.js +3 -1
  42. package/lib/@types/state_events.js +3 -1
  43. package/lib/@types/synapse.js +3 -1
  44. package/lib/@types/sync.js +1 -1
  45. package/lib/@types/sync.js.map +1 -1
  46. package/lib/@types/threepids.js +1 -1
  47. package/lib/@types/threepids.js.map +1 -1
  48. package/lib/@types/topic.js +1 -1
  49. package/lib/@types/topic.js.map +1 -1
  50. package/lib/@types/uia.js +3 -1
  51. package/lib/NamespacedValue.js +8 -8
  52. package/lib/NamespacedValue.js.map +1 -1
  53. package/lib/ReEmitter.js +9 -16
  54. package/lib/ReEmitter.js.map +1 -1
  55. package/lib/ToDeviceMessageQueue.js +49 -57
  56. package/lib/ToDeviceMessageQueue.js.map +1 -1
  57. package/lib/autodiscovery.js +232 -247
  58. package/lib/autodiscovery.js.map +1 -1
  59. package/lib/base64.js +1 -1
  60. package/lib/base64.js.map +1 -1
  61. package/lib/browser-index.d.ts +2 -2
  62. package/lib/browser-index.d.ts.map +1 -1
  63. package/lib/browser-index.js +5 -5
  64. package/lib/browser-index.js.map +1 -1
  65. package/lib/capabilityPoller.js +19 -22
  66. package/lib/capabilityPoller.js.map +1 -1
  67. package/lib/client.d.ts +2 -8
  68. package/lib/client.d.ts.map +1 -1
  69. package/lib/client.js +2043 -2487
  70. package/lib/client.js.map +1 -1
  71. package/lib/common-crypto/CryptoBackend.js +2 -2
  72. package/lib/common-crypto/CryptoBackend.js.map +1 -1
  73. package/lib/common-crypto/key-passphrase.js.map +1 -1
  74. package/lib/content-helpers.js +43 -48
  75. package/lib/content-helpers.js.map +1 -1
  76. package/lib/content-repo.js +14 -24
  77. package/lib/content-repo.js.map +1 -1
  78. package/lib/crypto/store/base.js +6 -6
  79. package/lib/crypto/store/base.js.map +1 -1
  80. package/lib/crypto/store/indexeddb-crypto-store-backend.js +190 -238
  81. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  82. package/lib/crypto/store/indexeddb-crypto-store.js +25 -30
  83. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  84. package/lib/crypto/store/localStorage-crypto-store.js +113 -145
  85. package/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
  86. package/lib/crypto/store/memory-crypto-store.js +74 -105
  87. package/lib/crypto/store/memory-crypto-store.js.map +1 -1
  88. package/lib/crypto-api/CryptoEvent.js +1 -1
  89. package/lib/crypto-api/CryptoEvent.js.map +1 -1
  90. package/lib/crypto-api/CryptoEventHandlerMap.js +3 -1
  91. package/lib/crypto-api/index.d.ts +15 -6
  92. package/lib/crypto-api/index.d.ts.map +1 -1
  93. package/lib/crypto-api/index.js +22 -22
  94. package/lib/crypto-api/index.js.map +1 -1
  95. package/lib/crypto-api/key-passphrase.js +15 -23
  96. package/lib/crypto-api/key-passphrase.js.map +1 -1
  97. package/lib/crypto-api/keybackup.js +3 -1
  98. package/lib/crypto-api/recovery-key.js +11 -12
  99. package/lib/crypto-api/recovery-key.js.map +1 -1
  100. package/lib/crypto-api/verification.js +3 -3
  101. package/lib/crypto-api/verification.js.map +1 -1
  102. package/lib/digest.js +7 -14
  103. package/lib/digest.js.map +1 -1
  104. package/lib/embedded.d.ts.map +1 -1
  105. package/lib/embedded.js +380 -505
  106. package/lib/embedded.js.map +1 -1
  107. package/lib/errors.js +2 -2
  108. package/lib/errors.js.map +1 -1
  109. package/lib/event-mapper.js +10 -12
  110. package/lib/event-mapper.js.map +1 -1
  111. package/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
  112. package/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
  113. package/lib/extensible_events_v1/MessageEvent.js +11 -13
  114. package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  115. package/lib/extensible_events_v1/PollEndEvent.js +3 -4
  116. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  117. package/lib/extensible_events_v1/PollResponseEvent.js +5 -6
  118. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  119. package/lib/extensible_events_v1/PollStartEvent.js +8 -10
  120. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  121. package/lib/extensible_events_v1/utilities.js.map +1 -1
  122. package/lib/feature.js +18 -31
  123. package/lib/feature.js.map +1 -1
  124. package/lib/filter-component.d.ts.map +1 -1
  125. package/lib/filter-component.js +20 -26
  126. package/lib/filter-component.js.map +1 -1
  127. package/lib/filter.js +14 -17
  128. package/lib/filter.js.map +1 -1
  129. package/lib/http-api/errors.js +28 -43
  130. package/lib/http-api/errors.js.map +1 -1
  131. package/lib/http-api/fetch.js +141 -159
  132. package/lib/http-api/fetch.js.map +1 -1
  133. package/lib/http-api/index.js +17 -20
  134. package/lib/http-api/index.js.map +1 -1
  135. package/lib/http-api/interface.js +1 -1
  136. package/lib/http-api/interface.js.map +1 -1
  137. package/lib/http-api/method.js +1 -1
  138. package/lib/http-api/method.js.map +1 -1
  139. package/lib/http-api/prefix.js +3 -3
  140. package/lib/http-api/prefix.js.map +1 -1
  141. package/lib/http-api/refresh.js +74 -94
  142. package/lib/http-api/refresh.js.map +1 -1
  143. package/lib/http-api/utils.d.ts +1 -1
  144. package/lib/http-api/utils.d.ts.map +1 -1
  145. package/lib/http-api/utils.js +34 -42
  146. package/lib/http-api/utils.js.map +1 -1
  147. package/lib/index.js.map +1 -1
  148. package/lib/indexeddb-helpers.js +3 -3
  149. package/lib/indexeddb-helpers.js.map +1 -1
  150. package/lib/indexeddb-worker.js.map +1 -1
  151. package/lib/interactive-auth.d.ts +5 -5
  152. package/lib/interactive-auth.d.ts.map +1 -1
  153. package/lib/interactive-auth.js +172 -204
  154. package/lib/interactive-auth.js.map +1 -1
  155. package/lib/logger.js +21 -57
  156. package/lib/logger.js.map +1 -1
  157. package/lib/matrix.js +7 -11
  158. package/lib/matrix.js.map +1 -1
  159. package/lib/matrixrtc/CallMembership.js +80 -74
  160. package/lib/matrixrtc/CallMembership.js.map +1 -1
  161. package/lib/matrixrtc/EncryptionManager.js +1 -1
  162. package/lib/matrixrtc/EncryptionManager.js.map +1 -1
  163. package/lib/matrixrtc/IKeyTransport.js +1 -1
  164. package/lib/matrixrtc/IKeyTransport.js.map +1 -1
  165. package/lib/matrixrtc/IMembershipManager.js +1 -1
  166. package/lib/matrixrtc/IMembershipManager.js.map +1 -1
  167. package/lib/matrixrtc/LivekitTransport.d.ts +1 -1
  168. package/lib/matrixrtc/LivekitTransport.js +4 -4
  169. package/lib/matrixrtc/LivekitTransport.js.map +1 -1
  170. package/lib/matrixrtc/MatrixRTCSession.js +137 -187
  171. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  172. package/lib/matrixrtc/MatrixRTCSessionManager.js +36 -41
  173. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -1
  174. package/lib/matrixrtc/MembershipManager.js +332 -378
  175. package/lib/matrixrtc/MembershipManager.js.map +1 -1
  176. package/lib/matrixrtc/MembershipManagerActionScheduler.js +54 -63
  177. package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -1
  178. package/lib/matrixrtc/RTCEncryptionManager.js +119 -143
  179. package/lib/matrixrtc/RTCEncryptionManager.js.map +1 -1
  180. package/lib/matrixrtc/ToDeviceKeyTransport.js +53 -58
  181. package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -1
  182. package/lib/matrixrtc/index.js.map +1 -1
  183. package/lib/matrixrtc/membershipData/common.js +1 -1
  184. package/lib/matrixrtc/membershipData/common.js.map +1 -1
  185. package/lib/matrixrtc/membershipData/index.js.map +1 -1
  186. package/lib/matrixrtc/membershipData/rtc.js +15 -23
  187. package/lib/matrixrtc/membershipData/rtc.js.map +1 -1
  188. package/lib/matrixrtc/membershipData/session.js +4 -5
  189. package/lib/matrixrtc/membershipData/session.js.map +1 -1
  190. package/lib/matrixrtc/types.js +4 -6
  191. package/lib/matrixrtc/types.js.map +1 -1
  192. package/lib/matrixrtc/utils.js +4 -11
  193. package/lib/matrixrtc/utils.js.map +1 -1
  194. package/lib/models/MSC3089Branch.js +91 -116
  195. package/lib/models/MSC3089Branch.js.map +1 -1
  196. package/lib/models/MSC3089TreeSpace.js +209 -245
  197. package/lib/models/MSC3089TreeSpace.js.map +1 -1
  198. package/lib/models/ToDeviceMessage.js +3 -1
  199. package/lib/models/beacon.js +14 -13
  200. package/lib/models/beacon.js.map +1 -1
  201. package/lib/models/compare-event-ordering.js +13 -13
  202. package/lib/models/compare-event-ordering.js.map +1 -1
  203. package/lib/models/device.js +3 -3
  204. package/lib/models/device.js.map +1 -1
  205. package/lib/models/event-context.js +5 -8
  206. package/lib/models/event-context.js.map +1 -1
  207. package/lib/models/event-status.js +1 -1
  208. package/lib/models/event-status.js.map +1 -1
  209. package/lib/models/event-timeline-set.js +88 -94
  210. package/lib/models/event-timeline-set.js.map +1 -1
  211. package/lib/models/event-timeline.js +28 -30
  212. package/lib/models/event-timeline.js.map +1 -1
  213. package/lib/models/event.js +182 -226
  214. package/lib/models/event.js.map +1 -1
  215. package/lib/models/invites-ignorer-types.js +4 -4
  216. package/lib/models/invites-ignorer-types.js.map +1 -1
  217. package/lib/models/invites-ignorer.js +159 -179
  218. package/lib/models/invites-ignorer.js.map +1 -1
  219. package/lib/models/poll.js +71 -81
  220. package/lib/models/poll.js.map +1 -1
  221. package/lib/models/profile-keys.js +2 -2
  222. package/lib/models/profile-keys.js.map +1 -1
  223. package/lib/models/read-receipt.js +40 -56
  224. package/lib/models/read-receipt.js.map +1 -1
  225. package/lib/models/related-relations.js.map +1 -1
  226. package/lib/models/relations-container.js +22 -23
  227. package/lib/models/relations-container.js.map +1 -1
  228. package/lib/models/relations.js +133 -159
  229. package/lib/models/relations.js.map +1 -1
  230. package/lib/models/room-member.js +24 -29
  231. package/lib/models/room-member.js.map +1 -1
  232. package/lib/models/room-receipts.js +29 -43
  233. package/lib/models/room-receipts.js.map +1 -1
  234. package/lib/models/room-retention.js +74 -83
  235. package/lib/models/room-retention.js.map +1 -1
  236. package/lib/models/room-state.js +143 -172
  237. package/lib/models/room-state.js.map +1 -1
  238. package/lib/models/room-sticky-events.d.ts +1 -0
  239. package/lib/models/room-sticky-events.d.ts.map +1 -1
  240. package/lib/models/room-sticky-events.js +45 -65
  241. package/lib/models/room-sticky-events.js.map +1 -1
  242. package/lib/models/room-summary.js.map +1 -1
  243. package/lib/models/room.d.ts.map +1 -1
  244. package/lib/models/room.js +765 -909
  245. package/lib/models/room.js.map +1 -1
  246. package/lib/models/search-result.js +5 -5
  247. package/lib/models/search-result.js.map +1 -1
  248. package/lib/models/thread.js +225 -285
  249. package/lib/models/thread.js.map +1 -1
  250. package/lib/models/typed-event-emitter.js +7 -18
  251. package/lib/models/typed-event-emitter.js.map +1 -1
  252. package/lib/models/user.js +8 -8
  253. package/lib/models/user.js.map +1 -1
  254. package/lib/oidc/authorize.js +208 -241
  255. package/lib/oidc/authorize.js.map +1 -1
  256. package/lib/oidc/discovery.js +23 -36
  257. package/lib/oidc/discovery.js.map +1 -1
  258. package/lib/oidc/error.js +1 -1
  259. package/lib/oidc/error.js.map +1 -1
  260. package/lib/oidc/index.js +1 -0
  261. package/lib/oidc/index.js.map +1 -1
  262. package/lib/oidc/register.js +60 -66
  263. package/lib/oidc/register.js.map +1 -1
  264. package/lib/oidc/tokenRefresher.js +77 -91
  265. package/lib/oidc/tokenRefresher.js.map +1 -1
  266. package/lib/oidc/validate.js +18 -18
  267. package/lib/oidc/validate.js.map +1 -1
  268. package/lib/pushprocessor.js +71 -82
  269. package/lib/pushprocessor.js.map +1 -1
  270. package/lib/randomstring.js +9 -9
  271. package/lib/randomstring.js.map +1 -1
  272. package/lib/realtime-callbacks.js +25 -28
  273. package/lib/realtime-callbacks.js.map +1 -1
  274. package/lib/receipt-accumulator.d.ts +2 -0
  275. package/lib/receipt-accumulator.d.ts.map +1 -1
  276. package/lib/receipt-accumulator.js +14 -22
  277. package/lib/receipt-accumulator.js.map +1 -1
  278. package/lib/rendezvous/MSC4108SignInWithQR.js +271 -302
  279. package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -1
  280. package/lib/rendezvous/RendezvousChannel.js +3 -1
  281. package/lib/rendezvous/RendezvousCode.js +3 -1
  282. package/lib/rendezvous/RendezvousError.js.map +1 -1
  283. package/lib/rendezvous/RendezvousFailureReason.js +2 -2
  284. package/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  285. package/lib/rendezvous/RendezvousIntent.js +1 -1
  286. package/lib/rendezvous/RendezvousIntent.js.map +1 -1
  287. package/lib/rendezvous/RendezvousTransport.js +3 -1
  288. package/lib/rendezvous/channels/MSC4108SecureChannel.js +123 -147
  289. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  290. package/lib/rendezvous/index.js +44 -69
  291. package/lib/rendezvous/index.js.map +1 -1
  292. package/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +1 -1
  293. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +134 -152
  294. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -1
  295. package/lib/retentionPolicy.js +6 -9
  296. package/lib/retentionPolicy.js.map +1 -1
  297. package/lib/room-hierarchy.js +52 -60
  298. package/lib/room-hierarchy.js.map +1 -1
  299. package/lib/rust-crypto/CrossSigningIdentity.js +94 -104
  300. package/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
  301. package/lib/rust-crypto/DehydratedDeviceManager.js +157 -190
  302. package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -1
  303. package/lib/rust-crypto/KeyClaimManager.js +18 -22
  304. package/lib/rust-crypto/KeyClaimManager.js.map +1 -1
  305. package/lib/rust-crypto/OutgoingRequestProcessor.js +109 -139
  306. package/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -1
  307. package/lib/rust-crypto/OutgoingRequestsManager.js +66 -80
  308. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  309. package/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +1 -1
  310. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +196 -224
  311. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -1
  312. package/lib/rust-crypto/RoomEncryptor.js +127 -143
  313. package/lib/rust-crypto/RoomEncryptor.js.map +1 -1
  314. package/lib/rust-crypto/backup.js +453 -549
  315. package/lib/rust-crypto/backup.js.map +1 -1
  316. package/lib/rust-crypto/constants.js +1 -1
  317. package/lib/rust-crypto/constants.js.map +1 -1
  318. package/lib/rust-crypto/device-converter.js +15 -28
  319. package/lib/rust-crypto/device-converter.js.map +1 -1
  320. package/lib/rust-crypto/index.js +103 -116
  321. package/lib/rust-crypto/index.js.map +1 -1
  322. package/lib/rust-crypto/libolm_migration.js +303 -365
  323. package/lib/rust-crypto/libolm_migration.js.map +1 -1
  324. package/lib/rust-crypto/rust-crypto.d.ts +5 -1
  325. package/lib/rust-crypto/rust-crypto.d.ts.map +1 -1
  326. package/lib/rust-crypto/rust-crypto.js +1067 -1332
  327. package/lib/rust-crypto/rust-crypto.js.map +1 -1
  328. package/lib/rust-crypto/secret-storage.js +12 -25
  329. package/lib/rust-crypto/secret-storage.js.map +1 -1
  330. package/lib/rust-crypto/verification.js +137 -189
  331. package/lib/rust-crypto/verification.js.map +1 -1
  332. package/lib/scheduler.js +44 -19
  333. package/lib/scheduler.js.map +1 -1
  334. package/lib/secret-storage.js +179 -213
  335. package/lib/secret-storage.js.map +1 -1
  336. package/lib/serverCapabilities.js +6 -9
  337. package/lib/serverCapabilities.js.map +1 -1
  338. package/lib/service-types.js +1 -1
  339. package/lib/service-types.js.map +1 -1
  340. package/lib/sliding-sync-sdk.d.ts.map +1 -1
  341. package/lib/sliding-sync-sdk.js +368 -424
  342. package/lib/sliding-sync-sdk.js.map +1 -1
  343. package/lib/sliding-sync.js +135 -171
  344. package/lib/sliding-sync.js.map +1 -1
  345. package/lib/store/index.js +3 -1
  346. package/lib/store/indexeddb-backend.js +3 -1
  347. package/lib/store/indexeddb-local-backend.js +194 -253
  348. package/lib/store/indexeddb-local-backend.js.map +1 -1
  349. package/lib/store/indexeddb-remote-backend.js +33 -63
  350. package/lib/store/indexeddb-remote-backend.js.map +1 -1
  351. package/lib/store/indexeddb-store-worker.js +22 -23
  352. package/lib/store/indexeddb-store-worker.js.map +1 -1
  353. package/lib/store/indexeddb.js +44 -71
  354. package/lib/store/indexeddb.js.map +1 -1
  355. package/lib/store/local-storage-events-emitter.js +2 -2
  356. package/lib/store/local-storage-events-emitter.js.map +1 -1
  357. package/lib/store/memory.js +34 -57
  358. package/lib/store/memory.js.map +1 -1
  359. package/lib/store/stub.js +22 -35
  360. package/lib/store/stub.js.map +1 -1
  361. package/lib/sync-accumulator.js +54 -66
  362. package/lib/sync-accumulator.js.map +1 -1
  363. package/lib/sync.d.ts.map +1 -1
  364. package/lib/sync.js +905 -998
  365. package/lib/sync.js.map +1 -1
  366. package/lib/testing.js +63 -105
  367. package/lib/testing.js.map +1 -1
  368. package/lib/thread-utils.js +1 -4
  369. package/lib/thread-utils.js.map +1 -1
  370. package/lib/timeline-window.js +89 -102
  371. package/lib/timeline-window.js.map +1 -1
  372. package/lib/types.js +1 -1
  373. package/lib/types.js.map +1 -1
  374. package/lib/utils/decryptAESSecretStorageItem.js +14 -25
  375. package/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
  376. package/lib/utils/encryptAESSecretStorageItem.js +27 -38
  377. package/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
  378. package/lib/utils/internal/deriveKeys.js +25 -32
  379. package/lib/utils/internal/deriveKeys.js.map +1 -1
  380. package/lib/utils/roomVersion.js +1 -1
  381. package/lib/utils/roomVersion.js.map +1 -1
  382. package/lib/utils.js +83 -135
  383. package/lib/utils.js.map +1 -1
  384. package/lib/version-support.js +3 -3
  385. package/lib/version-support.js.map +1 -1
  386. package/lib/webrtc/audioContext.js +5 -6
  387. package/lib/webrtc/audioContext.js.map +1 -1
  388. package/lib/webrtc/call.js +1081 -1250
  389. package/lib/webrtc/call.js.map +1 -1
  390. package/lib/webrtc/callEventHandler.js +202 -214
  391. package/lib/webrtc/callEventHandler.js.map +1 -1
  392. package/lib/webrtc/callEventTypes.js +2 -2
  393. package/lib/webrtc/callEventTypes.js.map +1 -1
  394. package/lib/webrtc/callFeed.js +18 -20
  395. package/lib/webrtc/callFeed.js.map +1 -1
  396. package/lib/webrtc/groupCall.js +513 -602
  397. package/lib/webrtc/groupCall.js.map +1 -1
  398. package/lib/webrtc/groupCallEventHandler.js +59 -62
  399. package/lib/webrtc/groupCallEventHandler.js.map +1 -1
  400. package/lib/webrtc/mediaHandler.js +198 -232
  401. package/lib/webrtc/mediaHandler.js.map +1 -1
  402. package/lib/webrtc/stats/callFeedStatsReporter.js +16 -20
  403. package/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  404. package/lib/webrtc/stats/callStatsReportGatherer.js +67 -75
  405. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  406. package/lib/webrtc/stats/callStatsReportSummary.js +3 -1
  407. package/lib/webrtc/stats/connectionStats.js.map +1 -1
  408. package/lib/webrtc/stats/connectionStatsBuilder.js +2 -2
  409. package/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  410. package/lib/webrtc/stats/connectionStatsReportBuilder.js +20 -24
  411. package/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  412. package/lib/webrtc/stats/groupCallStats.js +6 -8
  413. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  414. package/lib/webrtc/stats/media/mediaSsrcHandler.js +7 -8
  415. package/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  416. package/lib/webrtc/stats/media/mediaTrackHandler.js +7 -9
  417. package/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  418. package/lib/webrtc/stats/media/mediaTrackStats.js +3 -3
  419. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  420. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +7 -7
  421. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  422. package/lib/webrtc/stats/statsReport.js +1 -1
  423. package/lib/webrtc/stats/statsReport.js.map +1 -1
  424. package/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  425. package/lib/webrtc/stats/summaryStatsReportGatherer.js +14 -14
  426. package/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -1
  427. package/lib/webrtc/stats/trackStatsBuilder.js +32 -34
  428. package/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  429. package/lib/webrtc/stats/transportStats.js +3 -1
  430. package/lib/webrtc/stats/transportStatsBuilder.js +9 -9
  431. package/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  432. package/lib/webrtc/stats/valueFormatter.js +1 -1
  433. package/lib/webrtc/stats/valueFormatter.js.map +1 -1
  434. package/package.json +18 -33
  435. package/src/@types/global.d.ts +2 -2
  436. package/src/ToDeviceMessageQueue.ts +2 -2
  437. package/src/browser-index.ts +4 -4
  438. package/src/client.ts +15 -20
  439. package/src/crypto-api/index.ts +17 -6
  440. package/src/embedded.ts +4 -6
  441. package/src/filter-component.ts +1 -0
  442. package/src/http-api/utils.ts +1 -1
  443. package/src/interactive-auth.ts +11 -5
  444. package/src/matrixrtc/LivekitTransport.ts +1 -1
  445. package/src/matrixrtc/MatrixRTCSession.ts +1 -1
  446. package/src/models/MSC3089Branch.ts +1 -1
  447. package/src/models/room-sticky-events.ts +1 -0
  448. package/src/models/room.ts +9 -11
  449. package/src/receipt-accumulator.ts +2 -0
  450. package/src/rendezvous/index.ts +1 -1
  451. package/src/rendezvous/transports/MSC4108RendezvousSession.ts +2 -2
  452. package/src/rust-crypto/PerSessionKeyBackupDownloader.ts +1 -1
  453. package/src/rust-crypto/index.ts +6 -6
  454. package/src/rust-crypto/rust-crypto.ts +31 -7
  455. package/src/rust-crypto/verification.ts +1 -1
  456. package/src/sliding-sync-sdk.ts +5 -7
  457. package/src/store/indexeddb-local-backend.ts +3 -3
  458. package/src/sync.ts +6 -8
@@ -1,7 +1,4 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
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; }
1
+ import _objectSpread from "@babel/runtime/helpers/objectSpread2";
5
2
  /*
6
3
  Copyright 2023 The Matrix.org Foundation C.I.C.
7
4
 
@@ -42,26 +39,21 @@ import { Method } from "../http-api/index.js";
42
39
  * Generate the scope used in authorization request with OIDC OP
43
40
  * @returns scope
44
41
  */
45
- export var generateScope = deviceId => {
46
- var safeDeviceId = deviceId !== null && deviceId !== void 0 ? deviceId : secureRandomString(10);
47
- return "openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:".concat(safeDeviceId);
42
+ export const generateScope = deviceId => {
43
+ const safeDeviceId = deviceId ?? secureRandomString(10);
44
+ return `openid urn:matrix:org.matrix.msc2967.client:api:* urn:matrix:org.matrix.msc2967.client:device:${safeDeviceId}`;
48
45
  };
49
46
 
50
47
  // https://www.rfc-editor.org/rfc/rfc7636
51
- var generateCodeChallenge = /*#__PURE__*/function () {
52
- var _ref = _asyncToGenerator(function* (codeVerifier) {
53
- if (!globalThis.crypto.subtle) {
54
- // @TODO(kerrya) should this be allowed? configurable?
55
- logger.warn("A secure context is required to generate code challenge. Using plain text code challenge");
56
- return codeVerifier;
57
- }
58
- var hashBuffer = yield sha256(codeVerifier);
59
- return encodeUnpaddedBase64Url(hashBuffer);
60
- });
61
- return function generateCodeChallenge(_x) {
62
- return _ref.apply(this, arguments);
63
- };
64
- }();
48
+ const generateCodeChallenge = async codeVerifier => {
49
+ if (!globalThis.crypto.subtle) {
50
+ // @TODO(kerrya) should this be allowed? configurable?
51
+ logger.warn("A secure context is required to generate code challenge. Using plain text code challenge");
52
+ return codeVerifier;
53
+ }
54
+ const hashBuffer = await sha256(codeVerifier);
55
+ return encodeUnpaddedBase64Url(hashBuffer);
56
+ };
65
57
 
66
58
  /**
67
59
  * Generate authorization params to pass to {@link generateAuthorizationUrl}.
@@ -71,16 +63,15 @@ var generateCodeChallenge = /*#__PURE__*/function () {
71
63
  * @param redirectUri - absolute url for OP to redirect to after authorization
72
64
  * @returns AuthorizationParams
73
65
  */
74
- export var generateAuthorizationParams = _ref2 => {
75
- var redirectUri = _ref2.redirectUri;
76
- return {
77
- scope: generateScope(),
78
- redirectUri,
79
- state: secureRandomString(8),
80
- nonce: secureRandomString(8),
81
- codeVerifier: secureRandomString(64) // https://tools.ietf.org/html/rfc7636#section-4.1 length needs to be 43-128 characters
82
- };
83
- };
66
+ export const generateAuthorizationParams = ({
67
+ redirectUri
68
+ }) => ({
69
+ scope: generateScope(),
70
+ redirectUri,
71
+ state: secureRandomString(8),
72
+ nonce: secureRandomString(8),
73
+ codeVerifier: secureRandomString(64) // https://tools.ietf.org/html/rfc7636#section-4.1 length needs to be 43-128 characters
74
+ });
84
75
 
85
76
  /**
86
77
  * @deprecated use generateOidcAuthorizationUrl
@@ -91,29 +82,25 @@ export var generateAuthorizationParams = _ref2 => {
91
82
  * @param authorizationParams - params to be used in the url
92
83
  * @returns a Promise with the url as a string
93
84
  */
94
- export var generateAuthorizationUrl = /*#__PURE__*/function () {
95
- var _ref4 = _asyncToGenerator(function* (authorizationUrl, clientId, _ref3) {
96
- var scope = _ref3.scope,
97
- redirectUri = _ref3.redirectUri,
98
- state = _ref3.state,
99
- nonce = _ref3.nonce,
100
- codeVerifier = _ref3.codeVerifier;
101
- var url = new URL(authorizationUrl);
102
- url.searchParams.append("response_mode", "query");
103
- url.searchParams.append("response_type", "code");
104
- url.searchParams.append("redirect_uri", redirectUri);
105
- url.searchParams.append("client_id", clientId);
106
- url.searchParams.append("state", state);
107
- url.searchParams.append("scope", scope);
108
- url.searchParams.append("nonce", nonce);
109
- url.searchParams.append("code_challenge_method", "S256");
110
- url.searchParams.append("code_challenge", yield generateCodeChallenge(codeVerifier));
111
- return url.toString();
112
- });
113
- return function generateAuthorizationUrl(_x2, _x3, _x4) {
114
- return _ref4.apply(this, arguments);
115
- };
116
- }();
85
+ export const generateAuthorizationUrl = async (authorizationUrl, clientId, {
86
+ scope,
87
+ redirectUri,
88
+ state,
89
+ nonce,
90
+ codeVerifier
91
+ }) => {
92
+ const url = new URL(authorizationUrl);
93
+ url.searchParams.append("response_mode", "query");
94
+ url.searchParams.append("response_type", "code");
95
+ url.searchParams.append("redirect_uri", redirectUri);
96
+ url.searchParams.append("client_id", clientId);
97
+ url.searchParams.append("state", state);
98
+ url.searchParams.append("scope", scope);
99
+ url.searchParams.append("nonce", nonce);
100
+ url.searchParams.append("code_challenge_method", "S256");
101
+ url.searchParams.append("code_challenge", await generateCodeChallenge(codeVerifier));
102
+ return url.toString();
103
+ };
117
104
 
118
105
  /**
119
106
  * @experimental
@@ -133,50 +120,45 @@ export var generateAuthorizationUrl = /*#__PURE__*/function () {
133
120
  * See {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest OIDC core 3.1.2.1}.
134
121
  * @returns a Promise with the url as a string
135
122
  */
136
- export var generateOidcAuthorizationUrl = /*#__PURE__*/function () {
137
- var _ref6 = _asyncToGenerator(function* (_ref5) {
138
- var metadata = _ref5.metadata,
139
- redirectUri = _ref5.redirectUri,
140
- clientId = _ref5.clientId,
141
- homeserverUrl = _ref5.homeserverUrl,
142
- identityServerUrl = _ref5.identityServerUrl,
143
- nonce = _ref5.nonce,
144
- prompt = _ref5.prompt,
145
- urlState = _ref5.urlState,
146
- loginHint = _ref5.loginHint,
147
- _ref5$responseMode = _ref5.responseMode,
148
- responseMode = _ref5$responseMode === void 0 ? "query" : _ref5$responseMode;
149
- var scope = generateScope();
150
- var oidcClient = new OidcClient(_objectSpread(_objectSpread({}, metadata), {}, {
151
- client_id: clientId,
152
- redirect_uri: redirectUri,
153
- authority: metadata.issuer,
154
- response_mode: responseMode,
155
- response_type: "code",
156
- scope,
157
- stateStore: new WebStorageStateStore({
158
- prefix: "mx_oidc_",
159
- store: window.sessionStorage
160
- })
161
- }));
162
- var userState = {
163
- homeserverUrl,
164
- nonce,
165
- identityServerUrl
166
- };
167
- var request = yield oidcClient.createSigninRequest({
168
- state: userState,
169
- nonce,
170
- prompt,
171
- url_state: urlState,
172
- login_hint: loginHint
173
- });
174
- return request.url;
175
- });
176
- return function generateOidcAuthorizationUrl(_x5) {
177
- return _ref6.apply(this, arguments);
123
+ export const generateOidcAuthorizationUrl = async ({
124
+ metadata,
125
+ redirectUri,
126
+ clientId,
127
+ homeserverUrl,
128
+ identityServerUrl,
129
+ nonce,
130
+ prompt,
131
+ urlState,
132
+ loginHint,
133
+ responseMode = "query"
134
+ }) => {
135
+ const scope = generateScope();
136
+ const oidcClient = new OidcClient(_objectSpread(_objectSpread({}, metadata), {}, {
137
+ client_id: clientId,
138
+ redirect_uri: redirectUri,
139
+ authority: metadata.issuer,
140
+ response_mode: responseMode,
141
+ response_type: "code",
142
+ scope,
143
+ stateStore: new WebStorageStateStore({
144
+ prefix: "mx_oidc_",
145
+ store: window.sessionStorage
146
+ })
147
+ }));
148
+ const userState = {
149
+ homeserverUrl,
150
+ nonce,
151
+ identityServerUrl
178
152
  };
179
- }();
153
+ const request = await oidcClient.createSigninRequest({
154
+ state: userState,
155
+ nonce,
156
+ prompt,
157
+ url_state: urlState,
158
+ login_hint: loginHint
159
+ });
160
+ return request.url;
161
+ };
180
162
 
181
163
  /**
182
164
  * Normalize token_type to use capital case to make consuming the token response easier
@@ -187,7 +169,7 @@ export var generateOidcAuthorizationUrl = /*#__PURE__*/function () {
187
169
  * @param response - validated token response
188
170
  * @returns response with token_type set to 'Bearer'
189
171
  */
190
- var normalizeBearerTokenResponseTokenType = response => ({
172
+ const normalizeBearerTokenResponseTokenType = response => ({
191
173
  id_token: response.id_token,
192
174
  scope: response.scope,
193
175
  expires_at: response.expires_at,
@@ -210,88 +192,82 @@ var normalizeBearerTokenResponseTokenType = response => ({
210
192
  * @throws An `Error` with `message` set to an entry in {@link OidcError},
211
193
  * when the request fails, or the returned token response is invalid.
212
194
  */
213
- export var completeAuthorizationCodeGrant = /*#__PURE__*/function () {
214
- var _ref7 = _asyncToGenerator(function* (code, state) {
215
- var responseMode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "query";
216
- /**
217
- * Element Web strips and changes the url on starting the app
218
- * Use the code and state from query params to rebuild a url
219
- * so that oidc-client can parse it
220
- */
221
- var reconstructedUrl = new URL(window.location.origin);
222
- var params = new URLSearchParams({
223
- code,
224
- state
225
- });
226
- if (responseMode === "query") {
227
- reconstructedUrl.search = params.toString();
228
- } else {
229
- reconstructedUrl.hash = "#".concat(params.toString());
230
- }
195
+ export const completeAuthorizationCodeGrant = async (code, state, responseMode = "query") => {
196
+ /**
197
+ * Element Web strips and changes the url on starting the app
198
+ * Use the code and state from query params to rebuild a url
199
+ * so that oidc-client can parse it
200
+ */
201
+ const reconstructedUrl = new URL(window.location.origin);
202
+ const params = new URLSearchParams({
203
+ code,
204
+ state
205
+ });
206
+ if (responseMode === "query") {
207
+ reconstructedUrl.search = params.toString();
208
+ } else {
209
+ reconstructedUrl.hash = `#${params.toString()}`;
210
+ }
231
211
 
232
- // set oidc-client to use our logger
233
- Log.setLogger(logger);
234
- try {
235
- var response = new SigninResponse(params);
236
- var stateStore = new WebStorageStateStore({
237
- prefix: "mx_oidc_",
238
- store: window.sessionStorage
239
- });
212
+ // set oidc-client to use our logger
213
+ Log.setLogger(logger);
214
+ try {
215
+ const response = new SigninResponse(params);
216
+ const stateStore = new WebStorageStateStore({
217
+ prefix: "mx_oidc_",
218
+ store: window.sessionStorage
219
+ });
240
220
 
241
- // retrieve the state we put in storage at the start of oidc auth flow
242
- var stateString = yield stateStore.get(response.state);
243
- if (!stateString) {
244
- throw new Error(OidcError.MissingOrInvalidStoredState);
245
- }
221
+ // retrieve the state we put in storage at the start of oidc auth flow
222
+ const stateString = await stateStore.get(response.state);
223
+ if (!stateString) {
224
+ throw new Error(OidcError.MissingOrInvalidStoredState);
225
+ }
246
226
 
247
- // hydrate the sign in state and create a client
248
- // the stored sign in state includes oidc configuration we set at the start of the oidc login flow
249
- var signInState = yield SigninState.fromStorageString(stateString);
250
- var client = new OidcClient(_objectSpread(_objectSpread({}, signInState), {}, {
251
- stateStore
252
- }));
227
+ // hydrate the sign in state and create a client
228
+ // the stored sign in state includes oidc configuration we set at the start of the oidc login flow
229
+ const signInState = await SigninState.fromStorageString(stateString);
230
+ const client = new OidcClient(_objectSpread(_objectSpread({}, signInState), {}, {
231
+ stateStore
232
+ }));
253
233
 
254
- // validate the code and state, and attempt to swap the code for tokens
255
- var signinResponse = yield client.processSigninResponse(reconstructedUrl.href);
234
+ // validate the code and state, and attempt to swap the code for tokens
235
+ const signinResponse = await client.processSigninResponse(reconstructedUrl.href);
256
236
 
257
- // extra values we stored at the start of the login flow
258
- // used to complete login in the client
259
- var userState = signinResponse.userState;
260
- validateStoredUserState(userState);
237
+ // extra values we stored at the start of the login flow
238
+ // used to complete login in the client
239
+ const userState = signinResponse.userState;
240
+ validateStoredUserState(userState);
261
241
 
262
- // throws when response is invalid
263
- validateBearerTokenResponse(signinResponse);
264
- if (signinResponse.id_token) {
265
- // The token is not yet in the Matrix spec so consider it optional
266
- // throws when token is invalid
267
- validateIdToken(signinResponse.id_token, client.settings.authority, client.settings.client_id, userState.nonce);
268
- }
269
- var normalizedTokenResponse = normalizeBearerTokenResponseTokenType(signinResponse);
270
- return {
271
- oidcClientSettings: {
272
- clientId: client.settings.client_id,
273
- issuer: client.settings.authority
274
- },
275
- tokenResponse: normalizedTokenResponse,
276
- homeserverUrl: userState.homeserverUrl,
277
- identityServerUrl: userState.identityServerUrl,
278
- idTokenClaims: signinResponse.profile
279
- };
280
- } catch (error) {
281
- logger.error("Oidc login failed", error);
282
- var errorType = error.message;
242
+ // throws when response is invalid
243
+ validateBearerTokenResponse(signinResponse);
244
+ if (signinResponse.id_token) {
245
+ // The token is not yet in the Matrix spec so consider it optional
246
+ // throws when token is invalid
247
+ validateIdToken(signinResponse.id_token, client.settings.authority, client.settings.client_id, userState.nonce);
248
+ }
249
+ const normalizedTokenResponse = normalizeBearerTokenResponseTokenType(signinResponse);
250
+ return {
251
+ oidcClientSettings: {
252
+ clientId: client.settings.client_id,
253
+ issuer: client.settings.authority
254
+ },
255
+ tokenResponse: normalizedTokenResponse,
256
+ homeserverUrl: userState.homeserverUrl,
257
+ identityServerUrl: userState.identityServerUrl,
258
+ idTokenClaims: signinResponse.profile
259
+ };
260
+ } catch (error) {
261
+ logger.error("Oidc login failed", error);
262
+ const errorType = error.message;
283
263
 
284
- // rethrow errors that we recognise
285
- if (Object.values(OidcError).includes(errorType)) {
286
- throw error;
287
- }
288
- throw new Error(OidcError.CodeExchangeFailed);
264
+ // rethrow errors that we recognise
265
+ if (Object.values(OidcError).includes(errorType)) {
266
+ throw error;
289
267
  }
290
- });
291
- return function completeAuthorizationCodeGrant(_x6, _x7) {
292
- return _ref7.apply(this, arguments);
293
- };
294
- }();
268
+ throw new Error(OidcError.CodeExchangeFailed);
269
+ }
270
+ };
295
271
 
296
272
  /**
297
273
  * Response from the OIDC token endpoint when exchanging a token for grant_type device_code.
@@ -314,32 +290,28 @@ export var completeAuthorizationCodeGrant = /*#__PURE__*/function () {
314
290
  * @returns a promise that resolves to a device access token response,
315
291
  * or an error response if the user denies authorization or the device code expires.
316
292
  */
317
- export var startDeviceAuthorization = /*#__PURE__*/function () {
318
- var _ref9 = _asyncToGenerator(function* (_ref8) {
319
- var clientId = _ref8.clientId,
320
- scope = _ref8.scope,
321
- metadata = _ref8.metadata;
322
- var body = new URLSearchParams({
323
- client_id: clientId,
324
- scope: scope
325
- }).toString();
326
- var url = metadata.device_authorization_endpoint;
327
- if (!url) {
328
- throw new Error("No device_authorization_endpoint given");
329
- }
330
- var response = yield fetch(url, {
331
- method: Method.Post,
332
- headers: {
333
- "Content-Type": "application/x-www-form-urlencoded"
334
- },
335
- body
336
- });
337
- return yield response.json();
293
+ export const startDeviceAuthorization = async ({
294
+ clientId,
295
+ scope,
296
+ metadata
297
+ }) => {
298
+ const body = new URLSearchParams({
299
+ client_id: clientId,
300
+ scope: scope
301
+ }).toString();
302
+ const url = metadata.device_authorization_endpoint;
303
+ if (!url) {
304
+ throw new Error("No device_authorization_endpoint given");
305
+ }
306
+ const response = await fetch(url, {
307
+ method: Method.Post,
308
+ headers: {
309
+ "Content-Type": "application/x-www-form-urlencoded"
310
+ },
311
+ body
338
312
  });
339
- return function startDeviceAuthorization(_x8) {
340
- return _ref9.apply(this, arguments);
341
- };
342
- }();
313
+ return await response.json();
314
+ };
343
315
 
344
316
  /**
345
317
  * Polls the OIDC token endpoint until we get a device access token response, or encounter an unrecoverable error.
@@ -350,49 +322,44 @@ export var startDeviceAuthorization = /*#__PURE__*/function () {
350
322
  * @returns a promise that resolves to a device access token response,
351
323
  * or an error response if the user denies authorization or the device code expires.
352
324
  */
353
- export var waitForDeviceAuthorization = /*#__PURE__*/function () {
354
- var _ref1 = _asyncToGenerator(function* (_ref0) {
355
- var _session$interval;
356
- var session = _ref0.session,
357
- metadata = _ref0.metadata,
358
- clientId = _ref0.clientId;
359
- var interval = ((_session$interval = session.interval) !== null && _session$interval !== void 0 ? _session$interval : 5) * 1000; // poll interval
360
- var expiration = Date.now() + session.expires_in * 1000;
361
- do {
362
- var body = new URLSearchParams({
363
- device_code: session.device_code,
364
- grant_type: OAuthGrantType.DeviceAuthorization,
365
- client_id: clientId
366
- }).toString();
367
- var response = yield fetch(metadata.token_endpoint, {
368
- method: Method.Post,
369
- headers: {
370
- "Content-Type": "application/x-www-form-urlencoded"
371
- },
372
- body
373
- });
374
- if (response.ok) {
375
- return yield response.json();
376
- }
377
- var errorResponse = yield response.json();
378
- switch (errorResponse.error) {
379
- case "authorization_pending":
380
- break;
381
- case "slow_down":
382
- interval += 5000;
383
- break;
384
- case "access_denied":
385
- case "expired_token":
386
- return errorResponse;
387
- }
388
- yield sleep(interval);
389
- } while (Date.now() < expiration);
390
- return {
391
- error: "expired"
392
- };
393
- });
394
- return function waitForDeviceAuthorization(_x9) {
395
- return _ref1.apply(this, arguments);
325
+ export const waitForDeviceAuthorization = async ({
326
+ session,
327
+ metadata,
328
+ clientId
329
+ }) => {
330
+ let interval = (session.interval ?? 5) * 1000; // poll interval
331
+ const expiration = Date.now() + session.expires_in * 1000;
332
+ do {
333
+ const body = new URLSearchParams({
334
+ device_code: session.device_code,
335
+ grant_type: OAuthGrantType.DeviceAuthorization,
336
+ client_id: clientId
337
+ }).toString();
338
+ const response = await fetch(metadata.token_endpoint, {
339
+ method: Method.Post,
340
+ headers: {
341
+ "Content-Type": "application/x-www-form-urlencoded"
342
+ },
343
+ body
344
+ });
345
+ if (response.ok) {
346
+ return await response.json();
347
+ }
348
+ const errorResponse = await response.json();
349
+ switch (errorResponse.error) {
350
+ case "authorization_pending":
351
+ break;
352
+ case "slow_down":
353
+ interval += 5000;
354
+ break;
355
+ case "access_denied":
356
+ case "expired_token":
357
+ return errorResponse;
358
+ }
359
+ await sleep(interval);
360
+ } while (Date.now() < expiration);
361
+ return {
362
+ error: "expired"
396
363
  };
397
- }();
364
+ };
398
365
  //# sourceMappingURL=authorize.js.map