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:
René
2025-12-03 13:08:34 +00:00
committed by GitHub
parent 5b4b031da4
commit ecdf6a8c53
2 changed files with 33 additions and 0 deletions

View File

@@ -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}

View File

@@ -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',