diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2022-01-27 13:36:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-27 13:36:36 +0100 |
commit | 884143218fad0e18f7553aaf079d52de703f7601 (patch) | |
tree | 9b9e9d30ea647041438ef8fa974b8d4234cabf73 /ext/web/06_streams.js | |
parent | dcf8f144ab0516936bfa4e93357d71f1732d880e (diff) |
refactor: update runtime code for primordial checks for "instanceof" (#13497)
Diffstat (limited to 'ext/web/06_streams.js')
-rw-r--r-- | ext/web/06_streams.js | 235 |
1 files changed, 151 insertions, 84 deletions
diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js index d32a72c6e..777ad152b 100644 --- a/ext/web/06_streams.js +++ b/ext/web/06_streams.js @@ -9,21 +9,22 @@ ((window) => { const webidl = window.__bootstrap.webidl; - const { add, remove, signalAbort, newSignal } = + const { add, remove, signalAbort, newSignal, AbortSignalPrototype } = window.__bootstrap.abortSignal; const { ArrayBuffer, + ArrayBufferPrototype, ArrayBufferIsView, ArrayPrototypeMap, ArrayPrototypePush, ArrayPrototypeShift, - BigInt64Array, - BigUint64Array, + BigInt64ArrayPrototype, + BigUint64ArrayPrototype, DataView, Error, - Int8Array, - Int16Array, - Int32Array, + Int8ArrayPrototype, + Int16ArrayPrototype, + Int32ArrayPrototype, NumberIsInteger, NumberIsNaN, MathMin, @@ -31,6 +32,7 @@ ObjectDefineProperties, ObjectDefineProperty, ObjectGetPrototypeOf, + ObjectPrototypeIsPrototypeOf, ObjectSetPrototypeOf, Promise, PromiseAll, @@ -46,9 +48,10 @@ SymbolFor, TypeError, Uint8Array, - Uint16Array, - Uint32Array, - Uint8ClampedArray, + Uint8ArrayPrototype, + Uint16ArrayPrototype, + Uint32ArrayPrototype, + Uint8ClampedArrayPrototype, WeakMap, WeakMapPrototypeGet, WeakMapPrototypeHas, @@ -134,7 +137,7 @@ /** @param {any} e */ function rethrowAssertionErrorRejection(e) { - if (e && e instanceof AssertionError) { + if (e && ObjectPrototypeIsPrototypeOf(AssertionError.prototype, e)) { queueMicrotask(() => { console.error(`Internal Error: ${e.stack}`); }); @@ -214,7 +217,10 @@ */ function canTransferArrayBuffer(O) { assert(typeof O === "object"); - assert(O instanceof ArrayBuffer || O instanceof SharedArrayBuffer); + assert( + ObjectPrototypeIsPrototypeOf(ArrayBufferPrototype, O) || + ObjectPrototypeIsPrototypeOf(SharedArrayBuffer.prototype, O), + ); if (isDetachedBuffer(O)) { return false; } @@ -1364,15 +1370,15 @@ let ctor = DataView; if ( - view instanceof Int8Array || - view instanceof Uint8Array || - view instanceof Uint8ClampedArray || - view instanceof Int16Array || - view instanceof Uint16Array || - view instanceof Int32Array || - view instanceof Uint32Array || - view instanceof BigInt64Array || - view instanceof BigUint64Array + ObjectPrototypeIsPrototypeOf(Int8ArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(Uint8ArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(Uint8ClampedArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(Int16ArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(Uint16ArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(Int32ArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(Uint32ArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(BigInt64ArrayPrototype, view) || + ObjectPrototypeIsPrototypeOf(BigUint64ArrayPrototype, view) ) { elementSize = view.constructor.BYTES_PER_ELEMENT; ctor = view.constructor; @@ -1983,7 +1989,10 @@ typeof preventClose === "boolean" && typeof preventAbort === "boolean" && typeof preventCancel === "boolean", ); - assert(signal === undefined || signal instanceof AbortSignal); + assert( + signal === undefined || + ObjectPrototypeIsPrototypeOf(AbortSignalPrototype, signal), + ); assert(!isReadableStreamLocked(source)); assert(!isWritableStreamLocked(dest)); // We use acquireReadableStreamDefaultReader even in case of ReadableByteStreamController @@ -2327,7 +2336,12 @@ function readableStreamTee(stream, cloneForBranch2) { assert(isReadableStream(stream)); assert(typeof cloneForBranch2 === "boolean"); - if (stream[_controller] instanceof ReadableByteStreamController) { + if ( + ObjectPrototypeIsPrototypeOf( + ReadableByteStreamControllerPrototype, + stream[_controller], + ) + ) { return readableByteStreamTee(stream); } else { return readableStreamDefaultTee(stream, cloneForBranch2); @@ -2491,7 +2505,12 @@ */ function readableByteStreamTee(stream) { assert(isReadableStream(stream)); - assert(stream[_controller] instanceof ReadableByteStreamController); + assert( + ObjectPrototypeIsPrototypeOf( + ReadableByteStreamControllerPrototype, + stream[_controller], + ), + ); let reader = acquireReadableStreamDefaultReader(stream); let reading = false; let readAgainForBranch1 = false; @@ -2999,7 +3018,12 @@ if (isReadableStreamLocked(stream)) { throw new TypeError("ReadableStream is locked."); } - if (!(stream[_controller] instanceof ReadableByteStreamController)) { + if ( + !(ObjectPrototypeIsPrototypeOf( + ReadableByteStreamControllerPrototype, + stream[_controller], + )) + ) { throw new TypeError("Cannot use a BYOB reader with a non-byte stream"); } readableStreamReaderGenericInitialize(reader, stream); @@ -3032,7 +3056,7 @@ transformAlgorithm, flushAlgorithm, ) { - assert(stream instanceof TransformStream); + assert(ObjectPrototypeIsPrototypeOf(TransformStreamPrototype, stream)); assert(stream[_controller] === undefined); controller[_stream] = stream; stream[_controller] = controller; @@ -4174,13 +4198,13 @@ /** @returns {number} */ get highWaterMark() { - webidl.assertBranded(this, ByteLengthQueuingStrategy); + webidl.assertBranded(this, ByteLengthQueuingStrategyPrototype); return this[_highWaterMark]; } /** @returns {(chunk: ArrayBufferView) => number} */ get size() { - webidl.assertBranded(this, ByteLengthQueuingStrategy); + webidl.assertBranded(this, ByteLengthQueuingStrategyPrototype); initializeByteLengthSizeFunction(this[_globalObject]); return WeakMapPrototypeGet(byteSizeFunctionWeakMap, this[_globalObject]); } @@ -4188,7 +4212,10 @@ [SymbolFor("Deno.customInspect")](inspect) { return inspect(consoleInternal.createFilteredInspectProxy({ object: this, - evaluate: this instanceof ByteLengthQueuingStrategy, + evaluate: ObjectPrototypeIsPrototypeOf( + ByteLengthQueuingStrategyPrototype, + this, + ), keys: [ "highWaterMark", "size", @@ -4198,6 +4225,8 @@ } webidl.configurePrototype(ByteLengthQueuingStrategy); + const ByteLengthQueuingStrategyPrototype = + ByteLengthQueuingStrategy.prototype; /** @type {WeakMap<typeof globalThis, (chunk: ArrayBufferView) => number>} */ const byteSizeFunctionWeakMap = new WeakMap(); @@ -4226,13 +4255,13 @@ /** @returns {number} */ get highWaterMark() { - webidl.assertBranded(this, CountQueuingStrategy); + webidl.assertBranded(this, CountQueuingStrategyPrototype); return this[_highWaterMark]; } /** @returns {(chunk: any) => 1} */ get size() { - webidl.assertBranded(this, CountQueuingStrategy); + webidl.assertBranded(this, CountQueuingStrategyPrototype); initializeCountSizeFunction(this[_globalObject]); return WeakMapPrototypeGet(countSizeFunctionWeakMap, this[_globalObject]); } @@ -4240,7 +4269,10 @@ [SymbolFor("Deno.customInspect")](inspect) { return inspect(consoleInternal.createFilteredInspectProxy({ object: this, - evaluate: this instanceof CountQueuingStrategy, + evaluate: ObjectPrototypeIsPrototypeOf( + CountQueuingStrategyPrototype, + this, + ), keys: [ "highWaterMark", "size", @@ -4250,6 +4282,7 @@ } webidl.configurePrototype(CountQueuingStrategy); + const CountQueuingStrategyPrototype = CountQueuingStrategy.prototype; /** @type {WeakMap<typeof globalThis, () => 1>} */ const countSizeFunctionWeakMap = new WeakMap(); @@ -4333,7 +4366,7 @@ /** @returns {boolean} */ get locked() { - webidl.assertBranded(this, ReadableStream); + webidl.assertBranded(this, ReadableStreamPrototype); return isReadableStreamLocked(this); } @@ -4343,7 +4376,7 @@ */ cancel(reason = undefined) { try { - webidl.assertBranded(this, ReadableStream); + webidl.assertBranded(this, ReadableStreamPrototype); if (reason !== undefined) { reason = webidl.converters.any(reason); } @@ -4363,7 +4396,7 @@ * @returns {ReadableStreamDefaultReader<R> | ReadableStreamBYOBReader} */ getReader(options = {}) { - webidl.assertBranded(this, ReadableStream); + webidl.assertBranded(this, ReadableStreamPrototype); const prefix = "Failed to execute 'getReader' on 'ReadableStream'"; options = webidl.converters.ReadableStreamGetReaderOptions(options, { prefix, @@ -4384,7 +4417,7 @@ * @returns {ReadableStream<T>} */ pipeThrough(transform, options = {}) { - webidl.assertBranded(this, ReadableStream); + webidl.assertBranded(this, ReadableStreamPrototype); const prefix = "Failed to execute 'pipeThrough' on 'ReadableStream'"; webidl.requiredArguments(arguments.length, 1, { prefix }); transform = webidl.converters.ReadableWritablePair(transform, { @@ -4422,7 +4455,7 @@ */ pipeTo(destination, options = {}) { try { - webidl.assertBranded(this, ReadableStream); + webidl.assertBranded(this, ReadableStreamPrototype); const prefix = "Failed to execute 'pipeTo' on 'ReadableStream'"; webidl.requiredArguments(arguments.length, 1, { prefix }); destination = webidl.converters.WritableStream(destination, { @@ -4459,7 +4492,7 @@ /** @returns {[ReadableStream<R>, ReadableStream<R>]} */ tee() { - webidl.assertBranded(this, ReadableStream); + webidl.assertBranded(this, ReadableStreamPrototype); return readableStreamTee(this, false); } @@ -4469,7 +4502,7 @@ * @returns {AsyncIterableIterator<R>} */ values(options = {}) { - webidl.assertBranded(this, ReadableStream); + webidl.assertBranded(this, ReadableStreamPrototype); const prefix = "Failed to execute 'values' on 'ReadableStream'"; options = webidl.converters.ReadableStreamIteratorOptions(options, { prefix, @@ -4498,6 +4531,7 @@ }); webidl.configurePrototype(ReadableStream); + const ReadableStreamPrototype = ReadableStream.prototype; function errorReadableStream(stream, e) { readableStreamDefaultControllerError(stream[_controller], e); @@ -4527,7 +4561,7 @@ /** @returns {Promise<ReadableStreamReadResult<R>>} */ read() { try { - webidl.assertBranded(this, ReadableStreamDefaultReader); + webidl.assertBranded(this, ReadableStreamDefaultReaderPrototype); } catch (err) { return PromiseReject(err); } @@ -4556,7 +4590,7 @@ /** @returns {void} */ releaseLock() { - webidl.assertBranded(this, ReadableStreamDefaultReader); + webidl.assertBranded(this, ReadableStreamDefaultReaderPrototype); if (this[_stream] === undefined) { return; } @@ -4565,7 +4599,7 @@ get closed() { try { - webidl.assertBranded(this, ReadableStreamDefaultReader); + webidl.assertBranded(this, ReadableStreamDefaultReaderPrototype); } catch (err) { return PromiseReject(err); } @@ -4578,7 +4612,7 @@ */ cancel(reason = undefined) { try { - webidl.assertBranded(this, ReadableStreamDefaultReader); + webidl.assertBranded(this, ReadableStreamDefaultReaderPrototype); if (reason !== undefined) { reason = webidl.converters.any(reason); } @@ -4600,6 +4634,8 @@ } webidl.configurePrototype(ReadableStreamDefaultReader); + const ReadableStreamDefaultReaderPrototype = + ReadableStreamDefaultReader.prototype; /** @template R */ class ReadableStreamBYOBReader { @@ -4628,7 +4664,7 @@ */ read(view) { try { - webidl.assertBranded(this, ReadableStreamBYOBReader); + webidl.assertBranded(this, ReadableStreamBYOBReaderPrototype); const prefix = "Failed to execute 'read' on 'ReadableStreamBYOBReader'"; view = webidl.converters.ArrayBufferView(view, { prefix, @@ -4678,7 +4714,7 @@ /** @returns {void} */ releaseLock() { - webidl.assertBranded(this, ReadableStreamBYOBReader); + webidl.assertBranded(this, ReadableStreamBYOBReaderPrototype); if (this[_stream] === undefined) { return; } @@ -4687,7 +4723,7 @@ get closed() { try { - webidl.assertBranded(this, ReadableStreamBYOBReader); + webidl.assertBranded(this, ReadableStreamBYOBReaderPrototype); } catch (err) { return PromiseReject(err); } @@ -4700,7 +4736,7 @@ */ cancel(reason = undefined) { try { - webidl.assertBranded(this, ReadableStreamBYOBReader); + webidl.assertBranded(this, ReadableStreamBYOBReaderPrototype); if (reason !== undefined) { reason = webidl.converters.any(reason); } @@ -4722,6 +4758,7 @@ } webidl.configurePrototype(ReadableStreamBYOBReader); + const ReadableStreamBYOBReaderPrototype = ReadableStreamBYOBReader.prototype; class ReadableStreamBYOBRequest { /** @type {ReadableByteStreamController} */ @@ -4731,7 +4768,7 @@ /** @returns {ArrayBufferView | null} */ get view() { - webidl.assertBranded(this, ReadableStreamBYOBRequest); + webidl.assertBranded(this, ReadableStreamBYOBRequestPrototype); return this[_view]; } @@ -4740,7 +4777,7 @@ } respond(bytesWritten) { - webidl.assertBranded(this, ReadableStreamBYOBRequest); + webidl.assertBranded(this, ReadableStreamBYOBRequestPrototype); const prefix = "Failed to execute 'respond' on 'ReadableStreamBYOBRequest'"; webidl.requiredArguments(arguments.length, 1, { prefix }); @@ -4764,7 +4801,7 @@ } respondWithNewView(view) { - webidl.assertBranded(this, ReadableStreamBYOBRequest); + webidl.assertBranded(this, ReadableStreamBYOBRequestPrototype); const prefix = "Failed to execute 'respondWithNewView' on 'ReadableStreamBYOBRequest'"; webidl.requiredArguments(arguments.length, 1, { prefix }); @@ -4786,6 +4823,8 @@ } webidl.configurePrototype(ReadableStreamBYOBRequest); + const ReadableStreamBYOBRequestPrototype = + ReadableStreamBYOBRequest.prototype; class ReadableByteStreamController { /** @type {number | undefined} */ @@ -4821,19 +4860,19 @@ /** @returns {ReadableStreamBYOBRequest | null} */ get byobRequest() { - webidl.assertBranded(this, ReadableByteStreamController); + webidl.assertBranded(this, ReadableByteStreamControllerPrototype); return readableByteStreamControllerGetBYOBRequest(this); } /** @returns {number | null} */ get desiredSize() { - webidl.assertBranded(this, ReadableByteStreamController); + webidl.assertBranded(this, ReadableByteStreamControllerPrototype); return readableByteStreamControllerGetDesiredSize(this); } /** @returns {void} */ close() { - webidl.assertBranded(this, ReadableByteStreamController); + webidl.assertBranded(this, ReadableByteStreamControllerPrototype); if (this[_closeRequested] === true) { throw new TypeError("Closed already requested."); } @@ -4850,7 +4889,7 @@ * @returns {void} */ enqueue(chunk) { - webidl.assertBranded(this, ReadableByteStreamController); + webidl.assertBranded(this, ReadableByteStreamControllerPrototype); const prefix = "Failed to execute 'enqueue' on 'ReadableByteStreamController'"; webidl.requiredArguments(arguments.length, 1, { prefix }); @@ -4890,7 +4929,7 @@ * @returns {void} */ error(e = undefined) { - webidl.assertBranded(this, ReadableByteStreamController); + webidl.assertBranded(this, ReadableByteStreamControllerPrototype); if (e !== undefined) { e = webidl.converters.any(e); } @@ -4900,7 +4939,10 @@ [SymbolFor("Deno.customInspect")](inspect) { return inspect(consoleInternal.createFilteredInspectProxy({ object: this, - evaluate: this instanceof ReadableByteStreamController, + evaluate: ObjectPrototypeIsPrototypeOf( + ReadableByteStreamControllerPrototype, + this, + ), keys: ["desiredSize"], })); } @@ -4967,6 +5009,8 @@ } webidl.configurePrototype(ReadableByteStreamController); + const ReadableByteStreamControllerPrototype = + ReadableByteStreamController.prototype; /** @template R */ class ReadableStreamDefaultController { @@ -4999,13 +5043,13 @@ /** @returns {number | null} */ get desiredSize() { - webidl.assertBranded(this, ReadableStreamDefaultController); + webidl.assertBranded(this, ReadableStreamDefaultControllerPrototype); return readableStreamDefaultControllerGetDesiredSize(this); } /** @returns {void} */ close() { - webidl.assertBranded(this, ReadableStreamDefaultController); + webidl.assertBranded(this, ReadableStreamDefaultControllerPrototype); if (readableStreamDefaultControllerCanCloseOrEnqueue(this) === false) { throw new TypeError("The stream controller cannot close or enqueue."); } @@ -5017,7 +5061,7 @@ * @returns {void} */ enqueue(chunk = undefined) { - webidl.assertBranded(this, ReadableStreamDefaultController); + webidl.assertBranded(this, ReadableStreamDefaultControllerPrototype); if (chunk !== undefined) { chunk = webidl.converters.any(chunk); } @@ -5032,7 +5076,7 @@ * @returns {void} */ error(e = undefined) { - webidl.assertBranded(this, ReadableStreamDefaultController); + webidl.assertBranded(this, ReadableStreamDefaultControllerPrototype); if (e !== undefined) { e = webidl.converters.any(e); } @@ -5042,7 +5086,10 @@ [SymbolFor("Deno.customInspect")](inspect) { return inspect(consoleInternal.createFilteredInspectProxy({ object: this, - evaluate: this instanceof ReadableStreamDefaultController, + evaluate: ObjectPrototypeIsPrototypeOf( + ReadableStreamDefaultController.prototype, + this, + ), keys: ["desiredSize"], })); } @@ -5085,6 +5132,8 @@ } webidl.configurePrototype(ReadableStreamDefaultController); + const ReadableStreamDefaultControllerPrototype = + ReadableStreamDefaultController.prototype; /** * @template I @@ -5186,13 +5235,13 @@ /** @returns {ReadableStream<O>} */ get readable() { - webidl.assertBranded(this, TransformStream); + webidl.assertBranded(this, TransformStreamPrototype); return this[_readable]; } /** @returns {WritableStream<I>} */ get writable() { - webidl.assertBranded(this, TransformStream); + webidl.assertBranded(this, TransformStreamPrototype); return this[_writable]; } @@ -5204,6 +5253,7 @@ } webidl.configurePrototype(TransformStream); + const TransformStreamPrototype = TransformStream.prototype; /** @template O */ class TransformStreamDefaultController { @@ -5220,7 +5270,7 @@ /** @returns {number | null} */ get desiredSize() { - webidl.assertBranded(this, TransformStreamDefaultController); + webidl.assertBranded(this, TransformStreamDefaultController.prototype); const readableController = this[_stream][_readable][_controller]; return readableStreamDefaultControllerGetDesiredSize( /** @type {ReadableStreamDefaultController<O>} */ readableController, @@ -5232,7 +5282,7 @@ * @returns {void} */ enqueue(chunk = undefined) { - webidl.assertBranded(this, TransformStreamDefaultController); + webidl.assertBranded(this, TransformStreamDefaultController.prototype); if (chunk !== undefined) { chunk = webidl.converters.any(chunk); } @@ -5244,7 +5294,7 @@ * @returns {void} */ error(reason = undefined) { - webidl.assertBranded(this, TransformStreamDefaultController); + webidl.assertBranded(this, TransformStreamDefaultController.prototype); if (reason !== undefined) { reason = webidl.converters.any(reason); } @@ -5253,20 +5303,25 @@ /** @returns {void} */ terminate() { - webidl.assertBranded(this, TransformStreamDefaultController); + webidl.assertBranded(this, TransformStreamDefaultControllerPrototype); transformStreamDefaultControllerTerminate(this); } [SymbolFor("Deno.customInspect")](inspect) { return inspect(consoleInternal.createFilteredInspectProxy({ object: this, - evaluate: this instanceof TransformStreamDefaultController, + evaluate: ObjectPrototypeIsPrototypeOf( + TransformStreamDefaultController.prototype, + this, + ), keys: ["desiredSize"], })); } } webidl.configurePrototype(TransformStreamDefaultController); + const TransformStreamDefaultControllerPrototype = + TransformStreamDefaultController.prototype; /** @template W */ class WritableStream { @@ -5336,7 +5391,7 @@ /** @returns {boolean} */ get locked() { - webidl.assertBranded(this, WritableStream); + webidl.assertBranded(this, WritableStreamPrototype); return isWritableStreamLocked(this); } @@ -5346,7 +5401,7 @@ */ abort(reason = undefined) { try { - webidl.assertBranded(this, WritableStream); + webidl.assertBranded(this, WritableStreamPrototype); } catch (err) { return PromiseReject(err); } @@ -5366,7 +5421,7 @@ /** @returns {Promise<void>} */ close() { try { - webidl.assertBranded(this, WritableStream); + webidl.assertBranded(this, WritableStreamPrototype); } catch (err) { return PromiseReject(err); } @@ -5387,7 +5442,7 @@ /** @returns {WritableStreamDefaultWriter<W>} */ getWriter() { - webidl.assertBranded(this, WritableStream); + webidl.assertBranded(this, WritableStreamPrototype); return acquireWritableStreamDefaultWriter(this); } @@ -5397,6 +5452,7 @@ } webidl.configurePrototype(WritableStream); + const WritableStreamPrototype = WritableStream.prototype; /** @template W */ class WritableStreamDefaultWriter { @@ -5426,7 +5482,7 @@ /** @returns {Promise<void>} */ get closed() { try { - webidl.assertBranded(this, WritableStreamDefaultWriter); + webidl.assertBranded(this, WritableStreamDefaultWriterPrototype); } catch (err) { return PromiseReject(err); } @@ -5435,7 +5491,7 @@ /** @returns {number} */ get desiredSize() { - webidl.assertBranded(this, WritableStreamDefaultWriter); + webidl.assertBranded(this, WritableStreamDefaultWriterPrototype); if (this[_stream] === undefined) { throw new TypeError( "A writable stream is not associated with the writer.", @@ -5447,7 +5503,7 @@ /** @returns {Promise<void>} */ get ready() { try { - webidl.assertBranded(this, WritableStreamDefaultWriter); + webidl.assertBranded(this, WritableStreamDefaultWriterPrototype); } catch (err) { return PromiseReject(err); } @@ -5460,7 +5516,7 @@ */ abort(reason = undefined) { try { - webidl.assertBranded(this, WritableStreamDefaultWriter); + webidl.assertBranded(this, WritableStreamDefaultWriterPrototype); } catch (err) { return PromiseReject(err); } @@ -5478,7 +5534,7 @@ /** @returns {Promise<void>} */ close() { try { - webidl.assertBranded(this, WritableStreamDefaultWriter); + webidl.assertBranded(this, WritableStreamDefaultWriterPrototype); } catch (err) { return PromiseReject(err); } @@ -5498,7 +5554,7 @@ /** @returns {void} */ releaseLock() { - webidl.assertBranded(this, WritableStreamDefaultWriter); + webidl.assertBranded(this, WritableStreamDefaultWriterPrototype); const stream = this[_stream]; if (stream === undefined) { return; @@ -5513,7 +5569,7 @@ */ write(chunk = undefined) { try { - webidl.assertBranded(this, WritableStreamDefaultWriter); + webidl.assertBranded(this, WritableStreamDefaultWriterPrototype); if (chunk !== undefined) { chunk = webidl.converters.any(chunk); } @@ -5531,7 +5587,10 @@ [SymbolFor("Deno.customInspect")](inspect) { return inspect(consoleInternal.createFilteredInspectProxy({ object: this, - evaluate: this instanceof WritableStreamDefaultWriter, + evaluate: ObjectPrototypeIsPrototypeOf( + WritableStreamDefaultWriter.prototype, + this, + ), keys: [ "closed", "desiredSize", @@ -5542,6 +5601,8 @@ } webidl.configurePrototype(WritableStreamDefaultWriter); + const WritableStreamDefaultWriterPrototype = + WritableStreamDefaultWriter.prototype; /** @template W */ class WritableStreamDefaultController { @@ -5567,7 +5628,7 @@ [_signal]; get signal() { - webidl.assertBranded(this, WritableStreamDefaultController); + webidl.assertBranded(this, WritableStreamDefaultControllerPrototype); return this[_signal]; } @@ -5580,7 +5641,7 @@ * @returns {void} */ error(e = undefined) { - webidl.assertBranded(this, WritableStreamDefaultController); + webidl.assertBranded(this, WritableStreamDefaultControllerPrototype); if (e !== undefined) { e = webidl.converters.any(e); } @@ -5594,7 +5655,10 @@ [SymbolFor("Deno.customInspect")](inspect) { return inspect(consoleInternal.createFilteredInspectProxy({ object: this, - evaluate: this instanceof WritableStreamDefaultController, + evaluate: ObjectPrototypeIsPrototypeOf( + WritableStreamDefaultController.prototype, + this, + ), keys: [], })); } @@ -5615,6 +5679,8 @@ } webidl.configurePrototype(WritableStreamDefaultController); + const WritableStreamDefaultControllerPrototype = + WritableStreamDefaultController.prototype; /** * @param {ReadableStream} stream @@ -5624,9 +5690,9 @@ } webidl.converters.ReadableStream = webidl - .createInterfaceConverter("ReadableStream", ReadableStream); + .createInterfaceConverter("ReadableStream", ReadableStream.prototype); webidl.converters.WritableStream = webidl - .createInterfaceConverter("WritableStream", WritableStream); + .createInterfaceConverter("WritableStream", WritableStream.prototype); webidl.converters.ReadableStreamType = webidl.createEnumConverter( "ReadableStreamType", @@ -5787,6 +5853,7 @@ ByteLengthQueuingStrategy, CountQueuingStrategy, ReadableStream, + ReadableStreamPrototype, ReadableStreamDefaultReader, TransformStream, WritableStream, |