@openclaw/matrix 2026.7.1-beta.2 → 2026.7.1-beta.5

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 (1070) hide show
  1. package/dist/{account-selection-Bv_ZuOu4.js → account-selection-5e4mHR1m.js} +1 -1
  2. package/dist/api.js +5 -5
  3. package/dist/{approval-handler.runtime-DzpLXVdc.js → approval-handler.runtime-DI5x9r8I.js} +5 -5
  4. package/dist/{approval-ids-R834n6m3.js → approval-ids-ZgqbspmS.js} +1 -1
  5. package/dist/{approval-reaction-auth-eAqCXUFG.js → approval-reaction-auth-D9LijQhr.js} +2 -2
  6. package/dist/{approval-reactions-BRGQgOu2.js → approval-reactions-BdUaUXVw.js} +24 -73
  7. package/dist/auth-presence.js +1 -1
  8. package/dist/{channel-KcNo9qtl.js → channel-jUTBsjHU.js} +20 -18
  9. package/dist/channel-plugin-api.js +1 -1
  10. package/dist/{channel.runtime-DtsGVgZj.js → channel.runtime-DO1Nv9ed.js} +25 -13
  11. package/dist/{cli-Clvpw_8I.js → cli-CEfWwCKx.js} +9 -9
  12. package/dist/{cli-metadata-D3N0Avnt.js → cli-metadata-CfiEO-CE.js} +1 -1
  13. package/dist/cli-metadata.js +1 -1
  14. package/dist/{client-BQz5GcYr.js → client-FRuyCNju.js} +2 -2
  15. package/dist/{client-bootstrap-CBJciU5u.js → client-bootstrap-DjFJ7e0N.js} +1 -2
  16. package/dist/{client-D-5GVz_D.js → client-tgnlQJk4.js} +2 -2
  17. package/dist/{config-schema-Dn-fHID8.js → config-schema-DtnhNYd-.js} +1 -1
  18. package/dist/contract-api.js +2 -2
  19. package/dist/{create-client-DhGid8FE.js → create-client-CNakT7zF.js} +3 -3
  20. package/dist/{credentials-G8lNmiME.js → credentials-Ds9V1mn2.js} +1 -1
  21. package/dist/{credentials-read-TzTOQPOM.js → credentials-read-BlkvsNFg.js} +1 -1
  22. package/dist/{credentials-write.runtime-5PDPPG9f.js → credentials-write.runtime-CTqqxcut.js} +1 -1
  23. package/dist/{crypto-runtime-B7kyrTL0.js → crypto-runtime-B74cTS6A.js} +4 -4
  24. package/dist/{crypto-state-store-DK2tcEyP.js → crypto-state-store-Jy3qwhdy.js} +1 -1
  25. package/dist/{deps-D3bkh48_.js → deps-CdjHvnmh.js} +20 -2
  26. package/dist/{directory-live-Ctu4whZK.js → directory-live-Ufd4qSpX.js} +2 -2
  27. package/dist/{doctor-BRSDNU5C.js → doctor-DfaOqFtr.js} +3 -3
  28. package/dist/{doctor-contract-Dq8OZWHF.js → doctor-contract-BAja_fmb.js} +1 -1
  29. package/dist/doctor-contract-api.js +8 -14
  30. package/dist/{draft-stream-j71tSUu-.js → draft-stream-D4EH25gv.js} +1 -1
  31. package/dist/{encryption-guidance-Bg3IRYoX.js → encryption-guidance-D8walY04.js} +1 -1
  32. package/dist/{file-sync-store-BWLVB01Y.js → file-sync-store-DVm0ACml.js} +3 -3
  33. package/dist/helper-api.js +1 -1
  34. package/dist/{idb-persistence-BGY1CJ7J.js → idb-persistence-BHm97th-.js} +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/{legacy-crypto-inspector-D_8iylBq.js → legacy-crypto-inspector-vzXSkm18.js} +1 -1
  37. package/dist/{legacy-crypto-restore-B0gcIEkE.js → legacy-crypto-restore-CIBfOmLn.js} +2 -2
  38. package/dist/{matrix-migration.runtime-Ctlb_rZl.js → matrix-migration.runtime-BMCyrANT.js} +3 -3
  39. package/dist/{media-text-XO4VaezT.js → media-text-p-LP21qs.js} +1 -1
  40. package/dist/{messages-nQLGGa1r.js → messages-DRKkiEY-.js} +6 -5
  41. package/dist/{monitor-k3Sko8qt.js → monitor-CsGOGdwu.js} +71 -71
  42. package/dist/plugin-entry.handlers.runtime.js +1 -1
  43. package/dist/probe.runtime-2MZLc6ng.js +3 -0
  44. package/dist/{profile-update-DIOAhezh.js → profile-update-Ucc8RrJL.js} +2 -2
  45. package/dist/{reaction-events-BDsbR82F.js → reaction-events-DentrVii.js} +3 -3
  46. package/dist/{recovery-key-store-BGk8c_gf.js → recovery-key-store-DSeLFvNx.js} +1 -1
  47. package/dist/{resolve-targets-BbrinjHd.js → resolve-targets-DcV_KfgX.js} +1 -1
  48. package/dist/{resolver.runtime-B3N7k_6-.js → resolver.runtime-Hr6bO5zl.js} +1 -1
  49. package/dist/runtime-api.js +2 -2
  50. package/dist/runtime-heavy-api.js +1 -1
  51. package/dist/{sdk-eyqOqjmn.js → sdk-AZYVl34z.js} +8 -6
  52. package/dist/{send-D0hpevF-.js → send-D92v6Yy0.js} +21 -8
  53. package/dist/session-binding-contract-api.js +1 -1
  54. package/dist/{setup-bootstrap-Ihb_DM2a.js → setup-bootstrap-Da564w5f.js} +2 -2
  55. package/dist/{setup-core-D2BQs8w1.js → setup-core-BGgbrdaJ.js} +5 -8
  56. package/dist/setup-plugin-api.js +3 -3
  57. package/dist/{setup-surface-1qf1LZIP.js → setup-surface-iJ6pd-t5.js} +6 -6
  58. package/dist/{shared-BGcaBMK3.js → shared-DkFfq7mH.js} +6 -6
  59. package/dist/{startup-verification-Bd31KqLv.js → startup-verification-BKMAXvcV.js} +2 -2
  60. package/dist/{storage-t5S-5c_5.js → storage-CQdyKcGg.js} +5 -5
  61. package/dist/{thread-bindings-BnuBS0VH.js → thread-bindings-BX5nmWpw.js} +3 -3
  62. package/dist/{tool-actions.runtime-BeUveYxV.js → tool-actions.runtime-C1d5fxE_.js} +12 -12
  63. package/dist/{verification-CNw2K4uT.js → verification-BGCMiO1p.js} +2 -2
  64. package/node_modules/@babel/runtime/package.json +468 -1089
  65. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/.cargo/config.toml +2 -0
  66. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/CHANGELOG.md +12 -3
  67. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/README.md +17 -0
  68. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/download-lib.js +10 -2
  69. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/package.json +1 -1
  70. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/xtask/.idea/modules.xml +8 -0
  71. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/xtask/.idea/vcs.xml +6 -0
  72. package/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/xtask/.idea/xtask.iml +11 -0
  73. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/package.json +1 -1
  74. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.cjs +28 -28
  75. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.js +24 -24
  76. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm +0 -0
  77. package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm.d.ts +58 -58
  78. package/node_modules/content-type/README.md +32 -57
  79. package/node_modules/content-type/dist/index.d.ts +26 -0
  80. package/node_modules/content-type/dist/index.js +170 -0
  81. package/node_modules/content-type/dist/index.js.map +1 -0
  82. package/node_modules/content-type/package.json +35 -25
  83. package/node_modules/linkify-it/README.md +3 -4
  84. package/node_modules/linkify-it/build/index.cjs.js +44 -41
  85. package/node_modules/linkify-it/index.mjs +10 -11
  86. package/node_modules/linkify-it/lib/re.mjs +34 -30
  87. package/node_modules/linkify-it/package.json +10 -15
  88. package/node_modules/markdown-it/dist/index.cjs.js +3652 -5378
  89. package/node_modules/markdown-it/dist/index.cjs.js.map +1 -0
  90. package/node_modules/markdown-it/dist/markdown-it.js +1399 -4479
  91. package/node_modules/markdown-it/dist/markdown-it.js.map +1 -0
  92. package/node_modules/markdown-it/dist/markdown-it.min.js +3 -2
  93. package/node_modules/markdown-it/dist/markdown-it.min.js.map +1 -0
  94. package/node_modules/markdown-it/lib/common/html_re.mjs +9 -9
  95. package/node_modules/markdown-it/lib/common/utils.mjs +2 -11
  96. package/node_modules/markdown-it/lib/parser_block.mjs +9 -9
  97. package/node_modules/markdown-it/lib/parser_core.mjs +7 -7
  98. package/node_modules/markdown-it/lib/parser_inline.mjs +16 -16
  99. package/node_modules/markdown-it/lib/renderer.mjs +2 -2
  100. package/node_modules/markdown-it/lib/rules_block/blockquote.mjs +6 -6
  101. package/node_modules/markdown-it/lib/rules_block/code.mjs +2 -2
  102. package/node_modules/markdown-it/lib/rules_block/fence.mjs +4 -4
  103. package/node_modules/markdown-it/lib/rules_block/heading.mjs +7 -7
  104. package/node_modules/markdown-it/lib/rules_block/hr.mjs +2 -2
  105. package/node_modules/markdown-it/lib/rules_block/html_block.mjs +6 -6
  106. package/node_modules/markdown-it/lib/rules_block/lheading.mjs +8 -8
  107. package/node_modules/markdown-it/lib/rules_block/list.mjs +6 -6
  108. package/node_modules/markdown-it/lib/rules_block/paragraph.mjs +5 -5
  109. package/node_modules/markdown-it/lib/rules_block/reference.mjs +1 -1
  110. package/node_modules/markdown-it/lib/rules_block/state_block.mjs +6 -6
  111. package/node_modules/markdown-it/lib/rules_block/table.mjs +4 -4
  112. package/node_modules/markdown-it/lib/rules_core/block.mjs +3 -3
  113. package/node_modules/markdown-it/lib/rules_core/linkify.mjs +15 -15
  114. package/node_modules/markdown-it/lib/rules_core/normalize.mjs +2 -2
  115. package/node_modules/markdown-it/lib/rules_inline/autolink.mjs +17 -17
  116. package/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs +2 -2
  117. package/node_modules/markdown-it/lib/rules_inline/emphasis.mjs +8 -8
  118. package/node_modules/markdown-it/lib/rules_inline/entity.mjs +7 -7
  119. package/node_modules/markdown-it/lib/rules_inline/escape.mjs +15 -1
  120. package/node_modules/markdown-it/lib/rules_inline/html_inline.mjs +1 -1
  121. package/node_modules/markdown-it/lib/rules_inline/link.mjs +1 -1
  122. package/node_modules/markdown-it/lib/rules_inline/state_inline.mjs +2 -2
  123. package/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs +10 -10
  124. package/node_modules/markdown-it/lib/token.mjs +12 -12
  125. package/node_modules/markdown-it/package.json +25 -34
  126. package/node_modules/matrix-js-sdk/CHANGELOG.md +24 -0
  127. package/node_modules/matrix-js-sdk/README.md +1 -1
  128. package/node_modules/matrix-js-sdk/lib/@types/AESEncryptedSecretStoragePayload.js +3 -1
  129. package/node_modules/matrix-js-sdk/lib/@types/IIdentityServerProvider.js +3 -1
  130. package/node_modules/matrix-js-sdk/lib/@types/PushRules.js +7 -7
  131. package/node_modules/matrix-js-sdk/lib/@types/PushRules.js.map +1 -1
  132. package/node_modules/matrix-js-sdk/lib/@types/auth.js +4 -4
  133. package/node_modules/matrix-js-sdk/lib/@types/auth.js.map +1 -1
  134. package/node_modules/matrix-js-sdk/lib/@types/beacon.js +2 -2
  135. package/node_modules/matrix-js-sdk/lib/@types/beacon.js.map +1 -1
  136. package/node_modules/matrix-js-sdk/lib/@types/common.js +3 -1
  137. package/node_modules/matrix-js-sdk/lib/@types/crypto.js +3 -1
  138. package/node_modules/matrix-js-sdk/lib/@types/event.d.ts +6 -1
  139. package/node_modules/matrix-js-sdk/lib/@types/event.d.ts.map +1 -1
  140. package/node_modules/matrix-js-sdk/lib/@types/event.js +23 -20
  141. package/node_modules/matrix-js-sdk/lib/@types/event.js.map +1 -1
  142. package/node_modules/matrix-js-sdk/lib/@types/events.js +3 -1
  143. package/node_modules/matrix-js-sdk/lib/@types/extensible_events.js +6 -6
  144. package/node_modules/matrix-js-sdk/lib/@types/extensible_events.js.map +1 -1
  145. package/node_modules/matrix-js-sdk/lib/@types/global.d.js.map +1 -1
  146. package/node_modules/matrix-js-sdk/lib/@types/json.js +3 -1
  147. package/node_modules/matrix-js-sdk/lib/@types/local_notifications.js +3 -1
  148. package/node_modules/matrix-js-sdk/lib/@types/location.js +4 -4
  149. package/node_modules/matrix-js-sdk/lib/@types/location.js.map +1 -1
  150. package/node_modules/matrix-js-sdk/lib/@types/matrix-sdk-crypto-wasm.d.js +3 -1
  151. package/node_modules/matrix-js-sdk/lib/@types/media.js +3 -1
  152. package/node_modules/matrix-js-sdk/lib/@types/membership.js +1 -1
  153. package/node_modules/matrix-js-sdk/lib/@types/membership.js.map +1 -1
  154. package/node_modules/matrix-js-sdk/lib/@types/partials.js +6 -6
  155. package/node_modules/matrix-js-sdk/lib/@types/partials.js.map +1 -1
  156. package/node_modules/matrix-js-sdk/lib/@types/polls.js +5 -5
  157. package/node_modules/matrix-js-sdk/lib/@types/polls.js.map +1 -1
  158. package/node_modules/matrix-js-sdk/lib/@types/read_receipts.js +2 -2
  159. package/node_modules/matrix-js-sdk/lib/@types/read_receipts.js.map +1 -1
  160. package/node_modules/matrix-js-sdk/lib/@types/registration.js +3 -1
  161. package/node_modules/matrix-js-sdk/lib/@types/requests.js +1 -1
  162. package/node_modules/matrix-js-sdk/lib/@types/requests.js.map +1 -1
  163. package/node_modules/matrix-js-sdk/lib/@types/retention.d.ts +15 -0
  164. package/node_modules/matrix-js-sdk/lib/@types/retention.d.ts.map +1 -0
  165. package/node_modules/matrix-js-sdk/lib/@types/retention.js +13 -0
  166. package/node_modules/matrix-js-sdk/lib/@types/retention.js.map +1 -0
  167. package/node_modules/matrix-js-sdk/lib/@types/search.js +1 -1
  168. package/node_modules/matrix-js-sdk/lib/@types/search.js.map +1 -1
  169. package/node_modules/matrix-js-sdk/lib/@types/signed.js +3 -1
  170. package/node_modules/matrix-js-sdk/lib/@types/spaces.js +3 -1
  171. package/node_modules/matrix-js-sdk/lib/@types/state_events.js +3 -1
  172. package/node_modules/matrix-js-sdk/lib/@types/synapse.js +3 -1
  173. package/node_modules/matrix-js-sdk/lib/@types/sync.js +1 -1
  174. package/node_modules/matrix-js-sdk/lib/@types/sync.js.map +1 -1
  175. package/node_modules/matrix-js-sdk/lib/@types/threepids.js +1 -1
  176. package/node_modules/matrix-js-sdk/lib/@types/threepids.js.map +1 -1
  177. package/node_modules/matrix-js-sdk/lib/@types/topic.js +1 -1
  178. package/node_modules/matrix-js-sdk/lib/@types/topic.js.map +1 -1
  179. package/node_modules/matrix-js-sdk/lib/@types/uia.js +3 -1
  180. package/node_modules/matrix-js-sdk/lib/NamespacedValue.js +8 -8
  181. package/node_modules/matrix-js-sdk/lib/NamespacedValue.js.map +1 -1
  182. package/node_modules/matrix-js-sdk/lib/ReEmitter.js +8 -15
  183. package/node_modules/matrix-js-sdk/lib/ReEmitter.js.map +1 -1
  184. package/node_modules/matrix-js-sdk/lib/ToDeviceMessageQueue.js +47 -55
  185. package/node_modules/matrix-js-sdk/lib/ToDeviceMessageQueue.js.map +1 -1
  186. package/node_modules/matrix-js-sdk/lib/autodiscovery.js +233 -247
  187. package/node_modules/matrix-js-sdk/lib/autodiscovery.js.map +1 -1
  188. package/node_modules/matrix-js-sdk/lib/base64.js +1 -1
  189. package/node_modules/matrix-js-sdk/lib/base64.js.map +1 -1
  190. package/node_modules/matrix-js-sdk/lib/browser-index.d.ts +2 -2
  191. package/node_modules/matrix-js-sdk/lib/browser-index.d.ts.map +1 -1
  192. package/node_modules/matrix-js-sdk/lib/browser-index.js +5 -5
  193. package/node_modules/matrix-js-sdk/lib/browser-index.js.map +1 -1
  194. package/node_modules/matrix-js-sdk/lib/capabilityPoller.d.ts +38 -0
  195. package/node_modules/matrix-js-sdk/lib/capabilityPoller.d.ts.map +1 -0
  196. package/node_modules/matrix-js-sdk/lib/capabilityPoller.js +93 -0
  197. package/node_modules/matrix-js-sdk/lib/capabilityPoller.js.map +1 -0
  198. package/node_modules/matrix-js-sdk/lib/client.d.ts +9 -8
  199. package/node_modules/matrix-js-sdk/lib/client.d.ts.map +1 -1
  200. package/node_modules/matrix-js-sdk/lib/client.js +2123 -2483
  201. package/node_modules/matrix-js-sdk/lib/client.js.map +1 -1
  202. package/node_modules/matrix-js-sdk/lib/common-crypto/CryptoBackend.js +3 -1
  203. package/node_modules/matrix-js-sdk/lib/common-crypto/CryptoBackend.js.map +1 -1
  204. package/node_modules/matrix-js-sdk/lib/common-crypto/key-passphrase.js.map +1 -1
  205. package/node_modules/matrix-js-sdk/lib/content-helpers.js +43 -48
  206. package/node_modules/matrix-js-sdk/lib/content-helpers.js.map +1 -1
  207. package/node_modules/matrix-js-sdk/lib/content-repo.js +14 -24
  208. package/node_modules/matrix-js-sdk/lib/content-repo.js.map +1 -1
  209. package/node_modules/matrix-js-sdk/lib/crypto/store/base.js +6 -6
  210. package/node_modules/matrix-js-sdk/lib/crypto/store/base.js.map +1 -1
  211. package/node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store-backend.js +189 -237
  212. package/node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  213. package/node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store.js +25 -28
  214. package/node_modules/matrix-js-sdk/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  215. package/node_modules/matrix-js-sdk/lib/crypto/store/localStorage-crypto-store.js +113 -145
  216. package/node_modules/matrix-js-sdk/lib/crypto/store/localStorage-crypto-store.js.map +1 -1
  217. package/node_modules/matrix-js-sdk/lib/crypto/store/memory-crypto-store.js +74 -105
  218. package/node_modules/matrix-js-sdk/lib/crypto/store/memory-crypto-store.js.map +1 -1
  219. package/node_modules/matrix-js-sdk/lib/crypto-api/CryptoEvent.js +1 -1
  220. package/node_modules/matrix-js-sdk/lib/crypto-api/CryptoEvent.js.map +1 -1
  221. package/node_modules/matrix-js-sdk/lib/crypto-api/CryptoEventHandlerMap.js +3 -1
  222. package/node_modules/matrix-js-sdk/lib/crypto-api/index.d.ts +15 -6
  223. package/node_modules/matrix-js-sdk/lib/crypto-api/index.d.ts.map +1 -1
  224. package/node_modules/matrix-js-sdk/lib/crypto-api/index.js +76 -76
  225. package/node_modules/matrix-js-sdk/lib/crypto-api/index.js.map +1 -1
  226. package/node_modules/matrix-js-sdk/lib/crypto-api/key-passphrase.js +15 -23
  227. package/node_modules/matrix-js-sdk/lib/crypto-api/key-passphrase.js.map +1 -1
  228. package/node_modules/matrix-js-sdk/lib/crypto-api/keybackup.js +3 -1
  229. package/node_modules/matrix-js-sdk/lib/crypto-api/recovery-key.js +11 -12
  230. package/node_modules/matrix-js-sdk/lib/crypto-api/recovery-key.js.map +1 -1
  231. package/node_modules/matrix-js-sdk/lib/crypto-api/verification.js +3 -3
  232. package/node_modules/matrix-js-sdk/lib/crypto-api/verification.js.map +1 -1
  233. package/node_modules/matrix-js-sdk/lib/digest.js +7 -14
  234. package/node_modules/matrix-js-sdk/lib/digest.js.map +1 -1
  235. package/node_modules/matrix-js-sdk/lib/embedded.d.ts.map +1 -1
  236. package/node_modules/matrix-js-sdk/lib/embedded.js +379 -500
  237. package/node_modules/matrix-js-sdk/lib/embedded.js.map +1 -1
  238. package/node_modules/matrix-js-sdk/lib/errors.js +2 -2
  239. package/node_modules/matrix-js-sdk/lib/errors.js.map +1 -1
  240. package/node_modules/matrix-js-sdk/lib/event-mapper.js +10 -12
  241. package/node_modules/matrix-js-sdk/lib/event-mapper.js.map +1 -1
  242. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/ExtensibleEvent.js.map +1 -1
  243. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/InvalidEventError.js.map +1 -1
  244. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/MessageEvent.js +26 -28
  245. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  246. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/PollEndEvent.js +11 -12
  247. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  248. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/PollResponseEvent.js +6 -6
  249. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  250. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/PollStartEvent.js +36 -38
  251. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  252. package/node_modules/matrix-js-sdk/lib/extensible_events_v1/utilities.js.map +1 -1
  253. package/node_modules/matrix-js-sdk/lib/feature.js +18 -31
  254. package/node_modules/matrix-js-sdk/lib/feature.js.map +1 -1
  255. package/node_modules/matrix-js-sdk/lib/filter-component.d.ts.map +1 -1
  256. package/node_modules/matrix-js-sdk/lib/filter-component.js +20 -26
  257. package/node_modules/matrix-js-sdk/lib/filter-component.js.map +1 -1
  258. package/node_modules/matrix-js-sdk/lib/filter.js +14 -15
  259. package/node_modules/matrix-js-sdk/lib/filter.js.map +1 -1
  260. package/node_modules/matrix-js-sdk/lib/http-api/errors.js +41 -56
  261. package/node_modules/matrix-js-sdk/lib/http-api/errors.js.map +1 -1
  262. package/node_modules/matrix-js-sdk/lib/http-api/fetch.js +140 -157
  263. package/node_modules/matrix-js-sdk/lib/http-api/fetch.js.map +1 -1
  264. package/node_modules/matrix-js-sdk/lib/http-api/index.js +17 -20
  265. package/node_modules/matrix-js-sdk/lib/http-api/index.js.map +1 -1
  266. package/node_modules/matrix-js-sdk/lib/http-api/interface.js +1 -1
  267. package/node_modules/matrix-js-sdk/lib/http-api/interface.js.map +1 -1
  268. package/node_modules/matrix-js-sdk/lib/http-api/method.js +1 -1
  269. package/node_modules/matrix-js-sdk/lib/http-api/method.js.map +1 -1
  270. package/node_modules/matrix-js-sdk/lib/http-api/prefix.js +3 -3
  271. package/node_modules/matrix-js-sdk/lib/http-api/prefix.js.map +1 -1
  272. package/node_modules/matrix-js-sdk/lib/http-api/refresh.js +80 -99
  273. package/node_modules/matrix-js-sdk/lib/http-api/refresh.js.map +1 -1
  274. package/node_modules/matrix-js-sdk/lib/http-api/utils.d.ts +1 -1
  275. package/node_modules/matrix-js-sdk/lib/http-api/utils.d.ts.map +1 -1
  276. package/node_modules/matrix-js-sdk/lib/http-api/utils.js +35 -47
  277. package/node_modules/matrix-js-sdk/lib/http-api/utils.js.map +1 -1
  278. package/node_modules/matrix-js-sdk/lib/index.js.map +1 -1
  279. package/node_modules/matrix-js-sdk/lib/indexeddb-helpers.js +3 -3
  280. package/node_modules/matrix-js-sdk/lib/indexeddb-helpers.js.map +1 -1
  281. package/node_modules/matrix-js-sdk/lib/indexeddb-worker.js.map +1 -1
  282. package/node_modules/matrix-js-sdk/lib/interactive-auth.d.ts +5 -5
  283. package/node_modules/matrix-js-sdk/lib/interactive-auth.d.ts.map +1 -1
  284. package/node_modules/matrix-js-sdk/lib/interactive-auth.js +181 -203
  285. package/node_modules/matrix-js-sdk/lib/interactive-auth.js.map +1 -1
  286. package/node_modules/matrix-js-sdk/lib/logger.js +22 -56
  287. package/node_modules/matrix-js-sdk/lib/logger.js.map +1 -1
  288. package/node_modules/matrix-js-sdk/lib/matrix.d.ts +1 -0
  289. package/node_modules/matrix-js-sdk/lib/matrix.d.ts.map +1 -1
  290. package/node_modules/matrix-js-sdk/lib/matrix.js +8 -11
  291. package/node_modules/matrix-js-sdk/lib/matrix.js.map +1 -1
  292. package/node_modules/matrix-js-sdk/lib/matrixrtc/CallMembership.js +83 -76
  293. package/node_modules/matrix-js-sdk/lib/matrixrtc/CallMembership.js.map +1 -1
  294. package/node_modules/matrix-js-sdk/lib/matrixrtc/EncryptionManager.js +1 -1
  295. package/node_modules/matrix-js-sdk/lib/matrixrtc/EncryptionManager.js.map +1 -1
  296. package/node_modules/matrix-js-sdk/lib/matrixrtc/IKeyTransport.js +1 -1
  297. package/node_modules/matrix-js-sdk/lib/matrixrtc/IKeyTransport.js.map +1 -1
  298. package/node_modules/matrix-js-sdk/lib/matrixrtc/IMembershipManager.js +1 -1
  299. package/node_modules/matrix-js-sdk/lib/matrixrtc/IMembershipManager.js.map +1 -1
  300. package/node_modules/matrix-js-sdk/lib/matrixrtc/LivekitTransport.d.ts +1 -1
  301. package/node_modules/matrix-js-sdk/lib/matrixrtc/LivekitTransport.js +4 -4
  302. package/node_modules/matrix-js-sdk/lib/matrixrtc/LivekitTransport.js.map +1 -1
  303. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -1
  304. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.js +144 -184
  305. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  306. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSessionManager.js +35 -39
  307. package/node_modules/matrix-js-sdk/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -1
  308. package/node_modules/matrix-js-sdk/lib/matrixrtc/MembershipManager.d.ts +2 -0
  309. package/node_modules/matrix-js-sdk/lib/matrixrtc/MembershipManager.d.ts.map +1 -1
  310. package/node_modules/matrix-js-sdk/lib/matrixrtc/MembershipManager.js +346 -383
  311. package/node_modules/matrix-js-sdk/lib/matrixrtc/MembershipManager.js.map +1 -1
  312. package/node_modules/matrix-js-sdk/lib/matrixrtc/MembershipManagerActionScheduler.d.ts.map +1 -1
  313. package/node_modules/matrix-js-sdk/lib/matrixrtc/MembershipManagerActionScheduler.js +54 -59
  314. package/node_modules/matrix-js-sdk/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -1
  315. package/node_modules/matrix-js-sdk/lib/matrixrtc/RTCEncryptionManager.js +117 -139
  316. package/node_modules/matrix-js-sdk/lib/matrixrtc/RTCEncryptionManager.js.map +1 -1
  317. package/node_modules/matrix-js-sdk/lib/matrixrtc/ToDeviceKeyTransport.js +49 -54
  318. package/node_modules/matrix-js-sdk/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -1
  319. package/node_modules/matrix-js-sdk/lib/matrixrtc/index.js.map +1 -1
  320. package/node_modules/matrix-js-sdk/lib/matrixrtc/membershipData/common.js +1 -1
  321. package/node_modules/matrix-js-sdk/lib/matrixrtc/membershipData/common.js.map +1 -1
  322. package/node_modules/matrix-js-sdk/lib/matrixrtc/membershipData/index.js.map +1 -1
  323. package/node_modules/matrix-js-sdk/lib/matrixrtc/membershipData/rtc.js +15 -23
  324. package/node_modules/matrix-js-sdk/lib/matrixrtc/membershipData/rtc.js.map +1 -1
  325. package/node_modules/matrix-js-sdk/lib/matrixrtc/membershipData/session.js +4 -5
  326. package/node_modules/matrix-js-sdk/lib/matrixrtc/membershipData/session.js.map +1 -1
  327. package/node_modules/matrix-js-sdk/lib/matrixrtc/types.js +4 -6
  328. package/node_modules/matrix-js-sdk/lib/matrixrtc/types.js.map +1 -1
  329. package/node_modules/matrix-js-sdk/lib/matrixrtc/utils.js +4 -11
  330. package/node_modules/matrix-js-sdk/lib/matrixrtc/utils.js.map +1 -1
  331. package/node_modules/matrix-js-sdk/lib/models/MSC3089Branch.js +91 -116
  332. package/node_modules/matrix-js-sdk/lib/models/MSC3089Branch.js.map +1 -1
  333. package/node_modules/matrix-js-sdk/lib/models/MSC3089TreeSpace.js +209 -244
  334. package/node_modules/matrix-js-sdk/lib/models/MSC3089TreeSpace.js.map +1 -1
  335. package/node_modules/matrix-js-sdk/lib/models/ToDeviceMessage.js +3 -1
  336. package/node_modules/matrix-js-sdk/lib/models/beacon.js +20 -15
  337. package/node_modules/matrix-js-sdk/lib/models/beacon.js.map +1 -1
  338. package/node_modules/matrix-js-sdk/lib/models/compare-event-ordering.js +13 -13
  339. package/node_modules/matrix-js-sdk/lib/models/compare-event-ordering.js.map +1 -1
  340. package/node_modules/matrix-js-sdk/lib/models/device.js +10 -3
  341. package/node_modules/matrix-js-sdk/lib/models/device.js.map +1 -1
  342. package/node_modules/matrix-js-sdk/lib/models/event-context.js +5 -7
  343. package/node_modules/matrix-js-sdk/lib/models/event-context.js.map +1 -1
  344. package/node_modules/matrix-js-sdk/lib/models/event-status.js +1 -1
  345. package/node_modules/matrix-js-sdk/lib/models/event-status.js.map +1 -1
  346. package/node_modules/matrix-js-sdk/lib/models/event-timeline-set.js +91 -91
  347. package/node_modules/matrix-js-sdk/lib/models/event-timeline-set.js.map +1 -1
  348. package/node_modules/matrix-js-sdk/lib/models/event-timeline.js +31 -29
  349. package/node_modules/matrix-js-sdk/lib/models/event-timeline.js.map +1 -1
  350. package/node_modules/matrix-js-sdk/lib/models/event.js +215 -235
  351. package/node_modules/matrix-js-sdk/lib/models/event.js.map +1 -1
  352. package/node_modules/matrix-js-sdk/lib/models/invites-ignorer-types.js +4 -4
  353. package/node_modules/matrix-js-sdk/lib/models/invites-ignorer-types.js.map +1 -1
  354. package/node_modules/matrix-js-sdk/lib/models/invites-ignorer.js +159 -179
  355. package/node_modules/matrix-js-sdk/lib/models/invites-ignorer.js.map +1 -1
  356. package/node_modules/matrix-js-sdk/lib/models/poll.js +72 -78
  357. package/node_modules/matrix-js-sdk/lib/models/poll.js.map +1 -1
  358. package/node_modules/matrix-js-sdk/lib/models/profile-keys.js +2 -2
  359. package/node_modules/matrix-js-sdk/lib/models/profile-keys.js.map +1 -1
  360. package/node_modules/matrix-js-sdk/lib/models/read-receipt.js +40 -56
  361. package/node_modules/matrix-js-sdk/lib/models/read-receipt.js.map +1 -1
  362. package/node_modules/matrix-js-sdk/lib/models/related-relations.js +2 -0
  363. package/node_modules/matrix-js-sdk/lib/models/related-relations.js.map +1 -1
  364. package/node_modules/matrix-js-sdk/lib/models/relations-container.js +20 -21
  365. package/node_modules/matrix-js-sdk/lib/models/relations-container.js.map +1 -1
  366. package/node_modules/matrix-js-sdk/lib/models/relations.js +131 -156
  367. package/node_modules/matrix-js-sdk/lib/models/relations.js.map +1 -1
  368. package/node_modules/matrix-js-sdk/lib/models/room-member.js +44 -27
  369. package/node_modules/matrix-js-sdk/lib/models/room-member.js.map +1 -1
  370. package/node_modules/matrix-js-sdk/lib/models/room-receipts.js +48 -55
  371. package/node_modules/matrix-js-sdk/lib/models/room-receipts.js.map +1 -1
  372. package/node_modules/matrix-js-sdk/lib/models/room-retention.d.ts +28 -0
  373. package/node_modules/matrix-js-sdk/lib/models/room-retention.d.ts.map +1 -0
  374. package/node_modules/matrix-js-sdk/lib/models/room-retention.js +192 -0
  375. package/node_modules/matrix-js-sdk/lib/models/room-retention.js.map +1 -0
  376. package/node_modules/matrix-js-sdk/lib/models/room-state.js +141 -170
  377. package/node_modules/matrix-js-sdk/lib/models/room-state.js.map +1 -1
  378. package/node_modules/matrix-js-sdk/lib/models/room-sticky-events.d.ts +1 -0
  379. package/node_modules/matrix-js-sdk/lib/models/room-sticky-events.d.ts.map +1 -1
  380. package/node_modules/matrix-js-sdk/lib/models/room-sticky-events.js +46 -65
  381. package/node_modules/matrix-js-sdk/lib/models/room-sticky-events.js.map +1 -1
  382. package/node_modules/matrix-js-sdk/lib/models/room-summary.js.map +1 -1
  383. package/node_modules/matrix-js-sdk/lib/models/room.d.ts +2 -1
  384. package/node_modules/matrix-js-sdk/lib/models/room.d.ts.map +1 -1
  385. package/node_modules/matrix-js-sdk/lib/models/room.js +800 -887
  386. package/node_modules/matrix-js-sdk/lib/models/room.js.map +1 -1
  387. package/node_modules/matrix-js-sdk/lib/models/search-result.js +5 -5
  388. package/node_modules/matrix-js-sdk/lib/models/search-result.js.map +1 -1
  389. package/node_modules/matrix-js-sdk/lib/models/thread.js +267 -283
  390. package/node_modules/matrix-js-sdk/lib/models/thread.js.map +1 -1
  391. package/node_modules/matrix-js-sdk/lib/models/typed-event-emitter.js +7 -18
  392. package/node_modules/matrix-js-sdk/lib/models/typed-event-emitter.js.map +1 -1
  393. package/node_modules/matrix-js-sdk/lib/models/user.js +26 -7
  394. package/node_modules/matrix-js-sdk/lib/models/user.js.map +1 -1
  395. package/node_modules/matrix-js-sdk/lib/oidc/authorize.js +208 -241
  396. package/node_modules/matrix-js-sdk/lib/oidc/authorize.js.map +1 -1
  397. package/node_modules/matrix-js-sdk/lib/oidc/discovery.js +23 -36
  398. package/node_modules/matrix-js-sdk/lib/oidc/discovery.js.map +1 -1
  399. package/node_modules/matrix-js-sdk/lib/oidc/error.js +1 -1
  400. package/node_modules/matrix-js-sdk/lib/oidc/error.js.map +1 -1
  401. package/node_modules/matrix-js-sdk/lib/oidc/index.js +1 -0
  402. package/node_modules/matrix-js-sdk/lib/oidc/index.js.map +1 -1
  403. package/node_modules/matrix-js-sdk/lib/oidc/register.js +60 -66
  404. package/node_modules/matrix-js-sdk/lib/oidc/register.js.map +1 -1
  405. package/node_modules/matrix-js-sdk/lib/oidc/tokenRefresher.js +83 -94
  406. package/node_modules/matrix-js-sdk/lib/oidc/tokenRefresher.js.map +1 -1
  407. package/node_modules/matrix-js-sdk/lib/oidc/validate.js +18 -18
  408. package/node_modules/matrix-js-sdk/lib/oidc/validate.js.map +1 -1
  409. package/node_modules/matrix-js-sdk/lib/pushprocessor.js +70 -81
  410. package/node_modules/matrix-js-sdk/lib/pushprocessor.js.map +1 -1
  411. package/node_modules/matrix-js-sdk/lib/randomstring.js +9 -9
  412. package/node_modules/matrix-js-sdk/lib/randomstring.js.map +1 -1
  413. package/node_modules/matrix-js-sdk/lib/realtime-callbacks.js +25 -28
  414. package/node_modules/matrix-js-sdk/lib/realtime-callbacks.js.map +1 -1
  415. package/node_modules/matrix-js-sdk/lib/receipt-accumulator.d.ts +2 -0
  416. package/node_modules/matrix-js-sdk/lib/receipt-accumulator.d.ts.map +1 -1
  417. package/node_modules/matrix-js-sdk/lib/receipt-accumulator.js +14 -22
  418. package/node_modules/matrix-js-sdk/lib/receipt-accumulator.js.map +1 -1
  419. package/node_modules/matrix-js-sdk/lib/rendezvous/MSC4108SignInWithQR.js +272 -298
  420. package/node_modules/matrix-js-sdk/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -1
  421. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousChannel.js +3 -1
  422. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousCode.js +3 -1
  423. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousError.js.map +1 -1
  424. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousFailureReason.js +2 -2
  425. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousFailureReason.js.map +1 -1
  426. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousIntent.js +1 -1
  427. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousIntent.js.map +1 -1
  428. package/node_modules/matrix-js-sdk/lib/rendezvous/RendezvousTransport.js +3 -1
  429. package/node_modules/matrix-js-sdk/lib/rendezvous/channels/MSC4108SecureChannel.js +122 -144
  430. package/node_modules/matrix-js-sdk/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  431. package/node_modules/matrix-js-sdk/lib/rendezvous/index.js +44 -69
  432. package/node_modules/matrix-js-sdk/lib/rendezvous/index.js.map +1 -1
  433. package/node_modules/matrix-js-sdk/lib/rendezvous/transports/MSC4108RendezvousSession.d.ts +1 -1
  434. package/node_modules/matrix-js-sdk/lib/rendezvous/transports/MSC4108RendezvousSession.js +142 -152
  435. package/node_modules/matrix-js-sdk/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -1
  436. package/node_modules/matrix-js-sdk/lib/retentionPolicy.d.ts +33 -0
  437. package/node_modules/matrix-js-sdk/lib/retentionPolicy.d.ts.map +1 -0
  438. package/node_modules/matrix-js-sdk/lib/retentionPolicy.js +39 -0
  439. package/node_modules/matrix-js-sdk/lib/retentionPolicy.js.map +1 -0
  440. package/node_modules/matrix-js-sdk/lib/room-hierarchy.js +52 -56
  441. package/node_modules/matrix-js-sdk/lib/room-hierarchy.js.map +1 -1
  442. package/node_modules/matrix-js-sdk/lib/rust-crypto/CrossSigningIdentity.js +94 -104
  443. package/node_modules/matrix-js-sdk/lib/rust-crypto/CrossSigningIdentity.js.map +1 -1
  444. package/node_modules/matrix-js-sdk/lib/rust-crypto/DehydratedDeviceManager.js +158 -190
  445. package/node_modules/matrix-js-sdk/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -1
  446. package/node_modules/matrix-js-sdk/lib/rust-crypto/KeyClaimManager.js +17 -20
  447. package/node_modules/matrix-js-sdk/lib/rust-crypto/KeyClaimManager.js.map +1 -1
  448. package/node_modules/matrix-js-sdk/lib/rust-crypto/OutgoingRequestProcessor.js +109 -139
  449. package/node_modules/matrix-js-sdk/lib/rust-crypto/OutgoingRequestProcessor.js.map +1 -1
  450. package/node_modules/matrix-js-sdk/lib/rust-crypto/OutgoingRequestsManager.js +72 -86
  451. package/node_modules/matrix-js-sdk/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  452. package/node_modules/matrix-js-sdk/lib/rust-crypto/PerSessionKeyBackupDownloader.d.ts +1 -1
  453. package/node_modules/matrix-js-sdk/lib/rust-crypto/PerSessionKeyBackupDownloader.js +195 -221
  454. package/node_modules/matrix-js-sdk/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -1
  455. package/node_modules/matrix-js-sdk/lib/rust-crypto/RoomEncryptor.js +121 -137
  456. package/node_modules/matrix-js-sdk/lib/rust-crypto/RoomEncryptor.js.map +1 -1
  457. package/node_modules/matrix-js-sdk/lib/rust-crypto/backup.d.ts +7 -2
  458. package/node_modules/matrix-js-sdk/lib/rust-crypto/backup.d.ts.map +1 -1
  459. package/node_modules/matrix-js-sdk/lib/rust-crypto/backup.js +459 -544
  460. package/node_modules/matrix-js-sdk/lib/rust-crypto/backup.js.map +1 -1
  461. package/node_modules/matrix-js-sdk/lib/rust-crypto/constants.js +1 -1
  462. package/node_modules/matrix-js-sdk/lib/rust-crypto/constants.js.map +1 -1
  463. package/node_modules/matrix-js-sdk/lib/rust-crypto/device-converter.js +15 -28
  464. package/node_modules/matrix-js-sdk/lib/rust-crypto/device-converter.js.map +1 -1
  465. package/node_modules/matrix-js-sdk/lib/rust-crypto/index.js +103 -116
  466. package/node_modules/matrix-js-sdk/lib/rust-crypto/index.js.map +1 -1
  467. package/node_modules/matrix-js-sdk/lib/rust-crypto/libolm_migration.js +303 -365
  468. package/node_modules/matrix-js-sdk/lib/rust-crypto/libolm_migration.js.map +1 -1
  469. package/node_modules/matrix-js-sdk/lib/rust-crypto/rust-crypto.d.ts +5 -1
  470. package/node_modules/matrix-js-sdk/lib/rust-crypto/rust-crypto.d.ts.map +1 -1
  471. package/node_modules/matrix-js-sdk/lib/rust-crypto/rust-crypto.js +1065 -1322
  472. package/node_modules/matrix-js-sdk/lib/rust-crypto/rust-crypto.js.map +1 -1
  473. package/node_modules/matrix-js-sdk/lib/rust-crypto/secret-storage.js +12 -25
  474. package/node_modules/matrix-js-sdk/lib/rust-crypto/secret-storage.js.map +1 -1
  475. package/node_modules/matrix-js-sdk/lib/rust-crypto/verification.js +134 -184
  476. package/node_modules/matrix-js-sdk/lib/rust-crypto/verification.js.map +1 -1
  477. package/node_modules/matrix-js-sdk/lib/scheduler.js +42 -17
  478. package/node_modules/matrix-js-sdk/lib/scheduler.js.map +1 -1
  479. package/node_modules/matrix-js-sdk/lib/secret-storage.js +179 -213
  480. package/node_modules/matrix-js-sdk/lib/secret-storage.js.map +1 -1
  481. package/node_modules/matrix-js-sdk/lib/serverCapabilities.d.ts +4 -23
  482. package/node_modules/matrix-js-sdk/lib/serverCapabilities.d.ts.map +1 -1
  483. package/node_modules/matrix-js-sdk/lib/serverCapabilities.js +9 -62
  484. package/node_modules/matrix-js-sdk/lib/serverCapabilities.js.map +1 -1
  485. package/node_modules/matrix-js-sdk/lib/service-types.js +1 -1
  486. package/node_modules/matrix-js-sdk/lib/service-types.js.map +1 -1
  487. package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.d.ts.map +1 -1
  488. package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.js +368 -421
  489. package/node_modules/matrix-js-sdk/lib/sliding-sync-sdk.js.map +1 -1
  490. package/node_modules/matrix-js-sdk/lib/sliding-sync.js +136 -167
  491. package/node_modules/matrix-js-sdk/lib/sliding-sync.js.map +1 -1
  492. package/node_modules/matrix-js-sdk/lib/store/index.d.ts +7 -0
  493. package/node_modules/matrix-js-sdk/lib/store/index.d.ts.map +1 -1
  494. package/node_modules/matrix-js-sdk/lib/store/index.js +3 -1
  495. package/node_modules/matrix-js-sdk/lib/store/index.js.map +1 -1
  496. package/node_modules/matrix-js-sdk/lib/store/indexeddb-backend.js +3 -1
  497. package/node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.d.ts +1 -0
  498. package/node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.d.ts.map +1 -1
  499. package/node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.js +197 -240
  500. package/node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.js.map +1 -1
  501. package/node_modules/matrix-js-sdk/lib/store/indexeddb-remote-backend.d.ts +3 -1
  502. package/node_modules/matrix-js-sdk/lib/store/indexeddb-remote-backend.d.ts.map +1 -1
  503. package/node_modules/matrix-js-sdk/lib/store/indexeddb-remote-backend.js +51 -59
  504. package/node_modules/matrix-js-sdk/lib/store/indexeddb-remote-backend.js.map +1 -1
  505. package/node_modules/matrix-js-sdk/lib/store/indexeddb-store-worker.js +22 -22
  506. package/node_modules/matrix-js-sdk/lib/store/indexeddb-store-worker.js.map +1 -1
  507. package/node_modules/matrix-js-sdk/lib/store/indexeddb.d.ts +7 -5
  508. package/node_modules/matrix-js-sdk/lib/store/indexeddb.d.ts.map +1 -1
  509. package/node_modules/matrix-js-sdk/lib/store/indexeddb.js +63 -79
  510. package/node_modules/matrix-js-sdk/lib/store/indexeddb.js.map +1 -1
  511. package/node_modules/matrix-js-sdk/lib/store/local-storage-events-emitter.js +2 -2
  512. package/node_modules/matrix-js-sdk/lib/store/local-storage-events-emitter.js.map +1 -1
  513. package/node_modules/matrix-js-sdk/lib/store/memory.d.ts +1 -0
  514. package/node_modules/matrix-js-sdk/lib/store/memory.d.ts.map +1 -1
  515. package/node_modules/matrix-js-sdk/lib/store/memory.js +38 -54
  516. package/node_modules/matrix-js-sdk/lib/store/memory.js.map +1 -1
  517. package/node_modules/matrix-js-sdk/lib/store/stub.d.ts +1 -0
  518. package/node_modules/matrix-js-sdk/lib/store/stub.d.ts.map +1 -1
  519. package/node_modules/matrix-js-sdk/lib/store/stub.js +22 -32
  520. package/node_modules/matrix-js-sdk/lib/store/stub.js.map +1 -1
  521. package/node_modules/matrix-js-sdk/lib/sync-accumulator.d.ts +1 -0
  522. package/node_modules/matrix-js-sdk/lib/sync-accumulator.d.ts.map +1 -1
  523. package/node_modules/matrix-js-sdk/lib/sync-accumulator.js +57 -65
  524. package/node_modules/matrix-js-sdk/lib/sync-accumulator.js.map +1 -1
  525. package/node_modules/matrix-js-sdk/lib/sync.d.ts.map +1 -1
  526. package/node_modules/matrix-js-sdk/lib/sync.js +914 -991
  527. package/node_modules/matrix-js-sdk/lib/sync.js.map +1 -1
  528. package/node_modules/matrix-js-sdk/lib/testing.js +63 -105
  529. package/node_modules/matrix-js-sdk/lib/testing.js.map +1 -1
  530. package/node_modules/matrix-js-sdk/lib/thread-utils.js +1 -4
  531. package/node_modules/matrix-js-sdk/lib/thread-utils.js.map +1 -1
  532. package/node_modules/matrix-js-sdk/lib/timeline-window.js +90 -99
  533. package/node_modules/matrix-js-sdk/lib/timeline-window.js.map +1 -1
  534. package/node_modules/matrix-js-sdk/lib/types.js +1 -1
  535. package/node_modules/matrix-js-sdk/lib/types.js.map +1 -1
  536. package/node_modules/matrix-js-sdk/lib/utils/decryptAESSecretStorageItem.js +14 -25
  537. package/node_modules/matrix-js-sdk/lib/utils/decryptAESSecretStorageItem.js.map +1 -1
  538. package/node_modules/matrix-js-sdk/lib/utils/encryptAESSecretStorageItem.js +27 -38
  539. package/node_modules/matrix-js-sdk/lib/utils/encryptAESSecretStorageItem.js.map +1 -1
  540. package/node_modules/matrix-js-sdk/lib/utils/internal/deriveKeys.js +25 -32
  541. package/node_modules/matrix-js-sdk/lib/utils/internal/deriveKeys.js.map +1 -1
  542. package/node_modules/matrix-js-sdk/lib/utils/roomVersion.js +1 -1
  543. package/node_modules/matrix-js-sdk/lib/utils/roomVersion.js.map +1 -1
  544. package/node_modules/matrix-js-sdk/lib/utils.js +83 -135
  545. package/node_modules/matrix-js-sdk/lib/utils.js.map +1 -1
  546. package/node_modules/matrix-js-sdk/lib/version-support.js +3 -3
  547. package/node_modules/matrix-js-sdk/lib/version-support.js.map +1 -1
  548. package/node_modules/matrix-js-sdk/lib/webrtc/audioContext.js +5 -6
  549. package/node_modules/matrix-js-sdk/lib/webrtc/audioContext.js.map +1 -1
  550. package/node_modules/matrix-js-sdk/lib/webrtc/call.js +1123 -1256
  551. package/node_modules/matrix-js-sdk/lib/webrtc/call.js.map +1 -1
  552. package/node_modules/matrix-js-sdk/lib/webrtc/callEventHandler.js +207 -214
  553. package/node_modules/matrix-js-sdk/lib/webrtc/callEventHandler.js.map +1 -1
  554. package/node_modules/matrix-js-sdk/lib/webrtc/callEventTypes.js +2 -2
  555. package/node_modules/matrix-js-sdk/lib/webrtc/callEventTypes.js.map +1 -1
  556. package/node_modules/matrix-js-sdk/lib/webrtc/callFeed.js +33 -20
  557. package/node_modules/matrix-js-sdk/lib/webrtc/callFeed.js.map +1 -1
  558. package/node_modules/matrix-js-sdk/lib/webrtc/groupCall.js +521 -594
  559. package/node_modules/matrix-js-sdk/lib/webrtc/groupCall.js.map +1 -1
  560. package/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js +58 -61
  561. package/node_modules/matrix-js-sdk/lib/webrtc/groupCallEventHandler.js.map +1 -1
  562. package/node_modules/matrix-js-sdk/lib/webrtc/mediaHandler.js +203 -233
  563. package/node_modules/matrix-js-sdk/lib/webrtc/mediaHandler.js.map +1 -1
  564. package/node_modules/matrix-js-sdk/lib/webrtc/stats/callFeedStatsReporter.js +16 -20
  565. package/node_modules/matrix-js-sdk/lib/webrtc/stats/callFeedStatsReporter.js.map +1 -1
  566. package/node_modules/matrix-js-sdk/lib/webrtc/stats/callStatsReportGatherer.js +65 -70
  567. package/node_modules/matrix-js-sdk/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  568. package/node_modules/matrix-js-sdk/lib/webrtc/stats/callStatsReportSummary.js +3 -1
  569. package/node_modules/matrix-js-sdk/lib/webrtc/stats/connectionStats.js.map +1 -1
  570. package/node_modules/matrix-js-sdk/lib/webrtc/stats/connectionStatsBuilder.js +2 -2
  571. package/node_modules/matrix-js-sdk/lib/webrtc/stats/connectionStatsBuilder.js.map +1 -1
  572. package/node_modules/matrix-js-sdk/lib/webrtc/stats/connectionStatsReportBuilder.js +20 -24
  573. package/node_modules/matrix-js-sdk/lib/webrtc/stats/connectionStatsReportBuilder.js.map +1 -1
  574. package/node_modules/matrix-js-sdk/lib/webrtc/stats/groupCallStats.js +4 -5
  575. package/node_modules/matrix-js-sdk/lib/webrtc/stats/groupCallStats.js.map +1 -1
  576. package/node_modules/matrix-js-sdk/lib/webrtc/stats/media/mediaSsrcHandler.js +7 -8
  577. package/node_modules/matrix-js-sdk/lib/webrtc/stats/media/mediaSsrcHandler.js.map +1 -1
  578. package/node_modules/matrix-js-sdk/lib/webrtc/stats/media/mediaTrackHandler.js +7 -9
  579. package/node_modules/matrix-js-sdk/lib/webrtc/stats/media/mediaTrackHandler.js.map +1 -1
  580. package/node_modules/matrix-js-sdk/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  581. package/node_modules/matrix-js-sdk/lib/webrtc/stats/media/mediaTrackStatsHandler.js +6 -6
  582. package/node_modules/matrix-js-sdk/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  583. package/node_modules/matrix-js-sdk/lib/webrtc/stats/statsReport.js +1 -1
  584. package/node_modules/matrix-js-sdk/lib/webrtc/stats/statsReport.js.map +1 -1
  585. package/node_modules/matrix-js-sdk/lib/webrtc/stats/statsReportEmitter.js.map +1 -1
  586. package/node_modules/matrix-js-sdk/lib/webrtc/stats/summaryStatsReportGatherer.js +14 -14
  587. package/node_modules/matrix-js-sdk/lib/webrtc/stats/summaryStatsReportGatherer.js.map +1 -1
  588. package/node_modules/matrix-js-sdk/lib/webrtc/stats/trackStatsBuilder.js +32 -34
  589. package/node_modules/matrix-js-sdk/lib/webrtc/stats/trackStatsBuilder.js.map +1 -1
  590. package/node_modules/matrix-js-sdk/lib/webrtc/stats/transportStats.js +3 -1
  591. package/node_modules/matrix-js-sdk/lib/webrtc/stats/transportStatsBuilder.js +9 -9
  592. package/node_modules/matrix-js-sdk/lib/webrtc/stats/transportStatsBuilder.js.map +1 -1
  593. package/node_modules/matrix-js-sdk/lib/webrtc/stats/valueFormatter.js +1 -1
  594. package/node_modules/matrix-js-sdk/lib/webrtc/stats/valueFormatter.js.map +1 -1
  595. package/node_modules/matrix-js-sdk/package.json +110 -138
  596. package/node_modules/matrix-js-sdk/src/@types/event.ts +9 -0
  597. package/node_modules/matrix-js-sdk/src/@types/global.d.ts +2 -2
  598. package/node_modules/matrix-js-sdk/src/@types/retention.ts +16 -0
  599. package/node_modules/matrix-js-sdk/src/ToDeviceMessageQueue.ts +2 -2
  600. package/node_modules/matrix-js-sdk/src/browser-index.ts +4 -4
  601. package/node_modules/matrix-js-sdk/src/capabilityPoller.ts +102 -0
  602. package/node_modules/matrix-js-sdk/src/client.ts +37 -25
  603. package/node_modules/matrix-js-sdk/src/crypto-api/index.ts +17 -6
  604. package/node_modules/matrix-js-sdk/src/embedded.ts +4 -6
  605. package/node_modules/matrix-js-sdk/src/filter-component.ts +1 -0
  606. package/node_modules/matrix-js-sdk/src/http-api/utils.ts +5 -10
  607. package/node_modules/matrix-js-sdk/src/interactive-auth.ts +11 -5
  608. package/node_modules/matrix-js-sdk/src/matrix.ts +1 -0
  609. package/node_modules/matrix-js-sdk/src/matrixrtc/LivekitTransport.ts +1 -1
  610. package/node_modules/matrix-js-sdk/src/matrixrtc/MatrixRTCSession.ts +5 -4
  611. package/node_modules/matrix-js-sdk/src/matrixrtc/MembershipManager.ts +2 -0
  612. package/node_modules/matrix-js-sdk/src/matrixrtc/MembershipManagerActionScheduler.ts +4 -1
  613. package/node_modules/matrix-js-sdk/src/models/MSC3089Branch.ts +1 -1
  614. package/node_modules/matrix-js-sdk/src/models/room-retention.ts +230 -0
  615. package/node_modules/matrix-js-sdk/src/models/room-sticky-events.ts +1 -0
  616. package/node_modules/matrix-js-sdk/src/models/room.ts +26 -12
  617. package/node_modules/matrix-js-sdk/src/receipt-accumulator.ts +2 -0
  618. package/node_modules/matrix-js-sdk/src/rendezvous/index.ts +1 -1
  619. package/node_modules/matrix-js-sdk/src/rendezvous/transports/MSC4108RendezvousSession.ts +2 -2
  620. package/node_modules/matrix-js-sdk/src/retentionPolicy.ts +65 -0
  621. package/node_modules/matrix-js-sdk/src/rust-crypto/PerSessionKeyBackupDownloader.ts +1 -1
  622. package/node_modules/matrix-js-sdk/src/rust-crypto/backup.ts +15 -4
  623. package/node_modules/matrix-js-sdk/src/rust-crypto/index.ts +6 -6
  624. package/node_modules/matrix-js-sdk/src/rust-crypto/rust-crypto.ts +31 -7
  625. package/node_modules/matrix-js-sdk/src/rust-crypto/verification.ts +1 -1
  626. package/node_modules/matrix-js-sdk/src/serverCapabilities.ts +8 -67
  627. package/node_modules/matrix-js-sdk/src/sliding-sync-sdk.ts +5 -7
  628. package/node_modules/matrix-js-sdk/src/store/index.ts +8 -0
  629. package/node_modules/matrix-js-sdk/src/store/indexeddb-local-backend.ts +12 -2
  630. package/node_modules/matrix-js-sdk/src/store/indexeddb-remote-backend.ts +24 -5
  631. package/node_modules/matrix-js-sdk/src/store/indexeddb.ts +20 -8
  632. package/node_modules/matrix-js-sdk/src/store/memory.ts +4 -0
  633. package/node_modules/matrix-js-sdk/src/store/stub.ts +3 -0
  634. package/node_modules/matrix-js-sdk/src/sync-accumulator.ts +9 -0
  635. package/node_modules/matrix-js-sdk/src/sync.ts +11 -9
  636. package/node_modules/media-typer/README.md +19 -33
  637. package/node_modules/media-typer/dist/index.d.ts +29 -0
  638. package/node_modules/media-typer/dist/index.js +64 -0
  639. package/node_modules/media-typer/dist/index.js.map +1 -0
  640. package/node_modules/media-typer/package.json +37 -22
  641. package/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js +2 -2
  642. package/node_modules/music-metadata/lib/mp4/AtomToken.js +65 -13
  643. package/node_modules/music-metadata/lib/wav/WaveChunk.d.ts +10 -0
  644. package/node_modules/music-metadata/lib/wav/WaveChunk.js +13 -3
  645. package/node_modules/music-metadata/lib/wav/WaveParser.d.ts +1 -0
  646. package/node_modules/music-metadata/lib/wav/WaveParser.js +6 -5
  647. package/node_modules/music-metadata/package.json +5 -5
  648. package/node_modules/typebox/build/compile/validator.d.mts +2 -7
  649. package/node_modules/typebox/build/compile/validator.mjs +6 -36
  650. package/node_modules/typebox/build/error/errors.d.mts +1 -7
  651. package/node_modules/typebox/build/format/_idna.mjs +36 -6
  652. package/node_modules/typebox/build/format/_puny.mjs +4 -1
  653. package/node_modules/typebox/build/format/uuid.d.mts +2 -2
  654. package/node_modules/typebox/build/format/uuid.mjs +3 -3
  655. package/node_modules/typebox/build/guard/emit.d.mts +0 -4
  656. package/node_modules/typebox/build/guard/emit.mjs +0 -8
  657. package/node_modules/typebox/build/guard/guard.d.mts +4 -8
  658. package/node_modules/typebox/build/guard/guard.mjs +5 -13
  659. package/node_modules/typebox/build/schema/engine/boolean.d.mts +3 -3
  660. package/node_modules/typebox/build/schema/engine/boolean.mjs +4 -4
  661. package/node_modules/typebox/build/schema/engine/index.d.mts +0 -1
  662. package/node_modules/typebox/build/schema/engine/index.mjs +0 -1
  663. package/node_modules/typebox/build/schema/engine/schema.mjs +5 -10
  664. package/node_modules/typebox/build/schema/engine/type.mjs +14 -18
  665. package/node_modules/typebox/build/schema/types/dependencies.mjs +1 -1
  666. package/node_modules/typebox/build/schema/types/index.d.mts +0 -1
  667. package/node_modules/typebox/build/schema/types/index.mjs +0 -1
  668. package/node_modules/typebox/build/schema/types/schema.d.mts +1 -1
  669. package/node_modules/typebox/build/schema/types/schema.mjs +2 -2
  670. package/node_modules/typebox/build/system/locale/ar_001.mjs +0 -1
  671. package/node_modules/typebox/build/system/locale/bn_BD.mjs +0 -1
  672. package/node_modules/typebox/build/system/locale/cs_CZ.mjs +0 -1
  673. package/node_modules/typebox/build/system/locale/de_DE.mjs +0 -1
  674. package/node_modules/typebox/build/system/locale/el_GR.mjs +0 -1
  675. package/node_modules/typebox/build/system/locale/en_US.mjs +0 -1
  676. package/node_modules/typebox/build/system/locale/es_419.mjs +0 -1
  677. package/node_modules/typebox/build/system/locale/es_AR.mjs +0 -1
  678. package/node_modules/typebox/build/system/locale/es_ES.mjs +0 -1
  679. package/node_modules/typebox/build/system/locale/es_MX.mjs +0 -1
  680. package/node_modules/typebox/build/system/locale/fa_IR.mjs +0 -1
  681. package/node_modules/typebox/build/system/locale/fil_PH.mjs +0 -1
  682. package/node_modules/typebox/build/system/locale/fr_CA.mjs +0 -1
  683. package/node_modules/typebox/build/system/locale/fr_FR.mjs +0 -1
  684. package/node_modules/typebox/build/system/locale/ha_NG.mjs +0 -1
  685. package/node_modules/typebox/build/system/locale/hi_IN.mjs +0 -1
  686. package/node_modules/typebox/build/system/locale/hu_HU.mjs +0 -1
  687. package/node_modules/typebox/build/system/locale/id_ID.mjs +0 -1
  688. package/node_modules/typebox/build/system/locale/it_IT.mjs +0 -1
  689. package/node_modules/typebox/build/system/locale/ja_JP.mjs +0 -1
  690. package/node_modules/typebox/build/system/locale/ko_KR.mjs +0 -1
  691. package/node_modules/typebox/build/system/locale/ms_MY.mjs +0 -1
  692. package/node_modules/typebox/build/system/locale/nl_NL.mjs +0 -1
  693. package/node_modules/typebox/build/system/locale/pl_PL.mjs +0 -1
  694. package/node_modules/typebox/build/system/locale/pt_BR.mjs +0 -1
  695. package/node_modules/typebox/build/system/locale/pt_PT.mjs +0 -1
  696. package/node_modules/typebox/build/system/locale/ro_RO.mjs +0 -1
  697. package/node_modules/typebox/build/system/locale/ru_RU.mjs +0 -1
  698. package/node_modules/typebox/build/system/locale/sv_SE.mjs +0 -1
  699. package/node_modules/typebox/build/system/locale/sw_TZ.mjs +0 -1
  700. package/node_modules/typebox/build/system/locale/th_TH.mjs +0 -1
  701. package/node_modules/typebox/build/system/locale/tr_TR.mjs +0 -1
  702. package/node_modules/typebox/build/system/locale/uk_UA.mjs +0 -1
  703. package/node_modules/typebox/build/system/locale/ur_PK.mjs +0 -1
  704. package/node_modules/typebox/build/system/locale/vi_VN.mjs +0 -1
  705. package/node_modules/typebox/build/system/locale/yo_NG.mjs +0 -1
  706. package/node_modules/typebox/build/system/locale/zh_Hans.mjs +0 -1
  707. package/node_modules/typebox/build/system/locale/zh_Hant.mjs +0 -1
  708. package/node_modules/typebox/build/system/memory/clone.d.mts +2 -3
  709. package/node_modules/typebox/build/system/memory/clone.mjs +73 -26
  710. package/node_modules/typebox/build/system/settings/settings.d.mts +15 -0
  711. package/node_modules/typebox/build/system/settings/settings.mjs +3 -1
  712. package/node_modules/typebox/build/type/action/_add_immutable.d.mts +11 -0
  713. package/node_modules/typebox/build/type/action/_add_immutable.mjs +11 -0
  714. package/node_modules/typebox/build/type/action/_add_optional.d.mts +11 -0
  715. package/node_modules/typebox/build/type/action/_add_optional.mjs +11 -0
  716. package/node_modules/typebox/build/type/action/_add_readonly.d.mts +11 -0
  717. package/node_modules/typebox/build/type/action/_add_readonly.mjs +11 -0
  718. package/node_modules/typebox/build/type/action/_remove_immutable.d.mts +11 -0
  719. package/node_modules/typebox/build/type/action/_remove_immutable.mjs +11 -0
  720. package/node_modules/typebox/build/type/action/_remove_optional.d.mts +11 -0
  721. package/node_modules/typebox/build/type/action/_remove_optional.mjs +11 -0
  722. package/node_modules/typebox/build/type/action/_remove_readonly.d.mts +11 -0
  723. package/node_modules/typebox/build/type/action/_remove_readonly.mjs +11 -0
  724. package/node_modules/typebox/build/type/action/conditional.d.mts +2 -3
  725. package/node_modules/typebox/build/type/action/conditional.mjs +2 -1
  726. package/node_modules/typebox/build/type/action/index.d.mts +7 -4
  727. package/node_modules/typebox/build/type/action/index.mjs +7 -4
  728. package/node_modules/typebox/build/type/action/mapped.d.mts +2 -3
  729. package/node_modules/typebox/build/type/action/mapped.mjs +2 -1
  730. package/node_modules/typebox/build/type/action/module.d.mts +8 -7
  731. package/node_modules/typebox/build/type/action/module.mjs +7 -6
  732. package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
  733. package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -5
  734. package/node_modules/typebox/build/type/action/with.d.mts +11 -0
  735. package/node_modules/typebox/build/type/action/with.mjs +11 -0
  736. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +1 -1
  737. package/node_modules/typebox/build/type/engine/call/instantiate.d.mts +1 -3
  738. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +3 -2
  739. package/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs +2 -2
  740. package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.d.mts +3 -4
  741. package/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs +2 -1
  742. package/node_modules/typebox/build/type/engine/cyclic/candidates.d.mts +2 -3
  743. package/node_modules/typebox/build/type/engine/cyclic/candidates.mjs +3 -6
  744. package/node_modules/typebox/build/type/engine/cyclic/check.d.mts +6 -9
  745. package/node_modules/typebox/build/type/engine/cyclic/check.mjs +10 -16
  746. package/node_modules/typebox/build/type/engine/cyclic/dependencies.d.mts +1 -4
  747. package/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs +9 -15
  748. package/node_modules/typebox/build/type/engine/cyclic/extends.d.mts +1 -4
  749. package/node_modules/typebox/build/type/engine/cyclic/extends.mjs +8 -14
  750. package/node_modules/typebox/build/type/engine/cyclic/instantiate.d.mts +2 -5
  751. package/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs +3 -2
  752. package/node_modules/typebox/build/type/engine/enum/index.d.mts +0 -1
  753. package/node_modules/typebox/build/type/engine/enum/index.mjs +0 -1
  754. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +1 -2
  755. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +2 -6
  756. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +10 -6
  757. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +10 -6
  758. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +2 -1
  759. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +3 -3
  760. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +17 -5
  761. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +34 -8
  762. package/node_modules/typebox/build/type/engine/exclude/operation.d.mts +5 -6
  763. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +11 -12
  764. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +5 -6
  765. package/node_modules/typebox/build/type/engine/extract/operation.mjs +11 -12
  766. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.d.mts +10 -0
  767. package/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs +14 -0
  768. package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.d.mts +10 -0
  769. package/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs +14 -0
  770. package/node_modules/typebox/build/type/engine/index.d.mts +2 -2
  771. package/node_modules/typebox/build/type/engine/index.mjs +2 -2
  772. package/node_modules/typebox/build/type/engine/indexable/from_dependent.d.mts +5 -0
  773. package/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs +8 -0
  774. package/node_modules/typebox/build/type/engine/indexable/from_enum.d.mts +3 -3
  775. package/node_modules/typebox/build/type/engine/indexable/from_enum.mjs +4 -4
  776. package/node_modules/typebox/build/type/engine/indexable/from_template_literal.d.mts +2 -2
  777. package/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs +3 -3
  778. package/node_modules/typebox/build/type/engine/indexable/from_type.d.mts +3 -1
  779. package/node_modules/typebox/build/type/engine/indexable/from_type.mjs +9 -6
  780. package/node_modules/typebox/build/type/engine/indexed/instantiate.d.mts +2 -1
  781. package/node_modules/typebox/build/type/engine/indexed/instantiate.mjs +5 -2
  782. package/node_modules/typebox/build/type/engine/instantiate.d.mts +44 -31
  783. package/node_modules/typebox/build/type/engine/instantiate.mjs +82 -83
  784. package/node_modules/typebox/build/type/engine/interface/instantiate.d.mts +3 -6
  785. package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.d.mts +2 -2
  786. package/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs +3 -3
  787. package/node_modules/typebox/build/type/engine/keyof/instantiate.d.mts +2 -1
  788. package/node_modules/typebox/build/type/engine/keyof/instantiate.mjs +5 -1
  789. package/node_modules/typebox/build/type/engine/mapped/mapped_operation.d.mts +4 -4
  790. package/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs +3 -3
  791. package/node_modules/typebox/build/type/engine/mapped/mapped_variants.d.mts +5 -4
  792. package/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs +10 -5
  793. package/node_modules/typebox/build/type/engine/module/instantiate.d.mts +7 -9
  794. package/node_modules/typebox/build/type/engine/module/instantiate.mjs +17 -15
  795. package/node_modules/typebox/build/type/engine/object/from_dependent.d.mts +5 -0
  796. package/node_modules/typebox/build/type/engine/object/from_dependent.mjs +8 -0
  797. package/node_modules/typebox/build/type/engine/object/from_type.d.mts +3 -1
  798. package/node_modules/typebox/build/type/engine/object/from_type.mjs +8 -5
  799. package/node_modules/typebox/build/type/engine/object/from_union.mjs +2 -2
  800. package/node_modules/typebox/build/type/engine/optional/instantiate_add.d.mts +10 -0
  801. package/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs +14 -0
  802. package/node_modules/typebox/build/type/engine/optional/instantiate_remove.d.mts +10 -0
  803. package/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs +14 -0
  804. package/node_modules/typebox/build/type/engine/parameters/instantiate.d.mts +3 -4
  805. package/node_modules/typebox/build/type/engine/parameters/instantiate.mjs +2 -1
  806. package/node_modules/typebox/build/type/engine/partial/from_dependent.d.mts +5 -0
  807. package/node_modules/typebox/build/type/engine/partial/from_dependent.mjs +8 -0
  808. package/node_modules/typebox/build/type/engine/partial/from_intersect.d.mts +1 -1
  809. package/node_modules/typebox/build/type/engine/partial/from_intersect.mjs +3 -2
  810. package/node_modules/typebox/build/type/engine/partial/from_object.d.mts +2 -2
  811. package/node_modules/typebox/build/type/engine/partial/from_object.mjs +2 -2
  812. package/node_modules/typebox/build/type/engine/partial/from_type.d.mts +3 -1
  813. package/node_modules/typebox/build/type/engine/partial/from_type.mjs +7 -4
  814. package/node_modules/typebox/build/type/engine/priority/index.d.mts +1 -0
  815. package/node_modules/typebox/build/type/engine/priority/index.mjs +1 -0
  816. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +20 -0
  817. package/node_modules/typebox/build/type/engine/priority/priority.mjs +28 -0
  818. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.d.mts +10 -0
  819. package/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs +14 -0
  820. package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.d.mts +10 -0
  821. package/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs +14 -0
  822. package/node_modules/typebox/build/type/engine/readonly_object/from_array.d.mts +2 -2
  823. package/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs +2 -2
  824. package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.d.mts +5 -0
  825. package/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs +8 -0
  826. package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.d.mts +1 -1
  827. package/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs +3 -2
  828. package/node_modules/typebox/build/type/engine/readonly_object/from_object.d.mts +2 -2
  829. package/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs +2 -2
  830. package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.d.mts +2 -2
  831. package/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs +2 -2
  832. package/node_modules/typebox/build/type/engine/readonly_object/from_type.d.mts +3 -1
  833. package/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs +8 -5
  834. package/node_modules/typebox/build/type/engine/record/from_key_enum.d.mts +2 -2
  835. package/node_modules/typebox/build/type/engine/record/from_key_enum.mjs +2 -2
  836. package/node_modules/typebox/build/type/engine/record/from_key_template_literal.d.mts +2 -2
  837. package/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs +2 -2
  838. package/node_modules/typebox/build/type/engine/ref/instantiate.d.mts +3 -3
  839. package/node_modules/typebox/build/type/engine/ref/instantiate.mjs +6 -6
  840. package/node_modules/typebox/build/type/engine/required/from_dependent.d.mts +5 -0
  841. package/node_modules/typebox/build/type/engine/required/from_dependent.mjs +8 -0
  842. package/node_modules/typebox/build/type/engine/required/from_intersect.d.mts +1 -1
  843. package/node_modules/typebox/build/type/engine/required/from_intersect.mjs +3 -2
  844. package/node_modules/typebox/build/type/engine/required/from_object.d.mts +2 -2
  845. package/node_modules/typebox/build/type/engine/required/from_object.mjs +2 -2
  846. package/node_modules/typebox/build/type/engine/required/from_type.d.mts +3 -1
  847. package/node_modules/typebox/build/type/engine/required/from_type.mjs +7 -4
  848. package/node_modules/typebox/build/type/engine/template_literal/decode.mjs +3 -3
  849. package/node_modules/typebox/build/type/engine/template_literal/encode.d.mts +2 -2
  850. package/node_modules/typebox/build/type/engine/template_literal/encode.mjs +6 -6
  851. package/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs +1 -1
  852. package/node_modules/typebox/build/type/engine/template_literal/is_pattern.mjs +1 -0
  853. package/node_modules/typebox/build/type/engine/this/expand_this.d.mts +1 -4
  854. package/node_modules/typebox/build/type/engine/this/expand_this.mjs +7 -13
  855. package/node_modules/typebox/build/type/engine/with/instantiate.d.mts +8 -0
  856. package/node_modules/typebox/build/type/engine/{options → with}/instantiate.mjs +5 -5
  857. package/node_modules/typebox/build/type/extends/dependent.d.mts +6 -0
  858. package/node_modules/typebox/build/type/extends/dependent.mjs +6 -0
  859. package/node_modules/typebox/build/type/extends/enum.d.mts +4 -4
  860. package/node_modules/typebox/build/type/extends/enum.mjs +3 -2
  861. package/node_modules/typebox/build/type/extends/extends_left.d.mts +5 -7
  862. package/node_modules/typebox/build/type/extends/extends_left.mjs +24 -27
  863. package/node_modules/typebox/build/type/extends/extends_right.d.mts +7 -5
  864. package/node_modules/typebox/build/type/extends/extends_right.mjs +20 -15
  865. package/node_modules/typebox/build/type/extends/inference.mjs +1 -1
  866. package/node_modules/typebox/build/type/extends/object.d.mts +8 -1
  867. package/node_modules/typebox/build/type/extends/object.mjs +25 -3
  868. package/node_modules/typebox/build/type/extends/parameters.mjs +2 -2
  869. package/node_modules/typebox/build/type/extends/record.d.mts +13 -0
  870. package/node_modules/typebox/build/type/extends/record.mjs +23 -0
  871. package/node_modules/typebox/build/type/extends/template_literal.d.mts +3 -3
  872. package/node_modules/typebox/build/type/extends/template_literal.mjs +3 -3
  873. package/node_modules/typebox/build/type/extends/tuple.d.mts +3 -6
  874. package/node_modules/typebox/build/type/extends/tuple.mjs +6 -5
  875. package/node_modules/typebox/build/type/extends/union.mjs +2 -2
  876. package/node_modules/typebox/build/type/script/mapping.d.mts +84 -99
  877. package/node_modules/typebox/build/type/script/mapping.mjs +81 -85
  878. package/node_modules/typebox/build/type/script/parser.d.mts +40 -40
  879. package/node_modules/typebox/build/type/script/parser.mjs +22 -22
  880. package/node_modules/typebox/build/type/script/script.d.mts +3 -4
  881. package/node_modules/typebox/build/type/script/script.mjs +3 -2
  882. package/node_modules/typebox/build/type/script/token/internal/guard.d.mts +1 -1
  883. package/node_modules/typebox/build/type/script/token/internal/guard.mjs +1 -1
  884. package/node_modules/typebox/build/type/script/token/internal/take.mjs +1 -1
  885. package/node_modules/typebox/build/type/script/token/until.mjs +2 -2
  886. package/node_modules/typebox/build/type/types/_codec.d.mts +12 -12
  887. package/node_modules/typebox/build/type/types/_codec.mjs +0 -1
  888. package/node_modules/typebox/build/type/types/_immutable.d.mts +2 -9
  889. package/node_modules/typebox/build/type/types/_immutable.mjs +2 -10
  890. package/node_modules/typebox/build/type/types/_optional.d.mts +2 -9
  891. package/node_modules/typebox/build/type/types/_optional.mjs +2 -11
  892. package/node_modules/typebox/build/type/types/_readonly.d.mts +2 -9
  893. package/node_modules/typebox/build/type/types/_readonly.mjs +2 -10
  894. package/node_modules/typebox/build/type/types/_refine.d.mts +8 -10
  895. package/node_modules/typebox/build/type/types/_refine.mjs +1 -2
  896. package/node_modules/typebox/build/type/types/call.d.mts +3 -3
  897. package/node_modules/typebox/build/type/types/call.mjs +3 -2
  898. package/node_modules/typebox/build/type/types/deferred.d.mts +1 -0
  899. package/node_modules/typebox/build/type/types/deferred.mjs +1 -1
  900. package/node_modules/typebox/build/type/types/dependent.d.mts +17 -0
  901. package/node_modules/typebox/build/type/types/dependent.mjs +24 -0
  902. package/node_modules/typebox/build/type/types/enum.d.mts +3 -1
  903. package/node_modules/typebox/build/type/types/enum.mjs +5 -0
  904. package/node_modules/typebox/build/type/types/index.d.mts +1 -4
  905. package/node_modules/typebox/build/type/types/index.mjs +1 -4
  906. package/node_modules/typebox/build/type/types/number.d.mts +1 -1
  907. package/node_modules/typebox/build/type/types/number.mjs +1 -1
  908. package/node_modules/typebox/build/type/types/record.d.mts +13 -7
  909. package/node_modules/typebox/build/type/types/record.mjs +15 -9
  910. package/node_modules/typebox/build/type/types/static.d.mts +2 -5
  911. package/node_modules/typebox/build/typebox.d.mts +4 -8
  912. package/node_modules/typebox/build/typebox.mjs +4 -8
  913. package/node_modules/typebox/build/value/clean/clean.mjs +4 -2
  914. package/node_modules/typebox/build/value/clean/from_intersect.mjs +2 -2
  915. package/node_modules/typebox/build/value/clean/from_type.mjs +8 -10
  916. package/node_modules/typebox/build/value/clean/from_union.d.mts +1 -1
  917. package/node_modules/typebox/build/value/clean/from_union.mjs +1 -2
  918. package/node_modules/typebox/build/value/clone/clone.mjs +2 -73
  919. package/node_modules/typebox/build/value/codec/decode.mjs +4 -2
  920. package/node_modules/typebox/build/value/codec/encode.mjs +4 -2
  921. package/node_modules/typebox/build/value/codec/from_array.mjs +1 -4
  922. package/node_modules/typebox/build/value/codec/from_object.mjs +1 -4
  923. package/node_modules/typebox/build/value/codec/from_record.mjs +2 -7
  924. package/node_modules/typebox/build/value/codec/from_tuple.mjs +1 -4
  925. package/node_modules/typebox/build/value/codec/from_union.mjs +2 -3
  926. package/node_modules/typebox/build/value/convert/from_enum.mjs +3 -4
  927. package/node_modules/typebox/build/value/convert/from_template_literal.d.mts +1 -1
  928. package/node_modules/typebox/build/value/convert/from_template_literal.mjs +2 -3
  929. package/node_modules/typebox/build/value/convert/from_type.mjs +19 -21
  930. package/node_modules/typebox/build/value/create/from_enum.mjs +2 -2
  931. package/node_modules/typebox/build/value/create/from_type.mjs +23 -31
  932. package/node_modules/typebox/build/value/default/from_object.mjs +1 -1
  933. package/node_modules/typebox/build/value/default/from_type.mjs +8 -10
  934. package/node_modules/typebox/build/value/index.d.mts +0 -1
  935. package/node_modules/typebox/build/value/index.mjs +0 -1
  936. package/node_modules/typebox/build/value/repair/from_enum.mjs +2 -3
  937. package/node_modules/typebox/build/value/repair/from_type.mjs +24 -22
  938. package/node_modules/typebox/build/value/shared/union_priority_sort.d.mts +6 -2
  939. package/node_modules/typebox/build/value/shared/union_priority_sort.mjs +62 -26
  940. package/node_modules/typebox/build/value/value.d.mts +0 -1
  941. package/node_modules/typebox/build/value/value.mjs +0 -1
  942. package/node_modules/typebox/package.json +25 -25
  943. package/node_modules/typebox/readme.md +97 -80
  944. package/npm-shrinkwrap.json +59 -54
  945. package/package.json +10 -10
  946. package/dist/probe.runtime-BED7DXis.js +0 -3
  947. package/node_modules/@babel/runtime/helpers/AwaitValue.js +0 -4
  948. package/node_modules/@babel/runtime/helpers/applyDecs.js +0 -236
  949. package/node_modules/@babel/runtime/helpers/applyDecs2203.js +0 -184
  950. package/node_modules/@babel/runtime/helpers/applyDecs2203R.js +0 -191
  951. package/node_modules/@babel/runtime/helpers/applyDecs2301.js +0 -222
  952. package/node_modules/@babel/runtime/helpers/applyDecs2305.js +0 -133
  953. package/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js +0 -10
  954. package/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js +0 -4
  955. package/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js +0 -7
  956. package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js +0 -5
  957. package/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js +0 -4
  958. package/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js +0 -5
  959. package/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js +0 -7
  960. package/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js +0 -7
  961. package/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js +0 -7
  962. package/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js +0 -5
  963. package/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js +0 -4
  964. package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js +0 -7
  965. package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js +0 -7
  966. package/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js +0 -7
  967. package/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js +0 -4
  968. package/node_modules/@babel/runtime/helpers/decorate.js +0 -250
  969. package/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js +0 -12
  970. package/node_modules/@babel/runtime/helpers/dispose.js +0 -28
  971. package/node_modules/@babel/runtime/helpers/esm/AwaitValue.js +0 -4
  972. package/node_modules/@babel/runtime/helpers/esm/applyDecs.js +0 -236
  973. package/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js +0 -184
  974. package/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js +0 -191
  975. package/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js +0 -222
  976. package/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js +0 -133
  977. package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js +0 -10
  978. package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js +0 -4
  979. package/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js +0 -7
  980. package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js +0 -5
  981. package/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js +0 -4
  982. package/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js +0 -5
  983. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js +0 -7
  984. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js +0 -7
  985. package/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js +0 -7
  986. package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js +0 -5
  987. package/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js +0 -4
  988. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js +0 -7
  989. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js +0 -7
  990. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js +0 -7
  991. package/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js +0 -4
  992. package/node_modules/@babel/runtime/helpers/esm/decorate.js +0 -250
  993. package/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js +0 -12
  994. package/node_modules/@babel/runtime/helpers/esm/dispose.js +0 -28
  995. package/node_modules/@babel/runtime/helpers/esm/objectSpread.js +0 -14
  996. package/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js +0 -77
  997. package/node_modules/@babel/runtime/helpers/esm/using.js +0 -12
  998. package/node_modules/@babel/runtime/helpers/objectSpread.js +0 -14
  999. package/node_modules/@babel/runtime/helpers/regeneratorRuntime.js +0 -77
  1000. package/node_modules/@babel/runtime/helpers/using.js +0 -12
  1001. package/node_modules/@babel/runtime/regenerator/index.js +0 -15
  1002. package/node_modules/content-type/HISTORY.md +0 -29
  1003. package/node_modules/content-type/index.js +0 -225
  1004. package/node_modules/media-typer/HISTORY.md +0 -50
  1005. package/node_modules/media-typer/index.js +0 -143
  1006. package/node_modules/typebox/build/schema/engine/_guard.d.mts +0 -6
  1007. package/node_modules/typebox/build/schema/engine/_guard.mjs +0 -26
  1008. package/node_modules/typebox/build/schema/types/_guard.d.mts +0 -10
  1009. package/node_modules/typebox/build/schema/types/_guard.mjs +0 -16
  1010. package/node_modules/typebox/build/type/action/_optional.d.mts +0 -19
  1011. package/node_modules/typebox/build/type/action/_optional.mjs +0 -40
  1012. package/node_modules/typebox/build/type/action/_readonly.d.mts +0 -19
  1013. package/node_modules/typebox/build/type/action/_readonly.mjs +0 -40
  1014. package/node_modules/typebox/build/type/action/awaited.d.mts +0 -15
  1015. package/node_modules/typebox/build/type/action/awaited.mjs +0 -15
  1016. package/node_modules/typebox/build/type/action/options.d.mts +0 -11
  1017. package/node_modules/typebox/build/type/action/options.mjs +0 -11
  1018. package/node_modules/typebox/build/type/engine/awaited/instantiate.d.mts +0 -11
  1019. package/node_modules/typebox/build/type/engine/awaited/instantiate.mjs +0 -20
  1020. package/node_modules/typebox/build/type/engine/enum/enum_to_union.d.mts +0 -14
  1021. package/node_modules/typebox/build/type/engine/enum/enum_to_union.mjs +0 -24
  1022. package/node_modules/typebox/build/type/engine/options/index.d.mts +0 -1
  1023. package/node_modules/typebox/build/type/engine/options/index.mjs +0 -1
  1024. package/node_modules/typebox/build/type/engine/options/instantiate.d.mts +0 -8
  1025. package/node_modules/typebox/build/type/extends/async_iterator.d.mts +0 -7
  1026. package/node_modules/typebox/build/type/extends/async_iterator.mjs +0 -9
  1027. package/node_modules/typebox/build/type/extends/iterator.d.mts +0 -7
  1028. package/node_modules/typebox/build/type/extends/iterator.mjs +0 -9
  1029. package/node_modules/typebox/build/type/extends/promise.d.mts +0 -7
  1030. package/node_modules/typebox/build/type/extends/promise.mjs +0 -9
  1031. package/node_modules/typebox/build/type/types/async_iterator.d.mts +0 -20
  1032. package/node_modules/typebox/build/type/types/async_iterator.mjs +0 -28
  1033. package/node_modules/typebox/build/type/types/base.d.mts +0 -50
  1034. package/node_modules/typebox/build/type/types/base.mjs +0 -84
  1035. package/node_modules/typebox/build/type/types/iterator.d.mts +0 -20
  1036. package/node_modules/typebox/build/type/types/iterator.mjs +0 -28
  1037. package/node_modules/typebox/build/type/types/promise.d.mts +0 -21
  1038. package/node_modules/typebox/build/type/types/promise.mjs +0 -29
  1039. package/node_modules/typebox/build/value/clean/from_base.d.mts +0 -2
  1040. package/node_modules/typebox/build/value/clean/from_base.mjs +0 -4
  1041. package/node_modules/typebox/build/value/convert/from_base.d.mts +0 -2
  1042. package/node_modules/typebox/build/value/convert/from_base.mjs +0 -4
  1043. package/node_modules/typebox/build/value/create/from_async_iterator.d.mts +0 -2
  1044. package/node_modules/typebox/build/value/create/from_async_iterator.mjs +0 -5
  1045. package/node_modules/typebox/build/value/create/from_base.d.mts +0 -2
  1046. package/node_modules/typebox/build/value/create/from_base.mjs +0 -4
  1047. package/node_modules/typebox/build/value/create/from_iterator.d.mts +0 -2
  1048. package/node_modules/typebox/build/value/create/from_iterator.mjs +0 -5
  1049. package/node_modules/typebox/build/value/create/from_promise.d.mts +0 -2
  1050. package/node_modules/typebox/build/value/create/from_promise.mjs +0 -5
  1051. package/node_modules/typebox/build/value/default/from_base.d.mts +0 -2
  1052. package/node_modules/typebox/build/value/default/from_base.mjs +0 -5
  1053. package/node_modules/typebox/build/value/mutate/error.d.mts +0 -3
  1054. package/node_modules/typebox/build/value/mutate/error.mjs +0 -6
  1055. package/node_modules/typebox/build/value/mutate/from_array.d.mts +0 -2
  1056. package/node_modules/typebox/build/value/mutate/from_array.mjs +0 -16
  1057. package/node_modules/typebox/build/value/mutate/from_object.d.mts +0 -2
  1058. package/node_modules/typebox/build/value/mutate/from_object.mjs +0 -40
  1059. package/node_modules/typebox/build/value/mutate/from_unknown.d.mts +0 -2
  1060. package/node_modules/typebox/build/value/mutate/from_unknown.mjs +0 -7
  1061. package/node_modules/typebox/build/value/mutate/from_value.d.mts +0 -2
  1062. package/node_modules/typebox/build/value/mutate/from_value.mjs +0 -12
  1063. package/node_modules/typebox/build/value/mutate/index.d.mts +0 -1
  1064. package/node_modules/typebox/build/value/mutate/index.mjs +0 -1
  1065. package/node_modules/typebox/build/value/mutate/mutate.d.mts +0 -11
  1066. package/node_modules/typebox/build/value/mutate/mutate.mjs +0 -41
  1067. package/node_modules/typebox/build/value/repair/from_base.d.mts +0 -2
  1068. package/node_modules/typebox/build/value/repair/from_base.mjs +0 -8
  1069. /package/node_modules/typebox/build/type/engine/{awaited → with}/index.d.mts +0 -0
  1070. /package/node_modules/typebox/build/type/engine/{awaited → with}/index.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"MembershipManagerActionScheduler.js","names":["logger","rootLogger","sleep","MembershipActionType","ActionScheduler","constructor","membershipLoopHandler","parentLogger","_defineProperty","update","error","getChild","actions","_actions","startWithJoin","_this","_asyncToGenerator","running","ts","Date","now","type","SendDelayedEvent","_loop","sort","a","b","nextAction","wakeupUpdate","undefined","wakeupPromise","Promise","resolve","wakeup","race","handlerResult","debug","concat","e","Error","splice","actionUpdate","replace","push","insert","length","initiateJoin","_this$wakeup","call","initiateLeave","_this$wakeup2","SendScheduledDelayedLeaveEvent"],"sources":["../../src/matrixrtc/MembershipManagerActionScheduler.ts"],"sourcesContent":["import { type Logger, logger as rootLogger } from \"../logger.ts\";\nimport { type EmptyObject } from \"../matrix.ts\";\nimport { sleep } from \"../utils.ts\";\nimport { MembershipActionType } from \"./MembershipManager.ts\";\n\n/** @internal */\nexport interface Action {\n /**\n * When this action should be executed\n */\n ts: number;\n /**\n * The state of the different loops\n * can also be thought of as the type of the action\n */\n type: MembershipActionType;\n}\n\n/** @internal */\nexport type ActionUpdate =\n | {\n /** Replace all existing scheduled actions with this new array */\n replace: Action[];\n }\n | {\n /** Add these actions to the existing scheduled actions */\n insert: Action[];\n }\n | EmptyObject;\n\n/**\n * This scheduler tracks the state of the current membership participation\n * and runs one central timer that wakes up a handler callback with the correct action + state\n * whenever necessary.\n *\n * It can also be awakened whenever a new action is added which is\n * earlier then the current \"next awake\".\n * @internal\n */\nexport class ActionScheduler {\n private logger: Logger;\n /**\n * This is tracking the state of the scheduler loop.\n * Only used to prevent starting the loop twice.\n */\n public running = false;\n\n public constructor(\n /** This is the callback called for each scheduled action (`this.addAction()`) */\n private membershipLoopHandler: (type: MembershipActionType) => Promise<ActionUpdate>,\n parentLogger?: Logger,\n ) {\n this.logger = (parentLogger ?? rootLogger).getChild(`[NewMembershipActionScheduler]`);\n }\n\n // function for the wakeup mechanism (in case we add an action externally and need to leave the current sleep)\n private wakeup: (update: ActionUpdate) => void = (update: ActionUpdate): void => {\n this.logger.error(\"Cannot call wakeup before calling `startWithJoin()`\");\n };\n private _actions: Action[] = [];\n public get actions(): Action[] {\n return this._actions;\n }\n\n /**\n * This starts the main loop of the membership manager that handles event sending, delayed event sending and delayed event restarting.\n * @param initialActions The initial actions the manager will start with. It should be enough to pass: DelayedLeaveActionType.Initial\n * @returns Promise that resolves once all actions have run and no more are scheduled.\n * @throws This throws an error if one of the actions throws.\n * In most other error cases the manager will try to handle any server errors by itself.\n */\n public async startWithJoin(): Promise<void> {\n if (this.running) {\n this.logger.error(\"Cannot call startWithJoin() on NewMembershipActionScheduler while already running\");\n return;\n }\n this.running = true;\n this._actions = [{ ts: Date.now(), type: MembershipActionType.SendDelayedEvent }];\n try {\n while (this._actions.length > 0) {\n // Sort so next (smallest ts) action is at the beginning\n this._actions.sort((a, b) => a.ts - b.ts);\n const nextAction = this._actions[0];\n let wakeupUpdate: ActionUpdate | undefined = undefined;\n\n // while we await for the next action, wakeup has to resolve the wakeupPromise\n const wakeupPromise = new Promise<void>((resolve) => {\n this.wakeup = (update: ActionUpdate): void => {\n wakeupUpdate = update;\n resolve();\n };\n });\n if (nextAction.ts > Date.now()) await Promise.race([wakeupPromise, sleep(nextAction.ts - Date.now())]);\n\n let handlerResult: ActionUpdate = {};\n if (!wakeupUpdate) {\n this.logger.debug(\n `Current MembershipManager processing: ${nextAction.type}\\nQueue:`,\n this._actions,\n `\\nDate.now: \"${Date.now()}`,\n );\n try {\n // `this.wakeup` can also be called and sets the `wakeupUpdate` object while we are in the handler.\n handlerResult = await this.membershipLoopHandler(nextAction.type as MembershipActionType);\n } catch (e) {\n throw Error(`The MembershipManager shut down because of the end condition: ${e}`);\n }\n }\n // remove the processed action only after we are done processing\n this._actions.splice(0, 1);\n // The wakeupUpdate always wins since that is a direct external update.\n const actionUpdate = wakeupUpdate ?? handlerResult;\n\n if (\"replace\" in actionUpdate) {\n this._actions = actionUpdate.replace;\n } else if (\"insert\" in actionUpdate) {\n this._actions.push(...actionUpdate.insert);\n }\n }\n } finally {\n // Set the rtc session running state since we cannot recover from here and the consumer user of the\n // MatrixRTCSession class needs to manually rejoin.\n this.running = false;\n }\n\n this.logger.debug(\"Leave MembershipManager ActionScheduler loop (no more actions)\");\n }\n\n public initiateJoin(): void {\n this.wakeup?.({ replace: [{ ts: Date.now(), type: MembershipActionType.SendDelayedEvent }] });\n }\n public initiateLeave(): void {\n this.wakeup?.({ replace: [{ ts: Date.now(), type: MembershipActionType.SendScheduledDelayedLeaveEvent }] });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MembershipManagerActionScheduler.js","names":[],"sources":["../../src/matrixrtc/MembershipManagerActionScheduler.ts"],"sourcesContent":["import { type Logger, logger as rootLogger } from \"../logger.ts\";\nimport { type EmptyObject } from \"../matrix.ts\";\nimport { sleep } from \"../utils.ts\";\nimport { MembershipActionType } from \"./MembershipManager.ts\";\n\n/** @internal */\nexport interface Action {\n /**\n * When this action should be executed\n */\n ts: number;\n /**\n * The state of the different loops\n * can also be thought of as the type of the action\n */\n type: MembershipActionType;\n}\n\n/** @internal */\nexport type ActionUpdate =\n | {\n /** Replace all existing scheduled actions with this new array */\n replace: Action[];\n }\n | {\n /** Add these actions to the existing scheduled actions */\n insert: Action[];\n }\n | EmptyObject;\n\n/**\n * This scheduler tracks the state of the current membership participation\n * and runs one central timer that wakes up a handler callback with the correct action + state\n * whenever necessary.\n *\n * It can also be awakened whenever a new action is added which is\n * earlier then the current \"next awake\".\n * @internal\n */\nexport class ActionScheduler {\n private logger: Logger;\n /**\n * This is tracking the state of the scheduler loop.\n * Only used to prevent starting the loop twice.\n */\n public running = false;\n\n public constructor(\n /** This is the callback called for each scheduled action (`this.addAction()`) */\n private membershipLoopHandler: (type: MembershipActionType) => Promise<ActionUpdate>,\n parentLogger?: Logger,\n ) {\n this.logger = (parentLogger ?? rootLogger).getChild(`[NewMembershipActionScheduler]`);\n }\n\n // function for the wakeup mechanism (in case we add an action externally and need to leave the current sleep)\n private wakeup: (update: ActionUpdate) => void = (update: ActionUpdate): void => {\n this.logger.error(\"Cannot call wakeup before calling `startWithJoin()`\");\n };\n private _actions: Action[] = [];\n public get actions(): Action[] {\n return this._actions;\n }\n\n /**\n * This starts the main loop of the membership manager that handles event sending, delayed event sending and delayed event restarting.\n * @param initialActions The initial actions the manager will start with. It should be enough to pass: DelayedLeaveActionType.Initial\n * @returns Promise that resolves once all actions have run and no more are scheduled.\n * @throws This throws an error if one of the actions throws.\n * In most other error cases the manager will try to handle any server errors by itself.\n */\n public async startWithJoin(): Promise<void> {\n if (this.running) {\n this.logger.error(\"Cannot call startWithJoin() on NewMembershipActionScheduler while already running\");\n return;\n }\n this.running = true;\n this._actions = [{ ts: Date.now(), type: MembershipActionType.SendDelayedEvent }];\n try {\n while (this._actions.length > 0) {\n // Sort so next (smallest ts) action is at the beginning\n this._actions.sort((a, b) => a.ts - b.ts);\n const nextAction = this._actions[0];\n let wakeupUpdate: ActionUpdate | undefined = undefined;\n\n // while we await for the next action, wakeup has to resolve the wakeupPromise\n const wakeupPromise = new Promise<void>((resolve) => {\n this.wakeup = (update: ActionUpdate): void => {\n wakeupUpdate = update;\n resolve();\n };\n });\n if (nextAction.ts > Date.now()) await Promise.race([wakeupPromise, sleep(nextAction.ts - Date.now())]);\n\n let handlerResult: ActionUpdate = {};\n if (!wakeupUpdate) {\n this.logger.debug(\n `Current MembershipManager processing: ${nextAction.type}\\nQueue:`,\n this._actions,\n `\\nDate.now: \"${Date.now()}`,\n );\n try {\n // `this.wakeup` can also be called and sets the `wakeupUpdate` object while we are in the handler.\n handlerResult = await this.membershipLoopHandler(nextAction.type as MembershipActionType);\n } catch (e) {\n // Preserve the original error as `cause`.\n throw new Error(`The MembershipManager shut down because of the end condition: ${e}`, {\n cause: e,\n });\n }\n }\n // remove the processed action only after we are done processing\n this._actions.splice(0, 1);\n // The wakeupUpdate always wins since that is a direct external update.\n const actionUpdate = wakeupUpdate ?? handlerResult;\n\n if (\"replace\" in actionUpdate) {\n this._actions = actionUpdate.replace;\n } else if (\"insert\" in actionUpdate) {\n this._actions.push(...actionUpdate.insert);\n }\n }\n } finally {\n // Set the rtc session running state since we cannot recover from here and the consumer user of the\n // MatrixRTCSession class needs to manually rejoin.\n this.running = false;\n }\n\n this.logger.debug(\"Leave MembershipManager ActionScheduler loop (no more actions)\");\n }\n\n public initiateJoin(): void {\n this.wakeup?.({ replace: [{ ts: Date.now(), type: MembershipActionType.SendDelayedEvent }] });\n }\n public initiateLeave(): void {\n this.wakeup?.({ replace: [{ ts: Date.now(), type: MembershipActionType.SendScheduledDelayedLeaveEvent }] });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  /*
4
3
  Copyright 2025-2026 The Matrix.org Foundation C.I.C.
@@ -52,6 +51,7 @@ export class RTCEncryptionManager {
52
51
  // This will be done when removing the legacy EncryptionManager.
53
52
  _defineProperty(this, "manageMediaKeys", false);
54
53
  _defineProperty(this, "useHashedRtcBackendIdentity", false);
54
+ _defineProperty(this, "ownRtcBackendIdentityCache", void 0);
55
55
  /**
56
56
  * Store the key rings for each participant.
57
57
  * The encryption manager stores the keys because the application layer might not be ready yet to handle the keys.
@@ -94,77 +94,72 @@ export class RTCEncryptionManager {
94
94
  */
95
95
  _defineProperty(this, "keyBuffer", new OutdatedKeyFilter());
96
96
  _defineProperty(this, "logger", undefined);
97
+ _defineProperty(this, "rtcIdentityProvider", void 0);
97
98
  _defineProperty(this, "keysWithoutMatchingRTCMembership", []);
98
99
  _defineProperty(this, "onNewKeyReceived", (membership, keyBase64Encoded, index, timestamp) => {
99
- var _this$logger2;
100
100
  // `manageMediaKeys` is a stop-gap solution for now. The preferred way to handle this case would be instead
101
101
  // to create a NoOpEncryptionManager that does nothing and use it for the session.
102
102
  // This will be done when removing the legacy EncryptionManager.
103
103
  if (!this.manageMediaKeys) {
104
- var _this$logger;
105
- (_this$logger = this.logger) === null || _this$logger === void 0 || _this$logger.warn("Received key over transport ".concat(membership.userId, ":").concat(membership.deviceId, " at index ").concat(index, " but media keys are disabled"));
104
+ this.logger?.warn(`Received key over transport ${membership.userId}:${membership.deviceId} at index ${index} but media keys are disabled`);
106
105
  return;
107
106
  }
108
- (_this$logger2 = this.logger) === null || _this$logger2 === void 0 || _this$logger2.debug("Received key over transport ".concat(membership.userId, ":").concat(membership.deviceId, " at index ").concat(index));
107
+ this.logger?.debug(`Received key over transport ${membership.userId}:${membership.deviceId} at index ${index}`);
109
108
 
110
109
  // We received a new key, notify the video layer of this new key so that it can decrypt the frames properly.
111
- var keyBin = decodeBase64(keyBase64Encoded);
112
- var candidateInboundSession = {
110
+ const keyBin = decodeBase64(keyBase64Encoded);
111
+ const candidateInboundSession = {
113
112
  key: keyBin,
114
113
  membership,
115
114
  keyIndex: index,
116
115
  creationTS: timestamp
117
116
  };
118
- var outdated = this.keyBuffer.isOutdated(membership, candidateInboundSession);
117
+ const outdated = this.keyBuffer.isOutdated(membership, candidateInboundSession);
119
118
  if (!outdated) {
120
119
  this.addKeyToParticipant(candidateInboundSession.key, candidateInboundSession.keyIndex, candidateInboundSession.membership);
121
120
  } else {
122
- var _this$logger3;
123
- (_this$logger3 = this.logger) === null || _this$logger3 === void 0 || _this$logger3.info("Received an out of order key for ".concat(membership.userId, ":").concat(membership.deviceId, ", dropping it"));
121
+ this.logger?.info(`Received an out of order key for ${membership.userId}:${membership.deviceId}, dropping it`);
124
122
  }
125
123
  });
126
124
  this.ownMembership = ownMembership;
127
125
  this.getMemberships = getMemberships;
128
126
  this.transport = transport;
129
127
  this.onEncryptionKeysChanged = onEncryptionKeysChanged;
130
- this.logger = parentLogger === null || parentLogger === void 0 ? void 0 : parentLogger.getChild("[EncryptionManager]");
131
- this.rtcIdentityProvider = rtcBackendIdProvider !== null && rtcBackendIdProvider !== void 0 ? rtcBackendIdProvider : computeRtcIdentityRaw;
128
+ this.logger = parentLogger?.getChild(`[EncryptionManager]`);
129
+ this.rtcIdentityProvider = rtcBackendIdProvider ?? computeRtcIdentityRaw;
132
130
  }
133
- getOwnRtcBackendIdentity() {
134
- var _this = this;
135
- return _asyncToGenerator(function* () {
136
- if (_this.ownRtcBackendIdentityCache) return _this.ownRtcBackendIdentityCache;
137
- if (_this.useHashedRtcBackendIdentity) {
138
- var _this$logger4;
139
- var _this$ownMembership = _this.ownMembership,
140
- userId = _this$ownMembership.userId,
141
- deviceId = _this$ownMembership.deviceId,
142
- memberId = _this$ownMembership.memberId;
143
- (_this$logger4 = _this.logger) === null || _this$logger4 === void 0 || _this$logger4.info(// If we see this log multiple times, we need to reconsider the precompute call of getOwnRtcBackendIdentity
144
- "Computing RTC backend identity for ".concat(userId, ":").concat(deviceId, ":").concat(memberId, " (SHOULD ONLY BE CALLED ONCE)"));
145
- _this.ownRtcBackendIdentityCache = yield _this.rtcIdentityProvider(userId, deviceId, memberId);
146
- } else {
147
- _this.ownRtcBackendIdentityCache = "".concat(_this.ownMembership.userId, ":").concat(_this.ownMembership.deviceId);
148
- }
149
- return _this.ownRtcBackendIdentityCache;
150
- })();
131
+ async getOwnRtcBackendIdentity() {
132
+ if (this.ownRtcBackendIdentityCache) return this.ownRtcBackendIdentityCache;
133
+ if (this.useHashedRtcBackendIdentity) {
134
+ const {
135
+ userId,
136
+ deviceId,
137
+ memberId
138
+ } = this.ownMembership;
139
+ this.logger?.info(
140
+ // If we see this log multiple times, we need to reconsider the precompute call of getOwnRtcBackendIdentity
141
+ `Computing RTC backend identity for ${userId}:${deviceId}:${memberId} (SHOULD ONLY BE CALLED ONCE)`);
142
+ this.ownRtcBackendIdentityCache = await this.rtcIdentityProvider(userId, deviceId, memberId);
143
+ } else {
144
+ this.ownRtcBackendIdentityCache = `${this.ownMembership.userId}:${this.ownMembership.deviceId}`;
145
+ }
146
+ return this.ownRtcBackendIdentityCache;
151
147
  }
152
148
  getEncryptionKeys() {
153
149
  return new Map(this.participantKeyRings);
154
150
  }
155
151
  checkKeysWithoutMatchingRTCMembership() {
156
- var keyInfoTemp = this.keysWithoutMatchingRTCMembership;
152
+ const keyInfoTemp = this.keysWithoutMatchingRTCMembership;
157
153
  this.keysWithoutMatchingRTCMembership = [];
158
154
  keyInfoTemp.forEach(keyInfo => {
159
155
  this.addKeyToParticipant(keyInfo.key, keyInfo.keyIndex, keyInfo.membership);
160
156
  });
161
157
  }
162
158
  addKeyToParticipant(key, keyIndex, membership) {
163
- var knownRtcMembership = this.getMemberships();
164
- var fullMembership = knownRtcMembership.find(member => member.userId === membership.userId && member.deviceId === membership.deviceId);
159
+ const knownRtcMembership = this.getMemberships();
160
+ const fullMembership = knownRtcMembership.find(member => member.userId === membership.userId && member.deviceId === membership.deviceId);
165
161
  if (!fullMembership) {
166
- var _this$logger5;
167
- (_this$logger5 = this.logger) === null || _this$logger5 === void 0 || _this$logger5.info("No matching RTC membership for key from ".concat(membership.userId, ":").concat(membership.deviceId, ", delaying key addition"));
162
+ this.logger?.info(`No matching RTC membership for key from ${membership.userId}:${membership.deviceId}, delaying key addition`);
168
163
  this.keysWithoutMatchingRTCMembership.push({
169
164
  key,
170
165
  keyIndex,
@@ -175,7 +170,7 @@ export class RTCEncryptionManager {
175
170
  this.addKeyToParticipantWithBackendIdentity(key, keyIndex, membership, fullMembership.rtcBackendIdentity);
176
171
  }
177
172
  addKeyToParticipantWithBackendIdentity(key, keyIndex, membership, rtcBackendIdentity) {
178
- var mapKey = getEncryptionKeyMapKey(membership);
173
+ const mapKey = getEncryptionKeyMapKey(membership);
179
174
  if (!this.participantKeyRings.has(mapKey)) {
180
175
  this.participantKeyRings.set(mapKey, []);
181
176
  }
@@ -188,15 +183,14 @@ export class RTCEncryptionManager {
188
183
  this.onEncryptionKeysChanged(key, keyIndex, membership, rtcBackendIdentity);
189
184
  }
190
185
  join(joinConfig) {
191
- var _joinConfig$manageMed, _joinConfig$unstableS, _joinConfig$useKeyDel, _joinConfig$keyRotati, _this$logger6;
192
- this.manageMediaKeys = (_joinConfig$manageMed = joinConfig === null || joinConfig === void 0 ? void 0 : joinConfig.manageMediaKeys) !== null && _joinConfig$manageMed !== void 0 ? _joinConfig$manageMed : true; // default to true
193
- this.useHashedRtcBackendIdentity = (_joinConfig$unstableS = joinConfig === null || joinConfig === void 0 ? void 0 : joinConfig.unstableSendStickyEvents) !== null && _joinConfig$unstableS !== void 0 ? _joinConfig$unstableS : false;
194
- this.useKeyDelay = (_joinConfig$useKeyDel = joinConfig === null || joinConfig === void 0 ? void 0 : joinConfig.useKeyDelay) !== null && _joinConfig$useKeyDel !== void 0 ? _joinConfig$useKeyDel : 1000;
195
- this.keyRotationGracePeriodMs = (_joinConfig$keyRotati = joinConfig === null || joinConfig === void 0 ? void 0 : joinConfig.keyRotationGracePeriodMs) !== null && _joinConfig$keyRotati !== void 0 ? _joinConfig$keyRotati : 10000;
186
+ this.manageMediaKeys = joinConfig?.manageMediaKeys ?? true; // default to true
187
+ this.useHashedRtcBackendIdentity = joinConfig?.unstableSendStickyEvents ?? false;
188
+ this.useKeyDelay = joinConfig?.useKeyDelay ?? 1000;
189
+ this.keyRotationGracePeriodMs = joinConfig?.keyRotationGracePeriodMs ?? 10000;
196
190
  this.transport.on(KeyTransportEvents.ReceivedKeys, this.onNewKeyReceived);
197
191
  void this.getOwnRtcBackendIdentity(); // precompute own identity
198
192
 
199
- (_this$logger6 = this.logger) === null || _this$logger6 === void 0 || _this$logger6.info("Joining room");
193
+ this.logger?.info(`Joining room`);
200
194
  this.transport.start();
201
195
  }
202
196
  leave() {
@@ -217,26 +211,22 @@ export class RTCEncryptionManager {
217
211
  // This will be done when removing the legacy EncryptionManager.
218
212
  if (!this.manageMediaKeys) return;
219
213
  if (this.currentKeyDistributionPromise == null) {
220
- var _this$logger7;
221
- (_this$logger7 = this.logger) === null || _this$logger7 === void 0 || _this$logger7.debug("No active rollout, start a new one");
214
+ this.logger?.debug(`No active rollout, start a new one`);
222
215
  // start a rollout
223
216
  this.currentKeyDistributionPromise = this.rolloutOutboundKey().then(() => {
224
- var _this$logger8;
225
- (_this$logger8 = this.logger) === null || _this$logger8 === void 0 || _this$logger8.debug("Rollout completed");
217
+ this.logger?.debug(`Rollout completed`);
226
218
  this.currentKeyDistributionPromise = null;
227
219
  if (this.needToEnsureKeyAgain) {
228
- var _this$logger9;
229
- (_this$logger9 = this.logger) === null || _this$logger9 === void 0 || _this$logger9.debug("New Rollout needed");
220
+ this.logger?.debug(`New Rollout needed`);
230
221
  this.needToEnsureKeyAgain = false;
231
222
  // rollout a new one
232
223
  this.ensureKeyDistribution();
233
224
  }
234
225
  });
235
226
  } else {
236
- var _this$logger0;
237
227
  // There is a rollout in progress, but a key rotation is requested (could be caused by a ownMembership change)
238
228
  // Remember that a new rotation is needed after the current one.
239
- (_this$logger0 = this.logger) === null || _this$logger0 === void 0 || _this$logger0.debug("Rollout in progress, a new rollout will be started after the current one");
229
+ this.logger?.debug(`Rollout in progress, a new rollout will be started after the current one`);
240
230
  this.needToEnsureKeyAgain = true;
241
231
  }
242
232
  }
@@ -245,10 +235,8 @@ export class RTCEncryptionManager {
245
235
  * This encryption manager is very basic, it will rotate the key everytime this is called.
246
236
  * @param oldMemberships - This parameter is not used here, but it is kept for compatibility with the interface.
247
237
  */
248
- onMembershipsUpdate() {
249
- var _this$logger1;
250
- var oldMemberships = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
251
- (_this$logger1 = this.logger) === null || _this$logger1 === void 0 || _this$logger1.trace("onMembershipsUpdate");
238
+ onMembershipsUpdate(oldMemberships = []) {
239
+ this.logger?.trace(`onMembershipsUpdate`);
252
240
 
253
241
  // Ensure the key is distributed. This will be no-op if the key is already being distributed to everyone.
254
242
  // If there is an ongoing distribution, it will be completed before a new one is started.
@@ -256,104 +244,94 @@ export class RTCEncryptionManager {
256
244
  // ensure key emission to the rtc backend
257
245
  this.checkKeysWithoutMatchingRTCMembership();
258
246
  }
259
- rolloutOutboundKey() {
260
- var _this2 = this;
261
- return _asyncToGenerator(function* () {
262
- var _this2$outboundSessio, _this2$outboundSessio2;
263
- var isFirstKey = _this2.outboundSession == null;
264
- if (isFirstKey) {
265
- // create the first key
266
- var firstKey = {
267
- key: _this2.generateRandomKey(),
268
- creationTS: Date.now(),
269
- sharedWith: [],
270
- keyId: 0
271
- };
272
- _this2.outboundSession = firstKey;
273
- _this2.addKeyToParticipantWithBackendIdentity(firstKey.key, firstKey.keyId, _this2.ownMembership, yield _this2.getOwnRtcBackendIdentity());
274
- }
275
- // get current memberships
276
- var toShareWith = _this2.getMemberships().filter(membership => {
277
- return membership.sender != undefined;
278
- }).map(membership => {
279
- return {
280
- userId: membership.sender,
281
- deviceId: membership.deviceId,
282
- membershipTs: membership.createdTs()
283
- };
284
- });
285
- var alreadySharedWith = (_this2$outboundSessio = (_this2$outboundSessio2 = _this2.outboundSession) === null || _this2$outboundSessio2 === void 0 ? void 0 : _this2$outboundSessio2.sharedWith) !== null && _this2$outboundSessio !== void 0 ? _this2$outboundSessio : [];
247
+ async rolloutOutboundKey() {
248
+ const isFirstKey = this.outboundSession == null;
249
+ if (isFirstKey) {
250
+ // create the first key
251
+ const firstKey = {
252
+ key: this.generateRandomKey(),
253
+ creationTS: Date.now(),
254
+ sharedWith: [],
255
+ keyId: 0
256
+ };
257
+ this.outboundSession = firstKey;
258
+ this.addKeyToParticipantWithBackendIdentity(firstKey.key, firstKey.keyId, this.ownMembership, await this.getOwnRtcBackendIdentity());
259
+ }
260
+ // get current memberships
261
+ const toShareWith = this.getMemberships().filter(membership => {
262
+ return membership.sender != undefined;
263
+ }).map(membership => {
264
+ return {
265
+ userId: membership.sender,
266
+ deviceId: membership.deviceId,
267
+ membershipTs: membership.createdTs()
268
+ };
269
+ });
270
+ let alreadySharedWith = this.outboundSession?.sharedWith ?? [];
286
271
 
287
- // Some users might have rotate their ownMembership event (formally called fingerprint) meaning they might have
288
- // clear their key. Reset the `alreadySharedWith` flag for them.
289
- alreadySharedWith = alreadySharedWith.filter(x =>
290
- // If there was a member with same userId and deviceId but different membershipTs, we need to clear it
291
- !toShareWith.some(o => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs != o.membershipTs));
292
- var anyLeft = alreadySharedWith.filter(x => !toShareWith.some(o => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs));
293
- var anyJoined = toShareWith.filter(x => !alreadySharedWith.some(o => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs));
294
- var toDistributeTo = [];
295
- var outboundKey;
296
- var hasKeyChanged = false;
297
- if (anyLeft.length > 0) {
272
+ // Some users might have rotate their ownMembership event (formally called fingerprint) meaning they might have
273
+ // clear their key. Reset the `alreadySharedWith` flag for them.
274
+ alreadySharedWith = alreadySharedWith.filter(x =>
275
+ // If there was a member with same userId and deviceId but different membershipTs, we need to clear it
276
+ !toShareWith.some(o => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs != o.membershipTs));
277
+ const anyLeft = alreadySharedWith.filter(x => !toShareWith.some(o => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs));
278
+ const anyJoined = toShareWith.filter(x => !alreadySharedWith.some(o => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs));
279
+ let toDistributeTo = [];
280
+ let outboundKey;
281
+ let hasKeyChanged = false;
282
+ if (anyLeft.length > 0) {
283
+ // We need to rotate the key
284
+ const newOutboundKey = this.createNewOutboundSession();
285
+ hasKeyChanged = true;
286
+ toDistributeTo = toShareWith;
287
+ outboundKey = newOutboundKey;
288
+ } else if (anyJoined.length > 0) {
289
+ const now = Date.now();
290
+ const keyAge = now - this.outboundSession.creationTS;
291
+ // If the current key is recently created (less than `keyRotationGracePeriodMs`), we can keep it and just distribute it to the new joiners.
292
+ if (keyAge < this.keyRotationGracePeriodMs) {
293
+ // keep the same key
294
+ // XXX In the future we want to distribute a ratcheted key, not the current one
295
+ this.logger?.debug(`New joiners detected, but the key is recent enough (age:${keyAge}), keeping it`);
296
+ toDistributeTo = anyJoined;
297
+ outboundKey = this.outboundSession;
298
+ } else {
298
299
  // We need to rotate the key
299
- var newOutboundKey = _this2.createNewOutboundSession();
300
+ this.logger?.debug(`New joiners detected, rotating the key`);
301
+ const newOutboundKey = this.createNewOutboundSession();
300
302
  hasKeyChanged = true;
301
303
  toDistributeTo = toShareWith;
302
304
  outboundKey = newOutboundKey;
303
- } else if (anyJoined.length > 0) {
304
- var now = Date.now();
305
- var keyAge = now - _this2.outboundSession.creationTS;
306
- // If the current key is recently created (less than `keyRotationGracePeriodMs`), we can keep it and just distribute it to the new joiners.
307
- if (keyAge < _this2.keyRotationGracePeriodMs) {
308
- var _this2$logger;
309
- // keep the same key
310
- // XXX In the future we want to distribute a ratcheted key, not the current one
311
- (_this2$logger = _this2.logger) === null || _this2$logger === void 0 || _this2$logger.debug("New joiners detected, but the key is recent enough (age:".concat(keyAge, "), keeping it"));
312
- toDistributeTo = anyJoined;
313
- outboundKey = _this2.outboundSession;
314
- } else {
315
- var _this2$logger2;
316
- // We need to rotate the key
317
- (_this2$logger2 = _this2.logger) === null || _this2$logger2 === void 0 || _this2$logger2.debug("New joiners detected, rotating the key");
318
- var _newOutboundKey = _this2.createNewOutboundSession();
319
- hasKeyChanged = true;
320
- toDistributeTo = toShareWith;
321
- outboundKey = _newOutboundKey;
322
- }
323
- } else {
324
- // no changes
325
- return;
326
305
  }
327
- try {
328
- var _this2$logger3, _this2$logger4;
329
- (_this2$logger3 = _this2.logger) === null || _this2$logger3 === void 0 || _this2$logger3.trace("Sending key...");
330
- yield _this2.transport.sendKey(encodeBase64(outboundKey.key), outboundKey.keyId, toDistributeTo);
331
- outboundKey.sharedWith.push(...toDistributeTo);
332
- (_this2$logger4 = _this2.logger) === null || _this2$logger4 === void 0 || _this2$logger4.trace("key index:".concat(outboundKey.keyId, " sent to ").concat(outboundKey.sharedWith.map(m => "".concat(m.userId, ":").concat(m.deviceId)).join(",")));
333
- if (hasKeyChanged) {
334
- var _this2$logger5, _this2$logger6;
335
- // Delay a bit before using this key
336
- // It is recommended not to start using a key immediately but instead wait for a short time to make sure it is delivered.
337
- (_this2$logger5 = _this2.logger) === null || _this2$logger5 === void 0 || _this2$logger5.trace("Delay Rollout for key:".concat(outboundKey.keyId, "..."));
338
- yield sleep(_this2.useKeyDelay);
339
- (_this2$logger6 = _this2.logger) === null || _this2$logger6 === void 0 || _this2$logger6.trace("...Delayed rollout of index:".concat(outboundKey.keyId, " "));
340
- _this2.addKeyToParticipantWithBackendIdentity(outboundKey.key, outboundKey.keyId, _this2.ownMembership, yield _this2.getOwnRtcBackendIdentity());
341
- }
342
- } catch (err) {
343
- var _this2$logger7;
344
- (_this2$logger7 = _this2.logger) === null || _this2$logger7 === void 0 || _this2$logger7.error("Failed to rollout key", err);
306
+ } else {
307
+ // no changes
308
+ return;
309
+ }
310
+ try {
311
+ this.logger?.trace(`Sending key...`);
312
+ await this.transport.sendKey(encodeBase64(outboundKey.key), outboundKey.keyId, toDistributeTo);
313
+ outboundKey.sharedWith.push(...toDistributeTo);
314
+ this.logger?.trace(`key index:${outboundKey.keyId} sent to ${outboundKey.sharedWith.map(m => `${m.userId}:${m.deviceId}`).join(",")}`);
315
+ if (hasKeyChanged) {
316
+ // Delay a bit before using this key
317
+ // It is recommended not to start using a key immediately but instead wait for a short time to make sure it is delivered.
318
+ this.logger?.trace(`Delay Rollout for key:${outboundKey.keyId}...`);
319
+ await sleep(this.useKeyDelay);
320
+ this.logger?.trace(`...Delayed rollout of index:${outboundKey.keyId} `);
321
+ this.addKeyToParticipantWithBackendIdentity(outboundKey.key, outboundKey.keyId, this.ownMembership, await this.getOwnRtcBackendIdentity());
345
322
  }
346
- })();
323
+ } catch (err) {
324
+ this.logger?.error(`Failed to rollout key`, err);
325
+ }
347
326
  }
348
327
  createNewOutboundSession() {
349
- var _this$logger10;
350
- var newOutboundKey = {
328
+ const newOutboundKey = {
351
329
  key: this.generateRandomKey(),
352
330
  creationTS: Date.now(),
353
331
  sharedWith: [],
354
332
  keyId: this.nextKeyIndex()
355
333
  };
356
- (_this$logger10 = this.logger) === null || _this$logger10 === void 0 || _this$logger10.info("creating new outbound key index:".concat(newOutboundKey.keyId));
334
+ this.logger?.info(`creating new outbound key index:${newOutboundKey.keyId}`);
357
335
  // Set this new key as the current one
358
336
  this.outboundSession = newOutboundKey;
359
337
  return newOutboundKey;
@@ -365,7 +343,7 @@ export class RTCEncryptionManager {
365
343
  return 0;
366
344
  }
367
345
  generateRandomKey() {
368
- var key = new Uint8Array(16);
346
+ const key = new Uint8Array(16);
369
347
  globalThis.crypto.getRandomValues(key);
370
348
  return key;
371
349
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RTCEncryptionManager.js","names":["getEncryptionKeyMapKey","decodeBase64","encodeBase64","KeyTransportEvents","sleep","OutdatedKeyFilter","computeRtcIdentityRaw","RTCEncryptionManager","constructor","ownMembership","getMemberships","transport","onEncryptionKeysChanged","parentLogger","rtcBackendIdProvider","_defineProperty","Map","undefined","membership","keyBase64Encoded","index","timestamp","_this$logger2","manageMediaKeys","_this$logger","logger","warn","concat","userId","deviceId","debug","keyBin","candidateInboundSession","key","keyIndex","creationTS","outdated","keyBuffer","isOutdated","addKeyToParticipant","_this$logger3","info","getChild","rtcIdentityProvider","getOwnRtcBackendIdentity","_this","_asyncToGenerator","ownRtcBackendIdentityCache","useHashedRtcBackendIdentity","_this$logger4","_this$ownMembership","memberId","getEncryptionKeys","participantKeyRings","checkKeysWithoutMatchingRTCMembership","keyInfoTemp","keysWithoutMatchingRTCMembership","forEach","keyInfo","knownRtcMembership","fullMembership","find","member","_this$logger5","push","addKeyToParticipantWithBackendIdentity","rtcBackendIdentity","mapKey","has","set","get","join","joinConfig","_joinConfig$manageMed","_joinConfig$unstableS","_joinConfig$useKeyDel","_joinConfig$keyRotati","_this$logger6","unstableSendStickyEvents","useKeyDelay","keyRotationGracePeriodMs","on","ReceivedKeys","onNewKeyReceived","start","leave","off","stop","clear","ensureKeyDistribution","currentKeyDistributionPromise","_this$logger7","rolloutOutboundKey","then","_this$logger8","needToEnsureKeyAgain","_this$logger9","_this$logger0","onMembershipsUpdate","_this$logger1","oldMemberships","arguments","length","trace","_this2","_this2$outboundSessio","_this2$outboundSessio2","isFirstKey","outboundSession","firstKey","generateRandomKey","Date","now","sharedWith","keyId","toShareWith","filter","sender","map","membershipTs","createdTs","alreadySharedWith","x","some","o","anyLeft","anyJoined","toDistributeTo","outboundKey","hasKeyChanged","newOutboundKey","createNewOutboundSession","keyAge","_this2$logger","_this2$logger2","_this2$logger3","_this2$logger4","sendKey","m","_this2$logger5","_this2$logger6","err","_this2$logger7","error","_this$logger10","nextKeyIndex","Uint8Array","globalThis","crypto","getRandomValues"],"sources":["../../src/matrixrtc/RTCEncryptionManager.ts"],"sourcesContent":["/*\nCopyright 2025-2026 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n type CallMembershipIdentityParts,\n getEncryptionKeyMapKey,\n type IEncryptionManager,\n} from \"./EncryptionManager.ts\";\nimport { type EncryptionConfig, type MembershipConfig } from \"./MatrixRTCSession.ts\";\nimport type { CallMembership } from \"./CallMembership.ts\";\nimport { decodeBase64, encodeBase64 } from \"../base64.ts\";\nimport { type IKeyTransport, type KeyTransportEventListener, KeyTransportEvents } from \"./IKeyTransport.ts\";\nimport { type Logger } from \"../logger.ts\";\nimport { sleep } from \"../utils.ts\";\nimport {\n type EncryptionKeyMapKey,\n type InboundEncryptionSession,\n type OutboundEncryptionSession,\n type ParticipantDeviceInfo,\n} from \"./types.ts\";\nimport { OutdatedKeyFilter } from \"./utils.ts\";\nimport { computeRtcIdentityRaw } from \"./membershipData/rtc.ts\";\n\n/**\n * RTCEncryptionManager is used to manage the encryption keys for a call.\n *\n * It is responsible for distributing the keys to the other participants and rotating the keys if needed.\n *\n * This manager when used with to-device transport will share the existing key only to new joiners, and rotate\n * if there is a leaver.\n *\n * XXX In the future we want to distribute a ratcheted key not the current one for new joiners.\n */\nexport class RTCEncryptionManager implements IEncryptionManager {\n // This is a stop-gap solution for now. The preferred way to handle this case would be instead\n // to create a NoOpEncryptionManager that does nothing and use it for the session.\n // This will be done when removing the legacy EncryptionManager.\n private manageMediaKeys = false;\n\n private useHashedRtcBackendIdentity = false;\n private ownRtcBackendIdentityCache: string | undefined;\n\n /**\n * Store the key rings for each participant.\n * The encryption manager stores the keys because the application layer might not be ready yet to handle the keys.\n * The keys are stored and can be retrieved later when the application layer is ready {@link RTCEncryptionManager#getEncryptionKeys}.\n */\n private readonly participantKeyRings = new Map<\n EncryptionKeyMapKey,\n Array<{\n key: Uint8Array<ArrayBuffer>;\n keyIndex: number;\n membership: CallMembershipIdentityParts;\n rtcBackendIdentity: string;\n }>\n >();\n\n // The current per-sender media key for this device\n private outboundSession: OutboundEncryptionSession | null = null;\n\n /**\n * Ensures that there is only one distribute operation at a time for that call.\n */\n private currentKeyDistributionPromise: Promise<void> | null = null;\n\n /**\n * The time to wait before using the outbound session after it has been distributed.\n * This is to ensure that the key is delivered to all participants before it is used.\n * When creating the first key, this is set to 0 so that the key can be used immediately.\n */\n private useKeyDelay = 5000;\n\n /**\n * We want to avoid rolling out a new outbound key when the previous one was created less than `keyRotationGracePeriodMs` milliseconds ago.\n * This is to avoid expensive key rotations when users quickly join the call in a row.\n *\n * This must be higher than `useKeyDelay` to have an effect.\n * If it is lower, the current key will always be older than the grace period.\n * @private\n */\n private keyRotationGracePeriodMs = 10_000;\n\n /**\n * If a new key distribution is being requested while one is going on, we will set this flag to true.\n * This will ensure that a new round is started after the current one.\n * @private\n */\n private needToEnsureKeyAgain = false;\n\n /**\n * There is a possibility that keys arrive in the wrong order.\n * For example, after a quick join/leave/join, there will be 2 keys of index 0 distributed, and\n * if they are received in the wrong order, the stream won't be decryptable.\n * For that reason we keep a small buffer of keys for a limited time to disambiguate.\n * @private\n */\n private keyBuffer = new OutdatedKeyFilter();\n\n private logger: Logger | undefined = undefined;\n\n private readonly rtcIdentityProvider: (userId: string, deviceId: string, memberId: string) => Promise<string>;\n\n /**\n *\n * @param ownMembership - our own membership info\n * @param getMemberships - function to get current memberships\n * @param transport - key transport (room or to-device)\n * @param statistics - statistics collector\n * @param onEncryptionKeysChanged - callback to notify the media layer of new keys\n * @param parentLogger - optional parent logger\n * @param rtcBackendIdProvider - A function to compute the rtc backend identity, exposed for testing purposes\n */\n public constructor(\n private readonly ownMembership: CallMembershipIdentityParts,\n private getMemberships: () => CallMembership[],\n private transport: IKeyTransport,\n // Callback to notify the media layer of new keys\n private onEncryptionKeysChanged: (\n keyBin: Uint8Array<ArrayBuffer>,\n encryptionKeyIndex: number,\n membership: CallMembershipIdentityParts,\n rtcBackendIdentity: string,\n ) => void,\n parentLogger?: Logger,\n rtcBackendIdProvider?: (userId: string, deviceId: string, memberId: string) => Promise<string>,\n ) {\n this.logger = parentLogger?.getChild(`[EncryptionManager]`);\n this.rtcIdentityProvider = rtcBackendIdProvider ?? computeRtcIdentityRaw;\n }\n\n private async getOwnRtcBackendIdentity(): Promise<string> {\n if (this.ownRtcBackendIdentityCache) return this.ownRtcBackendIdentityCache;\n\n if (this.useHashedRtcBackendIdentity) {\n const { userId, deviceId, memberId } = this.ownMembership;\n this.logger?.info(\n // If we see this log multiple times, we need to reconsider the precompute call of getOwnRtcBackendIdentity\n `Computing RTC backend identity for ${userId}:${deviceId}:${memberId} (SHOULD ONLY BE CALLED ONCE)`,\n );\n this.ownRtcBackendIdentityCache = await this.rtcIdentityProvider(userId, deviceId, memberId);\n } else {\n this.ownRtcBackendIdentityCache = `${this.ownMembership.userId}:${this.ownMembership.deviceId}`;\n }\n return this.ownRtcBackendIdentityCache;\n }\n\n public getEncryptionKeys(): ReadonlyMap<\n EncryptionKeyMapKey,\n ReadonlyArray<{\n key: Uint8Array<ArrayBuffer>;\n keyIndex: number;\n membership: CallMembershipIdentityParts;\n rtcBackendIdentity: string;\n }>\n > {\n return new Map(this.participantKeyRings);\n }\n\n private keysWithoutMatchingRTCMembership: Array<{\n key: Uint8Array<ArrayBuffer>;\n keyIndex: number;\n membership: CallMembershipIdentityParts;\n }> = [];\n\n private checkKeysWithoutMatchingRTCMembership(): void {\n const keyInfoTemp = this.keysWithoutMatchingRTCMembership;\n this.keysWithoutMatchingRTCMembership = [];\n keyInfoTemp.forEach((keyInfo) => {\n this.addKeyToParticipant(keyInfo.key, keyInfo.keyIndex, keyInfo.membership);\n });\n }\n\n private addKeyToParticipant(\n key: Uint8Array<ArrayBuffer>,\n keyIndex: number,\n membership: CallMembershipIdentityParts,\n ): void {\n const knownRtcMembership = this.getMemberships();\n const fullMembership = knownRtcMembership.find(\n (member) => member.userId === membership.userId && member.deviceId === membership.deviceId,\n );\n if (!fullMembership) {\n this.logger?.info(\n `No matching RTC membership for key from ${membership.userId}:${membership.deviceId}, delaying key addition`,\n );\n this.keysWithoutMatchingRTCMembership.push({ key, keyIndex, membership });\n return;\n }\n this.addKeyToParticipantWithBackendIdentity(key, keyIndex, membership, fullMembership.rtcBackendIdentity);\n }\n\n private addKeyToParticipantWithBackendIdentity(\n key: Uint8Array<ArrayBuffer>,\n keyIndex: number,\n membership: CallMembershipIdentityParts,\n rtcBackendIdentity: string,\n ): void {\n const mapKey = getEncryptionKeyMapKey(membership);\n if (!this.participantKeyRings.has(mapKey)) {\n this.participantKeyRings.set(mapKey, []);\n }\n this.participantKeyRings.get(mapKey)!.push({ key, keyIndex, membership, rtcBackendIdentity });\n this.onEncryptionKeysChanged(key, keyIndex, membership, rtcBackendIdentity);\n }\n\n public join(joinConfig: (EncryptionConfig & MembershipConfig) | undefined): void {\n this.manageMediaKeys = joinConfig?.manageMediaKeys ?? true; // default to true\n this.useHashedRtcBackendIdentity = joinConfig?.unstableSendStickyEvents ?? false;\n this.useKeyDelay = joinConfig?.useKeyDelay ?? 1000;\n this.keyRotationGracePeriodMs = joinConfig?.keyRotationGracePeriodMs ?? 10_000;\n\n this.transport.on(KeyTransportEvents.ReceivedKeys, this.onNewKeyReceived);\n void this.getOwnRtcBackendIdentity(); // precompute own identity\n\n this.logger?.info(`Joining room`);\n this.transport.start();\n }\n\n public leave(): void {\n this.transport.off(KeyTransportEvents.ReceivedKeys, this.onNewKeyReceived);\n this.transport.stop();\n this.participantKeyRings.clear();\n }\n\n /**\n * Will ensure that a new key is distributed and used to encrypt our media.\n * If there is already a key distribution in progress, it will schedule a new distribution round just after the current one is completed.\n * If this function is called repeatedly while a distribution is in progress,\n * the calls will be coalesced to a single new distribution (that will start just after the current one has completed).\n */\n private ensureKeyDistribution(): void {\n // `manageMediaKeys` is a stop-gap solution for now. The preferred way to handle this case would be instead\n // to create a NoOpEncryptionManager that does nothing and use it for the session.\n // This will be done when removing the legacy EncryptionManager.\n if (!this.manageMediaKeys) return;\n if (this.currentKeyDistributionPromise == null) {\n this.logger?.debug(`No active rollout, start a new one`);\n // start a rollout\n this.currentKeyDistributionPromise = this.rolloutOutboundKey().then(() => {\n this.logger?.debug(`Rollout completed`);\n this.currentKeyDistributionPromise = null;\n if (this.needToEnsureKeyAgain) {\n this.logger?.debug(`New Rollout needed`);\n this.needToEnsureKeyAgain = false;\n // rollout a new one\n this.ensureKeyDistribution();\n }\n });\n } else {\n // There is a rollout in progress, but a key rotation is requested (could be caused by a ownMembership change)\n // Remember that a new rotation is needed after the current one.\n this.logger?.debug(`Rollout in progress, a new rollout will be started after the current one`);\n this.needToEnsureKeyAgain = true;\n }\n }\n\n public onNewKeyReceived: KeyTransportEventListener = (membership, keyBase64Encoded, index, timestamp) => {\n // `manageMediaKeys` is a stop-gap solution for now. The preferred way to handle this case would be instead\n // to create a NoOpEncryptionManager that does nothing and use it for the session.\n // This will be done when removing the legacy EncryptionManager.\n if (!this.manageMediaKeys) {\n this.logger?.warn(\n `Received key over transport ${membership.userId}:${membership.deviceId} at index ${index} but media keys are disabled`,\n );\n return;\n }\n this.logger?.debug(`Received key over transport ${membership.userId}:${membership.deviceId} at index ${index}`);\n\n // We received a new key, notify the video layer of this new key so that it can decrypt the frames properly.\n const keyBin = decodeBase64(keyBase64Encoded);\n const candidateInboundSession: InboundEncryptionSession = {\n key: keyBin,\n membership,\n keyIndex: index,\n creationTS: timestamp,\n };\n\n const outdated = this.keyBuffer.isOutdated(membership, candidateInboundSession);\n if (!outdated) {\n this.addKeyToParticipant(\n candidateInboundSession.key,\n candidateInboundSession.keyIndex,\n candidateInboundSession.membership,\n );\n } else {\n this.logger?.info(\n `Received an out of order key for ${membership.userId}:${membership.deviceId}, dropping it`,\n );\n }\n };\n\n /**\n * Called when the ownMembership of the call changes.\n * This encryption manager is very basic, it will rotate the key everytime this is called.\n * @param oldMemberships - This parameter is not used here, but it is kept for compatibility with the interface.\n */\n public onMembershipsUpdate(oldMemberships: CallMembership[] = []): void {\n this.logger?.trace(`onMembershipsUpdate`);\n\n // Ensure the key is distributed. This will be no-op if the key is already being distributed to everyone.\n // If there is an ongoing distribution, it will be completed before a new one is started.\n this.ensureKeyDistribution();\n // ensure key emission to the rtc backend\n this.checkKeysWithoutMatchingRTCMembership();\n }\n\n private async rolloutOutboundKey(): Promise<void> {\n const isFirstKey = this.outboundSession == null;\n if (isFirstKey) {\n // create the first key\n const firstKey = {\n key: this.generateRandomKey(),\n creationTS: Date.now(),\n sharedWith: [],\n keyId: 0,\n };\n this.outboundSession = firstKey;\n this.addKeyToParticipantWithBackendIdentity(\n firstKey.key,\n firstKey.keyId,\n this.ownMembership,\n await this.getOwnRtcBackendIdentity(),\n );\n }\n // get current memberships\n const toShareWith: ParticipantDeviceInfo[] = this.getMemberships()\n .filter((membership) => {\n return membership.sender != undefined;\n })\n .map((membership) => {\n return {\n userId: membership.sender!,\n deviceId: membership.deviceId,\n membershipTs: membership.createdTs(),\n };\n });\n\n let alreadySharedWith = this.outboundSession?.sharedWith ?? [];\n\n // Some users might have rotate their ownMembership event (formally called fingerprint) meaning they might have\n // clear their key. Reset the `alreadySharedWith` flag for them.\n alreadySharedWith = alreadySharedWith.filter(\n (x) =>\n // If there was a member with same userId and deviceId but different membershipTs, we need to clear it\n !toShareWith.some(\n (o) => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs != o.membershipTs,\n ),\n );\n\n const anyLeft = alreadySharedWith.filter(\n (x) =>\n !toShareWith.some(\n (o) => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs,\n ),\n );\n const anyJoined = toShareWith.filter(\n (x) =>\n !alreadySharedWith.some(\n (o) => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs,\n ),\n );\n\n let toDistributeTo: ParticipantDeviceInfo[] = [];\n let outboundKey: OutboundEncryptionSession;\n let hasKeyChanged = false;\n if (anyLeft.length > 0) {\n // We need to rotate the key\n const newOutboundKey = this.createNewOutboundSession();\n hasKeyChanged = true;\n toDistributeTo = toShareWith;\n outboundKey = newOutboundKey;\n } else if (anyJoined.length > 0) {\n const now = Date.now();\n const keyAge = now - this.outboundSession!.creationTS;\n // If the current key is recently created (less than `keyRotationGracePeriodMs`), we can keep it and just distribute it to the new joiners.\n if (keyAge < this.keyRotationGracePeriodMs) {\n // keep the same key\n // XXX In the future we want to distribute a ratcheted key, not the current one\n this.logger?.debug(`New joiners detected, but the key is recent enough (age:${keyAge}), keeping it`);\n toDistributeTo = anyJoined;\n outboundKey = this.outboundSession!;\n } else {\n // We need to rotate the key\n this.logger?.debug(`New joiners detected, rotating the key`);\n const newOutboundKey = this.createNewOutboundSession();\n hasKeyChanged = true;\n toDistributeTo = toShareWith;\n outboundKey = newOutboundKey;\n }\n } else {\n // no changes\n return;\n }\n\n try {\n this.logger?.trace(`Sending key...`);\n await this.transport.sendKey(encodeBase64(outboundKey.key), outboundKey.keyId, toDistributeTo);\n outboundKey.sharedWith.push(...toDistributeTo);\n this.logger?.trace(\n `key index:${outboundKey.keyId} sent to ${outboundKey.sharedWith.map((m) => `${m.userId}:${m.deviceId}`).join(\",\")}`,\n );\n if (hasKeyChanged) {\n // Delay a bit before using this key\n // It is recommended not to start using a key immediately but instead wait for a short time to make sure it is delivered.\n this.logger?.trace(`Delay Rollout for key:${outboundKey.keyId}...`);\n await sleep(this.useKeyDelay);\n this.logger?.trace(`...Delayed rollout of index:${outboundKey.keyId} `);\n this.addKeyToParticipantWithBackendIdentity(\n outboundKey.key,\n outboundKey.keyId,\n this.ownMembership,\n await this.getOwnRtcBackendIdentity(),\n );\n }\n } catch (err) {\n this.logger?.error(`Failed to rollout key`, err);\n }\n }\n\n private createNewOutboundSession(): OutboundEncryptionSession {\n const newOutboundKey: OutboundEncryptionSession = {\n key: this.generateRandomKey(),\n creationTS: Date.now(),\n sharedWith: [],\n keyId: this.nextKeyIndex(),\n };\n\n this.logger?.info(`creating new outbound key index:${newOutboundKey.keyId}`);\n // Set this new key as the current one\n this.outboundSession = newOutboundKey;\n return newOutboundKey;\n }\n\n private nextKeyIndex(): number {\n if (this.outboundSession) {\n return (this.outboundSession!.keyId + 1) % 256;\n }\n return 0;\n }\n\n private generateRandomKey(): Uint8Array<ArrayBuffer> {\n const key = new Uint8Array(16);\n globalThis.crypto.getRandomValues(key);\n return key;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"RTCEncryptionManager.js","names":[],"sources":["../../src/matrixrtc/RTCEncryptionManager.ts"],"sourcesContent":["/*\nCopyright 2025-2026 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {\n type CallMembershipIdentityParts,\n getEncryptionKeyMapKey,\n type IEncryptionManager,\n} from \"./EncryptionManager.ts\";\nimport { type EncryptionConfig, type MembershipConfig } from \"./MatrixRTCSession.ts\";\nimport type { CallMembership } from \"./CallMembership.ts\";\nimport { decodeBase64, encodeBase64 } from \"../base64.ts\";\nimport { type IKeyTransport, type KeyTransportEventListener, KeyTransportEvents } from \"./IKeyTransport.ts\";\nimport { type Logger } from \"../logger.ts\";\nimport { sleep } from \"../utils.ts\";\nimport {\n type EncryptionKeyMapKey,\n type InboundEncryptionSession,\n type OutboundEncryptionSession,\n type ParticipantDeviceInfo,\n} from \"./types.ts\";\nimport { OutdatedKeyFilter } from \"./utils.ts\";\nimport { computeRtcIdentityRaw } from \"./membershipData/rtc.ts\";\n\n/**\n * RTCEncryptionManager is used to manage the encryption keys for a call.\n *\n * It is responsible for distributing the keys to the other participants and rotating the keys if needed.\n *\n * This manager when used with to-device transport will share the existing key only to new joiners, and rotate\n * if there is a leaver.\n *\n * XXX In the future we want to distribute a ratcheted key not the current one for new joiners.\n */\nexport class RTCEncryptionManager implements IEncryptionManager {\n // This is a stop-gap solution for now. The preferred way to handle this case would be instead\n // to create a NoOpEncryptionManager that does nothing and use it for the session.\n // This will be done when removing the legacy EncryptionManager.\n private manageMediaKeys = false;\n\n private useHashedRtcBackendIdentity = false;\n private ownRtcBackendIdentityCache: string | undefined;\n\n /**\n * Store the key rings for each participant.\n * The encryption manager stores the keys because the application layer might not be ready yet to handle the keys.\n * The keys are stored and can be retrieved later when the application layer is ready {@link RTCEncryptionManager#getEncryptionKeys}.\n */\n private readonly participantKeyRings = new Map<\n EncryptionKeyMapKey,\n Array<{\n key: Uint8Array<ArrayBuffer>;\n keyIndex: number;\n membership: CallMembershipIdentityParts;\n rtcBackendIdentity: string;\n }>\n >();\n\n // The current per-sender media key for this device\n private outboundSession: OutboundEncryptionSession | null = null;\n\n /**\n * Ensures that there is only one distribute operation at a time for that call.\n */\n private currentKeyDistributionPromise: Promise<void> | null = null;\n\n /**\n * The time to wait before using the outbound session after it has been distributed.\n * This is to ensure that the key is delivered to all participants before it is used.\n * When creating the first key, this is set to 0 so that the key can be used immediately.\n */\n private useKeyDelay = 5000;\n\n /**\n * We want to avoid rolling out a new outbound key when the previous one was created less than `keyRotationGracePeriodMs` milliseconds ago.\n * This is to avoid expensive key rotations when users quickly join the call in a row.\n *\n * This must be higher than `useKeyDelay` to have an effect.\n * If it is lower, the current key will always be older than the grace period.\n * @private\n */\n private keyRotationGracePeriodMs = 10_000;\n\n /**\n * If a new key distribution is being requested while one is going on, we will set this flag to true.\n * This will ensure that a new round is started after the current one.\n * @private\n */\n private needToEnsureKeyAgain = false;\n\n /**\n * There is a possibility that keys arrive in the wrong order.\n * For example, after a quick join/leave/join, there will be 2 keys of index 0 distributed, and\n * if they are received in the wrong order, the stream won't be decryptable.\n * For that reason we keep a small buffer of keys for a limited time to disambiguate.\n * @private\n */\n private keyBuffer = new OutdatedKeyFilter();\n\n private logger: Logger | undefined = undefined;\n\n private readonly rtcIdentityProvider: (userId: string, deviceId: string, memberId: string) => Promise<string>;\n\n /**\n *\n * @param ownMembership - our own membership info\n * @param getMemberships - function to get current memberships\n * @param transport - key transport (room or to-device)\n * @param statistics - statistics collector\n * @param onEncryptionKeysChanged - callback to notify the media layer of new keys\n * @param parentLogger - optional parent logger\n * @param rtcBackendIdProvider - A function to compute the rtc backend identity, exposed for testing purposes\n */\n public constructor(\n private readonly ownMembership: CallMembershipIdentityParts,\n private getMemberships: () => CallMembership[],\n private transport: IKeyTransport,\n // Callback to notify the media layer of new keys\n private onEncryptionKeysChanged: (\n keyBin: Uint8Array<ArrayBuffer>,\n encryptionKeyIndex: number,\n membership: CallMembershipIdentityParts,\n rtcBackendIdentity: string,\n ) => void,\n parentLogger?: Logger,\n rtcBackendIdProvider?: (userId: string, deviceId: string, memberId: string) => Promise<string>,\n ) {\n this.logger = parentLogger?.getChild(`[EncryptionManager]`);\n this.rtcIdentityProvider = rtcBackendIdProvider ?? computeRtcIdentityRaw;\n }\n\n private async getOwnRtcBackendIdentity(): Promise<string> {\n if (this.ownRtcBackendIdentityCache) return this.ownRtcBackendIdentityCache;\n\n if (this.useHashedRtcBackendIdentity) {\n const { userId, deviceId, memberId } = this.ownMembership;\n this.logger?.info(\n // If we see this log multiple times, we need to reconsider the precompute call of getOwnRtcBackendIdentity\n `Computing RTC backend identity for ${userId}:${deviceId}:${memberId} (SHOULD ONLY BE CALLED ONCE)`,\n );\n this.ownRtcBackendIdentityCache = await this.rtcIdentityProvider(userId, deviceId, memberId);\n } else {\n this.ownRtcBackendIdentityCache = `${this.ownMembership.userId}:${this.ownMembership.deviceId}`;\n }\n return this.ownRtcBackendIdentityCache;\n }\n\n public getEncryptionKeys(): ReadonlyMap<\n EncryptionKeyMapKey,\n ReadonlyArray<{\n key: Uint8Array<ArrayBuffer>;\n keyIndex: number;\n membership: CallMembershipIdentityParts;\n rtcBackendIdentity: string;\n }>\n > {\n return new Map(this.participantKeyRings);\n }\n\n private keysWithoutMatchingRTCMembership: Array<{\n key: Uint8Array<ArrayBuffer>;\n keyIndex: number;\n membership: CallMembershipIdentityParts;\n }> = [];\n\n private checkKeysWithoutMatchingRTCMembership(): void {\n const keyInfoTemp = this.keysWithoutMatchingRTCMembership;\n this.keysWithoutMatchingRTCMembership = [];\n keyInfoTemp.forEach((keyInfo) => {\n this.addKeyToParticipant(keyInfo.key, keyInfo.keyIndex, keyInfo.membership);\n });\n }\n\n private addKeyToParticipant(\n key: Uint8Array<ArrayBuffer>,\n keyIndex: number,\n membership: CallMembershipIdentityParts,\n ): void {\n const knownRtcMembership = this.getMemberships();\n const fullMembership = knownRtcMembership.find(\n (member) => member.userId === membership.userId && member.deviceId === membership.deviceId,\n );\n if (!fullMembership) {\n this.logger?.info(\n `No matching RTC membership for key from ${membership.userId}:${membership.deviceId}, delaying key addition`,\n );\n this.keysWithoutMatchingRTCMembership.push({ key, keyIndex, membership });\n return;\n }\n this.addKeyToParticipantWithBackendIdentity(key, keyIndex, membership, fullMembership.rtcBackendIdentity);\n }\n\n private addKeyToParticipantWithBackendIdentity(\n key: Uint8Array<ArrayBuffer>,\n keyIndex: number,\n membership: CallMembershipIdentityParts,\n rtcBackendIdentity: string,\n ): void {\n const mapKey = getEncryptionKeyMapKey(membership);\n if (!this.participantKeyRings.has(mapKey)) {\n this.participantKeyRings.set(mapKey, []);\n }\n this.participantKeyRings.get(mapKey)!.push({ key, keyIndex, membership, rtcBackendIdentity });\n this.onEncryptionKeysChanged(key, keyIndex, membership, rtcBackendIdentity);\n }\n\n public join(joinConfig: (EncryptionConfig & MembershipConfig) | undefined): void {\n this.manageMediaKeys = joinConfig?.manageMediaKeys ?? true; // default to true\n this.useHashedRtcBackendIdentity = joinConfig?.unstableSendStickyEvents ?? false;\n this.useKeyDelay = joinConfig?.useKeyDelay ?? 1000;\n this.keyRotationGracePeriodMs = joinConfig?.keyRotationGracePeriodMs ?? 10_000;\n\n this.transport.on(KeyTransportEvents.ReceivedKeys, this.onNewKeyReceived);\n void this.getOwnRtcBackendIdentity(); // precompute own identity\n\n this.logger?.info(`Joining room`);\n this.transport.start();\n }\n\n public leave(): void {\n this.transport.off(KeyTransportEvents.ReceivedKeys, this.onNewKeyReceived);\n this.transport.stop();\n this.participantKeyRings.clear();\n }\n\n /**\n * Will ensure that a new key is distributed and used to encrypt our media.\n * If there is already a key distribution in progress, it will schedule a new distribution round just after the current one is completed.\n * If this function is called repeatedly while a distribution is in progress,\n * the calls will be coalesced to a single new distribution (that will start just after the current one has completed).\n */\n private ensureKeyDistribution(): void {\n // `manageMediaKeys` is a stop-gap solution for now. The preferred way to handle this case would be instead\n // to create a NoOpEncryptionManager that does nothing and use it for the session.\n // This will be done when removing the legacy EncryptionManager.\n if (!this.manageMediaKeys) return;\n if (this.currentKeyDistributionPromise == null) {\n this.logger?.debug(`No active rollout, start a new one`);\n // start a rollout\n this.currentKeyDistributionPromise = this.rolloutOutboundKey().then(() => {\n this.logger?.debug(`Rollout completed`);\n this.currentKeyDistributionPromise = null;\n if (this.needToEnsureKeyAgain) {\n this.logger?.debug(`New Rollout needed`);\n this.needToEnsureKeyAgain = false;\n // rollout a new one\n this.ensureKeyDistribution();\n }\n });\n } else {\n // There is a rollout in progress, but a key rotation is requested (could be caused by a ownMembership change)\n // Remember that a new rotation is needed after the current one.\n this.logger?.debug(`Rollout in progress, a new rollout will be started after the current one`);\n this.needToEnsureKeyAgain = true;\n }\n }\n\n public onNewKeyReceived: KeyTransportEventListener = (membership, keyBase64Encoded, index, timestamp) => {\n // `manageMediaKeys` is a stop-gap solution for now. The preferred way to handle this case would be instead\n // to create a NoOpEncryptionManager that does nothing and use it for the session.\n // This will be done when removing the legacy EncryptionManager.\n if (!this.manageMediaKeys) {\n this.logger?.warn(\n `Received key over transport ${membership.userId}:${membership.deviceId} at index ${index} but media keys are disabled`,\n );\n return;\n }\n this.logger?.debug(`Received key over transport ${membership.userId}:${membership.deviceId} at index ${index}`);\n\n // We received a new key, notify the video layer of this new key so that it can decrypt the frames properly.\n const keyBin = decodeBase64(keyBase64Encoded);\n const candidateInboundSession: InboundEncryptionSession = {\n key: keyBin,\n membership,\n keyIndex: index,\n creationTS: timestamp,\n };\n\n const outdated = this.keyBuffer.isOutdated(membership, candidateInboundSession);\n if (!outdated) {\n this.addKeyToParticipant(\n candidateInboundSession.key,\n candidateInboundSession.keyIndex,\n candidateInboundSession.membership,\n );\n } else {\n this.logger?.info(\n `Received an out of order key for ${membership.userId}:${membership.deviceId}, dropping it`,\n );\n }\n };\n\n /**\n * Called when the ownMembership of the call changes.\n * This encryption manager is very basic, it will rotate the key everytime this is called.\n * @param oldMemberships - This parameter is not used here, but it is kept for compatibility with the interface.\n */\n public onMembershipsUpdate(oldMemberships: CallMembership[] = []): void {\n this.logger?.trace(`onMembershipsUpdate`);\n\n // Ensure the key is distributed. This will be no-op if the key is already being distributed to everyone.\n // If there is an ongoing distribution, it will be completed before a new one is started.\n this.ensureKeyDistribution();\n // ensure key emission to the rtc backend\n this.checkKeysWithoutMatchingRTCMembership();\n }\n\n private async rolloutOutboundKey(): Promise<void> {\n const isFirstKey = this.outboundSession == null;\n if (isFirstKey) {\n // create the first key\n const firstKey = {\n key: this.generateRandomKey(),\n creationTS: Date.now(),\n sharedWith: [],\n keyId: 0,\n };\n this.outboundSession = firstKey;\n this.addKeyToParticipantWithBackendIdentity(\n firstKey.key,\n firstKey.keyId,\n this.ownMembership,\n await this.getOwnRtcBackendIdentity(),\n );\n }\n // get current memberships\n const toShareWith: ParticipantDeviceInfo[] = this.getMemberships()\n .filter((membership) => {\n return membership.sender != undefined;\n })\n .map((membership) => {\n return {\n userId: membership.sender!,\n deviceId: membership.deviceId,\n membershipTs: membership.createdTs(),\n };\n });\n\n let alreadySharedWith = this.outboundSession?.sharedWith ?? [];\n\n // Some users might have rotate their ownMembership event (formally called fingerprint) meaning they might have\n // clear their key. Reset the `alreadySharedWith` flag for them.\n alreadySharedWith = alreadySharedWith.filter(\n (x) =>\n // If there was a member with same userId and deviceId but different membershipTs, we need to clear it\n !toShareWith.some(\n (o) => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs != o.membershipTs,\n ),\n );\n\n const anyLeft = alreadySharedWith.filter(\n (x) =>\n !toShareWith.some(\n (o) => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs,\n ),\n );\n const anyJoined = toShareWith.filter(\n (x) =>\n !alreadySharedWith.some(\n (o) => x.userId == o.userId && x.deviceId == o.deviceId && x.membershipTs == o.membershipTs,\n ),\n );\n\n let toDistributeTo: ParticipantDeviceInfo[] = [];\n let outboundKey: OutboundEncryptionSession;\n let hasKeyChanged = false;\n if (anyLeft.length > 0) {\n // We need to rotate the key\n const newOutboundKey = this.createNewOutboundSession();\n hasKeyChanged = true;\n toDistributeTo = toShareWith;\n outboundKey = newOutboundKey;\n } else if (anyJoined.length > 0) {\n const now = Date.now();\n const keyAge = now - this.outboundSession!.creationTS;\n // If the current key is recently created (less than `keyRotationGracePeriodMs`), we can keep it and just distribute it to the new joiners.\n if (keyAge < this.keyRotationGracePeriodMs) {\n // keep the same key\n // XXX In the future we want to distribute a ratcheted key, not the current one\n this.logger?.debug(`New joiners detected, but the key is recent enough (age:${keyAge}), keeping it`);\n toDistributeTo = anyJoined;\n outboundKey = this.outboundSession!;\n } else {\n // We need to rotate the key\n this.logger?.debug(`New joiners detected, rotating the key`);\n const newOutboundKey = this.createNewOutboundSession();\n hasKeyChanged = true;\n toDistributeTo = toShareWith;\n outboundKey = newOutboundKey;\n }\n } else {\n // no changes\n return;\n }\n\n try {\n this.logger?.trace(`Sending key...`);\n await this.transport.sendKey(encodeBase64(outboundKey.key), outboundKey.keyId, toDistributeTo);\n outboundKey.sharedWith.push(...toDistributeTo);\n this.logger?.trace(\n `key index:${outboundKey.keyId} sent to ${outboundKey.sharedWith.map((m) => `${m.userId}:${m.deviceId}`).join(\",\")}`,\n );\n if (hasKeyChanged) {\n // Delay a bit before using this key\n // It is recommended not to start using a key immediately but instead wait for a short time to make sure it is delivered.\n this.logger?.trace(`Delay Rollout for key:${outboundKey.keyId}...`);\n await sleep(this.useKeyDelay);\n this.logger?.trace(`...Delayed rollout of index:${outboundKey.keyId} `);\n this.addKeyToParticipantWithBackendIdentity(\n outboundKey.key,\n outboundKey.keyId,\n this.ownMembership,\n await this.getOwnRtcBackendIdentity(),\n );\n }\n } catch (err) {\n this.logger?.error(`Failed to rollout key`, err);\n }\n }\n\n private createNewOutboundSession(): OutboundEncryptionSession {\n const newOutboundKey: OutboundEncryptionSession = {\n key: this.generateRandomKey(),\n creationTS: Date.now(),\n sharedWith: [],\n keyId: this.nextKeyIndex(),\n };\n\n this.logger?.info(`creating new outbound key index:${newOutboundKey.keyId}`);\n // Set this new key as the current one\n this.outboundSession = newOutboundKey;\n return newOutboundKey;\n }\n\n private nextKeyIndex(): number {\n if (this.outboundSession) {\n return (this.outboundSession!.keyId + 1) % 256;\n }\n return 0;\n }\n\n private generateRandomKey(): Uint8Array<ArrayBuffer> {\n const key = new Uint8Array(16);\n globalThis.crypto.getRandomValues(key);\n return key;\n }\n}\n"],"mappings":"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","ignoreList":[]}