Commit 7cef769 1 parent 9c718f8 commit 7cef769 Copy full SHA for 7cef769
File tree 5 files changed +40
-4
lines changed
5 files changed +40
-4
lines changed Original file line number Diff line number Diff line change @@ -2211,6 +2211,19 @@ added: REPLACEME
2211
2211
2212
2212
Returns whether the stream has encountered an error.
2213
2213
2214
+ ### ` stream.isReadable(stream) `
2215
+
2216
+ <!-- YAML
2217
+ added: REPLACEME
2218
+ -->
2219
+
2220
+ > Stability: 1 - Experimental
2221
+
2222
+ * ` stream ` {Readable|Duplex|ReadableStream}
2223
+ * Returns: {boolean}
2224
+
2225
+ Returns whether the stream is readable.
2226
+
2214
2227
### ` stream.Readable.toWeb(streamReadable) `
2215
2228
2216
2229
<!-- YAML
Original file line number Diff line number Diff line change 8
8
9
9
const kDestroyed = Symbol ( 'kDestroyed' ) ;
10
10
const kIsErrored = Symbol ( 'kIsErrored' ) ;
11
+ const kIsReadable = Symbol ( 'kIsReadable' ) ;
11
12
const kIsDisturbed = Symbol ( 'kIsDisturbed' ) ;
12
13
13
14
function isReadableNodeStream ( obj ) {
@@ -120,6 +121,7 @@ function isDisturbed(stream) {
120
121
}
121
122
122
123
function isReadable ( stream ) {
124
+ if ( stream && stream [ kIsReadable ] != null ) return stream [ kIsReadable ] ;
123
125
const r = isReadableNodeStream ( stream ) ;
124
126
if ( r === null || typeof stream ?. readable !== 'boolean' ) return null ;
125
127
if ( isDestroyed ( stream ) ) return false ;
@@ -235,15 +237,16 @@ function isErrored(stream) {
235
237
236
238
module . exports = {
237
239
isDisturbed,
238
- isErrored,
239
240
kIsDisturbed,
241
+ isErrored,
240
242
kIsErrored,
243
+ isReadable,
244
+ kIsReadable,
241
245
isClosed,
242
246
isDestroyed,
243
247
isDuplexNodeStream,
244
248
isFinished,
245
249
isIterable,
246
- isReadable,
247
250
isReadableNodeStream,
248
251
isReadableEnded,
249
252
isReadableFinished,
Original file line number Diff line number Diff line change @@ -83,6 +83,7 @@ const {
83
83
const {
84
84
kIsDisturbed,
85
85
kIsErrored,
86
+ kIsReadable,
86
87
} = require ( 'internal/streams/utils' ) ;
87
88
88
89
const {
@@ -261,6 +262,10 @@ class ReadableStream {
261
262
return this [ kState ] . state === 'errored' ;
262
263
}
263
264
265
+ get [ kIsReadable ] ( ) {
266
+ return this [ kState ] . state === 'readable' ;
267
+ }
268
+
264
269
/**
265
270
* @readonly
266
271
* @type {boolean }
Original file line number Diff line number Diff line change @@ -44,6 +44,7 @@ const utils = require('internal/streams/utils');
44
44
const Stream = module . exports = require ( 'internal/streams/legacy' ) . Stream ;
45
45
Stream . isDisturbed = utils . isDisturbed ;
46
46
Stream . isErrored = utils . isErrored ;
47
+ Stream . isReadable = utils . isReadable ;
47
48
Stream . Readable = require ( 'internal/streams/readable' ) ;
48
49
for ( const key of ObjectKeys ( operators ) ) {
49
50
const op = operators [ key ] ;
Original file line number Diff line number Diff line change 2
2
'use strict' ;
3
3
4
4
const common = require ( '../common' ) ;
5
- const { isDisturbed, isErrored } = require ( 'stream' ) ;
5
+ const { isDisturbed, isErrored, isReadable } = require ( 'stream' ) ;
6
6
const assert = require ( 'assert' ) ;
7
7
const {
8
8
isPromise,
@@ -1573,7 +1573,6 @@ class Source {
1573
1573
} ) ( ) . then ( common . mustCall ( ) ) ;
1574
1574
}
1575
1575
1576
-
1577
1576
{
1578
1577
const stream = new ReadableStream ( {
1579
1578
pull : common . mustCall ( ( controller ) => {
@@ -1588,3 +1587,18 @@ class Source {
1588
1587
isErrored ( stream , true ) ;
1589
1588
} ) ( ) . then ( common . mustCall ( ) ) ;
1590
1589
}
1590
+
1591
+ {
1592
+ const stream = new ReadableStream ( {
1593
+ pull : common . mustCall ( ( controller ) => {
1594
+ controller . error ( new Error ( ) ) ;
1595
+ } ) ,
1596
+ } ) ;
1597
+
1598
+ const reader = stream . getReader ( ) ;
1599
+ ( async ( ) => {
1600
+ isReadable ( stream , true ) ;
1601
+ await reader . read ( ) . catch ( common . mustCall ( ) ) ;
1602
+ isReadable ( stream , false ) ;
1603
+ } ) ( ) . then ( common . mustCall ( ) ) ;
1604
+ }
You can’t perform that action at this time.
0 commit comments