From c1cb095ed969e325633046e8896df4ab35a28399 Mon Sep 17 00:00:00 2001 From: Jithil Date: Sat, 22 Oct 2022 16:02:54 +1100 Subject: [PATCH] stream: fix web streams have no Symbol.toStringTag fix web streams have no Symbol.toStringTag --- 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 | 22 ++++++++++++++ 5 files changed, 75 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 32d58af1dfad19..2023182907ce06 100644 --- a/lib/internal/webstreams/queuingstrategies.js +++ b/lib/internal/webstreams/queuingstrategies.js @@ -60,7 +60,10 @@ const countSizeFunction = ObjectDefineProperty(() => 1, 'name', nameDescriptor); * @type {QueuingStrategy} */ class ByteLengthQueuingStrategy { - [kType] = 'ByteLengthQueuingStrategy'; + + get [kType]() { + return 'ByteLengthQueuingStrategy'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -116,7 +119,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 5cb4cc1e12d5f6..b5e89e26aea7c0 100644 --- a/lib/internal/webstreams/readablestream.js +++ b/lib/internal/webstreams/readablestream.js @@ -204,7 +204,10 @@ const kRelease = Symbol('kRelease'); */ class ReadableStream { - [kType] = 'ReadableStream'; + + get [kType]() { + return 'ReadableStream'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -627,7 +630,10 @@ function TransferredReadableStream() { TransferredReadableStream.prototype[kDeserialize] = () => {}; class ReadableStreamBYOBRequest { - [kType] = 'ReadableStreamBYOBRequest'; + + get [kType]() { + return 'ReadableStreamBYOBRequest'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -767,7 +773,10 @@ class ReadIntoRequest { } class ReadableStreamDefaultReader { - [kType] = 'ReadableStreamDefaultReader'; + + get [kType]() { + return 'ReadableStreamDefaultReader'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -857,7 +866,11 @@ ObjectDefineProperties(ReadableStreamDefaultReader.prototype, { }); class ReadableStreamBYOBReader { - [kType] = 'ReadableStreamBYOBReader'; + + get [kType]() { + return 'ReadableStreamBYOBReader'; + } + get [SymbolToStringTag]() { return this[kType]; } @@ -974,7 +987,10 @@ ObjectDefineProperties(ReadableStreamBYOBReader.prototype, { }); class ReadableStreamDefaultController { - [kType] = 'ReadableStreamDefaultController'; + + get [kType]() { + return 'ReadableStreamDefaultController'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -1046,7 +1062,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 b7366fb1ba2576..1f8e2afd2a1226 100644 --- a/lib/internal/webstreams/transformstream.js +++ b/lib/internal/webstreams/transformstream.js @@ -100,7 +100,10 @@ const assert = require('internal/assert'); */ class TransformStream { - [kType] = 'TransformStream'; + + get [kType]() { + return 'TransformStream'; + } get [SymbolToStringTag]() { return this[kType]; } @@ -259,7 +262,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 1e1b64faceab57..6b758d04ea4ca2 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..33896d9f21275e --- /dev/null +++ b/test/parallel/test-webstream-string-tag.js @@ -0,0 +1,22 @@ +'use strict'; + +require('../common'); + +const assert = require('assert'); + +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');