Skip to content

Commit 4e14565

Browse files
Merge pull request #147 from ioBroker/feature/update-dependencies
2 parents e3044d0 + 07322ef commit 4e14565

File tree

9 files changed

+1920
-1480
lines changed

9 files changed

+1920
-1480
lines changed

express/backend/package-lock.json

Lines changed: 1867 additions & 1427 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

express/backend/package.json

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,39 +14,31 @@
1414
"dependencies": {
1515
"@iobroker/create-adapter": "^3.1.2",
1616
"@iobroker/repochecker": "5.5.2",
17-
"@octokit/request": "^10.0.7",
18-
"archiver": "^5.3.0",
19-
"axios": "^0.22.0",
20-
"cors": "^2.8.5",
21-
"cron": "^4.3.4",
22-
"express": "^4.17.1",
23-
"fs-extra": "^10.0.0",
24-
"libsodium-wrappers": "^0.7.15",
17+
"@octokit/request": "^10.0.8",
18+
"archiver": "^7.0.1",
19+
"axios": "^1.13.6",
20+
"cors": "^2.8.6",
21+
"cron": "^4.4.0",
22+
"express": "^5.2.1",
23+
"libsodium-wrappers": "^0.8.2",
2524
"luxon": "~3.7.0",
26-
"mkdirp": "^1.0.4",
2725
"mongodb": "^4.1.3",
2826
"node-cache": "^5.1.2",
29-
"rimraf": "^3.0.2",
30-
"typescript": "4.4.4",
31-
"universal-cookie-express": "^4.0.3",
32-
"uuid": "^8.3.2",
27+
"universal-cookie-express": "^8.0.1",
28+
"uuid": "^13.0.0",
3329
"ws": "^7.5.3"
3430
},
3531
"devDependencies": {
36-
"@types/archiver": "^5.1.1",
37-
"@types/cors": "^2.8.12",
38-
"@types/cron": "^1.7.3",
39-
"@types/express": "^4.17.13",
40-
"@types/fs-extra": "^9.0.13",
32+
"@types/archiver": "^7.0.0",
33+
"@types/cors": "^2.8.19",
34+
"@types/express": "^5.0.6",
4135
"@types/libsodium-wrappers": "^0.7.14",
4236
"@types/luxon": "^3.7.1",
43-
"@types/mkdirp": "^1.0.2",
4437
"@types/mongodb": "^4.0.7",
45-
"@types/node": "^16.10.3",
46-
"@types/rimraf": "^3.0.2",
47-
"@types/uuid": "^8.3.1",
38+
"@types/node": "^22.19.15",
4839
"@types/ws": "^7.4.7",
49-
"nodemon": "^2.0.13",
50-
"ts-node": "^10.3.0"
40+
"nodemon": "^3.1.14",
41+
"ts-node": "^10.9.2",
42+
"typescript": "^5.9.3"
5143
}
5244
}

express/backend/src/api/npm-proxy.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ const request = axios.create({
77
baseURL: "https://registry.npmjs.org/",
88
});
99

