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 <noreply@anthropic.com>
This commit is contained in:
David 2026-09-28 14:29:15 +00:00
parent f74773132a
commit 09b5da0992
2 changed files with 16 additions and 14 deletions

29
package-lock.json generated
View file

@ -12,6 +12,7 @@
"mqtt": "^5.10.3" "mqtt": "^5.10.3"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^18.19.130",
"aedes": "^0.51.3", "aedes": "^0.51.3",
"dotenv": "^16.5.0", "dotenv": "^16.5.0",
"typescript": "^5.8.3" "typescript": "^5.8.3"
@ -30,12 +31,12 @@
} }
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "26.6.2", "version": "18.19.130",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
"integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==", "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~8.9.0" "undici-types": "~5.26.4"
} }
}, },
"node_modules/@types/readable-stream": { "node_modules/@types/readable-stream": {
@ -805,9 +806,9 @@
} }
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "8.9.0", "version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/util-deprecate": { "node_modules/util-deprecate": {
@ -916,11 +917,11 @@
"integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==" "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw=="
}, },
"@types/node": { "@types/node": {
"version": "26.6.2", "version": "18.19.130",
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
"integrity": "sha512-X1P21scMv4zGKLYqjdGjaKa7COa0RKVYYZZN/NfvLQ1JegxFhdhpZG/Lyn8AXx6CDUavKAd11v6BvfpkDByK8g==", "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
"requires": { "requires": {
"undici-types": "~8.9.0" "undici-types": "~5.26.4"
} }
}, },
"@types/readable-stream": { "@types/readable-stream": {
@ -1441,9 +1442,9 @@
"dev": true "dev": true
}, },
"undici-types": { "undici-types": {
"version": "8.9.0", "version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==" "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
}, },
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",

View file

@ -44,6 +44,7 @@
}, },
"homepage": "https://git.stormysdream.club/apps/Alex2Node#readme", "homepage": "https://git.stormysdream.club/apps/Alex2Node#readme",
"devDependencies": { "devDependencies": {
"@types/node": "^18.19.130",
"aedes": "^0.51.3", "aedes": "^0.51.3",
"dotenv": "^16.5.0", "dotenv": "^16.5.0",
"typescript": "^5.8.3" "typescript": "^5.8.3"