Repository navigation
fix: Bump @tootallnate/once from 2.0.0 to 2.0.1 - #638
Conversation
|
🚀 Thanks for opening this pull request! We appreciate your effort in improving the project. Please let us know once your pull request is ready for review. Tip
Note Please respond to review comments from AI agents just like you would to comments from a human reviewer. Let the reviewer resolve their own comments, unless they have reviewed and accepted your commit, or agreed with your explanation for why the feedback was incorrect. Caution Pull requests must be written using an AI agent with human supervision. Pull requests written entirely by a human will likely be rejected, because of lower code quality, higher review effort and the higher risk of introducing bugs. Please note that AI review comments on this pull request alone do not satisfy this requirement. Our CI and AI review are safeguards, not development tools. If many issues are flagged, rethink your development approach. Invest more effort in planning and design rather than using review cycles to fix low-quality code. |
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Update dependency lock records package-lock.json |
The lockfile adds top-level records for @tootallnate/once 2.0.1 and removes nested 2.0.0 records under Google Cloud Storage and retry-request in both representations. |
Priority:
Estimated code review effort: 1 (Trivial) | ~5 minutes
Merge Risk: 
Minimal · up to 06359
-
No merge-blocking issue remains in this dependency-only update.
Caution
Pre-merge checks failed
Please resolve all errors before merging. Addressing warnings is optional.
- Ignore
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Description check | The description is thorough and technically detailed. It explains the lock-file change, the dependency paths, the Dependabot alert (GHSA-vpq2-c234-7xj6 / CVE-2026-3449), the reasoning why the adapter … | Restructure the description to match the repository template. Add the header lines: report security issues confidentially (link to the security policy) and the contribution license statement (link to the LICENSE file). Add an '## Issue' sec… |

