Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.pipe() and .pipeTo() fail when the source stream is constructed from a Buffer #56297

Open
gabrielschulhof opened this issue Dec 17, 2024 · 2 comments
Labels
stream Issues and PRs related to the stream subsystem. web streams

Comments

@gabrielschulhof
Copy link
Contributor

Version

v22.9.0, v23.4.0

Platform

Darwin XXXXXXXXXX 24.2.0 Darwin Kernel Version 24.2.0: Fri Dec  6 19:01:59 PST 2024; root:xnu-11215.61.5~2/RELEASE_ARM64_T6000 arm64

Subsystem

stream

What steps will reproduce the bug?

const path = require('node:path');
const fs = require('node:fs');
const { Readable, Writable } = require('node:stream');

const fileBuffer = fs.readFileSync(__filename);
const readable = fs.createReadStream(path.resolve(__filename));
const writable = fs.createWriteStream(`${__filename}_copy`);
const webReadable = Readable.toWeb(readable);
const webWritable = Writable.toWeb(writable);
const webReadableFromBuffer = ReadableStream.from(fileBuffer);
const readableFromBuffer = Readable.from(fileBuffer);
const readableFromWebReadableFromBuffer = Readable.from(webReadableFromBuffer);
const readableFromWebReadableFromReadable = Readable.from(webReadable);

// webReadable.pipeTo(webWritable);
// OK

// readable.pipe(writable);
// OK

// readableFromBuffer.pipe(writable);
// OK

// readableFromWebReadableFromReadable.pipe(writable);
// OK

// webReadableFromBuffer.pipeTo(webWritable);
// TypeError [ERR_INVALID_STATE]: Invalid state: The ReadableStream is locked

// readableFromWebReadableFromBuffer.pipe(writable);
// TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received type number (60)

How often does it reproduce? Is there a required condition?

Every time. No preconditions.

What is the expected behavior? Why is that the expected behavior?

All the above combinations should succeed.

What do you see instead?

Errors in the cases where the Readable or ReadableStream is constructed from a Buffer.

Additional information

No response

@gabrielschulhof gabrielschulhof added stream Issues and PRs related to the stream subsystem. web streams labels Dec 17, 2024
@gabrielschulhof
Copy link
Contributor Author

Potentially related: #56139

@gabrielschulhof
Copy link
Contributor Author

Also potentially related: #44866

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stream Issues and PRs related to the stream subsystem. web streams
Projects
None yet
Development

No branches or pull requests

1 participant