Skip to content

Commit 870e50e

Browse files
committed
Switch to importing matrix-js-sdk properly
Using `src` imports as we did 1. made the build & typechecking slower 2. required us to install certain `@types/` deps which js-sdk needed 3. limited certain options in typescript as we had to support both the typescript features the js-sdk needed as well as element-web (e.g. we couldn't use ESNext lib as js-sdk uses es2024 with some extensions which clash with ESNext)
1 parent a08c341 commit 870e50e

1,245 files changed

Lines changed: 1967 additions & 2241 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/web/.eslintrc.cjs

Lines changed: 54 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ module.exports = {
6161
],
6262

6363
"import/no-duplicates": ["error"],
64-
// Ban matrix-js-sdk/src imports in favour of matrix-js-sdk/src/matrix imports to prevent unleashing hell.
65-
// Ban compound-design-tokens raw svg imports in favour of their React component counterparts
6664
"no-restricted-imports": [
6765
"error",
6866
{
@@ -76,25 +74,21 @@ module.exports = {
7674
name: "@testing-library/react",
7775
message: "Please use jest-matrix-react instead",
7876
},
79-
{
80-
name: "matrix-js-sdk",
81-
message: "Please use matrix-js-sdk/src/matrix instead",
82-
},
8377
{
8478
name: "matrix-js-sdk/",
85-
message: "Please use matrix-js-sdk/src/matrix instead",
79+
message: "Please use matrix-js-sdk instead",
8680
},
8781
{
8882
name: "matrix-js-sdk/src",
89-
message: "Please use matrix-js-sdk/src/matrix instead",
83+
message: "Please use 'matrix-js-sdk' instead",
9084
},
9185
{
9286
name: "matrix-js-sdk/src/",
93-
message: "Please use matrix-js-sdk/src/matrix instead",
87+
message: "Please use 'matrix-js-sdk' instead",
9488
},
9589
{
96-
name: "matrix-js-sdk/src/index",
97-
message: "Please use matrix-js-sdk/src/matrix instead",
90+
name: "matrix-js-sdk/lib/",
91+
message: "Please use 'matrix-js-sdk' instead",
9892
},
9993
{
10094
name: "emojibase-regex",
@@ -103,67 +97,67 @@ module.exports = {
10397
},
10498
],
10599
patterns: [
100+
// Ban matrix-js-sdk/src imports in favour of compiled matrix-js-sdk imports to prevent unleashing hell.
106101
{
107102
group: [
108103
"matrix-js-sdk/src/**",
109-
"!matrix-js-sdk/src/matrix",
110-
"!matrix-js-sdk/src/crypto-api",
111-
"!matrix-js-sdk/src/types",
112-
"!matrix-js-sdk/src/testing",
113-
"!matrix-js-sdk/src/utils/**",
114-
"matrix-js-sdk/src/utils/internal/**",
115-
"matrix-js-sdk/lib",
116-
"matrix-js-sdk/lib/",
104+
// "matrix-js-sdk/lib",
105+
// "matrix-js-sdk/lib/",
117106
"matrix-js-sdk/lib/**",
107+
"!matrix-js-sdk/lib/crypto-api",
108+
"!matrix-js-sdk/lib/types",
109+
"!matrix-js-sdk/lib/testing",
110+
"!matrix-js-sdk/lib/utils/**",
118111
// XXX: Temporarily allow these as they are not available via the main export
119-
"!matrix-js-sdk/src/logger",
120-
"!matrix-js-sdk/src/errors",
121-
"!matrix-js-sdk/src/utils",
122-
"!matrix-js-sdk/src/version-support",
123-
"!matrix-js-sdk/src/randomstring",
124-
"!matrix-js-sdk/src/sliding-sync",
125-
"!matrix-js-sdk/src/browser-index",
126-
"!matrix-js-sdk/src/feature",
127-
"!matrix-js-sdk/src/NamespacedValue",
128-
"!matrix-js-sdk/src/ReEmitter",
129-
"!matrix-js-sdk/src/event-mapper",
130-
"!matrix-js-sdk/src/interactive-auth",
131-
"!matrix-js-sdk/src/secret-storage",
132-
"!matrix-js-sdk/src/room-hierarchy",
133-
"!matrix-js-sdk/src/rendezvous",
134-
"!matrix-js-sdk/src/indexeddb-worker",
135-
"!matrix-js-sdk/src/pushprocessor",
136-
"!matrix-js-sdk/src/extensible_events_v1",
137-
"!matrix-js-sdk/src/extensible_events_v1/PollStartEvent",
138-
"!matrix-js-sdk/src/extensible_events_v1/PollResponseEvent",
139-
"!matrix-js-sdk/src/extensible_events_v1/PollEndEvent",
140-
"!matrix-js-sdk/src/extensible_events_v1/InvalidEventError",
141-
"!matrix-js-sdk/src/oidc",
142-
"!matrix-js-sdk/src/oidc/discovery",
143-
"!matrix-js-sdk/src/oidc/authorize",
144-
"!matrix-js-sdk/src/oidc/validate",
145-
"!matrix-js-sdk/src/oidc/error",
146-
"!matrix-js-sdk/src/oidc/register",
147-
"!matrix-js-sdk/src/webrtc",
148-
"!matrix-js-sdk/src/webrtc/call",
149-
"!matrix-js-sdk/src/webrtc/callFeed",
150-
"!matrix-js-sdk/src/webrtc/mediaHandler",
151-
"!matrix-js-sdk/src/webrtc/callEventTypes",
152-
"!matrix-js-sdk/src/webrtc/callEventHandler",
153-
"!matrix-js-sdk/src/webrtc/groupCallEventHandler",
154-
"!matrix-js-sdk/src/models",
155-
"!matrix-js-sdk/src/models/read-receipt",
156-
"!matrix-js-sdk/src/models/relations-container",
157-
"!matrix-js-sdk/src/models/related-relations",
158-
"!matrix-js-sdk/src/matrixrtc",
112+
"!matrix-js-sdk/lib/logger",
113+
"!matrix-js-sdk/lib/errors",
114+
"!matrix-js-sdk/lib/utils",
115+
"!matrix-js-sdk/lib/version-support",
116+
"!matrix-js-sdk/lib/randomstring",
117+
"!matrix-js-sdk/lib/sliding-sync",
118+
"!matrix-js-sdk/lib/browser-index",
119+
"!matrix-js-sdk/lib/feature",
120+
"!matrix-js-sdk/lib/NamespacedValue",
121+
"!matrix-js-sdk/lib/ReEmitter",
122+
"!matrix-js-sdk/lib/event-mapper",
123+
"!matrix-js-sdk/lib/interactive-auth",
124+
"!matrix-js-sdk/lib/secret-storage",
125+
"!matrix-js-sdk/lib/room-hierarchy",
126+
"!matrix-js-sdk/lib/rendezvous",
127+
"!matrix-js-sdk/lib/indexeddb-worker",
128+
"!matrix-js-sdk/lib/pushprocessor",
129+
"!matrix-js-sdk/lib/extensible_events_v1",
130+
"!matrix-js-sdk/lib/extensible_events_v1/PollStartEvent",
131+
"!matrix-js-sdk/lib/extensible_events_v1/PollResponseEvent",
132+
"!matrix-js-sdk/lib/extensible_events_v1/PollEndEvent",
133+
"!matrix-js-sdk/lib/extensible_events_v1/InvalidEventError",
134+
"!matrix-js-sdk/lib/oidc",
135+
"!matrix-js-sdk/lib/oidc/discovery",
136+
"!matrix-js-sdk/lib/oidc/authorize",
137+
"!matrix-js-sdk/lib/oidc/validate",
138+
"!matrix-js-sdk/lib/oidc/error",
139+
"!matrix-js-sdk/lib/oidc/register",
140+
"!matrix-js-sdk/lib/webrtc",
141+
"!matrix-js-sdk/lib/webrtc/call",
142+
"!matrix-js-sdk/lib/webrtc/callFeed",
143+
"!matrix-js-sdk/lib/webrtc/mediaHandler",
144+
"!matrix-js-sdk/lib/webrtc/callEventTypes",
145+
"!matrix-js-sdk/lib/webrtc/callEventHandler",
146+
"!matrix-js-sdk/lib/webrtc/groupCallEventHandler",
147+
"!matrix-js-sdk/lib/models",
148+
"!matrix-js-sdk/lib/models/read-receipt",
149+
"!matrix-js-sdk/lib/models/relations-container",
150+
"!matrix-js-sdk/lib/models/related-relations",
151+
"!matrix-js-sdk/lib/matrixrtc",
159152
],
160-
message: "Please use matrix-js-sdk/src/matrix instead",
153+
message: "Please use 'matrix-js-sdk' instead",
161154
},
162155
{
163156
group: ["emojibase-regex/emoji*"],
164157
message:
165158
"This regex doesn't actually test for emoji. See the docs at https://emojibase.dev/docs/regex/ and prefer our own EMOJI_REGEX from HtmlUtils.",
166159
},
160+
// Ban compound-design-tokens raw svg imports in favour of their React component counterparts
167161
{
168162
group: ["@vector-im/compound-design-tokens/icons/*"],
169163
message: "Please use @vector-im/compound-design-tokens/assets/web/icons/* instead",

apps/web/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,6 @@
140140
"@testing-library/react": "^16.0.0",
141141
"@testing-library/user-event": "^14.5.2",
142142
"@types/commonmark": "^0.27.4",
143-
"@types/content-type": "^1.1.9",
144143
"@types/counterpart": "^0.18.1",
145144
"@types/css-tree": "^2.3.8",
146145
"@types/diff-match-patch": "^1.0.32",
@@ -162,7 +161,6 @@
162161
"@types/react-dom": "catalog:",
163162
"@types/react-transition-group": "^4.4.0",
164163
"@types/sanitize-html": "2.16.1",
165-
"@types/sdp-transform": "^2.4.10",
166164
"@types/semver": "^7.5.8",
167165
"@types/tar-js": "^0.3.5",
168166
"@types/ua-parser-js": "^0.7.36",

apps/web/playwright/e2e/crypto/decryption-failure-messages.spec.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com
66
Please see LICENSE files in the repository root for full details.
77
*/
88

9-
import type { EmittedEvents, Preset } from "matrix-js-sdk/src/matrix";
9+
import type { Preset, RoomMemberEvent, RoomStateEvent } from "matrix-js-sdk";
1010
import { expect, test } from "../../element-web-test";
1111
import {
1212
createRoom,
@@ -122,7 +122,7 @@ test.describe("Cryptography", function () {
122122
const roomId = await bob.evaluate(
123123
async (client, { alice }) => {
124124
const encryptionStatePromise = new Promise<void>((resolve) => {
125-
client.on("RoomState.events" as EmittedEvents, (event, _state, _lastStateEvent) => {
125+
client.on("RoomState.events" as RoomStateEvent.Events, (event, _state, _lastStateEvent) => {
126126
if (event.getType() === "m.room.encryption") {
127127
resolve();
128128
}
@@ -253,11 +253,14 @@ test.describe("Cryptography", function () {
253253

254254
// invite Alice
255255
const inviteAlicePromise = new Promise<void>((resolve) => {
256-
client.on("RoomMember.membership" as EmittedEvents, (_event, member, _oldMembership?) => {
257-
if (member.userId === alice.userId && member.membership === "invite") {
258-
resolve();
259-
}
260-
});
256+
client.on(
257+
"RoomMember.membership" as RoomMemberEvent.Membership,
258+
(_event, member, _oldMembership?) => {
259+
if (member.userId === alice.userId && member.membership === "invite") {
260+
resolve();
261+
}
262+
},
263+
);
261264
});
262265
await client.invite(roomId, alice.userId);
263266
// wait for the invite to come back so that we encrypt to Alice
@@ -271,11 +274,14 @@ test.describe("Cryptography", function () {
271274

272275
// kick Alice
273276
const kickAlicePromise = new Promise<void>((resolve) => {
274-
client.on("RoomMember.membership" as EmittedEvents, (_event, member, _oldMembership?) => {
275-
if (member.userId === alice.userId && member.membership === "leave") {
276-
resolve();
277-
}
278-
});
277+
client.on(
278+
"RoomMember.membership" as RoomMemberEvent.Membership,
279+
(_event, member, _oldMembership?) => {
280+
if (member.userId === alice.userId && member.membership === "leave") {
281+
resolve();
282+
}
283+
},
284+
);
279285
});
280286
await client.kick(roomId, alice.userId);
281287
await kickAlicePromise;

apps/web/playwright/e2e/crypto/device-verification.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Please see LICENSE files in the repository root for full details.
99
import jsQR from "jsqr";
1010

1111
import type { JSHandle, Locator, Page } from "@playwright/test";
12-
import type { VerificationRequest } from "matrix-js-sdk/src/crypto-api";
12+
import type { VerificationRequest } from "matrix-js-sdk/lib/crypto-api";
1313
import { test, expect } from "../../element-web-test";
1414
import {
1515
awaitVerifier,

apps/web/playwright/e2e/crypto/toasts.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
* Please see LICENSE files in the repository root for full details.
66
*/
77

8-
import { type GeneratedSecretStorageKey } from "matrix-js-sdk/src/crypto-api";
8+
import { type GeneratedSecretStorageKey } from "matrix-js-sdk/lib/crypto-api";
99

1010
import { test, expect } from "../../element-web-test";
1111
import { createBot, deleteCachedSecrets, disableKeyBackup, logIntoElement, logIntoElementAndVerify } from "./utils";

apps/web/playwright/e2e/crypto/user-verification.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com
66
Please see LICENSE files in the repository root for full details.
77
*/
88

9-
import { type Preset, type Visibility } from "matrix-js-sdk/src/matrix";
9+
import { type Preset, type Visibility } from "matrix-js-sdk";
1010

1111
import { test, expect } from "../../element-web-test";
1212
import { doTwoWaySasVerification, awaitVerifier, waitForDevices } from "./utils";

apps/web/playwright/e2e/crypto/utils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details.
77
*/
88

99
import { expect, type JSHandle, type Page } from "@playwright/test";
10-
import { type ICreateRoomOpts, type MatrixClient } from "matrix-js-sdk/src/matrix";
10+
import { type ICreateRoomOpts, type MatrixClient } from "matrix-js-sdk";
1111

1212
import type {
1313
CryptoEvent,
@@ -17,7 +17,7 @@ import type {
1717
VerificationRequest,
1818
Verifier,
1919
VerifierEvent,
20-
} from "matrix-js-sdk/src/crypto-api";
20+
} from "matrix-js-sdk/lib/crypto-api";
2121
import { type Credentials, type HomeserverInstance } from "../../plugins/homeserver";
2222
import { type Client } from "../../pages/client";
2323
import { type ElementAppPage } from "../../pages/ElementAppPage";

apps/web/playwright/e2e/csAPI.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Please see LICENSE files in the repository root for full details.
66
*/
77

88
import { type APIRequestContext } from "@playwright/test";
9-
import { type KeyBackupInfo } from "matrix-js-sdk/src/crypto-api";
9+
import { type KeyBackupInfo } from "matrix-js-sdk/lib/crypto-api";
1010
import { ClientServerApi } from "@element-hq/element-web-playwright-common/lib/utils/api.js";
1111

1212
import { type HomeserverInstance } from "../plugins/homeserver";

apps/web/playwright/e2e/editing/editing.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details.
88

99
import { type Locator, type Page } from "@playwright/test";
1010

11-
import type { EventType, IContent, ISendEventResponse, MsgType, Visibility } from "matrix-js-sdk/src/matrix";
11+
import type { EventType, IContent, ISendEventResponse, MsgType, Visibility } from "matrix-js-sdk";
1212
import { expect, test } from "../../element-web-test";
1313
import { type ElementAppPage } from "../../pages/ElementAppPage";
1414
import { SettingLevel } from "../../../src/settings/SettingLevel";

apps/web/playwright/e2e/knock/knock-into-room.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com
88
Please see LICENSE files in the repository root for full details.
99
*/
1010

11-
import { type Visibility } from "matrix-js-sdk/src/matrix";
11+
import { type Visibility } from "matrix-js-sdk";
1212

1313
import { test, expect } from "../../element-web-test";
1414
import { waitForRoom } from "../utils";

0 commit comments

Comments
 (0)