Repository navigation
chore(deps): consolidate dependency updates (express 5, jest, prettier, supertest, transitive) - #257
Conversation
Bump dev dependencies jest ^30.4.2 -> ^30.5.2, prettier ^3.9.4 -> ^3.9.9, and supertest ^7.2.2 -> ^7.3.0; regenerate package-lock.json (v2) with the Node 20 / npm 10 toolchain used by CI. Hermes task: t_0a387133 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@dex-the-ai I notice we skipped over some dependencies (we can see there are a lot more that are eligible based on the open dependabot PRs). Can you bump these as well (we'll let it supercede the dependabot PRs) and rework the evidence? |
Consolidates the open Dependabot updates into this PR: - express ^4.22.2 -> ^5.2.1 (supersedes #240, #256; overlaps #252) - transitive refresh via npm update: qs 6.16.0, tar 7.5.22, brace-expansion 1.1.21 / 2.1.7 / 5.0.12, body-parser 2.3.0 via express 5 (supersedes #253, #254, #255) - Express 5 / path-to-regexp v8: catch-all route '*' -> '/{*splat}' - add a test covering the catch-all 404 route Lockfile kept at v2 and regenerated with npm 10.8.2 on Node 20.20.2. Babel 8 (#239) is still out: it needs Node ^22.18 || >=24.11 and the repo stays on Node 20. Hermes task: t_5e4f3c90 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@ejscribner Done. I pushed 3b0d033, which adds the updates from the open Dependabot PRs, and I've redone the evidence in the PR description. Now included
Still skipped: Babel 8 (#239). It needs Node Validation (node:20, npm 10.8.2, against a local Couchbase 7.6.4 with travel-sample loaded):
Screenshots and the video are in the PR description. Once this merges, #238, #240, #253, #254, #255, and #256 can be closed, and probably #252 too. |
|
@dex-the-ai should we update the nodejs runtime then? |
Node 20 reached end-of-life on 2026-04-30. Move the Dockerfile and the GitHub Actions workflow to Node 24 (Active LTS). This allows the Babel 8 toolchain (#239), which requires Node ^22.18.0 || >=24.11.0. - @babel/cli, core, node, plugin-transform-runtime, preset-env 7.29.7 -> 8.0.6 - @babel/runtime 7.29.7 -> 8.0.5 - .babelrc: drop the transform-runtime `regenerator` option, which Babel 8 removed - README: note the minimum Node.js version Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@ejscribner Yes. Node 20 reached end-of-life on 2026-04-30, so it doesn't get security fixes anymore, and Node 24 is the current Active LTS. I pushed 1f9f790, which moves the runtime to Node 24 and adds Babel 8 (#239). Changes
Validation (node:24, Node v24.21.0 / npm 11.19.0, against a local Couchbase 7.6.4 with travel-sample loaded):
The PR description has the refreshed evidence and the walkthrough video. With this in, #239 can be closed along with the other superseded Dependabot PRs. If you'd rather keep Node 20 for now, reverting 1f9f790 alone keeps everything else in the PR. |

Summary
Validated dependency consolidation for
couchbase-examples/nodejs-quickstart. This PR takes the dev-tool bumps plus everything from the open Dependabot PRs, so it replaces all of them. It also moves the runtime from Node 20, which reached end-of-life on 2026-04-30, to Node 24 (Active LTS) in the Dockerfile and CI. That unblocks Babel 8. The lockfile stays at v2 and is regenerated on Node 24.21.0 / npm 11.19.0.Updated per review feedback: bump the rest of the Dependabot PRs (Hermes task
t_5e4f3c90) and update the Node runtime (Hermes taskt_22c3d9b3).Updated dependencies
Dockerfile,.github/workflows/tests.yaml)Transitive packages were refreshed with
npm updateinside the existing ranges. I did not usenpm audit fix --force.npm auditreports 0 vulnerabilities.Code changes for Express 5
src/app.js: Express 5 uses path-to-regexp v8, which no longer accepts a bare*wildcard. The catch-all 404 route changes fromapp.get('*', …)toapp.get('/{*splat}', …), which keeps the same GET-only behavior.__test__/api-unknown-route.test.js: a new test checks that an unknown nested path returns404 Not Found./:id,/list, …) and thereq.queryusage. They need no changes under Express 5.Runtime and Babel 8 changes
Dockerfile:node:20→node:24..github/workflows/tests.yaml:node-version: '20'→'24'. This reverses the Node 20 pin from Update dependencies and align Docker runtime #251. Node 20 is now EOL..babelrc: Babel 8 removed theregeneratoroption from@babel/plugin-transform-runtime, so I dropped it. The plugin is otherwise unchanged.README.md: the prerequisites now say Node.js 24 is recommended and that Babel 8 needs^22.18.0 || >=24.11.0.Validation
Everything ran in a
node:24container (Node v24.21.0, npm 11.19.0) against a dedicated local Couchbase Enterprise 7.6.4 withtravel-sampleloaded (63,288 docs, all indexes online).npm cifrom the regenerated lockfilenpm auditnpm test(integration, Jest)npm run builddocker build+ run (node:24)npm start(nodemon +babel-node8) serves the API.GET /api/v1/airline/list?country=France&limit=3returned a live 200 from CouchbaseGET /api/v1/does-not-existreturns404 Not FoundEvidence
Swagger UI (Node 24, Express 5.2.1, Babel 8)
Live request via Swagger "Try it out": GET /api/v1/airline/list?country=France&limit=3 → 200
Catch-all route: GET /api/v1/does-not-exist → 404 Not Found
Walkthrough video
Open the Swagger walkthrough (webm)
Risk
Medium. There are three major bumps. Express 4 → 5 only broke the wildcard route, which is fixed and covered by a test. Babel 7 → 8 only needed the
.babelrcoption removed. Node 20 → 24 means contributors on Node 20 must upgrade, which the README now states. The full integration suite, the build, the Docker image, and a live Swagger run all pass on Node 24.Rollback
Revert this PR to restore the previous
package.json,package-lock.json,src/app.js,.babelrc,Dockerfile, workflow, and README. To keep Express 5 but go back to Node 20, revert only 1f9f790.Hermes tasks:
t_0a387133,t_5e4f3c90(boardcouchbase-examples)🤖 Generated with Claude Code