Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Nov 27, 2025

@renovate renovate bot added the dependencies Pull requests that update a dependency file label Nov 27, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 27, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

Multiple dependency version bumps across e2e and root packages. Adds string body handling in node-fetch fetchNodeHttp. Refactors streaming abstractions in server utils with new pumpToWritable utility. Fixes Node 24 + Express compatibility by replacing Proxy-based request property access with Reflect.get to preserve correct this-context.

Changes

Cohort / File(s) Summary
Changesets
.changeset/mighty-cars-mate.md, .changeset/real-forks-deny.md, .changeset/wise-impalas-grow.md
Three new changeset files declared: @whatwg-node/node-fetch patch for string body writing; @whatwg-node/server patches for Node 24 + Express compatibility and streaming improvements
E2E dependency updates
e2e/aws-lambda/package.json, e2e/azure-function/package.json, e2e/vercel/package.json
esbuild bumped from 0.27.0 to 0.27.1 in devDependencies
E2E Cloudflare packages
e2e/cloudflare-modules/package.json, e2e/cloudflare-workers/package.json
wrangler bumped from 4.51.0 to 4.52.1 in devDependencies
Root package.json devDependencies: @eslint/eslintrc 3.3.1→3.3.3, prettier 3.6.2→3.7.4, ts-jest 29.4.5→29.4.6, vitest 4.0.14→4.0.15; overrides: esbuild 0.27.0→0.27.1, vite 7.2.4→7.2.6
Server package dependencies
packages/server/package.json
@types/express 5.0.5→5.0.6 and express 5.2.0→5.2.1 in devDependencies
Node-fetch body handling
packages/node-fetch/src/fetchNodeHttp.ts
Added new branch to handle String bodyType: writes string directly to node request via safeWrite and ends stream on completion or rejection
Node-fetch utilities
packages/node-fetch/src/utils.ts
Generalized endStream signature to accept variadic arguments; refactored safeWrite with generic TWritable type parameter to infer chunk type from stream's write method signature
Node-fetch tests
packages/node-fetch/tests/reproductions.spec.ts
Replaced three runtime console.log statements with equivalent inline comments in streaming test callbacks
Server adapter formatting
packages/server/src/createServerAdapter.ts, packages/server/src/types.ts
Reformatted generic parameter constraints from multi-line to inline format; no functional changes to type semantics or defaults
Server utilities refactor
packages/server/src/utils.ts
Major refactor: rewrote normalizeNodeRequest to use Reflect.get on actual request object (fixes Node 24 + Express compatibility); introduced new pumpToWritable abstraction and supporting types; refactored sendAsyncIterable and sendReadableStream to use centralized pump logic; added helper utilities endDest and generic safeWrite
Server test suite
packages/server/test/reproductions.spec.ts
Added new test case "express + body_parser + url property in the plugin" verifying request URL access and JSON body handling with Express adapter using handleMaybePromise

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • packages/server/src/utils.ts: Substantial streaming refactor with new pumpToWritable abstraction and Reflect.get-based request property access (Node 24 fix)—requires careful review of streaming logic and this-context preservation
  • packages/node-fetch/src/fetchNodeHttp.ts: String body handling logic and integration with updated safeWrite signature
  • packages/server/test/reproductions.spec.ts: New test case validates the Node 24 + Express compatibility fix and URL property access
  • packages/node-fetch/src/utils.ts: Type signature changes for endStream and safeWrite—verify backward compatibility and type correctness

Possibly related PRs

Suggested reviewers

  • enisdenjo
  • EmrysMyrddin
  • dotansimha

Poem

🐰 A stream of bytes flows swift and true,
No private #state shall block our view!
With Reflect.get, Express now sings,
And Node 24 spreads its wings.
Pumpity-pump through every layer—
A rabbit's fix beyond compare! 🌙✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main changes: dependency bumps, improvements, and compatibility fixes for Node 24 with Express and Next.js, which aligns with the changeset contents.
Description check ✅ Passed The description mentions bumping dependencies and references issue #2971, which directly relates to the changeset that includes dependency updates and fixes for Node 24 + Express compatibility.
Linked Issues check ✅ Passed The PR addresses issue #2971 by fixing the TypeError from accessing private members via Reflect.get. Changes in packages/server/src/utils.ts introduce a Reflect.get wrapper in normalizeNodeRequest to preserve this-context, directly resolving the reported compatibility issue.
Out of Scope Changes check ✅ Passed All changes are in scope: dependency version bumps, Node 24 + Express compatibility fixes, streaming improvements, type signature refinements, and a test for the fix. No unrelated modifications detected.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 27, 2025

