From 958a787207261876bfb7ea581e52a223536bdccc Mon Sep 17 00:00:00 2001 From: Jithil Date: Sat, 22 Oct 2022 16:02:54 +1100 Subject: [PATCH] webstreams: fix web streams have no Symbol.toStringTag fix web streams have no Symbol.toStringTag #45114 --- lib/internal/webstreams/queuingstrategies.js | 10 +++++-- lib/internal/webstreams/readablestream.js | 31 ++++++++++++++++---- lib/internal/webstreams/transformstream.js | 10 +++++-- lib/internal/webstreams/writablestream.js | 15 ++++++++-- test/parallel/test-webstream-string-tag.js | 23 +++++++++++++++ 5 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 test/parallel/test-webstream-string-tag.js diff --git a/lib/internal/webstreams/queuingstrategies.js b/lib/internal/webstreams/queuingstrategies.js index 78cec0c35559d3..93e0a6ace415a7 100644 --- a/lib/internal/webstreams/queuingstrategies.js +++ b/lib/internal/webstreams/queuingstrategies.js @@ -57,7 +57,10 @@ const countSizeFunction = function size() { return 1; }; * @type {QueuingStrategy} */ class ByteLengthQueuingStrategy { - [kType] = 'ByteLengthQueuingStrategy'; + + get [kType]() { + return 'ByteLengthQueuingStrategy'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -113,7 +116,10 @@ ObjectDefineProperties(ByteLengthQueuingStrategy.prototype, { * @type {QueuingStrategy} */ class CountQueuingStrategy { - [kType] = 'CountQueuingStrategy'; + + get [kType]() { + return 'CountQueuingStrategy'; + } get [SymbolToStringTag]() { return this[kType]; } diff --git a/lib/internal/webstreams/readablestream.js b/lib/internal/webstreams/readablestream.js index b44df2ff77896d..7e0607b388f84d 100644 --- a/lib/internal/webstreams/readablestream.js +++ b/lib/internal/webstreams/readablestream.js @@ -199,7 +199,10 @@ const kPull = Symbol('kPull'); */ class ReadableStream { - [kType] = 'ReadableStream'; + + get [kType]() { + return 'ReadableStream'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -621,7 +624,10 @@ function TransferredReadableStream() { TransferredReadableStream.prototype[kDeserialize] = () => {}; class ReadableStreamBYOBRequest { - [kType] = 'ReadableStreamBYOBRequest'; + + get [kType]() { + return 'ReadableStreamBYOBRequest'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -753,7 +759,10 @@ class ReadIntoRequest { } class ReadableStreamDefaultReader { - [kType] = 'ReadableStreamDefaultReader'; + + get [kType]() { + return 'ReadableStreamDefaultReader'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -847,7 +856,11 @@ ObjectDefineProperties(ReadableStreamDefaultReader.prototype, { }); class ReadableStreamBYOBReader { - [kType] = 'ReadableStreamBYOBReader'; + + get [kType]() { + return 'ReadableStreamBYOBReader'; + } + get [SymbolToStringTag]() { return this[kType]; } @@ -964,7 +977,10 @@ ObjectDefineProperties(ReadableStreamBYOBReader.prototype, { }); class ReadableStreamDefaultController { - [kType] = 'ReadableStreamDefaultController'; + + get [kType]() { + return 'ReadableStreamDefaultController'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -1034,7 +1050,10 @@ function createReadableStreamDefaultController() { } class ReadableByteStreamController { - [kType] = 'ReadableByteStreamController'; + + get [kType]() { + return 'ReadableByteStreamController'; + } get [SymbolToStringTag]() { return this[kType]; } diff --git a/lib/internal/webstreams/transformstream.js b/lib/internal/webstreams/transformstream.js index 457c9eb8fb338a..5ad74c518e5b2f 100644 --- a/lib/internal/webstreams/transformstream.js +++ b/lib/internal/webstreams/transformstream.js @@ -101,7 +101,10 @@ const assert = require('internal/assert'); */ class TransformStream { - [kType] = 'TransformStream'; + + get [kType]() { + return 'TransformStream'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -260,7 +263,10 @@ function TransferredTransformStream() { TransferredTransformStream.prototype[kDeserialize] = () => {}; class TransformStreamDefaultController { - [kType] = 'TransformStreamDefaultController'; + + get [kType]() { + return 'TransformStreamDefaultController'; + } get [SymbolToStringTag]() { return this[kType]; } diff --git a/lib/internal/webstreams/writablestream.js b/lib/internal/webstreams/writablestream.js index 8c25cc33c15f5f..cf0446e9cd8411 100644 --- a/lib/internal/webstreams/writablestream.js +++ b/lib/internal/webstreams/writablestream.js @@ -119,7 +119,10 @@ const kError = Symbol('kError'); */ class WritableStream { - [kType] = 'WritableStream'; + + get [kType]() { + return 'WritableStream'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -346,7 +349,10 @@ function TransferredWritableStream() { TransferredWritableStream.prototype[kDeserialize] = () => {}; class WritableStreamDefaultWriter { - [kType] = 'WritableStreamDefaultWriter'; + + get [kType]() { + return 'WritableStreamDefaultWriter'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -490,7 +496,10 @@ ObjectDefineProperties(WritableStreamDefaultWriter.prototype, { }); class WritableStreamDefaultController { - [kType] = 'WritableStreamDefaultController'; + + get [kType]() { + return 'WritableStreamDefaultController'; + } get [SymbolToStringTag]() { return this[kType]; } diff --git a/test/parallel/test-webstream-string-tag.js b/test/parallel/test-webstream-string-tag.js new file mode 100644 index 00000000000000..1801ab72ff5dcf --- /dev/null +++ b/test/parallel/test-webstream-string-tag.js @@ -0,0 +1,23 @@ +'use strict'; + +require('../common'); + +const assert = require('assert'); +const webstreams = require('stream/web'); + +assert.strictEqual(WritableStream.prototype[Symbol.toStringTag], 'WritableStream'); +assert.strictEqual(WritableStreamDefaultWriter.prototype[Symbol.toStringTag], 'WritableStreamDefaultWriter'); +assert.strictEqual(WritableStreamDefaultController.prototype[Symbol.toStringTag], 'WritableStreamDefaultController'); + +assert.strictEqual(ReadableStream.prototype[Symbol.toStringTag], 'ReadableStream'); +assert.strictEqual(ReadableStreamBYOBRequest.prototype[Symbol.toStringTag], 'ReadableStreamBYOBRequest'); +assert.strictEqual(ReadableStreamDefaultReader.prototype[Symbol.toStringTag], 'ReadableStreamDefaultReader'); +assert.strictEqual(ReadableStreamBYOBReader.prototype[Symbol.toStringTag], 'ReadableStreamBYOBReader'); +assert.strictEqual(ReadableStreamDefaultController.prototype[Symbol.toStringTag], 'ReadableStreamDefaultController'); +assert.strictEqual(ReadableByteStreamController.prototype[Symbol.toStringTag], 'ReadableByteStreamController'); + +assert.strictEqual(ByteLengthQueuingStrategy.prototype[Symbol.toStringTag], 'ByteLengthQueuingStrategy'); +assert.strictEqual(CountQueuingStrategy.prototype[Symbol.toStringTag], 'CountQueuingStrategy'); + +assert.strictEqual(TransformStream.prototype[Symbol.toStringTag], 'TransformStream'); +assert.strictEqual(TransformStreamDefaultController.prototype[Symbol.toStringTag], 'TransformStreamDefaultController');