Passed checks: 5 passed
-
Full details: Security Check
-
Explanation
PASS. The authoritative diff changes only
package-lock.json. It removes two@tootallnate/once2.0.0 records and adds one integrity-pinned 2.0.1 record. Both existinghttp-proxy-agentdependency ranges remain"2", so they resolve to 2.0.1. No executable code or new security-sensitive pattern is introduced.
-
Full details: Description check
-
Explanation
The description is thorough and technically detailed. It explains the lock-file change, the dependency paths, the Dependabot alert (GHSA-vpq2-c234-7xj6 / CVE-2026-3449), the reasoning why the adapter is not affected, the empirical test results, and breaking-change and code-change status. It does not follow the repository template. The Issue and Approach sections are missing, the Tasks checklist (Add tests, Add changes to documentation) is absent, and the required license and security-policy header lines are not present.
Resolution
Restructure the description to match the repository template. Add the header lines: report security issues confidentially (link to the security policy) and the contribution license statement (link to the LICENSE file). Add an '## Issue' section. Reference the Dependabot alert or advisory there, and state the problem it addresses. Rename or map the current content into '## Approach' so it describes the changes in this PR. Add a '## Tasks' section with the checklist items 'Add tests' and 'Add changes to documentation (guides, repository pages, code comments)'. Check the items that apply, or delete the ones that do not. For this lock-file-only change, state whether tests were added or why none were needed, and state that no documentation changes are needed.
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Comment @coderabbitai help to get the list of available commands.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #638 +/- ##
=======================================
Coverage 99.18% 99.18%
=======================================
Files 11 11
Lines 1841 1841
=======================================
Hits 1826 1826
Misses 15 15 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
## [8.5.9](8.5.8...8.5.9) (2026-10-28) ### Bug Fixes * Bump @tootallnate/once from 2.0.0 to 2.0.1 ([#638](#638)) ([79ddd57](79ddd57))
|
🎉 This change has been released in version 8.5.9 |
Lock-file-only update of
@tootallnate/oncefrom 2.0.0 to 2.0.1.The lock file had two copies of 2.0.0, both production and optional:
node_modules/@google-cloud/storage/node_modules/@tootallnate/oncenode_modules/retry-request/node_modules/@tootallnate/onceEach copy belongs to a
teeny-request9.0.0 →http-proxy-agent5.0.0 pair, andhttp-proxy-agentdeclares"@tootallnate/once": "2". Three paths reach them, all through optional dependencies offirebase-admin13.9.0:firebase-admin→@google-cloud/storage7.19.0 →teeny-request9.0.0 →http-proxy-agent5.0.0 →@tootallnate/once(the@google-cloud/storagecopy)firebase-admin→@google-cloud/storage7.19.0 →retry-request7.0.2 →teeny-request9.0.0 →http-proxy-agent5.0.0 →@tootallnate/once(theretry-requestcopy)firebase-admin→@google-cloud/firestore7.11.0 →google-gax4.4.1 →retry-request7.0.2 →teeny-request9.0.0 →http-proxy-agent5.0.0 →@tootallnate/once(the sameretry-requestcopy)No other package in the lock file depends on
@tootallnate/once.After this PR there is a single copy, 2.0.1, at
node_modules/@tootallnate/once. Bothhttp-proxy-agent5.0.0 copies resolve it from there;npm ls @tootallnate/once --omit=devshows 2.0.1 under both.Security
Dependabot alert resolved by this PR:
< 2.0.1The advisory: when
once()is called with thesignaloption and the signal is aborted, the returned promise stays pending forever, so anyawaitor.then()on it hangs.How the advisory reaches this package: it doesn't. There are three separate reasons.
firebase-admin/appandfirebase-admin/messaging.firebase-adminloads@google-cloud/storageonly fromlib/storageand@google-cloud/firestoreonly fromlib/firestore. These modules load throughfirebase-admin/storageandfirebase-admin/firestore, or on demand through the namespacestorageandfirestoregetters. A static trace of therequirecalls reachable fromfirebase-admin/appandfirebase-admin/messagingreaches neither, so the adapter never loads@tootallnate/once.teeny-requestonly loadshttp-proxy-agentwhen a proxy applies to the request (proxyoption orHTTP_PROXY/HTTPS_PROXY, not excluded byNO_PROXY) and the URI starts withhttp://. Proxiedhttps://requests usehttps-proxy-agent5, which doesn't depend on@tootallnate/once.http-proxy-agent5.0.0 callsonce(socket, 'connect')without options (dist/agent.js), sosignalis never set and the changed code doesn't run.Empirical check
The published
dist/index.jsof both versions ran side by side in Node.js 22.19.0:master)once(emitter, 'connect'), thenconnectis emitted (thehttp-proxy-agentcall)[], no listeners leftonce(emitter, 'connect'), thenerroris emittedonce(emitter, 'connect', { signal }), then the signal is abortedAbortError: The operation was abortedonce(emitter, 'connect', { signal })with an already aborted signalconnectis emitted laterAbortError: The operation was aborted, no listeners addedChanges
@tootallnate/once2.0.0 → 2.0.1AbortSignalis aborted (release notes). From the published tarballs:once()now removes its listeners and rejects with anErrornamedAbortError(messageThe operation was aborted). Before, it only removed the listeners and the promise stayed pending.once()is called, it now rejects right away without adding listeners. 2.0.0 ignored such a signal.AbortSignalinterface indist/types.d.tsgainsaborted: boolean, andexport declare typebecomesexport typeindist/types.d.tsanddist/overloaded-parameters.d.ts. This only affects TypeScript consumers.package.json: release scripts and the@changesets/clidev dependency were added, and the repository URL now useshttps. There are still no runtime dependencies, andenginesis unchanged.Lock file
Generated with
npm update @tootallnate/once --ignore-scripts --package-lock-only(npm 10.9.3). npm removed the two nested 2.0.0 entries and added one 2.0.1 entry atnode_modules/@tootallnate/once, in both thepackagesand the lockfileVersion 2dependenciessections. The new entry also records"license": "MIT", which npm writes for new entries. No other entry changes.2.0.1 declares the same Node.js engine range as 2.0.0 (
>= 10). The supported Node.js versions don't change. CI tests Node.js 20, 22 and 24.Breaking Changes
None
Code Changes Required
None. The upgrade is a drop-in replacement. The only behavior change applies when a caller passes
signal, and no caller in this dependency tree does.Summary by CodeRabbit