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"
},
"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",