10-
router.get<any>("/api/npm/*", async function (req, res) {
10+
router.get<any>("/api/npm/*splat", async function (req, res) {
1111
try {
12-
const result = await request.get(`/${req.params["0"]}`);
12+
const userPath = Array.isArray(req.params.splat)
13+
? req.params.splat.join("/")
14+
: req.params.splat;
15+
const result = await request.get(`/${userPath}`);
1316
res.send(result.data);
1417
} catch (error: any) {
1518
console.error(error);

express/backend/src/api/weblate-proxy.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ const ALLOWED_PATHS = ["projects/adapters/components/"] as const;
77

88
const router = Router();
99

10-
router.get<any>("/api/weblate/*", async function (req, res) {
10+
router.get<any>("/api/weblate/*splat", async function (req, res) {
1111
try {
12-
const userPath = req.params["0"];
12+
const userPath = Array.isArray(req.params.splat)
13+
? req.params.splat.join("/")
14+
: req.params.splat;
1315
if (!ALLOWED_PATHS.some((path) => userPath.startsWith(path))) {
1416
return res.status(400).send("Invalid path");
1517
}

express/backend/src/apps/create-adapter.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ import { request } from "@octokit/request";
99
import archiver from "archiver";
1010
import { createHash } from "crypto";
1111
import { Router } from "express";
12-
import { existsSync } from "fs-extra";
12+
import { existsSync } from "fs";
13+
import { mkdir, rm } from "fs/promises";
1314
import sodium from "libsodium-wrappers";
14-
import mkdirp from "mkdirp";
1515
import path from "path";
16-
import rimraf from "rimraf";
17-
import { promisify } from "util";
1816
import { COOKIE_NAME_CREATOR_TOKEN } from "../auth";
1917
import { delay } from "../common";
2018
import { GenerateAdapterMessage } from "../global/websocket";
@@ -23,7 +21,6 @@ import {
2321
WebSocketConnectionHandler,
2422
} from "./websocket-connection-handler";
2523

26-
const rimrafAsync = promisify(rimraf);
2724
const uc = encodeURIComponent;
2825

2926
interface TreeNode {
@@ -129,8 +126,8 @@ export class CreateAdapterConnectionHandler extends WebSocketConnectionHandler<G
129126

130127
private async createFiles(answers: Answers, outputDir: string) {
131128
this.logLocal("Creating adapter for", answers);
132-
await mkdirp(outputDir);
133-
await rimrafAsync(outputDir);
129+
await mkdir(outputDir, { recursive: true });
130+
await rm(outputDir, { recursive: true, force: true });
134131

135132
this.log(`Generating all adapter files...`);
136133
const files = await createAdapterFiles(answers);

express/backend/src/apps/release-handler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { checkAdapterName } from "@iobroker/create-adapter";
22
import { request } from "@octokit/request";
33
import { spawn } from "child_process";
4-
import { mkdirp, remove } from "fs-extra";
4+
import { mkdir, rm } from "fs/promises";
55
import { COOKIE_NAME_CREATOR_TOKEN } from "../auth";
66
import { CreateReleaseMessage } from "../global/websocket";
77
import { WebSocketConnectionHandler } from "./websocket-connection-handler";
@@ -35,8 +35,8 @@ export class ReleaseConnectionHandler extends WebSocketConnectionHandler<CreateR
3535
this.log(`Connected to GitHub as ${user.login}`);
3636

3737
this.log(`Cloning ${owner}/${repo} from GitHub`);
38-
await remove(this.rootDir);
39-
await mkdirp(this.rootDir);
38+
await rm(this.rootDir, { recursive: true, force: true });
39+
await mkdir(this.rootDir, { recursive: true });
4040
await this.exec(
4141
`git clone "https://${uc(user.login!)}:${uc(token)}@github.com/${uc(
4242
owner,

express/backend/src/apps/repositories-handler.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { checkAdapterName } from "@iobroker/create-adapter";
22
import { request } from "@octokit/request";
3-
import { mkdirp, remove } from "fs-extra";
3+
import { mkdir, rm } from "fs/promises";
44
import path from "path";
55
import { COOKIE_NAME_CREATOR_TOKEN } from "../auth";
66
import { ToLatestMessage, ToStableMessage } from "../global/websocket";
@@ -73,8 +73,8 @@ export abstract class RepositoriesConnectionHandler<
7373

7474
this.log(`Cloning repository from GitHub`);
7575
const baseDir = path.join(this.rootDir, REPOSITORY);
76-
await remove(baseDir);
77-
await mkdirp(baseDir);
76+
await rm(baseDir, { recursive: true, force: true });
77+
await mkdir(baseDir, { recursive: true });
7878
const baseUrl = `https://${uc(user.login)}:${uc(token)}@github.com/`;
7979
await this.exec(
8080
`git clone "${baseUrl}${uc(user.login)}/${uc(forkName)}.git" .`,
@@ -98,7 +98,7 @@ export abstract class RepositoriesConnectionHandler<
9898
this.log(`Pushing changes to ${user.login}/${forkName}`);
9999
await this.exec(`git push origin ${branchName}`);
100100

101-
await remove(baseDir);
101+
await rm(baseDir, { recursive: true, force: true });
102102

103103
this.log(`Creating pull request on ${ORG}/${REPOSITORY}`);
104104
const { data: pullRequest } = await requestWithAuth(

express/backend/src/apps/websocket-connection-handler.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { spawn } from "child_process";
2+
import { rm } from "fs/promises";
23
import { IncomingMessage } from "http";
34
import path from "path";
45
import { env } from "process";
5-
import rimraf from "rimraf";
66
import { v4 } from "uuid";
77
import WebSocket from "ws";
88
import { ClientServerMessage, ServerClientMessage } from "../global/websocket";
@@ -13,7 +13,9 @@ export const tempDir = path.join(
1313
);
1414

1515
console.log(`Clearing ${tempDir}`);
16-
rimraf(tempDir, (e) => e && console.error(e));
16+
rm(tempDir, { recursive: true, force: true }).catch(
17+
(e: any) => e && console.error(e),
18+
);
1719

1820
export abstract class WebSocketConnectionHandler<
1921
T extends ClientServerMessage,
@@ -40,7 +42,7 @@ export abstract class WebSocketConnectionHandler<
4042
client.on("error", (e) => this.logLocal("Client error", e));
4143
client.on("close", (code, reason) => {
4244
this.logLocal("Closed", code, reason);
43-
rimraf(this.rootDir, (e) => {
45+
rm(this.rootDir, { recursive: true, force: true }).catch((e) => {
4446
e && this.logLocal("Rimraf error", e);
4547
});
4648
});

express/backend/src/index.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,12 @@ app.get<any, Version>("/api/version", function (_req, res) {
5252
commit: GIT_COMMIT,
5353
});
5454
});
55-
app.get("/api/*", function (_req, res) {
55+
app.get("/api/*splat", function (_req, res) {
5656
// ensure that unknown API calls don't end up serving the HTML below
5757
res.status(404).send("API endpoint not found");
5858
});
5959

60-
app.get("/*", function (_req, res) {
60+
app.get("/*splat", function (_req, res) {
6161
res.sendFile(path.join(publicPath, "index.html"));
6262
});
6363

@@ -76,8 +76,10 @@ startCronJobs();
7676

7777
// Graceful shutdown helper
7878
async function gracefulShutdown(signal: string) {
79-
console.log(`${signal} signal received: closing HTTP server and database connection`);
80-
79+
console.log(
80+
`${signal} signal received: closing HTTP server and database connection`,
81+
);
82+
8183
// Close the HTTP server with a timeout
8284
const shutdownTimeout = 30000; // 30 seconds
8385
await Promise.race([
@@ -89,15 +91,17 @@ async function gracefulShutdown(signal: string) {
8991
}),
9092
new Promise<void>((resolve) => {
9193
setTimeout(() => {
92-
console.log("HTTP server shutdown timeout reached, forcing exit");
94+
console.log(
95+
"HTTP server shutdown timeout reached, forcing exit",
96+
);
9397
resolve();
9498
}, shutdownTimeout);
95-
})
99+
}),
96100
]);
97-
101+
98102
// Close database connection
99103
await closeDatabaseConnection();
100-
104+
101105
process.exit(0);
102106
}
103107

0 commit comments

Comments
 (0)