Skip to content

Commit 82fe093

Browse files
authored
Upgrade matrix-apservice-bridge base stack to node24. (#1052)
the-draupnir-project/planning#104 I don't know what the fuck they are doing with the typings in the vector bot-sdk repository but whatever. #1053
1 parent 1fa5a1e commit 82fe093

File tree

19 files changed

+233
-195
lines changed

19 files changed

+233
-195
lines changed

.changeset/tidy-heads-tickle.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"draupnir": major
3+
---
4+
5+
Updated minimum engine version to node 24.

.github/workflows/mjolnir.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ jobs:
2121
steps:
2222
- uses: actions/checkout@v6
2323

24-
- name: Specifically use node 20 like in the readme.
24+
- name: Specifically use node 24 like in the readme.
2525
uses: actions/setup-node@v6
2626
with:
27-
node-version: "20"
27+
node-version: "24"
2828
- run: corepack enable
2929
- run: corepack npm install
3030
- run: corepack npm run build:all
@@ -34,10 +34,10 @@ jobs:
3434
runs-on: ubuntu-latest
3535
steps:
3636
- uses: actions/checkout@v6
37-
- name: Specifically use node 20 like in the readme.
37+
- name: Specifically use node 24 like in the readme.
3838
uses: actions/setup-node@v6
3939
with:
40-
node-version: "20"
40+
node-version: "24"
4141
- run: corepack npm install
4242
- run: corepack npm run build:all
4343
- run: corepack npm run test
@@ -49,7 +49,7 @@ jobs:
4949
- uses: actions/checkout@v6
5050
- uses: actions/setup-node@v6
5151
with:
52-
node-version: "20"
52+
node-version: "24"
5353
- name: Fetch and build mx-tester (cached across runs)
5454
uses: baptiste0928/cargo-install@v3
5555
with:
@@ -71,7 +71,7 @@ jobs:
7171
- uses: actions/setup-node@v6
7272
- uses: actions/checkout@v6
7373
with:
74-
node-version: "20"
74+
node-version: "24"
7575
- name: Fetch and build mx-tester (cached across runs)
7676
uses: baptiste0928/cargo-install@v3
7777
with:

DEPENDENCIES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,9 @@ reproducibly on any branch of PR.
3434
Developer tooling related `devDependencies` should be kept in the root package
3535
unless it is not common to most packages. This is to make sure the versioning
3636
remains consistent without relying on npm to do that.
37+
38+
## Node
39+
40+
We try to follow the active LTS release to keep us more inline with the
41+
[matrix-appservice-bridge](https://github.com/matrix-org/matrix-appservice-bridge/blob/develop/docs/platforms.md)
42+
stack of libraries.

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44
# SPDX-License-Identifier: Apache-2.0 AND AFL-3.0
55

6-
FROM node:20-slim as build-stage
6+
FROM node:24-slim as build-stage
77
RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
88
COPY . /tmp/src
99
# describe the version.
@@ -14,7 +14,7 @@ RUN cd /tmp/src \
1414
&& npm run build \
1515
&& npm prune --production
1616

17-
FROM node:20-slim as final-stage
17+
FROM node:24-slim as final-stage
1818
COPY --from=build-stage /tmp/src/apps/draupnir /apps/draupnir
1919
COPY --from=build-stage /tmp/src/packages /packages
2020
COPY --from=build-stage /tmp/src/node_modules /node_modules

apps/draupnir/package.json

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"@types/jsdom": "21.1.7",
3131
"@types/mocha": "^10.0.7",
3232
"@types/nedb": "^1.8.16",
33-
"@types/node": "^20.14.11",
33+
"@types/node": "^24.12.0",
3434
"@types/pg": "^8.6.5",
3535
"@types/request": "^2.48.12",
3636
"crypto-js": "^4.2.0",
@@ -46,27 +46,26 @@
4646
"@the-draupnir-project/interface-manager": "4.2.6",
4747
"@the-draupnir-project/matrix-basic-types": "1.5.0",
4848
"@the-draupnir-project/mps-interface-adaptor": "file:../../packages/mps-interface-adaptor",
49-
"@vector-im/matrix-bot-sdk": "0.7.1-element.6",
50-
"better-sqlite3": "^9.4.3",
49+
"@vector-im/matrix-bot-sdk": "^0.8.0-element.3",
50+
"better-sqlite3": "^12.8.0",
5151
"body-parser": "^1.20.2",
5252
"config": "^3.3.9",
5353
"express": "^4.19",
5454
"html-to-text": "^8.0.0",
5555
"js-yaml": "^4.1.0",
5656
"jsdom": "^24.0.0",
57-
"matrix-appservice-bridge": "10.3.1",
57+
"matrix-appservice-bridge": "^11.2.0",
5858
"matrix-protection-suite": "file:../../packages/matrix-protection-suite",
5959
"matrix-protection-suite-for-matrix-bot-sdk": "file:../../packages/matrix-protection-suite-for-matrix-bot-sdk",
6060
"pg": "^8.8.0",
6161
"yaml": "^2.3.2"
6262
},
6363
"overrides": {
64-
"@vector-im/matrix-bot-sdk": "0.7.1-element.6",
6564
"@the-draupnir-project/matrix-basic-types": "$the-draupnir-project/matrix-basic-types",
6665
"@the-draupnir-project/interface-manager": "$the-draupnir-project/interface-manager",
6766
"matrix-protection-suite": "$matrix-protection-suite"
6867
},
6968
"engines": {
70-
"node": ">=20.0.0"
69+
"node": ">=24.0.0"
7170
}
7271
}

