From 09b5da099211cb816f0cb9c9b657892769954396 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 28 Sep 2026 14:29:15 +0000 Subject: [PATCH] build: type-check src against the Node 18 declarations @types/node was not declared. It was installed only because mqtt's @types/readable-stream and @types/ws depend on "@types/node": "*", and it resolved to 26.6.2, so an API newer than the "engines" floor passed the type check and the build depended on another package's dependency list. @types/node ^18.19.130 is now a devDependency (undici-types follows, 8.9.0 -> 5.26.5). A call to process.loadEnvFile() (Node 20.12) in src/ now fails with TS2339. npm run check passes, the fixture compile with skipLibCheck off included, so mqtt's declarations hold against the Node 18 types. First run on the floor: npm test passes 24/24 on Node 18.20.8 and 20.20.2 as well as 24.21.0. No change to src/ or dist/. Co-Authored-By: Claude Fable 5.1 --- package-lock.json | 29 +++++++++++++++-------------- package.json | 1 + 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 020da80..3c2ec5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "mqtt": "^5.10.3" }, "devDependencies": { + "@types/node": "^18.19.130", "aedes": "^0.51.3", "dotenv": "^16.5.0", "typescript": "^5.8.3" @@ -30,12 +31,12 @@ } }, "node_modules/@types/node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz", - "integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==", + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", "license": "MIT", "dependencies": { - "undici-types": "~8.9.0" + "undici-types": "~5.26.4" } }, "node_modules/@types/readable-stream": { @@ -805,9 +806,9 @@ } }, "node_modules/undici-types": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", - "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, "node_modules/util-deprecate": { @@ -916,11 +917,11 @@ "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==" }, "@types/node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz", - "integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==", + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", "requires": { - "undici-types": "~8.9.0" + "undici-types": "~5.26.4" } }, "@types/readable-stream": { @@ -1441,9 +1442,9 @@ "dev": true }, "undici-types": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", - "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==" + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "util-deprecate": { "version": "1.0.2", diff --git a/package.json b/package.json index 4a5cce9..a827048 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ }, "homepage": "https://git.stormysdream.club/apps/Alex2Node#readme", "devDependencies": { + "@types/node": "^18.19.130", "aedes": "^0.51.3", "dotenv": "^16.5.0", "typescript": "^5.8.3"