fix(ext/node): upgrade node:stream (#28855)

Ref https://github.com/denoland/deno/issues/28836

This PR replaces the _stream.mjs bundle with a file-by-file port instead. A codemod transpiles Node.js internals to ESM. The codemod performs three tasks: translating CJS to ESM, remapping internal dependencies, and hoisting lazy requires as imports.

The process is fully automated through the `update_node_stream.ts` script, simplifying future internal updates. The script checks out Node.js from a specific tag defined in the `tests/node_compat/runner`.

Additionally, the update enables new tests in our Node test runner and adds features (like compose()) that were missing from the outdated bundle.

## Performance

There is a 140KB+ binary size increase on aarch64-apple-darwin and nop startup time stays the same.
This commit is contained in:
Divy Srivastava 2025-04-14 09:05:34 -07:00 committed by GitHub
parent 6e49a4b3bd
commit 01b6da9d9b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
76 changed files with 11145 additions and 7032 deletions

View file

@ -0,0 +1,77 @@
// deno-lint-ignore-file
// Copyright 2018-2025 the Deno authors. MIT license.
import {
TransformStream,
TransformStreamDefaultController,
} from "ext:deno_web/06_streams.js";
import {
WritableStream,
WritableStreamDefaultController,
WritableStreamDefaultWriter,
} from "ext:deno_web/06_streams.js";
import {
ReadableByteStreamController,
ReadableStream,
ReadableStreamBYOBReader,
ReadableStreamBYOBRequest,
ReadableStreamDefaultController,
ReadableStreamDefaultReader,
} from "ext:deno_web/06_streams.js";
import {
ByteLengthQueuingStrategy,
CountQueuingStrategy,
} from "ext:deno_web/06_streams.js";
import {
TextDecoderStream,
TextEncoderStream,
} from "ext:deno_web/08_text_encoding.js";
import {
CompressionStream,
DecompressionStream,
} from "ext:deno_web/14_compression.js";
"use strict";
const _defaultExport1 = {
ReadableStream,
ReadableStreamDefaultReader,
ReadableStreamBYOBReader,
ReadableStreamBYOBRequest,
ReadableByteStreamController,
ReadableStreamDefaultController,
TransformStream,
TransformStreamDefaultController,
WritableStream,
WritableStreamDefaultWriter,
WritableStreamDefaultController,
ByteLengthQueuingStrategy,
CountQueuingStrategy,
TextEncoderStream,
TextDecoderStream,
CompressionStream,
DecompressionStream,
};
export default _defaultExport1;
export {
ByteLengthQueuingStrategy,
CompressionStream,
CountQueuingStrategy,
DecompressionStream,
ReadableByteStreamController,
ReadableStream,
ReadableStreamBYOBReader,
ReadableStreamBYOBRequest,
ReadableStreamDefaultController,
ReadableStreamDefaultReader,
TextDecoderStream,
TextEncoderStream,
TransformStream,
TransformStreamDefaultController,
WritableStream,
WritableStreamDefaultController,
WritableStreamDefaultWriter,
};