readable-stream
readable-stream copied to clipboard
Readable constructor has extra properties attached
Comparing Readable
in Node.js 18.8.0 and [email protected]
:
> stream.Readable
[Function: Readable] {
ReadableState: [Function: ReadableState],
_fromList: [Function: fromList],
from: [Function (anonymous)],
fromWeb: [Function (anonymous)],
toWeb: [Function (anonymous)],
wrap: [Function (anonymous)]
}
> const rs = await import('readable-stream')
undefined
> rs.Readable
<ref *1> [Function: Readable] {
ReadableState: [Function: ReadableState],
_fromList: [Function: fromList],
from: [Function (anonymous)],
fromWeb: [Function (anonymous)],
toWeb: [Function (anonymous)],
wrap: [Function (anonymous)],
_uint8ArrayToBuffer: [Function: _uint8ArrayToBuffer],
_isUint8Array: [Function: isUint8Array],
isDisturbed: [Function: isDisturbed],
isErrored: [Function: isErrored],
isReadable: [Function: isReadable],
Readable: [Circular *1],
Writable: [Function: Writable] {
WritableState: [Function: WritableState],
fromWeb: [Function (anonymous)],
toWeb: [Function (anonymous)]
},
Duplex: [Function: Duplex] {
fromWeb: [Function (anonymous)],
toWeb: [Function (anonymous)],
from: [Function (anonymous)]
},
Transform: [Function: Transform],
PassThrough: [Function: PassThrough],
addAbortSignal: [Function: addAbortSignal],
finished: [Function: eos] {
finished: [Function: finished],
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
destroy: [Function: destroyer],
pipeline: [Function: pipeline] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
compose: [Function: compose],
Stream: <ref *2> [Function: Stream] {
isDisturbed: [Function: isDisturbed],
isErrored: [Function: isErrored],
isReadable: [Function: isReadable],
Readable: [Circular *1],
Writable: [Function: Writable] {
WritableState: [Function: WritableState],
fromWeb: [Function (anonymous)],
toWeb: [Function (anonymous)]
},
Duplex: [Function: Duplex] {
fromWeb: [Function (anonymous)],
toWeb: [Function (anonymous)],
from: [Function (anonymous)]
},
Transform: [Function: Transform],
PassThrough: [Function: PassThrough],
pipeline: [Function: pipeline] {
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
addAbortSignal: [Function: addAbortSignal],
finished: [Function: eos] {
finished: [Function: finished],
[Symbol(nodejs.util.promisify.custom)]: [Getter]
},
destroy: [Function: destroyer],
compose: [Function: compose],
promises: [Getter],
Stream: [Circular *2],
_isUint8Array: [Function: isUint8Array],
_uint8ArrayToBuffer: [Function: _uint8ArrayToBuffer]
},
default: [Circular *1]
}
This is done for historic reason. This module exports Readable
, while require('stream')
exports Stream
. I don't like it either, but I didn't think we should break it in v4. Should we do another major and fix it?
You might just get away with some other variant of https://github.com/nodejs/readable-stream/blob/main/lib/ours/index.js#L33-L64.
For my use case, it would be cleaner. Right now I'm just deleting the extra properties off of Readable
.
Maybe something to consider in the next major release, but probably not worth artificially forcing a major release just for this.
Would you mind sending a PR? At least we won't forget when we bump the major next year.