mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
stream: fix isErrored/isWritable for WritableStreams
PR-URL: https://github.com/nodejs/node/pull/60905 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
This commit is contained in:
@@ -76,6 +76,8 @@ const {
|
||||
|
||||
const {
|
||||
kIsClosedPromise,
|
||||
kIsErrored,
|
||||
kIsWritable,
|
||||
kControllerErrorFunction,
|
||||
} = require('internal/streams/utils');
|
||||
|
||||
@@ -183,6 +185,14 @@ class WritableStream {
|
||||
size);
|
||||
}
|
||||
|
||||
get [kIsErrored]() {
|
||||
return this[kState].state === 'errored';
|
||||
}
|
||||
|
||||
get [kIsWritable]() {
|
||||
return this[kState].state === 'writable';
|
||||
}
|
||||
|
||||
/**
|
||||
* @readonly
|
||||
* @type {boolean}
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
const common = require('../common');
|
||||
const assert = require('assert');
|
||||
|
||||
const { isErrored, isWritable } = require('stream');
|
||||
|
||||
const {
|
||||
WritableStream,
|
||||
WritableStreamDefaultController,
|
||||
@@ -171,6 +173,27 @@ class Sink {
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
const stream = new WritableStream();
|
||||
assert.strictEqual(isWritable(stream), true);
|
||||
stream.close().then(common.mustCall(() => {
|
||||
assert.strictEqual(isWritable(stream), false);
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
const stream = new WritableStream({
|
||||
write: common.mustCall((chunk, controller) => {
|
||||
controller.error(new Error());
|
||||
})
|
||||
});
|
||||
const writer = stream.getWriter();
|
||||
assert.strictEqual(isErrored(stream), false);
|
||||
writer.write().then(common.mustCall(() => {
|
||||
assert.strictEqual(isErrored(stream), true);
|
||||
}));
|
||||
}
|
||||
|
||||
{
|
||||
assert.throws(() => Reflect.get(WritableStream.prototype, 'locked', {}), {
|
||||
code: 'ERR_INVALID_THIS',
|
||||
|
||||
Reference in New Issue
Block a user