matrix-js-sdk 41.6.0 → 41.7.0-rc.2

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 (171) hide show
  1. package/lib/ReEmitter.js +1 -1
  2. package/lib/ReEmitter.js.map +1 -1
  3. package/lib/ToDeviceMessageQueue.js +2 -2
  4. package/lib/ToDeviceMessageQueue.js.map +1 -1
  5. package/lib/autodiscovery.js +1 -0
  6. package/lib/autodiscovery.js.map +1 -1
  7. package/lib/client.d.ts.map +1 -1
  8. package/lib/client.js +77 -3
  9. package/lib/client.js.map +1 -1
  10. package/lib/common-crypto/CryptoBackend.js +2 -0
  11. package/lib/common-crypto/CryptoBackend.js.map +1 -1
  12. package/lib/crypto/store/indexeddb-crypto-store-backend.js +1 -1
  13. package/lib/crypto/store/indexeddb-crypto-store-backend.js.map +1 -1
  14. package/lib/crypto/store/indexeddb-crypto-store.js +2 -0
  15. package/lib/crypto/store/indexeddb-crypto-store.js.map +1 -1
  16. package/lib/crypto-api/index.js +58 -58
  17. package/lib/crypto-api/index.js.map +1 -1
  18. package/lib/embedded.js +13 -9
  19. package/lib/embedded.js.map +1 -1
  20. package/lib/extensible_events_v1/MessageEvent.js +15 -15
  21. package/lib/extensible_events_v1/MessageEvent.js.map +1 -1
  22. package/lib/extensible_events_v1/PollEndEvent.js +8 -8
  23. package/lib/extensible_events_v1/PollEndEvent.js.map +1 -1
  24. package/lib/extensible_events_v1/PollResponseEvent.js +1 -0
  25. package/lib/extensible_events_v1/PollResponseEvent.js.map +1 -1
  26. package/lib/extensible_events_v1/PollStartEvent.js +28 -28
  27. package/lib/extensible_events_v1/PollStartEvent.js.map +1 -1
  28. package/lib/filter.js +3 -1
  29. package/lib/filter.js.map +1 -1
  30. package/lib/http-api/errors.js +16 -16
  31. package/lib/http-api/errors.js.map +1 -1
  32. package/lib/http-api/fetch.js +2 -1
  33. package/lib/http-api/fetch.js.map +1 -1
  34. package/lib/http-api/refresh.js +7 -6
  35. package/lib/http-api/refresh.js.map +1 -1
  36. package/lib/http-api/utils.d.ts.map +1 -1
  37. package/lib/http-api/utils.js +1 -5
  38. package/lib/http-api/utils.js.map +1 -1
  39. package/lib/interactive-auth.js +11 -1
  40. package/lib/interactive-auth.js.map +1 -1
  41. package/lib/logger.js +2 -0
  42. package/lib/logger.js.map +1 -1
  43. package/lib/matrixrtc/CallMembership.js +6 -5
  44. package/lib/matrixrtc/CallMembership.js.map +1 -1
  45. package/lib/matrixrtc/MatrixRTCSession.d.ts.map +1 -1
  46. package/lib/matrixrtc/MatrixRTCSession.js +15 -5
  47. package/lib/matrixrtc/MatrixRTCSession.js.map +1 -1
  48. package/lib/matrixrtc/MatrixRTCSessionManager.js +3 -2
  49. package/lib/matrixrtc/MatrixRTCSessionManager.js.map +1 -1
  50. package/lib/matrixrtc/MembershipManager.js +24 -17
  51. package/lib/matrixrtc/MembershipManager.js.map +1 -1
  52. package/lib/matrixrtc/MembershipManagerActionScheduler.js +2 -1
  53. package/lib/matrixrtc/MembershipManagerActionScheduler.js.map +1 -1
  54. package/lib/matrixrtc/RTCEncryptionManager.js +6 -4
  55. package/lib/matrixrtc/RTCEncryptionManager.js.map +1 -1
  56. package/lib/matrixrtc/ToDeviceKeyTransport.js +4 -4
  57. package/lib/matrixrtc/ToDeviceKeyTransport.js.map +1 -1
  58. package/lib/models/MSC3089TreeSpace.js +2 -1
  59. package/lib/models/MSC3089TreeSpace.js.map +1 -1
  60. package/lib/models/beacon.js +8 -4
  61. package/lib/models/beacon.js.map +1 -1
  62. package/lib/models/device.js +7 -0
  63. package/lib/models/device.js.map +1 -1
  64. package/lib/models/event-context.js +2 -1
  65. package/lib/models/event-context.js.map +1 -1
  66. package/lib/models/event-timeline-set.js +7 -1
  67. package/lib/models/event-timeline-set.js.map +1 -1
  68. package/lib/models/event-timeline.js +5 -1
  69. package/lib/models/event-timeline.js.map +1 -1
  70. package/lib/models/event.js +35 -11
  71. package/lib/models/event.js.map +1 -1
  72. package/lib/models/poll.js +7 -3
  73. package/lib/models/poll.js.map +1 -1
  74. package/lib/models/related-relations.js +2 -0
  75. package/lib/models/related-relations.js.map +1 -1
  76. package/lib/models/relations-container.js +2 -2
  77. package/lib/models/relations-container.js.map +1 -1
  78. package/lib/models/relations.js +4 -3
  79. package/lib/models/relations.js.map +1 -1
  80. package/lib/models/room-member.js +24 -2
  81. package/lib/models/room-member.js.map +1 -1
  82. package/lib/models/room-receipts.js +19 -12
  83. package/lib/models/room-receipts.js.map +1 -1
  84. package/lib/models/room-state.js +2 -2
  85. package/lib/models/room-state.js.map +1 -1
  86. package/lib/models/room-sticky-events.js +1 -0
  87. package/lib/models/room-sticky-events.js.map +1 -1
  88. package/lib/models/room.js +35 -4
  89. package/lib/models/room.js.map +1 -1
  90. package/lib/models/thread.js +46 -2
  91. package/lib/models/thread.js.map +1 -1
  92. package/lib/models/user.js +20 -1
  93. package/lib/models/user.js.map +1 -1
  94. package/lib/oidc/tokenRefresher.js +11 -8
  95. package/lib/oidc/tokenRefresher.js.map +1 -1
  96. package/lib/pushprocessor.js +1 -1
  97. package/lib/pushprocessor.js.map +1 -1
  98. package/lib/rendezvous/MSC4108SignInWithQR.js +6 -1
  99. package/lib/rendezvous/MSC4108SignInWithQR.js.map +1 -1
  100. package/lib/rendezvous/channels/MSC4108SecureChannel.js +3 -1
  101. package/lib/rendezvous/channels/MSC4108SecureChannel.js.map +1 -1
  102. package/lib/rendezvous/transports/MSC4108RendezvousSession.js +8 -0
  103. package/lib/rendezvous/transports/MSC4108RendezvousSession.js.map +1 -1
  104. package/lib/room-hierarchy.js +8 -4
  105. package/lib/room-hierarchy.js.map +1 -1
  106. package/lib/rust-crypto/DehydratedDeviceManager.js +3 -2
  107. package/lib/rust-crypto/DehydratedDeviceManager.js.map +1 -1
  108. package/lib/rust-crypto/KeyClaimManager.js +2 -1
  109. package/lib/rust-crypto/KeyClaimManager.js.map +1 -1
  110. package/lib/rust-crypto/OutgoingRequestsManager.js +12 -12
  111. package/lib/rust-crypto/OutgoingRequestsManager.js.map +1 -1
  112. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js +5 -3
  113. package/lib/rust-crypto/PerSessionKeyBackupDownloader.js.map +1 -1
  114. package/lib/rust-crypto/RoomEncryptor.js +6 -6
  115. package/lib/rust-crypto/RoomEncryptor.js.map +1 -1
  116. package/lib/rust-crypto/backup.js +6 -4
  117. package/lib/rust-crypto/backup.js.map +1 -1
  118. package/lib/rust-crypto/rust-crypto.js +18 -10
  119. package/lib/rust-crypto/rust-crypto.js.map +1 -1
  120. package/lib/rust-crypto/verification.js +9 -7
  121. package/lib/rust-crypto/verification.js.map +1 -1
  122. package/lib/scheduler.js +2 -2
  123. package/lib/scheduler.js.map +1 -1
  124. package/lib/serverCapabilities.js +5 -2
  125. package/lib/serverCapabilities.js.map +1 -1
  126. package/lib/sliding-sync-sdk.js +6 -3
  127. package/lib/sliding-sync-sdk.js.map +1 -1
  128. package/lib/sliding-sync.js +9 -4
  129. package/lib/sliding-sync.js.map +1 -1
  130. package/lib/store/indexeddb-local-backend.js +5 -1
  131. package/lib/store/indexeddb-local-backend.js.map +1 -1
  132. package/lib/store/indexeddb-remote-backend.js +7 -6
  133. package/lib/store/indexeddb-remote-backend.js.map +1 -1
  134. package/lib/store/indexeddb-store-worker.js +2 -1
  135. package/lib/store/indexeddb-store-worker.js.map +1 -1
  136. package/lib/store/indexeddb.js +1 -0
  137. package/lib/store/indexeddb.js.map +1 -1
  138. package/lib/store/memory.js +4 -0
  139. package/lib/store/memory.js.map +1 -1
  140. package/lib/sync-accumulator.js +1 -1
  141. package/lib/sync-accumulator.js.map +1 -1
  142. package/lib/sync.d.ts.map +1 -1
  143. package/lib/sync.js +32 -16
  144. package/lib/sync.js.map +1 -1
  145. package/lib/timeline-window.js +6 -2
  146. package/lib/timeline-window.js.map +1 -1
  147. package/lib/webrtc/call.js +42 -6
  148. package/lib/webrtc/call.js.map +1 -1
  149. package/lib/webrtc/callEventHandler.js +5 -0
  150. package/lib/webrtc/callEventHandler.js.map +1 -1
  151. package/lib/webrtc/callFeed.js +15 -0
  152. package/lib/webrtc/callFeed.js.map +1 -1
  153. package/lib/webrtc/groupCall.js +24 -8
  154. package/lib/webrtc/groupCall.js.map +1 -1
  155. package/lib/webrtc/groupCallEventHandler.js +1 -1
  156. package/lib/webrtc/groupCallEventHandler.js.map +1 -1
  157. package/lib/webrtc/mediaHandler.js +7 -3
  158. package/lib/webrtc/mediaHandler.js.map +1 -1
  159. package/lib/webrtc/stats/callStatsReportGatherer.js +5 -2
  160. package/lib/webrtc/stats/callStatsReportGatherer.js.map +1 -1
  161. package/lib/webrtc/stats/groupCallStats.js +4 -3
  162. package/lib/webrtc/stats/groupCallStats.js.map +1 -1
  163. package/lib/webrtc/stats/media/mediaTrackStats.js +3 -3
  164. package/lib/webrtc/stats/media/mediaTrackStats.js.map +1 -1
  165. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js +1 -1
  166. package/lib/webrtc/stats/media/mediaTrackStatsHandler.js.map +1 -1
  167. package/package.json +125 -138
  168. package/src/client.ts +4 -1
  169. package/src/http-api/utils.ts +4 -9
  170. package/src/matrixrtc/MatrixRTCSession.ts +4 -3
  171. package/src/sync.ts +5 -1
