fix(yauzl): vendor yauzl with destroy-lifecycle fix#40747
Conversation
Vendor yauzl 3.2.1 (plus its fd-slicer/pend/buffer-crc32 deps) into packages/utils/third_party/yauzl/, and apply the fix from thejoshwolfe/yauzl#168 to fd-slicer's ReadStream/WriteStream destroy() lifecycle so that 'close' is emitted after EOF and `for await` over openReadStream completes on modern Node.
Test results for "MCP"11 failed 7020 passed, 1068 skipped Merge workflow run. |
Test results for "tests 1"1 failed 6 flaky41699 passed, 850 skipped Merge workflow run. |
yury-s
left a comment
There was a problem hiding this comment.
I'd just wait for it to land upstream.
|
@pavelfeldman I'm letting you know that the upstream released a fix. I don't know if playwright team sees dropping vendored code good or not. Imo, it's better to get the upstream code instead and get the future updates in that way along with the fix. The patch applied here is small enough to fix the issue. |
This fixes hangs when installing Playwright browsers on Node 26. See microsoft/playwright#40724, microsoft/playwright#40747.
Summary
packages/utils/third_party/yauzl/, drop the npm dep.ReadStream/WriteStreamso_destroy(err, cb)drives the lifecycle and'close'fires after EOF — async iteration (for await) overopenReadStreamno longer hangs on modern Node.Fixes: #40724
Courtesy @seia-soto