Repository navigation
fix!: depend only on debug at runtime and release 3.0.0 - #14
Merged
Merged
Conversation
Remove bluebird, execa, lazy-ass and check-more-types. An install of the package goes from 24 dependencies to 2 (debug and ms). - git runs with child_process.spawn, without a shell. The errors keep the fields execa 1.0 set (code, stdout, stderr, timedOut, the "Command failed" message), and stdout loses only its last newline. - Promise.props, Promise.try and .tap are replaced with native promises. - The argument checks of lazy-ass become plain checks that throw the same errors for strings, numbers and booleans. - debug is 4.4.3. - src/utils-e2e.js is no longer published: it is a mocha test and needs lazy-ass, now a dev dependency. BREAKING CHANGE: the functions return native promises, not Bluebird promises, so Bluebird methods such as .tap() are not on the result. Also, execa put node_modules/.bin and the folder of the node binary first in PATH; git now runs from the PATH as it is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011baD3hSBFPLp26um5JriwA
execa 1.0 killed the git commands that still ran when Node exited. The spawn-based runner left them running after process.exit() or an uncaught error. The runner now keeps the running git processes in a set and kills them from an 'exit' listener. The listener is added when the first git command starts and removed when the last one ends. There are no signal handlers, so Node's signal behavior does not change. A SIGTERM sent to Node alone still leaves git running, unlike execa, which used signal-exit. The CHANGELOG lists this and the plain Error for output over 10 MB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011baD3hSBFPLp26um5JriwA
The code needs nothing newer than async/await and child_process.spawn. Instead of an engines range that no CI job tests, package.json declares none, and the README names the versions CI runs: 22 and 24, instead of 16. The git 2.25 job still uses the Node.js of its container image. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011baD3hSBFPLp26um5JriwA
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011baD3hSBFPLp26um5JriwA
|
| Topic | Details | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Git execution API | Replace execa with spawnGit to execute Git without a shell, retain compatible errors and output limits, clean up child processes on exit, and return native Promises as the commitInfo and Git APIs collect repository data.Modified files (7)
Latest Contributors(2)
| |||||||||
| Release and testing | Reduce production dependencies to debug, publish version 3.0.0, migrate tests from Mocha to Vitest with updated snapshots and spies, and test supported Node.js 22 and 24 environments.Modified files (15)
Latest Contributors(2)
|
Merger ✅ Ready to Merge
No discussion blockers are present, CI ran successfully, and the diff implements the stated runtime dependency and native Promise changes.
- vitest 4.1.12 replaces mocha 6; `npm run unit` and `npm run gha-e2e` run the vitest projects "unit" and "e2e" - vitest snapshots in src/__snapshots__ replace snap-shot-it; the values are the same - vi.spyOn replaces the sinon stub of fs.readFileSync - the specs stay CommonJS and use the vitest globals - test files run one at a time, as with mocha: the git fetches in pull-request-head.js time out after 3 s, which parallel files exceeded - the "execGit output and errors" tests wait for git to exit after the maxBuffer error; mocha gave it time between tests, vitest does not The lockfile only has packages published before 2026-10-20. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011baD3hSBFPLp26um5JriwA
baz-app
Bot
dismissed
their stale review
November 4, 2026 07:02
Baz withdrew its approval because this pull request is no longer ready to merge.
vite declares yaml ^2.4.2 as an optional peer dependency. The yaml at the top of node_modules is 1.10.0, which another dev dependency uses. npm 11 accepts the lockfile without a yaml 2, but `npm ci` with npm 10, the version that comes with Node.js 22, fails with "Missing: yaml@2.9.1 from lock file". The lockfile now has yaml 2.9.1 under vitest, as npm 10 places it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011baD3hSBFPLp26um5JriwA
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.
@currents/commit-infonow depends only ondebug. An install goes from 25 packages to 3. Releases 3.0.0.Breaking: the functions return a native
Promise, not a Bluebird promise..tap(),.spread()and the other Bluebird methods are gone.awaitand.then()work as before.Changes:
bluebird,execa,lazy-assandcheck-more-typesare removed. git runs withchild_process.spawn, without a shell, as it did with execa.code,stdout,stderr,timedOutand the "Command failed" message.debugis 4.4.3.src/utils-e2e.jsis no longer published. It is a mocha test.package.jsonno longer declaresengines. The code needs nothing newer thanasync/awaitandspawn. CI tests Node 22 and 24 instead of 16, and the README says so. The git 2.25 job still uses the Node of its container image.vi.spyOnreplaces sinon. Test files run one at a time, as with mocha. The script names are the same, so the workflows don't change.Differences from execa 1.0, also listed in the CHANGELOG:
node_modules/.binand the folder of thenodebinary are not added toPATH, so agitinnode_modules/.binis not used.Error(stdout maxBuffer exceeded), not aMaxBufferError.git.exeinPATH. execa also rangit.cmdandgit.bat.Verification
npm test(lint, then vitest): 124 passing on Node 22.13.0 and 24.14.1, 3 runs each. The 124 test names are the same as under mocha. Lint changed no files.process.exit()or an uncaught error, no git process keeps running, same as 2.0.0.@currents/cmduploading with this package, in 5 setups including a GitHub Actions shallow PR checkout: thecommitandcidata are identical to 2.0.0.@currents/playwright2.7.0 with this package, on Node 20.18.1, 22.13.0 and 24.14.1:commitandcidata fromgetGitInfo()andgetCI()are identical to 2.0.0 in 26 scenarios, including GitHub Actions and GitLab. The only exception is agitinnode_modules/.bin, listed above.After merge: publish 3.0.0-beta.0 from a release branch, test the beta in cmd and the Playwright reporter, then publish 3.0.0.
🤖 Generated with Claude Code
https://claude.ai/code/session_011baD3hSBFPLp26um5JriwA