package/package.json CHANGED
@@ -1,139 +1,126 @@
1
1
  {
2
- "name": "matrix-js-sdk",
3
- "version": "41.6.0",
4
- "description": "Matrix Client-Server SDK for Javascript",
5
- "engines": {
6
- "node": ">=22.0.0"
7
- },
8
- "scripts": {
9
- "prepare": "pnpm build",
10
- "start": "concurrently 'pnpm run build:compile --watch' 'pnpm run build:types --watch'",
11
- "build": "pnpm build:compile && pnpm build:types",
12
- "build:types": "tsc -p tsconfig-build.json --emitDeclarationOnly",
13
- "build:compile": "babel --delete-dir-on-start -d lib --verbose --extensions \".ts,.js\" src",
14
- "gendoc": "typedoc",
15
- "lint": "pnpm lint:types && pnpm lint:js && pnpm lint:workflows",
16
- "lint:js": "eslint --max-warnings 0 src spec && prettier --check .",
17
- "lint:js-fix": "prettier --log-level=warn --write . && eslint --fix src spec",
18
- "lint:types": "tsc --noEmit",
19
- "lint:workflows": "find .github/workflows -type f \\( -iname '*.yaml' -o -iname '*.yml' \\) | xargs -I {} sh -c 'echo \"Linting {}\"; action-validator \"{}\"'",
20
- "lint:knip": "knip",
21
- "test": "vitest run",
22
- "test:watch": "vitest watch",
23
- "coverage": "pnpm test --coverage"
24
- },
25
- "repository": {
26
- "type": "git",
27
- "url": "git+https://github.com/matrix-org/matrix-js-sdk.git"
28
- },
29
- "keywords": [
30
- "matrix-org"
31
- ],
32
- "type": "module",
33
- "main": "./lib/index.js",
34
- "browser": "./lib/browser-index.js",
35
- "typings": "./lib/index.d.ts",
36
- "author": "matrix.org",
37
- "license": "Apache-2.0",
38
- "files": [
39
- "lib",
40
- "src",
41
- "git-revision.txt",
42
- "CHANGELOG.md",
43
- "CONTRIBUTING.rst",
44
- "LICENSE",
45
- "README.md",
46
- "package.json",
47
- "release.sh"
48
- ],
49
- "dependencies": {
50
- "@babel/runtime": "^7.12.5",
51
- "@matrix-org/matrix-sdk-crypto-wasm": "^18.2.0",
52
- "another-json": "^0.2.0",
53
- "bs58": "^6.0.0",
54
- "content-type": "^1.0.4",
55
- "jwt-decode": "^4.0.0",
56
- "loglevel": "^1.9.2",
57
- "matrix-events-sdk": "0.0.1",
58
- "matrix-widget-api": "^1.16.1",
59
- "oidc-client-ts": "^3.0.1",
60
- "p-retry": "8",
61
- "sdp-transform": "^3.0.0",
62
- "unhomoglyph": "^1.0.6"
63
- },
64
- "devDependencies": {
65
- "@action-validator/cli": "^0.6.0",
66
- "@action-validator/core": "^0.6.0",
67
- "@babel/cli": "^7.12.10",
68
- "@babel/core": "^7.12.10",
69
- "@babel/eslint-parser": "^7.12.10",
70
- "@babel/eslint-plugin": "^7.12.10",
71
- "@babel/plugin-proposal-decorators": "^7.25.9",
72
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
73
- "@babel/plugin-transform-class-properties": "^7.12.1",
74
- "@babel/plugin-transform-numeric-separator": "^7.12.7",
75
- "@babel/plugin-transform-object-rest-spread": "^7.12.1",
76
- "@babel/plugin-transform-runtime": "^7.12.10",
77
- "@babel/preset-env": "^7.12.11",
78
- "@babel/preset-typescript": "^7.12.7",
79
- "@fetch-mock/vitest": "^0.2.18",
80
- "@matrix-org/olm": "3.2.15",
81
- "@peculiar/webcrypto": "^1.4.5",
82
- "@stylistic/eslint-plugin": "^5.0.0",
83
- "@types/content-type": "^1.1.5",
84
- "@types/debug": "^4.1.7",
85
- "@types/node": "22",
86
- "@types/sdp-transform": "^2.4.5",
87
- "@typescript-eslint/eslint-plugin": "^8.0.0",
88
- "@typescript-eslint/parser": "^8.0.0",
89
- "@vitest/coverage-v8": "^4.0.17",
90
- "@vitest/eslint-plugin": "^1.6.6",
91
- "@vitest/ui": "^4.0.17",
92
- "babel-plugin-search-and-replace": "^1.1.1",
93
- "concurrently": "^9.2.1",
94
- "debug": "^4.3.4",
95
- "eslint": "8.57.1",
96
- "eslint-config-google": "^0.14.0",
97
- "eslint-config-prettier": "^10.0.0",
98
- "eslint-import-resolver-typescript": "^4.0.0",
99
- "eslint-plugin-import": "^2.26.0",
100
- "eslint-plugin-jsdoc": "^62.0.0",
101
- "eslint-plugin-matrix-org": "^3.0.0",
102
- "eslint-plugin-n": "^14.0.0",
103
- "eslint-plugin-tsdoc": "^0.5.0",
104
- "eslint-plugin-unicorn": "^56.0.0",
105
- "fake-indexeddb": "^5.0.2",
106
- "fetch-mock": "^12.6.0",
107
- "happy-dom": "^20.1.0",
108
- "husky": "^9.0.0",
109
- "knip": "^6.0.0",
110
- "lint-staged": "^16.0.0",
111
- "matrix-mock-request": "^2.5.0",
112
- "prettier": "3.8.3",
113
- "typedoc": "^0.28.1",
114
- "typedoc-plugin-coverage": "^4.0.0",
115
- "typedoc-plugin-mdn-links": "^5.0.0",
116
- "typedoc-plugin-missing-exports": "^4.0.0",
117
- "typescript": "^6.0.0",
118
- "vitest": "^4.0.17",
119
- "vitest-sonar-reporter": "^3.0.0"
120
- },
121
- "pnpm": {
122
- "peerDependencyRules": {
123
- "allowedVersions": {
124
- "eslint": "8"
125
- }
126
- },
127
- "allowedDeprecatedVersions": {
128
- "eslint": "8"
129
- },
130
- "overrides": {
131
- "expect": "30.3.0",
132
- "flatted@<=3.4.1": "^3.4.2",
133
- "picomatch@>=4.0.0 <4.0.4": "^4.0.4",
134
- "yaml@>=2.0.0 <2.8.3": "^2.8.3",
135
- "vite": "8.0.10"
136
- }
137
- },
138
- "packageManager": "pnpm@10.33.3+sha512.a19744364a7e248b92657a4ca5973f9354d21caf982579674b1c539f32c7420c47138ad8b1254df07aba9bc782d9b3029e3db34d5dbff974326eb74dac8ff489"
139
- }
2
+ "name": "matrix-js-sdk",
3
+ "version": "41.7.0-rc.2",
4
+ "description": "Matrix Client-Server SDK for Javascript",
5
+ "engines": {
6
+ "node": ">=22.0.0"
7
+ },
8
+ "devEngines": {
9
+ "packageManager": {
10
+ "name": "pnpm",
11
+ "version": "11.2.2+sha512.36e6621fad506178936455e70247b8808ef4ec25797a9f437a93281a020484e2607f6a469a22e982987c3dbb8866e3071514ab10a4a1749e06edcd1ec118436f",
12
+ "onFail": "error"
13
+ }
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/matrix-org/matrix-js-sdk.git"
18
+ },
19
+ "keywords": [
20
+ "matrix-org"
21
+ ],
22
+ "type": "module",
23
+ "main": "./lib/index.js",
24
+ "browser": "./lib/browser-index.js",
25
+ "typings": "./lib/index.d.ts",
26
+ "author": "matrix.org",
27
+ "license": "Apache-2.0",
28
+ "files": [
29
+ "lib",
30
+ "src",
31
+ "git-revision.txt",
32
+ "CHANGELOG.md",
33
+ "CONTRIBUTING.rst",
34
+ "LICENSE",
35
+ "README.md",
36
+ "package.json",
37
+ "release.sh"
38
+ ],
39
+ "dependencies": {
40
+ "@babel/runtime": "^7.12.5",
41
+ "@matrix-org/matrix-sdk-crypto-wasm": "^18.2.0",
42
+ "another-json": "^0.2.0",
43
+ "bs58": "^6.0.0",
44
+ "content-type": "^2.0.0",
45
+ "jwt-decode": "^4.0.0",
46
+ "loglevel": "^1.9.2",
47
+ "matrix-events-sdk": "0.0.1",
48
+ "matrix-widget-api": "^1.16.1",
49
+ "oidc-client-ts": "^3.0.1",
50
+ "p-retry": "8",
51
+ "sdp-transform": "^3.0.0",
52
+ "unhomoglyph": "^1.0.6"
53
+ },
54
+ "devDependencies": {
55
+ "@action-validator/cli": "^0.6.0",
56
+ "@action-validator/core": "^0.6.0",
57
+ "@babel/cli": "^7.12.10",
58
+ "@babel/core": "^7.12.10",
59
+ "@babel/eslint-parser": "^7.12.10",
60
+ "@babel/eslint-plugin": "^7.12.10",
61
+ "@babel/plugin-proposal-decorators": "^7.25.9",
62
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
63
+ "@babel/plugin-transform-class-properties": "^7.12.1",
64
+ "@babel/plugin-transform-numeric-separator": "^7.12.7",
65
+ "@babel/plugin-transform-object-rest-spread": "^7.12.1",
66
+ "@babel/plugin-transform-runtime": "^7.12.10",
67
+ "@babel/preset-env": "^7.12.11",
68
+ "@babel/preset-typescript": "^7.12.7",
69
+ "@fetch-mock/vitest": "^0.2.18",
70
+ "@matrix-org/olm": "3.2.15",
71
+ "@peculiar/webcrypto": "^1.4.5",
72
+ "@stylistic/eslint-plugin": "^5.0.0",
73
+ "@types/debug": "^4.1.7",
74
+ "@types/node": "22",
75
+ "@types/sdp-transform": "^2.4.5",
76
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
77
+ "@typescript-eslint/parser": "^8.0.0",
78
+ "@vitest/coverage-v8": "^4.0.17",
79
+ "@vitest/eslint-plugin": "^1.6.6",
80
+ "@vitest/ui": "^4.0.17",
81
+ "babel-plugin-search-and-replace": "^1.1.1",
82
+ "concurrently": "^9.2.1",
83
+ "debug": "^4.3.4",
84
+ "eslint": "8.57.1",
85
+ "eslint-config-google": "^0.14.0",
86
+ "eslint-config-prettier": "^10.0.0",
87
+ "eslint-import-resolver-typescript": "^4.0.0",
88
+ "eslint-plugin-import": "^2.26.0",
89
+ "eslint-plugin-jsdoc": "^63.0.0",
90
+ "eslint-plugin-matrix-org": "^3.0.0",
91
+ "eslint-plugin-n": "^14.0.0",
92
+ "eslint-plugin-tsdoc": "^0.5.0",
93
+ "eslint-plugin-unicorn": "^56.0.0",
94
+ "fake-indexeddb": "^5.0.2",
95
+ "fetch-mock": "^12.6.0",
96
+ "happy-dom": "^20.1.0",
97
+ "husky": "^9.0.0",
98
+ "knip": "^6.0.0",
99
+ "lint-staged": "^17.0.0",
100
+ "matrix-mock-request": "^2.5.0",
101
+ "prettier": "3.8.3",
102
+ "typedoc": "^0.28.1",
103
+ "typedoc-plugin-coverage": "^4.0.0",
104
+ "typedoc-plugin-mdn-links": "^5.0.0",
105
+ "typedoc-plugin-missing-exports": "^4.0.0",
106
+ "typescript": "^6.0.0",
107
+ "vitest": "^4.0.17"
108
+ },
109
+ "scripts": {
110
+ "start": "concurrently 'pnpm run build:compile --watch' 'pnpm run build:types --watch'",
111
+ "build": "pnpm build:compile && pnpm build:types",
112
+ "build:types": "tsc -p tsconfig-build.json --emitDeclarationOnly",
113
+ "build:compile": "babel --delete-dir-on-start -d lib --verbose --extensions \".ts,.js\" src",
114
+ "gendoc": "typedoc",
115
+ "lint": "pnpm lint:types && pnpm lint:js && pnpm lint:workflows",
116
+ "lint:js": "eslint --max-warnings 0 src spec && prettier --check .",
117
+ "lint:js-fix": "prettier --log-level=warn --write . && eslint --fix src spec",
118
+ "lint:types": "tsc --noEmit",
119
+ "lint:workflows": "find .github/workflows -type f \\( -iname '*.yaml' -o -iname '*.yml' \\) | xargs -I {} sh -c 'echo \"Linting {}\"; action-validator \"{}\"'",
120
+ "lint:knip": "knip",
121
+ "test": "vitest run",
122
+ "test:watch": "vitest watch",
123
+ "coverage": "pnpm test --coverage",
124
+ "coverage:diff": "diff-cover --config-file diff-cover.toml coverage/lcov.info"
125
+ }
126
+ }
package/src/client.ts CHANGED
@@ -3742,7 +3742,10 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
3742
3742
  $delayId: delayId,