@benchmarks/node-fetch results (noConsumeBody)

   ✓ active_handles.................: avg=139.547299 min=14     med=141     max=188      p(90)=161     p(95)=166    
     data_received..................: 25 MB  818 kB/s
     data_sent......................: 16 MB  530 kB/s
     http_req_blocked...............: avg=3.84µs     min=612ns  med=1.56µs  max=10.62ms  p(90)=2.13µs  p(95)=2.56µs 
     http_req_connecting............: avg=1.73µs     min=0s     med=0s      max=10.37ms  p(90)=0s      p(95)=0s     
     http_req_duration..............: avg=18.62ms    min=1.9ms  med=18.17ms max=858.05ms p(90)=24.04ms p(95)=25.87ms
       { expected_response:true }...: avg=18.62ms    min=1.9ms  med=18.17ms max=858.05ms p(90)=24.04ms p(95)=25.87ms
     http_req_failed................: 0.00%  ✓ 0           ✗ 160361
     http_req_receiving.............: avg=37.98µs    min=8.75µs med=26.51µs max=16.03ms  p(90)=42.03µs p(95)=50.79µs
     http_req_sending...............: avg=15.02µs    min=3.11µs med=8.02µs  max=18.7ms   p(90)=11.37µs p(95)=17.1µs 
     http_req_tls_handshaking.......: avg=0s         min=0s     med=0s      max=0s       p(90)=0s      p(95)=0s     
     http_req_waiting...............: avg=18.57ms    min=1.49ms med=18.12ms max=857.98ms p(90)=23.99ms p(95)=25.8ms 
     http_reqs......................: 160361 5344.599066/s
     iteration_duration.............: avg=37.38ms    min=8.47ms med=36.2ms  max=882.51ms p(90)=41.42ms p(95)=45.74ms
     iterations.....................: 80161  2671.649626/s
     vus............................: 56     min=56        max=100 
     vus_max........................: 100    min=100       max=100 

@github-actions
Copy link
Contributor

github-actions bot commented Nov 27, 2025

@benchmarks/server results (undici)

     ✓ no-errors
     ✓ expected-result

   ✓ checks.........................: 100.00% ✓ 181086      ✗ 0    
     data_received..................: 18 MB   601 kB/s
     data_sent......................: 14 MB   450 kB/s
     http_req_blocked...............: avg=1.67µs   min=902ns    med=1.59µs   max=5.38ms   p(90)=1.96µs   p(95)=2.12µs  
     http_req_connecting............: avg=1ns      min=0s       med=0s       max=113.06µs p(90)=0s       p(95)=0s      
     http_req_duration..............: avg=255.19µs min=189.79µs med=241.28µs max=48.65ms  p(90)=273.72µs p(95)=288.12µs
       { expected_response:true }...: avg=255.19µs min=189.79µs med=241.28µs max=48.65ms  p(90)=273.72µs p(95)=288.12µs
     http_req_failed................: 0.00%   ✓ 0           ✗ 90543
     http_req_receiving.............: avg=26.49µs  min=14.63µs  med=25.02µs  max=2.82ms   p(90)=31.32µs  p(95)=34.21µs 
     http_req_sending...............: avg=9.59µs   min=5.67µs   med=9.6µs    max=292.13µs p(90)=11.74µs  p(95)=13.51µs 
     http_req_tls_handshaking.......: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
     http_req_waiting...............: avg=219.1µs  min=163.02µs med=206.1µs  max=48.57ms  p(90)=236.55µs p(95)=249.69µs
     http_reqs......................: 90543   3017.998624/s
     iteration_duration.............: avg=326.56µs min=250.82µs med=311.67µs max=48.81ms  p(90)=347.22µs p(95)=364.48µs
     iterations.....................: 90543   3017.998624/s
     vus............................: 1       min=1         max=1  
     vus_max........................: 1       min=1         max=1  

@github-actions
Copy link
Contributor

github-actions bot commented Nov 27, 2025

