@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":"room-receipts.js","names":["MAIN_ROOM_TIMELINE","threadIdForReceipt","RoomEvent","logger","RoomReceipts","constructor","room","_defineProperty","event","eventId","getId","danglingReceipts","remove","forEach","danglingReceipt","receipt","thread_id","threadedReceipts","set","receiptType","userId","ts","synthetic","unthreadedReceipts","ThreadedReceipts","ReceiptsByUser","DanglingReceipts","on","Timeline","onTimelineEvent","add","receiptContent","_ref3","Object","entries","_ref2","_slicedToArray","eventReceipt","_ref6","_ref5","receiptsByUser","_ref9","_ref8","referencedEvent","findEventById","DanglingReceipt","hasUserReadEvent","unthreaded","get","isAfterOrSame","warn","concat","roomId","threadId","threaded","userSentLatestEventInThread","_this$room$getThread","timeline","getLiveTimeline","getEvents","getThread","length","getSender","ReceiptInfo","UserReceipts","real","undefined","receiptInfo","_this$synthetic","getByType","data","Map","userReceipts","getOrCreate","existingReceipt","isAfter","_this$data$get","_this$data$get2","push","delete","m","key","createFn","found","created","leftEventId","rightEventId","comparison","compareEventOrdering"],"sources":["../../src/models/room-receipts.ts"],"sourcesContent":["/*\nCopyright 2023 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 { MAIN_ROOM_TIMELINE, type Receipt, type ReceiptContent } from \"../@types/read_receipts.ts\";\nimport { threadIdForReceipt } from \"../client.ts\";\nimport { type Room, RoomEvent } from \"./room.ts\";\nimport { type MatrixEvent } from \"./event.ts\";\nimport { logger } from \"../logger.ts\";\n\n/**\n * The latest receipts we have for a room.\n */\nexport class RoomReceipts {\n private room: Room;\n private threadedReceipts: ThreadedReceipts;\n private unthreadedReceipts: ReceiptsByUser;\n private danglingReceipts: DanglingReceipts;\n\n public constructor(room: Room) {\n this.room = room;\n this.threadedReceipts = new ThreadedReceipts(room);\n this.unthreadedReceipts = new ReceiptsByUser(room);\n this.danglingReceipts = new DanglingReceipts();\n // We listen for timeline events so we can process dangling receipts\n room.on(RoomEvent.Timeline, this.onTimelineEvent);\n }\n\n /**\n * Remember the receipt information supplied. For each receipt:\n *\n * If we don't have the event for this receipt, store it as \"dangling\" so we\n * can process it later.\n *\n * Otherwise store it per-user in either the threaded store for its\n * thread_id, or the unthreaded store if there is no thread_id.\n *\n * Ignores any receipt that is before an existing receipt for the same user\n * (in the same thread, if applicable). \"Before\" is defined by the\n * unfilteredTimelineSet of the room.\n */\n public add(receiptContent: ReceiptContent, synthetic: boolean): void {\n /*\n Transform this structure:\n {\n \"$EVENTID\": {\n \"m.read|m.read.private\": {\n \"@user:example.org\": {\n \"ts\": 1661,\n \"thread_id\": \"main|$THREAD_ROOT_ID\" // or missing/undefined for an unthreaded receipt\n }\n }\n },\n ...\n }\n into maps of:\n threaded :: threadid :: userId :: ReceiptInfo\n unthreaded :: userId :: ReceiptInfo\n dangling :: eventId :: DanglingReceipt\n */\n for (const [eventId, eventReceipt] of Object.entries(receiptContent)) {\n for (const [receiptType, receiptsByUser] of Object.entries(eventReceipt)) {\n for (const [userId, receipt] of Object.entries(receiptsByUser)) {\n const referencedEvent = this.room.findEventById(eventId);\n if (!referencedEvent) {\n this.danglingReceipts.add(\n new DanglingReceipt(eventId, receiptType, userId, receipt, synthetic),\n );\n } else if (receipt.thread_id) {\n this.threadedReceipts.set(\n receipt.thread_id,\n eventId,\n receiptType,\n userId,\n receipt.ts,\n synthetic,\n );\n } else {\n this.unthreadedReceipts.set(eventId, receiptType, userId, receipt.ts, synthetic);\n }\n }\n }\n }\n }\n\n /**\n * Look for dangling receipts for the given event ID,\n * and add them to the thread of unthread receipts if found.\n * @param event - the event to look for\n */\n private onTimelineEvent = (event: MatrixEvent): void => {\n const eventId = event.getId();\n if (!eventId) return;\n\n const danglingReceipts = this.danglingReceipts.remove(eventId);\n\n danglingReceipts?.forEach((danglingReceipt) => {\n // The receipt is a thread receipt\n if (danglingReceipt.receipt.thread_id) {\n this.threadedReceipts.set(\n danglingReceipt.receipt.thread_id,\n danglingReceipt.eventId,\n danglingReceipt.receiptType,\n danglingReceipt.userId,\n danglingReceipt.receipt.ts,\n danglingReceipt.synthetic,\n );\n } else {\n this.unthreadedReceipts.set(\n eventId,\n danglingReceipt.receiptType,\n danglingReceipt.userId,\n danglingReceipt.receipt.ts,\n danglingReceipt.synthetic,\n );\n }\n });\n };\n\n public hasUserReadEvent(userId: string, eventId: string): boolean {\n const unthreaded = this.unthreadedReceipts.get(userId);\n if (unthreaded) {\n if (isAfterOrSame(unthreaded.eventId, eventId, this.room)) {\n // The unthreaded receipt is after this event, so we have read it.\n return true;\n }\n }\n\n const event = this.room.findEventById(eventId);\n if (!event) {\n // We don't know whether the user has read it - default to caution and say no.\n // This shouldn't really happen and feels like it ought to be an exception: let's\n // log a warn for now.\n logger.warn(\n `hasUserReadEvent event ID ${eventId} not found in room ${this.room.roomId}: this shouldn't happen!`,\n );\n return false;\n }\n\n const threadId = threadIdForReceipt(event);\n const threaded = this.threadedReceipts.get(threadId, userId);\n if (threaded) {\n if (isAfterOrSame(threaded.eventId, eventId, this.room)) {\n // The threaded receipt is after this event, so we have read it.\n return true;\n }\n }\n\n // TODO: what if they sent the second-last event in the thread?\n if (this.userSentLatestEventInThread(threadId, userId)) {\n // The user sent the latest message in this event's thread, so we\n // consider everything in the thread to be read.\n //\n // Note: maybe we don't need this because synthetic receipts should\n // do this job for us?\n return true;\n }\n\n // Neither of the receipts were after the event, so it's unread.\n return false;\n }\n\n /**\n * @returns true if the thread with this ID can be found, and the supplied\n * user sent the latest message in it.\n */\n private userSentLatestEventInThread(threadId: string, userId: string): boolean {\n const timeline =\n threadId === MAIN_ROOM_TIMELINE\n ? this.room.getLiveTimeline().getEvents()\n : this.room.getThread(threadId)?.timeline;\n\n return !!(timeline && timeline.length > 0 && timeline[timeline.length - 1].getSender() === userId);\n }\n}\n\n// --- implementation details ---\n\n/**\n * The information \"inside\" a receipt once it has been stored inside\n * RoomReceipts - what eventId it refers to, its type, and its ts.\n *\n * Does not contain userId or threadId since these are stored as keys of the\n * maps in RoomReceipts.\n */\nclass ReceiptInfo {\n public constructor(\n public eventId: string,\n public receiptType: string,\n public ts: number,\n ) {}\n}\n\n/**\n * Everything we know about a receipt that is \"dangling\" because we can't find\n * the event to which it refers.\n */\nclass DanglingReceipt {\n public constructor(\n public eventId: string,\n public receiptType: string,\n public userId: string,\n public receipt: Receipt,\n public synthetic: boolean,\n ) {}\n}\n\nclass UserReceipts {\n private room: Room;\n\n /**\n * The real receipt for this user.\n */\n private real: ReceiptInfo | undefined;\n\n /**\n * The synthetic receipt for this user. If this is defined, it is later than real.\n */\n private synthetic: ReceiptInfo | undefined;\n\n public constructor(room: Room) {\n this.room = room;\n this.real = undefined;\n this.synthetic = undefined;\n }\n\n public set(synthetic: boolean, receiptInfo: ReceiptInfo): void {\n if (synthetic) {\n this.synthetic = receiptInfo;\n } else {\n this.real = receiptInfo;\n }\n\n // Preserve the invariant: synthetic is only defined if it's later than real\n if (this.synthetic && this.real) {\n if (isAfterOrSame(this.real.eventId, this.synthetic.eventId, this.room)) {\n this.synthetic = undefined;\n }\n }\n }\n\n /**\n * Return the latest receipt we have - synthetic if we have one (and it's\n * later), otherwise real.\n */\n public get(): ReceiptInfo | undefined {\n // Relies on the invariant that synthetic is only defined if it's later than real.\n return this.synthetic ?? this.real;\n }\n\n /**\n * Return the latest receipt we have of the specified type (synthetic or not).\n */\n public getByType(synthetic: boolean): ReceiptInfo | undefined {\n return synthetic ? this.synthetic : this.real;\n }\n}\n\n/**\n * The latest receipt info we have, either for a single thread, or all the\n * unthreaded receipts for a room.\n *\n * userId: ReceiptInfo\n */\nclass ReceiptsByUser {\n private room: Room;\n\n /** map of userId: UserReceipts */\n private data: Map<string, UserReceipts>;\n\n public constructor(room: Room) {\n this.room = room;\n this.data = new Map<string, UserReceipts>();\n }\n\n /**\n * Add the supplied receipt to our structure, if it is not earlier than the\n * one we already hold for this user.\n */\n public set(eventId: string, receiptType: string, userId: string, ts: number, synthetic: boolean): void {\n const userReceipts = getOrCreate(this.data, userId, () => new UserReceipts(this.room));\n\n const existingReceipt = userReceipts.getByType(synthetic);\n if (existingReceipt && isAfter(existingReceipt.eventId, eventId, this.room)) {\n // The new receipt is before the existing one - don't store it.\n return;\n }\n\n // Possibilities:\n //\n // 1. there was no existing receipt, or\n // 2. the existing receipt was before this one, or\n // 3. we were unable to compare the receipts.\n //\n // In the case of 3 it's difficult to decide what to do, so the\n // most-recently-received receipt wins.\n //\n // Case 3 can only happen if the events for these receipts have\n // disappeared, which is quite unlikely since the new one has just been\n // checked, and the old one was checked before it was inserted here.\n //\n // We go ahead and store this receipt (replacing the other if it exists)\n userReceipts.set(synthetic, new ReceiptInfo(eventId, receiptType, ts));\n }\n\n /**\n * Find the latest receipt we have for this user. (Note - there is only one\n * receipt per user, because we are already inside a specific thread or\n * unthreaded list.)\n *\n * If there is a later synthetic receipt for this user, return that.\n * Otherwise, return the real receipt.\n *\n * @returns the found receipt info, or undefined if we have no receipt for this user.\n */\n public get(userId: string): ReceiptInfo | undefined {\n return this.data.get(userId)?.get();\n }\n}\n\n/**\n * The latest threaded receipts we have for a room.\n */\nclass ThreadedReceipts {\n private room: Room;\n\n /** map of threadId: ReceiptsByUser */\n private data: Map<string, ReceiptsByUser>;\n\n public constructor(room: Room) {\n this.room = room;\n this.data = new Map<string, ReceiptsByUser>();\n }\n\n /**\n * Add the supplied receipt to our structure, if it is not earlier than one\n * we already hold for this user in this thread.\n */\n public set(\n threadId: string,\n eventId: string,\n receiptType: string,\n userId: string,\n ts: number,\n synthetic: boolean,\n ): void {\n const receiptsByUser = getOrCreate(this.data, threadId, () => new ReceiptsByUser(this.room));\n receiptsByUser.set(eventId, receiptType, userId, ts, synthetic);\n }\n\n /**\n * Find the latest threaded receipt for the supplied user in the supplied thread.\n *\n * @returns the found receipt info or undefined if we don't have one.\n */\n public get(threadId: string, userId: string): ReceiptInfo | undefined {\n return this.data.get(threadId)?.get(userId);\n }\n}\n\n/**\n * All the receipts that we have received but can't process because we can't\n * find the event they refer to.\n *\n * We hold on to them so we can process them if their event arrives later.\n */\nclass DanglingReceipts {\n /**\n * eventId: DanglingReceipt[]\n */\n private data = new Map<string, Array<DanglingReceipt>>();\n\n /**\n * Remember the supplied dangling receipt.\n */\n public add(danglingReceipt: DanglingReceipt): void {\n const danglingReceipts = getOrCreate(this.data, danglingReceipt.eventId, () => []);\n danglingReceipts.push(danglingReceipt);\n }\n\n /**\n * Remove and return the dangling receipts for the given event ID.\n * @param eventId - the event ID to look for\n * @returns the found dangling receipts, or undefined if we don't have one.\n */\n public remove(eventId: string): Array<DanglingReceipt> | undefined {\n const danglingReceipts = this.data.get(eventId);\n this.data.delete(eventId);\n return danglingReceipts;\n }\n}\n\nfunction getOrCreate<K, V>(m: Map<K, V>, key: K, createFn: () => V): V {\n const found = m.get(key);\n if (found) {\n return found;\n } else {\n const created = createFn();\n m.set(key, created);\n return created;\n }\n}\n\n/**\n * Is left after right (or the same)?\n *\n * Only returns true if both events can be found, and left is after or the same\n * as right.\n *\n * @returns left \\>= right\n */\nfunction isAfterOrSame(leftEventId: string, rightEventId: string, room: Room): boolean {\n const comparison = room.compareEventOrdering(leftEventId, rightEventId);\n return comparison !== null && comparison >= 0;\n}\n\n/**\n * Is left strictly after right?\n *\n * Only returns true if both events can be found, and left is strictly after right.\n *\n * @returns left \\> right\n */\nfunction isAfter(leftEventId: string, rightEventId: string, room: Room): boolean {\n const comparison = room.compareEventOrdering(leftEventId, rightEventId);\n return comparison !== null && comparison > 0;\n}\n"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,kBAAkB,QAA2C,4BAA4B;AAClG,SAASC,kBAAkB,QAAQ,cAAc;AACjD,SAAoBC,SAAS,QAAQ,WAAW;AAEhD,SAASC,MAAM,QAAQ,cAAc;;AAErC;AACA;AACA;AACA,OAAO,MAAMC,YAAY,CAAC;EAMfC,WAAWA,CAACC,IAAU,EAAE;IAkE/B;AACJ;AACA;AACA;AACA;IAJIC,eAAA,0BAK2BC,KAAkB,IAAW;MACpD,IAAMC,OAAO,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAC;MAC7B,IAAI,CAACD,OAAO,EAAE;MAEd,IAAME,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACC,MAAM,CAACH,OAAO,CAAC;MAE9DE,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAEE,OAAO,CAAEC,eAAe,IAAK;QAC3C;QACA,IAAIA,eAAe,CAACC,OAAO,CAACC,SAAS,EAAE;UACnC,IAAI,CAACC,gBAAgB,CAACC,GAAG,CACrBJ,eAAe,CAACC,OAAO,CAACC,SAAS,EACjCF,eAAe,CAACL,OAAO,EACvBK,eAAe,CAACK,WAAW,EAC3BL,eAAe,CAACM,MAAM,EACtBN,eAAe,CAACC,OAAO,CAACM,EAAE,EAC1BP,eAAe,CAACQ,SACpB,CAAC;QACL,CAAC,MAAM;UACH,IAAI,CAACC,kBAAkB,CAACL,GAAG,CACvBT,OAAO,EACPK,eAAe,CAACK,WAAW,EAC3BL,eAAe,CAACM,MAAM,EACtBN,eAAe,CAACC,OAAO,CAACM,EAAE,EAC1BP,eAAe,CAACQ,SACpB,CAAC;QACL;MACJ,CAAC,CAAC;IACN,CAAC;IAjGG,IAAI,CAAChB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACW,gBAAgB,GAAG,IAAIO,gBAAgB,CAAClB,IAAI,CAAC;IAClD,IAAI,CAACiB,kBAAkB,GAAG,IAAIE,cAAc,CAACnB,IAAI,CAAC;IAClD,IAAI,CAACK,gBAAgB,GAAG,IAAIe,gBAAgB,CAAC,CAAC;IAC9C;IACApB,IAAI,CAACqB,EAAE,CAACzB,SAAS,CAAC0B,QAAQ,EAAE,IAAI,CAACC,eAAe,CAAC;EACrD;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACWC,GAAGA,CAACC,cAA8B,EAAET,SAAkB,EAAQ;IACjE;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ,SAAAU,KAAA,IAAsCC,MAAM,CAACC,OAAO,CAACH,cAAc,CAAC,EAAE;MAAA,IAAAI,KAAA,GAAAC,cAAA,CAAAJ,KAAA;MAAA,IAA1DvB,QAAO,GAAA0B,KAAA;MAAA,IAAEE,YAAY,GAAAF,KAAA;MAC7B,SAAAG,KAAA,IAA4CL,MAAM,CAACC,OAAO,CAACG,YAAY,CAAC,EAAE;QAAA,IAAAE,KAAA,GAAAH,cAAA,CAAAE,KAAA;QAAA,IAA9DnB,YAAW,GAAAoB,KAAA;QAAA,IAAEC,cAAc,GAAAD,KAAA;QACnC,SAAAE,KAAA,IAAgCR,MAAM,CAACC,OAAO,CAACM,cAAc,CAAC,EAAE;UAAA,IAAAE,KAAA,GAAAN,cAAA,CAAAK,KAAA;UAAA,IAApDrB,OAAM,GAAAsB,KAAA;UAAA,IAAE3B,QAAO,GAAA2B,KAAA;UACvB,IAAMC,eAAe,GAAG,IAAI,CAACrC,IAAI,CAACsC,aAAa,CAACnC,QAAO,CAAC;UACxD,IAAI,CAACkC,eAAe,EAAE;YAClB,IAAI,CAAChC,gBAAgB,CAACmB,GAAG,CACrB,IAAIe,eAAe,CAACpC,QAAO,EAAEU,YAAW,EAAEC,OAAM,EAAEL,QAAO,EAAEO,SAAS,CACxE,CAAC;UACL,CAAC,MAAM,IAAIP,QAAO,CAACC,SAAS,EAAE;YAC1B,IAAI,CAACC,gBAAgB,CAACC,GAAG,CACrBH,QAAO,CAACC,SAAS,EACjBP,QAAO,EACPU,YAAW,EACXC,OAAM,EACNL,QAAO,CAACM,EAAE,EACVC,SACJ,CAAC;UACL,CAAC,MAAM;YACH,IAAI,CAACC,kBAAkB,CAACL,GAAG,CAACT,QAAO,EAAEU,YAAW,EAAEC,OAAM,EAAEL,QAAO,CAACM,EAAE,EAAEC,SAAS,CAAC;UACpF;QACJ;MACJ;IACJ;EACJ;EAoCOwB,gBAAgBA,CAAC1B,MAAc,EAAEX,OAAe,EAAW;IAC9D,IAAMsC,UAAU,GAAG,IAAI,CAACxB,kBAAkB,CAACyB,GAAG,CAAC5B,MAAM,CAAC;IACtD,IAAI2B,UAAU,EAAE;MACZ,IAAIE,aAAa,CAACF,UAAU,CAACtC,OAAO,EAAEA,OAAO,EAAE,IAAI,CAACH,IAAI,CAAC,EAAE;QACvD;QACA,OAAO,IAAI;MACf;IACJ;IAEA,IAAME,KAAK,GAAG,IAAI,CAACF,IAAI,CAACsC,aAAa,CAACnC,OAAO,CAAC;IAC9C,IAAI,CAACD,KAAK,EAAE;MACR;MACA;MACA;MACAL,MAAM,CAAC+C,IAAI,8BAAAC,MAAA,CACsB1C,OAAO,yBAAA0C,MAAA,CAAsB,IAAI,CAAC7C,IAAI,CAAC8C,MAAM,6BAC9E,CAAC;MACD,OAAO,KAAK;IAChB;IAEA,IAAMC,QAAQ,GAAGpD,kBAAkB,CAACO,KAAK,CAAC;IAC1C,IAAM8C,QAAQ,GAAG,IAAI,CAACrC,gBAAgB,CAAC+B,GAAG,CAACK,QAAQ,EAAEjC,MAAM,CAAC;IAC5D,IAAIkC,QAAQ,EAAE;MACV,IAAIL,aAAa,CAACK,QAAQ,CAAC7C,OAAO,EAAEA,OAAO,EAAE,IAAI,CAACH,IAAI,CAAC,EAAE;QACrD;QACA,OAAO,IAAI;MACf;IACJ;;IAEA;IACA,IAAI,IAAI,CAACiD,2BAA2B,CAACF,QAAQ,EAAEjC,MAAM,CAAC,EAAE;MACpD;MACA;MACA;MACA;MACA;MACA,OAAO,IAAI;IACf;;IAEA;IACA,OAAO,KAAK;EAChB;;EAEA;AACJ;AACA;AACA;EACYmC,2BAA2BA,CAACF,QAAgB,EAAEjC,MAAc,EAAW;IAAA,IAAAoC,oBAAA;IAC3E,IAAMC,QAAQ,GACVJ,QAAQ,KAAKrD,kBAAkB,GACzB,IAAI,CAACM,IAAI,CAACoD,eAAe,CAAC,CAAC,CAACC,SAAS,CAAC,CAAC,IAAAH,oBAAA,GACvC,IAAI,CAAClD,IAAI,CAACsD,SAAS,CAACP,QAAQ,CAAC,cAAAG,oBAAA,uBAA7BA,oBAAA,CAA+BC,QAAQ;IAEjD,OAAO,CAAC,EAAEA,QAAQ,IAAIA,QAAQ,CAACI,MAAM,GAAG,CAAC,IAAIJ,QAAQ,CAACA,QAAQ,CAACI,MAAM,GAAG,CAAC,CAAC,CAACC,SAAS,CAAC,CAAC,KAAK1C,MAAM,CAAC;EACtG;AACJ;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM2C,WAAW,CAAC;EACP1D,WAAWA,CACPI,OAAe,EACfU,WAAmB,EACnBE,EAAU,EACnB;IAAA,KAHSZ,OAAe,GAAfA,OAAe;IAAA,KACfU,WAAmB,GAAnBA,WAAmB;IAAA,KACnBE,EAAU,GAAVA,EAAU;EAClB;AACP;;AAEA;AACA;AACA;AACA;AACA,MAAMwB,eAAe,CAAC;EACXxC,WAAWA,CACPI,OAAe,EACfU,WAAmB,EACnBC,MAAc,EACdL,OAAgB,EAChBO,SAAkB,EAC3B;IAAA,KALSb,OAAe,GAAfA,OAAe;IAAA,KACfU,WAAmB,GAAnBA,WAAmB;IAAA,KACnBC,MAAc,GAAdA,MAAc;IAAA,KACdL,OAAgB,GAAhBA,OAAgB;IAAA,KAChBO,SAAkB,GAAlBA,SAAkB;EAC1B;AACP;AAEA,MAAM0C,YAAY,CAAC;EAGf;AACJ;AACA;;EAGI;AACJ;AACA;;EAGW3D,WAAWA,CAACC,IAAU,EAAE;IAC3B,IAAI,CAACA,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC2D,IAAI,GAAGC,SAAS;IACrB,IAAI,CAAC5C,SAAS,GAAG4C,SAAS;EAC9B;EAEOhD,GAAGA,CAACI,SAAkB,EAAE6C,WAAwB,EAAQ;IAC3D,IAAI7C,SAAS,EAAE;MACX,IAAI,CAACA,SAAS,GAAG6C,WAAW;IAChC,CAAC,MAAM;MACH,IAAI,CAACF,IAAI,GAAGE,WAAW;IAC3B;;IAEA;IACA,IAAI,IAAI,CAAC7C,SAAS,IAAI,IAAI,CAAC2C,IAAI,EAAE;MAC7B,IAAIhB,aAAa,CAAC,IAAI,CAACgB,IAAI,CAACxD,OAAO,EAAE,IAAI,CAACa,SAAS,CAACb,OAAO,EAAE,IAAI,CAACH,IAAI,CAAC,EAAE;QACrE,IAAI,CAACgB,SAAS,GAAG4C,SAAS;MAC9B;IACJ;EACJ;;EAEA;AACJ;AACA;AACA;EACWlB,GAAGA,CAAA,EAA4B;IAAA,IAAAoB,eAAA;IAClC;IACA,QAAAA,eAAA,GAAO,IAAI,CAAC9C,SAAS,cAAA8C,eAAA,cAAAA,eAAA,GAAI,IAAI,CAACH,IAAI;EACtC;;EAEA;AACJ;AACA;EACWI,SAASA,CAAC/C,SAAkB,EAA2B;IAC1D,OAAOA,SAAS,GAAG,IAAI,CAACA,SAAS,GAAG,IAAI,CAAC2C,IAAI;EACjD;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMxC,cAAc,CAAC;EAGjB;;EAGOpB,WAAWA,CAACC,IAAU,EAAE;IAC3B,IAAI,CAACA,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACgE,IAAI,GAAG,IAAIC,GAAG,CAAuB,CAAC;EAC/C;;EAEA;AACJ;AACA;AACA;EACWrD,GAAGA,CAACT,OAAe,EAAEU,WAAmB,EAAEC,MAAc,EAAEC,EAAU,EAAEC,SAAkB,EAAQ;IACnG,IAAMkD,YAAY,GAAGC,WAAW,CAAC,IAAI,CAACH,IAAI,EAAElD,MAAM,EAAE,MAAM,IAAI4C,YAAY,CAAC,IAAI,CAAC1D,IAAI,CAAC,CAAC;IAEtF,IAAMoE,eAAe,GAAGF,YAAY,CAACH,SAAS,CAAC/C,SAAS,CAAC;IACzD,IAAIoD,eAAe,IAAIC,OAAO,CAACD,eAAe,CAACjE,OAAO,EAAEA,OAAO,EAAE,IAAI,CAACH,IAAI,CAAC,EAAE;MACzE;MACA;IACJ;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACAkE,YAAY,CAACtD,GAAG,CAACI,SAAS,EAAE,IAAIyC,WAAW,CAACtD,OAAO,EAAEU,WAAW,EAAEE,EAAE,CAAC,CAAC;EAC1E;;EAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACW2B,GAAGA,CAAC5B,MAAc,EAA2B;IAAA,IAAAwD,cAAA;IAChD,QAAAA,cAAA,GAAO,IAAI,CAACN,IAAI,CAACtB,GAAG,CAAC5B,MAAM,CAAC,cAAAwD,cAAA,uBAArBA,cAAA,CAAuB5B,GAAG,CAAC,CAAC;EACvC;AACJ;;AAEA;AACA;AACA;AACA,MAAMxB,gBAAgB,CAAC;EAGnB;;EAGOnB,WAAWA,CAACC,IAAU,EAAE;IAC3B,IAAI,CAACA,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACgE,IAAI,GAAG,IAAIC,GAAG,CAAyB,CAAC;EACjD;;EAEA;AACJ;AACA;AACA;EACWrD,GAAGA,CACNmC,QAAgB,EAChB5C,OAAe,EACfU,WAAmB,EACnBC,MAAc,EACdC,EAAU,EACVC,SAAkB,EACd;IACJ,IAAMkB,cAAc,GAAGiC,WAAW,CAAC,IAAI,CAACH,IAAI,EAAEjB,QAAQ,EAAE,MAAM,IAAI5B,cAAc,CAAC,IAAI,CAACnB,IAAI,CAAC,CAAC;IAC5FkC,cAAc,CAACtB,GAAG,CAACT,OAAO,EAAEU,WAAW,EAAEC,MAAM,EAAEC,EAAE,EAAEC,SAAS,CAAC;EACnE;;EAEA;AACJ;AACA;AACA;AACA;EACW0B,GAAGA,CAACK,QAAgB,EAAEjC,MAAc,EAA2B;IAAA,IAAAyD,eAAA;IAClE,QAAAA,eAAA,GAAO,IAAI,CAACP,IAAI,CAACtB,GAAG,CAACK,QAAQ,CAAC,cAAAwB,eAAA,uBAAvBA,eAAA,CAAyB7B,GAAG,CAAC5B,MAAM,CAAC;EAC/C;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,gBAAgB,CAAC;EAAArB,YAAA;IACnB;AACJ;AACA;IAFIE,eAAA,eAGe,IAAIgE,GAAG,CAAiC,CAAC;EAAA;EAExD;AACJ;AACA;EACWzC,GAAGA,CAAChB,eAAgC,EAAQ;IAC/C,IAAMH,gBAAgB,GAAG8D,WAAW,CAAC,IAAI,CAACH,IAAI,EAAExD,eAAe,CAACL,OAAO,EAAE,MAAM,EAAE,CAAC;IAClFE,gBAAgB,CAACmE,IAAI,CAAChE,eAAe,CAAC;EAC1C;;EAEA;AACJ;AACA;AACA;AACA;EACWF,MAAMA,CAACH,OAAe,EAAsC;IAC/D,IAAME,gBAAgB,GAAG,IAAI,CAAC2D,IAAI,CAACtB,GAAG,CAACvC,OAAO,CAAC;IAC/C,IAAI,CAAC6D,IAAI,CAACS,MAAM,CAACtE,OAAO,CAAC;IACzB,OAAOE,gBAAgB;EAC3B;AACJ;AAEA,SAAS8D,WAAWA,CAAOO,CAAY,EAAEC,GAAM,EAAEC,QAAiB,EAAK;EACnE,IAAMC,KAAK,GAAGH,CAAC,CAAChC,GAAG,CAACiC,GAAG,CAAC;EACxB,IAAIE,KAAK,EAAE;IACP,OAAOA,KAAK;EAChB,CAAC,MAAM;IACH,IAAMC,OAAO,GAAGF,QAAQ,CAAC,CAAC;IAC1BF,CAAC,CAAC9D,GAAG,CAAC+D,GAAG,EAAEG,OAAO,CAAC;IACnB,OAAOA,OAAO;EAClB;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASnC,aAAaA,CAACoC,WAAmB,EAAEC,YAAoB,EAAEhF,IAAU,EAAW;EACnF,IAAMiF,UAAU,GAAGjF,IAAI,CAACkF,oBAAoB,CAACH,WAAW,EAAEC,YAAY,CAAC;EACvE,OAAOC,UAAU,KAAK,IAAI,IAAIA,UAAU,IAAI,CAAC;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASZ,OAAOA,CAACU,WAAmB,EAAEC,YAAoB,EAAEhF,IAAU,EAAW;EAC7E,IAAMiF,UAAU,GAAGjF,IAAI,CAACkF,oBAAoB,CAACH,WAAW,EAAEC,YAAY,CAAC;EACvE,OAAOC,UAAU,KAAK,IAAI,IAAIA,UAAU,GAAG,CAAC;AAChD","ignoreList":[]}
1
+ {"version":3,"file":"room-receipts.js","names":[],"sources":["../../src/models/room-receipts.ts"],"sourcesContent":["/*\nCopyright 2023 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 { MAIN_ROOM_TIMELINE, type Receipt, type ReceiptContent } from \"../@types/read_receipts.ts\";\nimport { threadIdForReceipt } from \"../client.ts\";\nimport { type Room, RoomEvent } from \"./room.ts\";\nimport { type MatrixEvent } from \"./event.ts\";\nimport { logger } from \"../logger.ts\";\n\n/**\n * The latest receipts we have for a room.\n */\nexport class RoomReceipts {\n private room: Room;\n private threadedReceipts: ThreadedReceipts;\n private unthreadedReceipts: ReceiptsByUser;\n private danglingReceipts: DanglingReceipts;\n\n public constructor(room: Room) {\n this.room = room;\n this.threadedReceipts = new ThreadedReceipts(room);\n this.unthreadedReceipts = new ReceiptsByUser(room);\n this.danglingReceipts = new DanglingReceipts();\n // We listen for timeline events so we can process dangling receipts\n room.on(RoomEvent.Timeline, this.onTimelineEvent);\n }\n\n /**\n * Remember the receipt information supplied. For each receipt:\n *\n * If we don't have the event for this receipt, store it as \"dangling\" so we\n * can process it later.\n *\n * Otherwise store it per-user in either the threaded store for its\n * thread_id, or the unthreaded store if there is no thread_id.\n *\n * Ignores any receipt that is before an existing receipt for the same user\n * (in the same thread, if applicable). \"Before\" is defined by the\n * unfilteredTimelineSet of the room.\n */\n public add(receiptContent: ReceiptContent, synthetic: boolean): void {\n /*\n Transform this structure:\n {\n \"$EVENTID\": {\n \"m.read|m.read.private\": {\n \"@user:example.org\": {\n \"ts\": 1661,\n \"thread_id\": \"main|$THREAD_ROOT_ID\" // or missing/undefined for an unthreaded receipt\n }\n }\n },\n ...\n }\n into maps of:\n threaded :: threadid :: userId :: ReceiptInfo\n unthreaded :: userId :: ReceiptInfo\n dangling :: eventId :: DanglingReceipt\n */\n for (const [eventId, eventReceipt] of Object.entries(receiptContent)) {\n for (const [receiptType, receiptsByUser] of Object.entries(eventReceipt)) {\n for (const [userId, receipt] of Object.entries(receiptsByUser)) {\n const referencedEvent = this.room.findEventById(eventId);\n if (!referencedEvent) {\n this.danglingReceipts.add(\n new DanglingReceipt(eventId, receiptType, userId, receipt, synthetic),\n );\n } else if (receipt.thread_id) {\n this.threadedReceipts.set(\n receipt.thread_id,\n eventId,\n receiptType,\n userId,\n receipt.ts,\n synthetic,\n );\n } else {\n this.unthreadedReceipts.set(eventId, receiptType, userId, receipt.ts, synthetic);\n }\n }\n }\n }\n }\n\n /**\n * Look for dangling receipts for the given event ID,\n * and add them to the thread of unthread receipts if found.\n * @param event - the event to look for\n */\n private onTimelineEvent = (event: MatrixEvent): void => {\n const eventId = event.getId();\n if (!eventId) return;\n\n const danglingReceipts = this.danglingReceipts.remove(eventId);\n\n danglingReceipts?.forEach((danglingReceipt) => {\n // The receipt is a thread receipt\n if (danglingReceipt.receipt.thread_id) {\n this.threadedReceipts.set(\n danglingReceipt.receipt.thread_id,\n danglingReceipt.eventId,\n danglingReceipt.receiptType,\n danglingReceipt.userId,\n danglingReceipt.receipt.ts,\n danglingReceipt.synthetic,\n );\n } else {\n this.unthreadedReceipts.set(\n eventId,\n danglingReceipt.receiptType,\n danglingReceipt.userId,\n danglingReceipt.receipt.ts,\n danglingReceipt.synthetic,\n );\n }\n });\n };\n\n public hasUserReadEvent(userId: string, eventId: string): boolean {\n const unthreaded = this.unthreadedReceipts.get(userId);\n if (unthreaded) {\n if (isAfterOrSame(unthreaded.eventId, eventId, this.room)) {\n // The unthreaded receipt is after this event, so we have read it.\n return true;\n }\n }\n\n const event = this.room.findEventById(eventId);\n if (!event) {\n // We don't know whether the user has read it - default to caution and say no.\n // This shouldn't really happen and feels like it ought to be an exception: let's\n // log a warn for now.\n logger.warn(\n `hasUserReadEvent event ID ${eventId} not found in room ${this.room.roomId}: this shouldn't happen!`,\n );\n return false;\n }\n\n const threadId = threadIdForReceipt(event);\n const threaded = this.threadedReceipts.get(threadId, userId);\n if (threaded) {\n if (isAfterOrSame(threaded.eventId, eventId, this.room)) {\n // The threaded receipt is after this event, so we have read it.\n return true;\n }\n }\n\n // TODO: what if they sent the second-last event in the thread?\n if (this.userSentLatestEventInThread(threadId, userId)) {\n // The user sent the latest message in this event's thread, so we\n // consider everything in the thread to be read.\n //\n // Note: maybe we don't need this because synthetic receipts should\n // do this job for us?\n return true;\n }\n\n // Neither of the receipts were after the event, so it's unread.\n return false;\n }\n\n /**\n * @returns true if the thread with this ID can be found, and the supplied\n * user sent the latest message in it.\n */\n private userSentLatestEventInThread(threadId: string, userId: string): boolean {\n const timeline =\n threadId === MAIN_ROOM_TIMELINE\n ? this.room.getLiveTimeline().getEvents()\n : this.room.getThread(threadId)?.timeline;\n\n return !!(timeline && timeline.length > 0 && timeline[timeline.length - 1].getSender() === userId);\n }\n}\n\n// --- implementation details ---\n\n/**\n * The information \"inside\" a receipt once it has been stored inside\n * RoomReceipts - what eventId it refers to, its type, and its ts.\n *\n * Does not contain userId or threadId since these are stored as keys of the\n * maps in RoomReceipts.\n */\nclass ReceiptInfo {\n public constructor(\n public eventId: string,\n public receiptType: string,\n public ts: number,\n ) {}\n}\n\n/**\n * Everything we know about a receipt that is \"dangling\" because we can't find\n * the event to which it refers.\n */\nclass DanglingReceipt {\n public constructor(\n public eventId: string,\n public receiptType: string,\n public userId: string,\n public receipt: Receipt,\n public synthetic: boolean,\n ) {}\n}\n\nclass UserReceipts {\n private room: Room;\n\n /**\n * The real receipt for this user.\n */\n private real: ReceiptInfo | undefined;\n\n /**\n * The synthetic receipt for this user. If this is defined, it is later than real.\n */\n private synthetic: ReceiptInfo | undefined;\n\n public constructor(room: Room) {\n this.room = room;\n this.real = undefined;\n this.synthetic = undefined;\n }\n\n public set(synthetic: boolean, receiptInfo: ReceiptInfo): void {\n if (synthetic) {\n this.synthetic = receiptInfo;\n } else {\n this.real = receiptInfo;\n }\n\n // Preserve the invariant: synthetic is only defined if it's later than real\n if (this.synthetic && this.real) {\n if (isAfterOrSame(this.real.eventId, this.synthetic.eventId, this.room)) {\n this.synthetic = undefined;\n }\n }\n }\n\n /**\n * Return the latest receipt we have - synthetic if we have one (and it's\n * later), otherwise real.\n */\n public get(): ReceiptInfo | undefined {\n // Relies on the invariant that synthetic is only defined if it's later than real.\n return this.synthetic ?? this.real;\n }\n\n /**\n * Return the latest receipt we have of the specified type (synthetic or not).\n */\n public getByType(synthetic: boolean): ReceiptInfo | undefined {\n return synthetic ? this.synthetic : this.real;\n }\n}\n\n/**\n * The latest receipt info we have, either for a single thread, or all the\n * unthreaded receipts for a room.\n *\n * userId: ReceiptInfo\n */\nclass ReceiptsByUser {\n private room: Room;\n\n /** map of userId: UserReceipts */\n private data: Map<string, UserReceipts>;\n\n public constructor(room: Room) {\n this.room = room;\n this.data = new Map<string, UserReceipts>();\n }\n\n /**\n * Add the supplied receipt to our structure, if it is not earlier than the\n * one we already hold for this user.\n */\n public set(eventId: string, receiptType: string, userId: string, ts: number, synthetic: boolean): void {\n const userReceipts = getOrCreate(this.data, userId, () => new UserReceipts(this.room));\n\n const existingReceipt = userReceipts.getByType(synthetic);\n if (existingReceipt && isAfter(existingReceipt.eventId, eventId, this.room)) {\n // The new receipt is before the existing one - don't store it.\n return;\n }\n\n // Possibilities:\n //\n // 1. there was no existing receipt, or\n // 2. the existing receipt was before this one, or\n // 3. we were unable to compare the receipts.\n //\n // In the case of 3 it's difficult to decide what to do, so the\n // most-recently-received receipt wins.\n //\n // Case 3 can only happen if the events for these receipts have\n // disappeared, which is quite unlikely since the new one has just been\n // checked, and the old one was checked before it was inserted here.\n //\n // We go ahead and store this receipt (replacing the other if it exists)\n userReceipts.set(synthetic, new ReceiptInfo(eventId, receiptType, ts));\n }\n\n /**\n * Find the latest receipt we have for this user. (Note - there is only one\n * receipt per user, because we are already inside a specific thread or\n * unthreaded list.)\n *\n * If there is a later synthetic receipt for this user, return that.\n * Otherwise, return the real receipt.\n *\n * @returns the found receipt info, or undefined if we have no receipt for this user.\n */\n public get(userId: string): ReceiptInfo | undefined {\n return this.data.get(userId)?.get();\n }\n}\n\n/**\n * The latest threaded receipts we have for a room.\n */\nclass ThreadedReceipts {\n private room: Room;\n\n /** map of threadId: ReceiptsByUser */\n private data: Map<string, ReceiptsByUser>;\n\n public constructor(room: Room) {\n this.room = room;\n this.data = new Map<string, ReceiptsByUser>();\n }\n\n /**\n * Add the supplied receipt to our structure, if it is not earlier than one\n * we already hold for this user in this thread.\n */\n public set(\n threadId: string,\n eventId: string,\n receiptType: string,\n userId: string,\n ts: number,\n synthetic: boolean,\n ): void {\n const receiptsByUser = getOrCreate(this.data, threadId, () => new ReceiptsByUser(this.room));\n receiptsByUser.set(eventId, receiptType, userId, ts, synthetic);\n }\n\n /**\n * Find the latest threaded receipt for the supplied user in the supplied thread.\n *\n * @returns the found receipt info or undefined if we don't have one.\n */\n public get(threadId: string, userId: string): ReceiptInfo | undefined {\n return this.data.get(threadId)?.get(userId);\n }\n}\n\n/**\n * All the receipts that we have received but can't process because we can't\n * find the event they refer to.\n *\n * We hold on to them so we can process them if their event arrives later.\n */\nclass DanglingReceipts {\n /**\n * eventId: DanglingReceipt[]\n */\n private data = new Map<string, Array<DanglingReceipt>>();\n\n /**\n * Remember the supplied dangling receipt.\n */\n public add(danglingReceipt: DanglingReceipt): void {\n const danglingReceipts = getOrCreate(this.data, danglingReceipt.eventId, () => []);\n danglingReceipts.push(danglingReceipt);\n }\n\n /**\n * Remove and return the dangling receipts for the given event ID.\n * @param eventId - the event ID to look for\n * @returns the found dangling receipts, or undefined if we don't have one.\n */\n public remove(eventId: string): Array<DanglingReceipt> | undefined {\n const danglingReceipts = this.data.get(eventId);\n this.data.delete(eventId);\n return danglingReceipts;\n }\n}\n\nfunction getOrCreate<K, V>(m: Map<K, V>, key: K, createFn: () => V): V {\n const found = m.get(key);\n if (found) {\n return found;\n } else {\n const created = createFn();\n m.set(key, created);\n return created;\n }\n}\n\n/**\n * Is left after right (or the same)?\n *\n * Only returns true if both events can be found, and left is after or the same\n * as right.\n *\n * @returns left \\>= right\n */\nfunction isAfterOrSame(leftEventId: string, rightEventId: string, room: Room): boolean {\n const comparison = room.compareEventOrdering(leftEventId, rightEventId);\n return comparison !== null && comparison >= 0;\n}\n\n/**\n * Is left strictly after right?\n *\n * Only returns true if both events can be found, and left is strictly after right.\n *\n * @returns left \\> right\n */\nfunction isAfter(leftEventId: string, rightEventId: string, room: Room): boolean {\n const comparison = room.compareEventOrdering(leftEventId, rightEventId);\n return comparison !== null && comparison > 0;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ import { MatrixEvent } from "../models/event.ts";
2
+ import { type Room } from "./room.ts";
3
+ import type { RetentionPolicyService } from "../retentionPolicy.ts";
4
+ import type { IStore } from "../store/index.ts";
5
+ /**
6
+ * Applies https://github.com/matrix-org/matrix-spec-proposals/pull/1763 by checking the current
7
+ * state of the room and applying the *latest* retention policy to all preceeding events.
8
+ * Currently does not:
9
+ * - Apply global server policies (requires Synapse work)
10
+ * - React at all to `min_retention` configs.
11
+ * - Loop
12
+ */
13
+ export declare class RoomRetentionPolicy {
14
+ private readonly room;
15
+ private readonly retentionService;
16
+ private readonly store;
17
+ private maxRetention;
18
+ private retentionTimeout?;
19
+ private readonly logger;
20
+ constructor(room: Room, retentionService: RetentionPolicyService, store: IStore);
21
+ shouldEventBeRetained(ev: MatrixEvent): boolean;
22
+ private readonly handleRetentionUpdate;
23
+ private readonly recalculateRetention;
24
+ private readonly timelineUpdated;
25
+ private readonly scheduleTimelineCheck;
26
+ private processTimeline;
27
+ }
28
+ //# sourceMappingURL=room-retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"room-retention.d.ts","sourceRoot":"","sources":["../../src/models/room-retention.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAOxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAP1B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,gBAAgB,CAAC,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAGX,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,sBAAsB,EACxC,KAAK,EAAE,MAAM;IA0B3B,qBAAqB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO;IAQtD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAqBpC;IAEF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CA6DnC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAEF,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAQpC;IAEF,OAAO,CAAC,eAAe;CAoD1B"}
@@ -0,0 +1,192 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ /*
3
+ Copyright 2026 Element Creations Ltd.
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ */
17
+
18
+ import { MatrixEvent } from "../models/event.js";
19
+ import { RoomEvent } from "./room.js";
20
+ import { RoomStateEvent } from "./room-state.js";
21
+ import { logger as rootLogger } from "../logger.js";
22
+ import { EventType } from "../@types/event.js";
23
+ import { ROOM_RETENTION_TYPE } from "../@types/retention.js";
24
+
25
+ /**
26
+ * Applies https://github.com/matrix-org/matrix-spec-proposals/pull/1763 by checking the current
27
+ * state of the room and applying the *latest* retention policy to all preceeding events.
28
+ * Currently does not:
29
+ * - Apply global server policies (requires Synapse work)
30
+ * - React at all to `min_retention` configs.
31
+ * - Loop
32
+ */
33
+ export class RoomRetentionPolicy {
34
+ constructor(room, retentionService, store) {
35
+ // minRetention is not implemented.
36
+ _defineProperty(this, "maxRetention", null);
37
+ _defineProperty(this, "retentionTimeout", void 0);
38
+ _defineProperty(this, "logger", void 0);
39
+ _defineProperty(this, "handleRetentionUpdate", async () => {
40
+ // First store if we currently have a retention period.
41
+ const hadRetentionPeriod = this.maxRetention !== null;
42
+ try {
43
+ await this.recalculateRetention(this.room.currentState);
44
+ } catch (err) {
45
+ this.logger.warn("Failed to recalculate retention policy", err);
46
+ return;
47
+ }
48
+
49
+ // Bind/unbind the Timeline event handler based on whether we should be running retention.
50
+ if (hadRetentionPeriod !== (this.maxRetention !== null)) {
51
+ this.logger.info("retention recalculated to be", this.maxRetention);
52
+ // We've changed
53
+ if (this.maxRetention) {
54
+ this.room.on(RoomEvent.Timeline, this.timelineUpdated);
55
+ } else {
56
+ this.room.off(RoomEvent.Timeline, this.timelineUpdated);
57
+ }
58
+ }
59
+ });
60
+ _defineProperty(this, "recalculateRetention", async roomState => {
61
+ const unstableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.name).find(e => e.getStateKey() === "");
62
+ const stableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.altName).find(e => e.getStateKey() === "");
63
+ const serverPolicy = this.retentionService.getCached();
64
+ const serverRoomPolicy = serverPolicy?.policies?.[this.room.roomId];
65
+ const roomStatePolicy = unstableEvent?.getContent() ?? stableEvent?.getContent();
66
+ const content =
67
+ // * if the homeserver defines a specific retention policy for this room, then use this policy as the effective retention policy of the room.
68
+ serverRoomPolicy ??
69
+ // * otherwise, if the state of the room includes a `m.room.retention` event with an empty state key:
70
+ roomStatePolicy ??
71
+ // * otherwise, if the state of the room does not include a m.room.retention event with an empty state key:
72
+ serverPolicy?.policies?.["*"];
73
+ if (!content) {
74
+ // * otherwise, don't apply a retention policy in this room.
75
+ this.maxRetention = null;
76
+ return;
77
+ }
78
+ const validatePolicy = !serverRoomPolicy && roomStatePolicy;
79
+
80
+ // Parse it
81
+ let {
82
+ max_lifetime: maxLifetime
83
+ } = content;
84
+ if (!maxLifetime && validatePolicy) {
85
+ // if there is no value specified in the room's state, use the limit's min value for the effective retention policy of the room (which can be null or absent).
86
+ maxLifetime = serverPolicy?.limits?.max_lifetime?.min;
87
+ if (!maxLifetime) {
88
+ this.maxRetention = null;
89
+ return;
90
+ }
91
+ }
92
+ if (typeof maxLifetime !== "number") {
93
+ throw Error(`max_lifetime must be a number, got "${maxLifetime}"`);
94
+ }
95
+ if (maxLifetime < 0 || !Number.isInteger(maxLifetime)) {
96
+ throw Error(`max_lifetime must be >= 0, got ${maxLifetime}`);
97
+ }
98
+ this.maxRetention = maxLifetime;
99
+ if (validatePolicy && serverPolicy?.limits?.max_lifetime) {
100
+ // We're using room state so we need to validate this policy matches the server.
101
+ /**
102
+ if the value specified in the room's state complies with the limit, use this value for the effective retention policy of the room.
103
+ if the value specified in the room's state is lower than the limit's min value, use the min value for the effective retention policy of the room.
104
+ if the value specified in the room's state is greater than the limit's max value, use the max value for the effective retention policy of the room.
105
+ */
106
+ this.maxRetention = Math.max(this.maxRetention, serverPolicy.limits.max_lifetime.min ?? 0);
107
+ this.maxRetention = Math.min(this.maxRetention, serverPolicy.limits.max_lifetime.max ?? Number.MAX_SAFE_INTEGER);
108
+ }
109
+ this.processTimeline();
110
+ });
111
+ _defineProperty(this, "timelineUpdated", () => {
112
+ this.logger.info("timelineUpdated");
113
+ this.scheduleTimelineCheck(200);
114
+ });
115
+ _defineProperty(this, "scheduleTimelineCheck", nextTs => {
116
+ if (this.retentionTimeout) {
117
+ clearTimeout(this.retentionTimeout);
118
+ }
119
+ this.retentionTimeout = setTimeout(() => {
120
+ this.processTimeline();
121
+ this.retentionTimeout = undefined;
122
+ }, nextTs);
123
+ });
124
+ this.room = room;
125
+ this.retentionService = retentionService;
126
+ this.store = store;
127
+ this.logger = rootLogger.getChild(`RetentionPolicy ${room.roomId}`);
128
+
129
+ // Recalculate on room state update.
130
+ room.on(RoomStateEvent.Events, event => {
131
+ if (event.getStateKey() !== "" || event.getType() !== "org.matrix.msc1763.retention" && event.getType() !== "m.room.retention") {
132
+ return;
133
+ }
134
+ void this.handleRetentionUpdate();
135
+ });
136
+
137
+ // Recalculate our retention whenever the global policy changes.
138
+ this.retentionService.on("update", () => {
139
+ this.logger.info("Got global retention policy update!");
140
+ void this.handleRetentionUpdate();
141
+ });
142
+ // Do an initial check on construction.
143
+ void this.handleRetentionUpdate();
144
+
145
+ // Only bind RoomEvent.Timeline once we know we have a retention policy.
146
+ }
147
+ shouldEventBeRetained(ev) {
148
+ if (!this.maxRetention) {
149
+ return true;
150
+ }
151
+ const expireBefore = Date.now() - this.maxRetention;
152
+ return ev.getTs() > expireBefore;
153
+ }
154
+ processTimeline() {
155
+ if (!this.maxRetention) {
156
+ return; // No policy, skip.
157
+ }
158
+ this.logger.info(`Running processTimeline`);
159
+ const expireBefore = Date.now() - this.maxRetention;
160
+ const events = this.room.getLiveTimeline().getEvents().filter(ev => ev.getStateKey() === undefined && !ev.isRedacted() && ev.getType() !== "m.room.redaction");
161
+ const expiredEvents = events.filter(ev => ev.getTs() < expireBefore);
162
+ const [earliestExpiringEvent] = events.filter(ev => ev.getTs() >= expireBefore).sort((a, b) => a.getTs() - b.getTs());
163
+ if (earliestExpiringEvent) {
164
+ const nextTs = earliestExpiringEvent.getTs() + this.maxRetention - Date.now();
165
+ this.logger.info(`Next expiry scheduled for ${nextTs}`);
166
+ this.scheduleTimelineCheck(nextTs);
167
+ }
168
+ if (expiredEvents.length === 0) {
169
+ this.logger.info("Found no expired events");
170
+ return;
171
+ }
172
+ this.logger.info(`Found ${expiredEvents.length} expired events`);
173
+ for (const event of expiredEvents) {
174
+ this.room.tryApplyRedaction(new MatrixEvent({
175
+ type: EventType.RoomRedaction,
176
+ sender: event.getSender(),
177
+ event_id: "$synthetic_redaction",
178
+ room_id: this.room.roomId,
179
+ redacts: event.getId(),
180
+ content: {
181
+ reason: "Retention policy"
182
+ },
183
+ origin_server_ts: Date.now(),
184
+ unsigned: {}
185
+ }));
186
+ }
187
+ void this.store.removeEventsFromRoom(this.room.roomId, expiredEvents.map(e => e.getId())).catch(ex => {
188
+ this.logger.warn(`Failed to remove events from store`, ex);
189
+ });
190
+ }
191
+ }
192
+ //# sourceMappingURL=room-retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"room-retention.js","names":[],"sources":["../../src/models/room-retention.ts"],"sourcesContent":["/*\nCopyright 2026 Element Creations Ltd.\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 { MatrixEvent } from \"../models/event.ts\";\nimport { RoomEvent, type Room } from \"./room.ts\";\nimport { RoomStateEvent, type RoomState } from \"./room-state.ts\";\nimport { type Logger, logger as rootLogger } from \"../logger.ts\";\nimport { EventType } from \"../@types/event.ts\";\nimport type { RetentionPolicyService } from \"../retentionPolicy.ts\";\nimport type { IStore } from \"../store/index.ts\";\nimport { ROOM_RETENTION_TYPE, type RoomRetentionContent } from \"../@types/retention.ts\";\n\n/**\n * Applies https://github.com/matrix-org/matrix-spec-proposals/pull/1763 by checking the current\n * state of the room and applying the *latest* retention policy to all preceeding events.\n * Currently does not:\n * - Apply global server policies (requires Synapse work)\n * - React at all to `min_retention` configs.\n * - Loop\n */\nexport class RoomRetentionPolicy {\n // minRetention is not implemented.\n private maxRetention: number | null = null;\n private retentionTimeout?: ReturnType<typeof setTimeout>;\n private readonly logger: Logger;\n\n public constructor(\n private readonly room: Room,\n private readonly retentionService: RetentionPolicyService,\n private readonly store: IStore,\n ) {\n this.logger = rootLogger.getChild(`RetentionPolicy ${room.roomId}`);\n\n // Recalculate on room state update.\n room.on(RoomStateEvent.Events, (event) => {\n if (\n event.getStateKey() !== \"\" ||\n (event.getType() !== \"org.matrix.msc1763.retention\" && event.getType() !== \"m.room.retention\")\n ) {\n return;\n }\n void this.handleRetentionUpdate();\n });\n\n // Recalculate our retention whenever the global policy changes.\n this.retentionService.on(\"update\", () => {\n this.logger.info(\"Got global retention policy update!\");\n void this.handleRetentionUpdate();\n });\n // Do an initial check on construction.\n void this.handleRetentionUpdate();\n\n // Only bind RoomEvent.Timeline once we know we have a retention policy.\n }\n\n public shouldEventBeRetained(ev: MatrixEvent): boolean {\n if (!this.maxRetention) {\n return true;\n }\n const expireBefore = Date.now() - this.maxRetention;\n return ev.getTs() > expireBefore;\n }\n\n private readonly handleRetentionUpdate = async (): Promise<void> => {\n // First store if we currently have a retention period.\n const hadRetentionPeriod = this.maxRetention !== null;\n\n try {\n await this.recalculateRetention(this.room.currentState);\n } catch (err) {\n this.logger.warn(\"Failed to recalculate retention policy\", err);\n return;\n }\n\n // Bind/unbind the Timeline event handler based on whether we should be running retention.\n if (hadRetentionPeriod !== (this.maxRetention !== null)) {\n this.logger.info(\"retention recalculated to be\", this.maxRetention);\n // We've changed\n if (this.maxRetention) {\n this.room.on(RoomEvent.Timeline, this.timelineUpdated);\n } else {\n this.room.off(RoomEvent.Timeline, this.timelineUpdated);\n }\n }\n };\n\n private readonly recalculateRetention = async (roomState: RoomState): Promise<void> => {\n const unstableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.name).find((e) => e.getStateKey() === \"\");\n const stableEvent = roomState.getStateEvents(ROOM_RETENTION_TYPE.altName).find((e) => e.getStateKey() === \"\");\n\n const serverPolicy = this.retentionService.getCached();\n\n const serverRoomPolicy = serverPolicy?.policies?.[this.room.roomId];\n const roomStatePolicy =\n unstableEvent?.getContent<RoomRetentionContent>() ?? stableEvent?.getContent<RoomRetentionContent>();\n\n const content =\n // * if the homeserver defines a specific retention policy for this room, then use this policy as the effective retention policy of the room.\n serverRoomPolicy ??\n // * otherwise, if the state of the room includes a `m.room.retention` event with an empty state key:\n roomStatePolicy ??\n // * otherwise, if the state of the room does not include a m.room.retention event with an empty state key:\n serverPolicy?.policies?.[\"*\"];\n\n if (!content) {\n // * otherwise, don't apply a retention policy in this room.\n this.maxRetention = null;\n return;\n }\n\n const validatePolicy = !serverRoomPolicy && roomStatePolicy;\n\n // Parse it\n let { max_lifetime: maxLifetime } = content;\n\n if (!maxLifetime && validatePolicy) {\n // if there is no value specified in the room's state, use the limit's min value for the effective retention policy of the room (which can be null or absent).\n maxLifetime = serverPolicy?.limits?.max_lifetime?.min;\n if (!maxLifetime) {\n this.maxRetention = null;\n return;\n }\n }\n\n if (typeof maxLifetime !== \"number\") {\n throw Error(`max_lifetime must be a number, got \"${maxLifetime}\"`);\n }\n if (maxLifetime < 0 || !Number.isInteger(maxLifetime)) {\n throw Error(`max_lifetime must be >= 0, got ${maxLifetime}`);\n }\n this.maxRetention = maxLifetime;\n\n if (validatePolicy && serverPolicy?.limits?.max_lifetime) {\n // We're using room state so we need to validate this policy matches the server.\n /**\n if the value specified in the room's state complies with the limit, use this value for the effective retention policy of the room.\n if the value specified in the room's state is lower than the limit's min value, use the min value for the effective retention policy of the room.\n if the value specified in the room's state is greater than the limit's max value, use the max value for the effective retention policy of the room.\n */\n this.maxRetention = Math.max(this.maxRetention, serverPolicy.limits.max_lifetime.min ?? 0);\n this.maxRetention = Math.min(\n this.maxRetention,\n serverPolicy.limits.max_lifetime.max ?? Number.MAX_SAFE_INTEGER,\n );\n }\n\n this.processTimeline();\n };\n\n private readonly timelineUpdated = (): void => {\n this.logger.info(\"timelineUpdated\");\n this.scheduleTimelineCheck(200);\n };\n\n private readonly scheduleTimelineCheck = (nextTs: number): void => {\n if (this.retentionTimeout) {\n clearTimeout(this.retentionTimeout);\n }\n this.retentionTimeout = setTimeout(() => {\n this.processTimeline();\n this.retentionTimeout = undefined;\n }, nextTs);\n };\n\n private processTimeline(): void {\n if (!this.maxRetention) {\n return; // No policy, skip.\n }\n this.logger.info(`Running processTimeline`);\n const expireBefore = Date.now() - this.maxRetention;\n const events = this.room\n .getLiveTimeline()\n .getEvents()\n .filter((ev) => ev.getStateKey() === undefined && !ev.isRedacted() && ev.getType() !== \"m.room.redaction\");\n\n const expiredEvents = events.filter((ev) => ev.getTs() < expireBefore);\n const [earliestExpiringEvent] = events\n .filter((ev) => ev.getTs() >= expireBefore)\n .sort((a, b) => a.getTs() - b.getTs());\n\n if (earliestExpiringEvent) {\n const nextTs = earliestExpiringEvent.getTs() + this.maxRetention - Date.now();\n this.logger.info(`Next expiry scheduled for ${nextTs}`);\n this.scheduleTimelineCheck(nextTs);\n }\n\n if (expiredEvents.length === 0) {\n this.logger.info(\"Found no expired events\");\n return;\n }\n this.logger.info(`Found ${expiredEvents.length} expired events`);\n for (const event of expiredEvents) {\n this.room.tryApplyRedaction(\n new MatrixEvent({\n type: EventType.RoomRedaction,\n sender: event.getSender(),\n event_id: \"$synthetic_redaction\",\n room_id: this.room.roomId,\n redacts: event.getId(),\n content: {\n reason: \"Retention policy\",\n },\n origin_server_ts: Date.now(),\n unsigned: {},\n }),\n );\n }\n void this.store\n .removeEventsFromRoom(\n this.room.roomId,\n expiredEvents.map((e) => e.getId()!),\n )\n .catch((ex) => {\n this.logger.warn(`Failed to remove events from store`, ex);\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}