mirror of
https://github.com/denoland/deno.git
synced 2025-09-22 10:22:34 +00:00

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.
52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
// deno-lint-ignore-file
|
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
|
|
import { primordials } from "ext:core/mod.js";
|
|
import {
|
|
isIterable,
|
|
isNodeStream,
|
|
isWebStream,
|
|
} from "ext:deno_node/internal/streams/utils.js";
|
|
import { pipelineImpl as pl } from "ext:deno_node/internal/streams/pipeline.js";
|
|
import { finished } from "ext:deno_node/internal/streams/end-of-stream.js";
|
|
import * as _mod2 from "node:stream";
|
|
"use strict";
|
|
|
|
const {
|
|
ArrayPrototypePop,
|
|
Promise,
|
|
} = primordials;
|
|
|
|
_mod2;
|
|
|
|
function pipeline(...streams) {
|
|
return new Promise((resolve, reject) => {
|
|
let signal;
|
|
let end;
|
|
const lastArg = streams[streams.length - 1];
|
|
if (
|
|
lastArg && typeof lastArg === "object" &&
|
|
!isNodeStream(lastArg) && !isIterable(lastArg) && !isWebStream(lastArg)
|
|
) {
|
|
const options = ArrayPrototypePop(streams);
|
|
signal = options.signal;
|
|
end = options.end;
|
|
}
|
|
|
|
pl(streams, (err, value) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(value);
|
|
}
|
|
}, { signal, end });
|
|
});
|
|
}
|
|
|
|
const _defaultExport1 = {
|
|
finished,
|
|
pipeline,
|
|
};
|
|
|
|
export default _defaultExport1;
|
|
export { finished, pipeline };
|