@benchmarks/node-fetch results (consumeBody)

   ✓ active_handles.................: avg=140.299599 min=38     med=141     max=183      p(90)=160     p(95)=165    
     data_received..................: 24 MB  803 kB/s
     data_sent......................: 15 MB  515 kB/s
     http_req_blocked...............: avg=3.36µs     min=611ns  med=1.5µs   max=7.18ms   p(90)=2.05µs  p(95)=2.39µs 
     http_req_connecting............: avg=1.31µs     min=0s     med=0s      max=4.88ms   p(90)=0s      p(95)=0s     
     http_req_duration..............: avg=18.97ms    min=2.3ms  med=18.51ms max=802.3ms  p(90)=24ms    p(95)=26.08ms
       { expected_response:true }...: avg=18.97ms    min=2.3ms  med=18.51ms max=802.3ms  p(90)=24ms    p(95)=26.08ms
     http_req_failed................: 0.00%  ✓ 0           ✗ 157459
     http_req_receiving.............: avg=37.05µs    min=8.78µs med=24.91µs max=19.57ms  p(90)=39.2µs  p(95)=46.62µs
     http_req_sending...............: avg=11.04µs    min=3.06µs med=7.15µs  max=19.49ms  p(90)=10.08µs p(95)=15µs   
     http_req_tls_handshaking.......: avg=0s         min=0s     med=0s      max=0s       p(90)=0s      p(95)=0s     
     http_req_waiting...............: avg=18.93ms    min=2.06ms med=18.47ms max=802.25ms p(90)=23.96ms p(95)=26.01ms
     http_reqs......................: 157459 5248.087736/s
     iteration_duration.............: avg=38.07ms    min=7.61ms med=36.57ms max=821.71ms p(90)=42.43ms p(95)=46.76ms
     iterations.....................: 78712  2623.460595/s
     vus............................: 100    min=100       max=100 
     vus_max........................: 100    min=100       max=100 

@github-actions
Copy link
Contributor

github-actions bot commented Nov 27, 2025

@benchmarks/server results (ponyfill)

     ✓ no-errors
     ✓ expected-result

   ✓ checks.........................: 100.00% ✓ 241694      ✗ 0     
     data_received..................: 24 MB   794 kB/s
     data_sent......................: 18 MB   600 kB/s
     http_req_blocked...............: avg=1.7µs    min=921ns    med=1.5µs    max=268.11µs p(90)=2.04µs   p(95)=3.32µs  
     http_req_connecting............: avg=1ns      min=0s       med=0s       max=124.4µs  p(90)=0s       p(95)=0s      
     http_req_duration..............: avg=174.74µs min=120.27µs med=168.69µs max=7.44ms   p(90)=191.5µs  p(95)=199.63µs
       { expected_response:true }...: avg=174.74µs min=120.27µs med=168.69µs max=7.44ms   p(90)=191.5µs  p(95)=199.63µs
     http_req_failed................: 0.00%   ✓ 0           ✗ 120847
     http_req_receiving.............: avg=26.08µs  min=13.26µs  med=24.64µs  max=2.66ms   p(90)=32.05µs  p(95)=34.75µs 
     http_req_sending...............: avg=9.62µs   min=5.61µs   med=9.48µs   max=373.73µs p(90)=13.34µs  p(95)=13.96µs 
     http_req_tls_handshaking.......: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
     http_req_waiting...............: avg=139.03µs min=88.53µs  med=133.16µs max=7.02ms   p(90)=153.75µs p(95)=161.12µs
     http_reqs......................: 120847  4028.085104/s
     iteration_duration.............: avg=243.79µs min=180.29µs med=236.55µs max=7.51ms   p(90)=264.36µs p(95)=275.5µs 
     iterations.....................: 120847  4028.085104/s
     vus............................: 1       min=1         max=1   
     vus_max........................: 1       min=1         max=1   

@github-actions
Copy link
Contributor

github-actions bot commented Nov 27, 2025

@benchmarks/server results (uws)

     ✓ no-errors
     ✓ expected-result

   ✓ checks.........................: 100.00% ✓ 242746      ✗ 0     
     data_received..................: 20 MB   676 kB/s
     data_sent......................: 18 MB   603 kB/s
     http_req_blocked...............: avg=1.62µs   min=921ns    med=1.55µs   max=184.36µs p(90)=2.05µs   p(95)=2.28µs  
     http_req_connecting............: avg=0ns      min=0s       med=0s       max=119.68µs p(90)=0s       p(95)=0s      
     http_req_duration..............: avg=169.78µs min=102.36µs med=160.46µs max=15.81ms  p(90)=183.31µs p(95)=192.13µs
       { expected_response:true }...: avg=169.78µs min=102.36µs med=160.46µs max=15.81ms  p(90)=183.31µs p(95)=192.13µs
     http_req_failed................: 0.00%   ✓ 0           ✗ 121373
     http_req_receiving.............: avg=23.87µs  min=12.43µs  med=22.53µs  max=3.22ms   p(90)=28.28µs  p(95)=31.04µs 
     http_req_sending...............: avg=9.38µs   min=5.62µs   med=9.44µs   max=314.58µs p(90)=12.24µs  p(95)=14.11µs 
     http_req_tls_handshaking.......: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
     http_req_waiting...............: avg=136.51µs min=72.99µs  med=127.89µs max=15.72ms  p(90)=148.28µs p(95)=155.98µs
     http_reqs......................: 121373  4045.622802/s
     iteration_duration.............: avg=242.29µs min=170.96µs med=231.33µs max=15.97ms  p(90)=259.32µs p(95)=271.52µs
     iterations.....................: 121373  4045.622802/s
     vus............................: 1       min=1         max=1   
     vus_max........................: 1       min=1         max=1   

