stream: implement streams to webstreams adapters · nodejs/node@a99c230 · GitHub
Skip to content

Commit a99c230

Browse files
committed
stream: implement streams to webstreams adapters
Experimental adapters for the webstreams API Signed-off-by: James M Snell <jasnell@gmail.com> PR-URL: #39134 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
1 parent 09b57f7 commit a99c230

13 files changed

Lines changed: 2358 additions & 0 deletions

doc/api/stream.md

Lines changed: 81 additions & 0 deletions

lib/internal/fs/promises.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,8 @@ module.exports = {
788788
appendFile,
789789
readFile,
790790
watch,
791+
792+
kHandle,
791793
},
792794

793795
FileHandle,

lib/internal/streams/duplex.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,22 @@ ObjectDefineProperties(Duplex.prototype, {
114114
}
115115
}
116116
});
117+
118+
let webStreamsAdapters;
119+
120+
// Lazy to avoid circular references
121+
function lazyWebStreams() {
122+
if (webStreamsAdapters === undefined)
123+
webStreamsAdapters = require('internal/webstreams/adapters');
124+
return webStreamsAdapters;
125+
}
126+
127+
Duplex.fromWeb = function(pair, options) {
128+
return lazyWebStreams().newStreamDuplexFromReadableWritablePair(
129+
pair,
130+
options);
131+
};
132+
133+
Duplex.toWeb = function(duplex) {
134+
return lazyWebStreams().newReadableWritablePairFromDuplex(duplex);
135+
};

lib/internal/streams/readable.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1355,3 +1355,22 @@ function endWritableNT(state, stream) {
13551355
Readable.from = function(iterable, opts) {
13561356
return from(Readable, iterable, opts);
13571357
};
1358+
1359+
let webStreamsAdapters;
1360+
1361+
// Lazy to avoid circular references
1362+
function lazyWebStreams() {
1363+
if (webStreamsAdapters === undefined)
1364+
webStreamsAdapters = require('internal/webstreams/adapters');
1365+
return webStreamsAdapters;
1366+
}
1367+
1368+
Readable.fromWeb = function(readableStream, options) {
1369+
return lazyWebStreams().newStreamReadableFromReadableStream(
1370+
readableStream,
1371+
options);
1372+
};
1373+
1374+
Readable.toWeb = function(streamReadable) {
1375+
return lazyWebStreams().newStreamReadableFromReadableStream(streamReadable);
1376+
};

lib/internal/streams/writable.js

Lines changed: 19 additions & 0 deletions

0 commit comments

Comments
 (0)