Skip to content

Commit

Permalink
streams: implement streams to webstreams adapters
Browse files Browse the repository at this point in the history
Experimental adapters for the webstreams API

Signed-off-by: James M Snell <jasnell@gmail.com>
  • Loading branch information
jasnell committed Jul 8, 2021
1 parent 2631394 commit aebb324
Show file tree
Hide file tree
Showing 11 changed files with 2,194 additions and 0 deletions.
85 changes: 85 additions & 0 deletions doc/api/webstreams.md
Original file line number Diff line number Diff line change
Expand Up @@ -1118,5 +1118,90 @@ added: REPLACEME
* `chunk` {any}
* Returns: {number}
## Node.js Streams Adapters
The Node.js Streams Adapters are additional Node.js-specific APIs that are used
to adapt `ReadableStream`, `WritableStream`, and `TransformStream` objects to
the Node.js streams API.
### Adapting Node.js streams to Web Streams
#### `newReadableStreamFromStreamReadable(streamReadable)`
* `streamReadable` {stream.Readable}
* Returns: {ReadableStream}
Creates and returns a {ReadableStream} that wraps a {stream.Readable}.
#### `newReadableWritablePairFromStreamDuplex(streamDuplex)`
* `streamDuplex` {stream.Duplex}
* Returns: {Object}
* `readable` {ReadableStream}
* `writable` {WritableStream}
Creates and returns a {ReadableStream} and {WritableStream} pair that wraps a
{stream.Duplex}.
#### `newWritableStreamFromStreamWritable(streamWritable)`
* `streamWritable` {stream.Writable}
* Returns: {WritableStream}
Creates and returns a {WritableStream} that wraps a {stream.Writable}.
### Adapting Web Streams to Node.js streams
#### `newStreamDuplexFromReadableWritablePair(pair[, options])`
* `pair`: {Object}
* `readable` {ReadableStream}
* `writable` {WritableStream}
* `options` {Object}
* `decodeStrings` {boolean} When `true`, the created {stream.Duplex}
will decode strings passed to it.
* `encoding` {string} The text encoding used by the created {stream.Duplex}.
* `highWaterMark` {number} The high water mark used by the created
{stream.Duplex}.
* `objectMode` {boolean} When `true`, the {stream.Duplex} will be put into
object mode.
* `signal` {AbortSignal} The {AbortSignal} passed into the created
{stream.Duplex}.
* Returns: {stream.Duplex}
Creates and returns a {stream.Duplex} that wraps a {ReadableStream} and
{WritableStream} pair.
#### `newStreamReadableFromReadableStream(readableStream[, options])`
* `readableStream` {ReadableStream}
* `options` {Object}
* `highWaterMark` {number} The high water mark used by the created
{stream.Readable}.
* `encoding` {string} The text encoding used by the created {stream.Readable}.
* `objectMode` {boolean} When `true`, the created {stream.Readable} will be
put into object mode.
* `signal` {AbortSignal} The {AbortSignal} passed into the created
{stream.Readable}.
* Returns: {stream.Readable}
Creates and returns a {stream.Readable} that wraps a {ReadableStream}.
#### `newStreamWritableFromWritableStream(writableStream[, options])`
* `writableStream` {WritableStream}
* `options` {Object}
* `highWaterMark` {number} The high water mark used by the created
{stream.Writable}.
* `decodeStrings` {boolean} When `true`, the created {stream.Writable}
will decode strings passed to it.
* `objectMode` {boolean} When `true`, the created {stream.Writable} will be
put into object mode.
* `signal` {AbortSignal} The {AbortSignal} passed into the created
{stream.Writable}.
* Returns: {stream.Writable}
Creates and returns a {stream.Writable} that wraps a {WritableStream}.
[Streams]: stream.md
[WHATWG Streams Standard]: https://streams.spec.whatwg.org/
2 changes: 2 additions & 0 deletions lib/internal/fs/promises.js
Original file line number Diff line number Diff line change
Expand Up @@ -788,6 +788,8 @@ module.exports = {
appendFile,
readFile,
watch,

kHandle,
},

FileHandle,
Expand Down

0 comments on commit aebb324

Please sign in to comment.