Skip to content

chore(deps)!: update dependencies and require Node 22 - #12

Merged
deniscuciuc merged 1 commit into
mainfrom
chore/dependency-backlog
Sep 10, 2026
Merged

chore(deps)!: update dependencies and require Node 22#12
deniscuciuc merged 1 commit into
mainfrom
chore/dependency-backlog

Conversation

@deniscuciuc

Copy link
Copy Markdown
Owner

Clears the whole Dependabot backlog in one verified change, and fixes a latent bug it uncovered.

Node 20 is EOL, and interactive mode was already broken on it

engines said >=20. Node 20 reached end of life on 30 April 2026, so that was promising support for an unsupported runtime — and promising something that did not work. @inquirer/prompts v8 is ESM-only, and require() of an ES module only landed in Node 20.19, so interactive mode threw ERR_REQUIRE_ESM on Node 20.0 through 20.18. CI's Node 20 leg used a recent 20.x, so it never caught it.

TypeScript's old node10 resolution could not see this at all. nodenext reports it immediately, which is how it surfaced.

The floor is now Node 22, and the CI matrix drops the EOL leg.

TypeScript 7

Dependabot asked for 6.0.3; current is 7.0.2, so this takes 7. It removes moduleResolution: node10, so the projects move to nodenext — specifically nodenext and not node16, because only nodenext models Node 22+ being able to require() an ES module. node16 still rejects it and would have forced a pointless dynamic import.

@types/node is pinned to the supported floor (22.x) rather than the newest release, so the compiler rejects APIs that would not exist at runtime on the oldest Node we claim to support. A Dependabot ignore rule keeps it there with a comment explaining why, instead of this becoming a recurring PR.

Everything else

ioredis 5→6, mongodb 6→7, pg, @inquirer/prompts, @biomejs/biome, and the GitHub Actions (checkout v7, setup-node v7, pnpm/action-setup v6, action-gh-release v3) — each target verified to exist via the releases API rather than trusted from a PR body.

Verification

Not just a green type-check. Every analyzer was exercised against a real container — postgres:17-alpine, redis:7-alpine, mongo:7 — through both the CLI and the programmatic API: full analysis, health scoring, and report generation. Also confirmed --json stdout stays clean with warnings on stderr, which is what makes piping to a file safe.

pnpm lint, pnpm build, pnpm test and the --help smoke test all pass.

Released as 1.2.0

Raising the Node floor is a support-policy change, so this is a minor rather than a patch.

BREAKING: the minimum supported Node.js is now 22.

Node 20 reached end of life on 30 April 2026, so `engines: >=20` was promising
support for an unsupported runtime. It was also promising something that did
not work: `@inquirer/prompts` v8 is ESM-only, and `require()` of an ES module
only landed in Node 20.19 — so interactive mode was broken on Node 20.0 through
20.18. TypeScript's old `node10` resolution could not see that; `nodenext`
reports it immediately, which is how it surfaced.

TypeScript 7 removes `moduleResolution: node10`, so the projects move to
`nodenext`. That is the setting that correctly models Node 22+ being able to
require an ES module — `node16` still rejects it and would have forced a
dynamic import for no reason.

`@types/node` is pinned to the supported floor (22.x) rather than the newest
release, so the compiler rejects APIs that would not exist on the oldest
runtime we claim to support. A dependabot ignore rule keeps it there.

Also updates ioredis to 6, mongodb to 7, pg, @inquirer/prompts and
@biomejs/biome, and the GitHub Actions to their current majors, and drops the
Node 20 leg from the CI matrix.

Each major was verified against a real database container — CLI and
programmatic API, full analysis and health scoring — rather than on a green
type-check alone.
@deniscuciuc
deniscuciuc merged commit 7f6a661 into main Sep 10, 2026
4 checks passed
@deniscuciuc
deniscuciuc deleted the chore/dependency-backlog branch September 10, 2026 01:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant