fix: raise node floor to 22 to match execa's engine requirement - #1
Merged
Merged
Conversation
execa 10 declares `engines: {"node": ">=22"}` and calls
`Set.prototype.union`, which does not exist before node 22. The ci matrix
still ran node 20, so every adapter test file crashed at import with
`TypeError: TEXT_ENCODINGS.union is not a function`.
Node 20 reached end of life in april 2026, so the fix is to drop it rather
than pin execa back.
- package.json engines: >=20 -> >=22
- ci matrix: [20, 22] -> [22, 24]
- tsup target: node20 -> node22
- readme and contributing state node >= 22
datj9
force-pushed
the
fix/node-22-floor
branch
from
August 16, 2026 23:17
75bdfd5 to
0f17c7c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
CI on
mainis red. Thecheck (20)leg fails;check (22)passes.Six adapter test files crash at import:
execa@10.0.1declaresengines: {"node": ">=22"}and callsSet.prototype.union, which does not exist before Node 22. The CI matrix still tested Node 20, andpackage.jsonstill advertised>=20.Nothing is wrong with the test code — the runtime floor was simply stale.
Fix
Raise the floor instead of pinning execa back. Node 20 reached end of life in April 2026.
package.jsonengines:>=20→>=22[20, 22]→[22, 24]node20→node22Test plan
Full CI sequence run locally on Node 24, all green:
npm run typecheck— exit 0npm test— 13 files, 106 tests passednpm run build— dist emittednode dist/cli.js run examples/hello.yaml— run succeeded, 3/3 nodescheck (22)andcheck (24)