@github-actions
Copy link
Contributor

github-actions bot commented Nov 27, 2025

@benchmarks/server results (native)

     ✓ no-errors
     ✓ expected-result

   ✓ checks.........................: 100.00% ✓ 195312      ✗ 0    
     data_received..................: 19 MB   648 kB/s
     data_sent......................: 15 MB   485 kB/s
     http_req_blocked...............: avg=1.64µs   min=942ns    med=1.62µs   max=259.19µs p(90)=1.98µs   p(95)=2.14µs  
     http_req_connecting............: avg=1ns      min=0s       med=0s       max=132.52µs p(90)=0s       p(95)=0s      
     http_req_duration..............: avg=231.67µs min=171.7µs  med=220.75µs max=28.39ms  p(90)=251.71µs p(95)=264.54µs
       { expected_response:true }...: avg=231.67µs min=171.7µs  med=220.75µs max=28.39ms  p(90)=251.71µs p(95)=264.54µs
     http_req_failed................: 0.00%   ✓ 0           ✗ 97656
     http_req_receiving.............: avg=26.3µs   min=14.53µs  med=24.71µs  max=2.8ms    p(90)=30.55µs  p(95)=33.75µs 
     http_req_sending...............: avg=9.58µs   min=5.76µs   med=9.66µs   max=296.47µs p(90)=11.51µs  p(95)=13.13µs 
     http_req_tls_handshaking.......: avg=0s       min=0s       med=0s       max=0s       p(90)=0s       p(95)=0s      
     http_req_waiting...............: avg=195.78µs min=143.13µs med=186.07µs max=28.32ms  p(90)=214.61µs p(95)=226.69µs
     http_reqs......................: 97656   3255.090552/s
     iteration_duration.............: avg=302.6µs  min=231.3µs  med=290.74µs max=28.56ms  p(90)=324.85µs p(95)=341.34µs
     iterations.....................: 97656   3255.090552/s
     vus............................: 1       min=1         max=1  
     vus_max........................: 1       min=1         max=1  

@renovate renovate bot force-pushed the renovate/all-minor-patch branch from 2613781 to 3dacae4 Compare November 28, 2025 17:35
@renovate renovate bot changed the title chore(deps): update dependency prettier to v3.7.1 chore(deps): update all non-major dependencies Nov 28, 2025
@renovate renovate bot force-pushed the renovate/all-minor-patch branch 11 times, most recently from e750327 to 67bcac7 Compare December 4, 2025 06:43
@github-actions
Copy link
Contributor

github-actions bot commented Dec 4, 2025

🚀 Snapshot Release (alpha)

The latest changes of this PR are available as alpha on npm (based on the declared changesets):

Package Version Info
@whatwg-node/node-fetch 0.8.5-alpha-20251204164651-10666707bffc27d1e49d3c44cde95d3bcbb9baa2 npm ↗︎ unpkg ↗︎
@whatwg-node/server 0.10.18-alpha-20251204164651-10666707bffc27d1e49d3c44cde95d3bcbb9baa2 npm ↗︎ unpkg ↗︎

@ardatan ardatan changed the title chore(deps): update all non-major dependencies Bump dependencies, improvements and fix compatibility issues with Node 24 + Express & Next.js Dec 4, 2025
@ardatan ardatan requested a review from enisdenjo December 4, 2025 16:50
@ardatan
Copy link
Owner

ardatan commented Dec 4, 2025

@copilot review
@coderabbitai review
@gemini-code-assist review

Copy link

Copilot AI commented Dec 4, 2025

@ardatan I've opened a new pull request, #2977, to work on those changes. Once the pull request is ready, I'll request review from you.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 4, 2025

@ardatan: I'll review the changes in this PR now.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@renovate
Copy link
Contributor Author

renovate bot commented Dec 4, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@paales
Copy link

paales commented Jan 6, 2026

@ardatan Merge?

@ardatan ardatan force-pushed the renovate/all-minor-patch branch from 1066670 to 55a4c09 Compare January 6, 2026 16:01
@ardatan ardatan merged commit 99e6722 into master Jan 6, 2026
15 of 26 checks passed
@ardatan ardatan deleted the renovate/all-minor-patch branch January 6, 2026 16:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TypeError: Cannot read private member #state from an object whose class did not declare it

4 participants