3743
3743
  $action: action,
3744
3744
  });
3745
- return await this.http.request(Method.Post, path, undefined, undefined, {
3745
+ // Although this endpoint supports being used without authentication,
3746
+ // do authenticate here to make ratelimiting apply per user instead of per source IP address,
3747
+ // if the server supports that
3748
+ return await this.http.authedRequest(Method.Post, path, undefined, undefined, {
3746
3749
  ...requestOptions,
3747
3750
  prefix: `${ClientPrefix.Unstable}/${UNSTABLE_MSC4140_DELAYED_EVENTS}`,
3748
3751
  });
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
14
14
  limitations under the License.
15
15
  */
16
16
 
17
- import { parse as parseContentType, type ParsedMediaType } from "content-type";
17
+ import { parse as parseContentType, type ContentType } from "content-type";
18
18
 
19
19
  import { logger } from "../logger.ts";
20
20
  import { sleep } from "../utils.ts";
@@ -92,7 +92,7 @@ export function parseErrorResponse(response: XMLHttpRequest | Response, body?: s
92
92
  )
93
93
  : response.headers;
94
94
 
95
- let contentType: ParsedMediaType | null;
95
+ let contentType: ContentType | null;
96
96
  try {
97
97
  contentType = getResponseContentType(httpHeaders);
98
98
  } catch (e) {
@@ -136,15 +136,10 @@ function isXhr(response: XMLHttpRequest | Response): response is XMLHttpRequest
136
136
  * @param response - response object
137
137
  * @returns parsed content-type header, or null if not found
138
138
  */
139
- function getResponseContentType(headers: Headers): ParsedMediaType | null {
139
+ function getResponseContentType(headers: Headers): ContentType | null {
140
140
  const contentType = headers.get("Content-Type");
141
141
  if (contentType === null) return null;
142
-
143
- try {
144
- return parseContentType(contentType);
145
- } catch (e) {
146
- throw new Error(`Error parsing Content-Type '${contentType}': ${e}`);
147
- }
142
+ return parseContentType(contentType);
148
143
  }
149
144
 
150
145
  /**
@@ -755,9 +755,10 @@ export class MatrixRTCSession extends TypedEventEmitter<
755
755
  }
756
756
  this.membershipNeedsRecalculation = true;
757
757
  // Chain the recalculation.
758
- this.recalculateSessionMembersPromise = this.recalculateSessionMembersPromise
759
- .finally()
760
- .then(() => this.recalculateSessionMembers());
758
+ this.recalculateSessionMembersPromise = this.recalculateSessionMembersPromise.then(
759
+ () => this.recalculateSessionMembers(),
760
+ () => this.recalculateSessionMembers(),
761
+ );
761
762
  return this.recalculateSessionMembersPromise;
762
763
  }
763
764
 
package/src/sync.ts CHANGED
@@ -1167,7 +1167,6 @@ export class SyncApi {
1167
1167
  for (const [userId, userData] of Object.entries(userUpdate)) {
1168
1168
  logger.info(`Storing user profile ${userId}`, userData);
1169
1169
  if (userData.profile_updates) {
1170
- client.emit(ClientEvent.UserProfileUpdate, userId, userData.profile_updates);
1171
1170
  const existingProfile = await client.store.getUserProfile(userId);
1172
1171
  profilesToAmend.set(userId, { ...existingProfile, ...userData.profile_updates });
1173
1172
  } else if (userData.profile_updates === null) {
@@ -1180,6 +1179,11 @@ export class SyncApi {
1180
1179
  if (profilesToAmend.size) {
1181
1180
  await client.store.storeUserProfiles(profilesToAmend);
1182
1181
  }
1182
+
1183
+ // emit after we've update the store so that clients can get the updated profile if they want to
1184
+ for (const [userId, userData] of Object.entries(userUpdate)) {
1185
+ client.emit(ClientEvent.UserProfileUpdate, userId, userData.profile_updates ?? null);
1186
+ }
1183
1187
  }
1184
1188
 
1185
1189
  // handle to-device events