apps/draupnir/src/report/ReportManager.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
// https://github.com/matrix-org/mjolnir
99
// </text>
1010

11-
import { PowerLevelAction } from "@vector-im/matrix-bot-sdk/lib/models/PowerLevelAction";
11+
import { PowerLevelAction } from "@vector-im/matrix-bot-sdk";
1212
import { LogService, UserID } from "@vector-im/matrix-bot-sdk";
1313
import { htmlToText } from "html-to-text";
14+
import { extractRawRoomEvent } from "matrix-protection-suite-for-matrix-bot-sdk";
1415
import { htmlEscape } from "../utils";
1516
import { JSDOM } from "jsdom";
1617
import { Draupnir } from "../Draupnir";
@@ -226,10 +227,9 @@ export class StandardReportManager {
226227
let initialNoticeReport: IReport | undefined,
227228
confirmationReport: IReportWithAction | undefined;
228229
try {
229-
const originalEvent = (await this.draupnir.client.getEvent(
230-
roomID,
231-
relation.event_id
232-
)) as RoomEvent;
230+
const originalEvent = extractRawRoomEvent(
231+
await this.draupnir.client.getEvent(roomID, relation.event_id)
232+
) as RoomEvent;
233233
if (originalEvent.sender !== this.draupnir.clientUserID) {
234234
// Let's not handle reactions to events we didn't send as
235235
// some setups have two or more Draupnir's in the same management room.
@@ -978,10 +978,9 @@ class EscalateToServerModerationRoom implements IUIAction {
978978
_moderationroomID: string,
979979
displayManager: DisplayManager
980980
): Promise<string | undefined> {
981-
const event = (await manager.draupnir.client.getEvent(
982-
report.room_id,
983-
report.event_id
984-
)) as RoomEvent;
981+
const event = extractRawRoomEvent(
982+
await manager.draupnir.client.getEvent(report.room_id, report.event_id)
983+
) as RoomEvent;
985984

986985
// Display the report and UI directly in the management room, as if it had been
987986
// received from /report.

apps/draupnir/src/webapis/WebAPIs.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
isStringEventID,
2121
} from "@the-draupnir-project/matrix-basic-types";
2222
import { Logger, RoomEvent, Task } from "matrix-protection-suite";
23+
import { extractRawRoomEvent } from "matrix-protection-suite-for-matrix-bot-sdk";
2324
import { SynapseHttpAntispam } from "./SynapseHTTPAntispam/SynapseHttpAntispam";
2425
import { jsonReviver } from "../utils";
2526

@@ -260,7 +261,9 @@ export class WebAPIs {
260261
//
261262
// By doing this with the reporterClient, we ensure that this feature of Draupnir can work
262263
// with all Matrix homeservers, rather than just Synapse.
263-
event = (await reporterClient.getEvent(roomID, eventID)) as RoomEvent;
264+
event = extractRawRoomEvent(
265+
await reporterClient.getEvent(roomID, eventID)
266+
) as RoomEvent;
264267
}
265268
const reason = (request.body as Record<string, unknown>)[
266269
"reason"

apps/draupnir/test/integration/abuseReportTest.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ import {
2222
Value,
2323
} from "matrix-protection-suite";
2424
import { StringEventID } from "@the-draupnir-project/matrix-basic-types";
25-
import { resultifyBotSDKRequestError } from "matrix-protection-suite-for-matrix-bot-sdk";
25+
import {
26+
extractRawRoomEvent,
27+
resultifyBotSDKRequestError,
28+
} from "matrix-protection-suite-for-matrix-bot-sdk";
2629

2730
/**
2831
* Test the ability to turn abuse reports into room messages.
@@ -533,10 +536,9 @@ describe("Test: Reporting abuse", () => {
533536
await new Promise((resolve) => setTimeout(resolve, 1000));
534537

535538
// This should have redacted the message.
536-
const newBadEvent = (await draupnir.client.getEvent(
537-
roomId,
538-
badEventId
539-
)) as RoomEvent;
539+
const newBadEvent = extractRawRoomEvent(
540+
await draupnir.client.getEvent(roomId, badEventId)
541+
) as RoomEvent;
540542
assert.deepEqual(
541543
Object.keys(newBadEvent.content),
542544
[],

apps/draupnir/test/integration/clientHelper.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export async function registerUser(
4747
): Promise<void> {
4848
const registerUrl = `${homeserver}/_synapse/admin/v1/register`;
4949
const nonce: string = await new Promise((resolve, reject) => {
50-
(getRequestFn() as RequestFunction)(
50+
(getRequestFn() as unknown as RequestFunction)(
5151
{ uri: registerUrl, method: "GET", timeout: 60000 },
5252
(error: unknown, _response: unknown, resBody: unknown) => {
5353
if (error) {
@@ -94,15 +94,18 @@ export async function registerUser(
9494
timeout: 60000,
9595
};
9696
await new Promise((resolve, reject) => {
97-
(getRequestFn() as RequestFunction)(params, (error: unknown) => {
98-
if (error === undefined || error === null) {
99-
resolve(undefined);
100-
} else if (error instanceof Error) {
101-
reject(error);
102-
} else {
103-
reject(new TypeError(`something is throwing garbage`));
97+
(getRequestFn() as unknown as RequestFunction)(
98+
params,
99+
(error: unknown) => {
100+
if (error === undefined || error === null) {
101+
resolve(undefined);
102+
} else if (error instanceof Error) {
103+
reject(error);
104+
} else {
105+
reject(new TypeError(`something is throwing garbage`));
106+
}
104107
}
105-
});
108+
);
106109
});
107110
return;
108111
} catch (e) {

apps/draupnir/test/integration/commands/redactCommandTest.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
} from "../mjolnirSetupUtils";
2121
import { MatrixClient } from "@vector-im/matrix-bot-sdk";
2222
import { RoomEvent } from "matrix-protection-suite";
23+
import { extractRawRoomEvent } from "matrix-protection-suite-for-matrix-bot-sdk";
2324

2425
interface RedactionTestContext extends DraupnirTestContext {
2526
moderator?: MatrixClient;
@@ -286,10 +287,9 @@ describe("Test: The redaction command", function () {
286287
}
287288
);
288289

289-
const redactedEvent = (await moderator.getEvent(
290-
targetRoom,
291-
eventToRedact
292-
)) as RoomEvent;
290+
const redactedEvent = extractRawRoomEvent(
291+
await moderator.getEvent(targetRoom, eventToRedact)
292+
) as RoomEvent;
293293
assert.equal(
294294
Object.keys(redactedEvent.content).length,
295295
0,

0 commit comments

Comments
 (0)