diff --git a/ext/broadcast_channel/01_broadcast_channel.js b/ext/broadcast_channel/01_broadcast_channel.js index 1a4bb36474..23908096cf 100644 --- a/ext/broadcast_channel/01_broadcast_channel.js +++ b/ext/broadcast_channel/01_broadcast_channel.js @@ -13,14 +13,13 @@ const { ArrayPrototypeIndexOf, ArrayPrototypePush, ArrayPrototypeSplice, - ObjectPrototypeIsPrototypeOf, Symbol, SymbolFor, Uint8Array, } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { defineEventHandler, EventTarget, @@ -143,18 +142,7 @@ class BroadcastChannel extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(BroadcastChannelPrototype, this), - keys: [ - "name", - "onmessage", - "onmessageerror", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["canvas"], inspect, inspectOptions); } } diff --git a/ext/canvas/01_image.js b/ext/canvas/01_image.js index 6fb1ee62fc..19a8935cf6 100644 --- a/ext/canvas/01_image.js +++ b/ext/canvas/01_image.js @@ -4,7 +4,7 @@ import { internals, primordials } from "ext:core/mod.js"; import { op_image_decode_png, op_image_process } from "ext:core/ops"; import * as webidl from "ext:deno_webidl/00_webidl.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { BlobPrototype } from "ext:deno_web/09_file.js"; import { sniffImage } from "ext:deno_web/01_mimesniff.js"; const { @@ -140,17 +140,7 @@ class ImageBitmap { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(ImageBitmapPrototype, this), - keys: [ - "width", - "height", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["width", "height"], inspect, inspectOptions); } } const ImageBitmapPrototype = ImageBitmap.prototype; diff --git a/ext/console/01_console.js b/ext/console/01_console.js index 3823cc4901..381bb02bdd 100644 --- a/ext/console/01_console.js +++ b/ext/console/01_console.js @@ -102,10 +102,7 @@ const { ObjectPrototypePropertyIsEnumerable, ObjectSetPrototypeOf, ObjectValues, - Proxy, ReflectGet, - ReflectGetOwnPropertyDescriptor, - ReflectGetPrototypeOf, ReflectHas, ReflectOwnKeys, RegExpPrototypeExec, @@ -471,7 +468,7 @@ function formatValue( // inspect implementations in `extensions` need it, but may not have access // to the `Deno` namespace in web workers. Remove when the `Deno` // namespace is always enabled. - return String(value[privateCustomInspect](inspect, ctx)); + return String(value[privateCustomInspect].call(value, inspect, ctx)); } else if (ReflectHas(value, nodeCustomInspectSymbol)) { const maybeCustom = value[nodeCustomInspectSymbol]; if ( @@ -3449,67 +3446,24 @@ function inspect( return formatValue(ctx, value, 0); } -class FilteredProxy extends Proxy { - privateCustomInspectProxy; -} - -/** Creates a proxy that represents a subset of the properties - * of the original object optionally without evaluating the properties - * in order to get the values. */ -function createFilteredInspectProxy({ object, keys, evaluate }) { - const obj = class {}; - if (object.constructor?.name) { - ObjectDefineProperty(obj, "name", { value: object.constructor.name }); +/** + * Print a serialized version of the passed object with only the + * keys specified. This is used in `Deno.privateCustomInspect()` + * @template T + * @param {T} obj + * @param {keyof T} keys + * @param {typeof inspect} inspect + * @param {*} inspectOptions + * @returns {string} + */ +function privateInspect(obj, keys, inspect, inspectOptions) { + const value = {}; + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + value[key] = ReflectGet(obj, key); } - return new Proxy(new obj(), { - get(_target, key) { - if (key === SymbolToStringTag) { - return object.constructor?.name; - } else if (key === privateCustomInspectProxy) { - return true; - } else if (ArrayPrototypeIncludes(keys, key)) { - return ReflectGet(object, key); - } else { - return undefined; - } - }, - getOwnPropertyDescriptor(_target, key) { - if (!ArrayPrototypeIncludes(keys, key)) { - return undefined; - } else if (evaluate) { - return getEvaluatedDescriptor(object, key); - } else { - return getDescendantPropertyDescriptor(object, key) ?? - getEvaluatedDescriptor(object, key); - } - }, - has(_target, key) { - return ArrayPrototypeIncludes(keys, key); - }, - ownKeys() { - return keys; - }, - }); - - function getDescendantPropertyDescriptor(object, key) { - let propertyDescriptor = ReflectGetOwnPropertyDescriptor(object, key); - if (!propertyDescriptor) { - const prototype = ReflectGetPrototypeOf(object); - if (prototype) { - propertyDescriptor = getDescendantPropertyDescriptor(prototype, key); - } - } - return propertyDescriptor; - } - - function getEvaluatedDescriptor(object, key) { - return { - configurable: true, - enumerable: true, - value: object[key], - }; - } + return `${obj.constructor.name} ${inspect(value, inspectOptions)}`; } // Expose these fields to internalObject for tests. @@ -3522,7 +3476,6 @@ internals.parseCssColor = parseCssColor; export { colors, Console, - createFilteredInspectProxy, createStylizeWithColor, CSI, customInspect, @@ -3534,6 +3487,7 @@ export { getStdoutNoColor, inspect, inspectArgs, + privateInspect, quoteString, setNoColorFns, styles, diff --git a/ext/crypto/00_crypto.js b/ext/crypto/00_crypto.js index 80a2e11c7c..25b5ec0021 100644 --- a/ext/crypto/00_crypto.js +++ b/ext/crypto/00_crypto.js @@ -81,8 +81,8 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; const supportedNamedCurves = ["P-256", "P-384", "P-521"]; const recognisedUsages = [ @@ -380,17 +380,10 @@ class CryptoKey { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(CryptoKeyPrototype, this), - keys: [ - "type", - "extractable", - "algorithm", - "usages", - ], - }), + return privateInspect( + this, + ["type", "extractable", "algorithm", "usages"], + inspect, inspectOptions, ); } @@ -4757,14 +4750,7 @@ class Crypto { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(CryptoPrototype, this), - keys: ["subtle"], - }), - inspectOptions, - ); + return privateInspect(this, ["subtle"], inspect, inspectOptions); } } diff --git a/ext/fetch/23_request.js b/ext/fetch/23_request.js index adebe13b30..3aa412bead 100644 --- a/ext/fetch/23_request.js +++ b/ext/fetch/23_request.js @@ -25,7 +25,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { byteUpperCase, HTTP_TOKEN_CODE_POINT_RE, @@ -511,18 +511,10 @@ class Request { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(RequestPrototype, this), - keys: [ - "bodyUsed", - "headers", - "method", - "redirect", - "url", - ], - }), + return privateInspect( + this, + ["bodyUsed", "headers", "method", "redirect", "url"], + inspect, inspectOptions, ); } diff --git a/ext/fetch/23_response.js b/ext/fetch/23_response.js index 94fc69a986..8e92ff9a7f 100644 --- a/ext/fetch/23_response.js +++ b/ext/fetch/23_response.js @@ -12,7 +12,7 @@ import { core, primordials } from "ext:core/mod.js"; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { byteLowerCase, HTTP_TAB_OR_SPACE, @@ -34,7 +34,6 @@ const { ArrayPrototypeMap, ArrayPrototypePush, ObjectDefineProperties, - ObjectPrototypeIsPrototypeOf, RangeError, RegExpPrototypeExec, SafeArrayIterator, @@ -408,21 +407,19 @@ class Response { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(ResponsePrototype, this), - keys: [ - "body", - "bodyUsed", - "headers", - "ok", - "redirected", - "status", - "statusText", - "url", - ], - }), + return privateInspect( + this, + [ + "body", + "bodyUsed", + "headers", + "ok", + "redirected", + "status", + "statusText", + "url", + ], + inspect, inspectOptions, ); } diff --git a/ext/fetch/27_eventsource.js b/ext/fetch/27_eventsource.js index 685eb47c2d..ae09eaf09a 100644 --- a/ext/fetch/27_eventsource.js +++ b/ext/fetch/27_eventsource.js @@ -10,7 +10,6 @@ const { NumberIsFinite, NumberIsNaN, ObjectDefineProperties, - ObjectPrototypeIsPrototypeOf, StringPrototypeEndsWith, StringPrototypeIncludes, StringPrototypeIndexOf, @@ -21,7 +20,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { URL } from "ext:deno_url/00_url.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js"; import { @@ -333,19 +332,17 @@ class EventSource extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(EventSourcePrototype, this), - keys: [ - "readyState", - "url", - "withCredentials", - "onopen", - "onmessage", - "onerror", - ], - }), + return privateInspect( + this, + [ + "readyState", + "url", + "withCredentials", + "onopen", + "onmessage", + "onerror", + ], + inspect, inspectOptions, ); } diff --git a/ext/url/00_url.js b/ext/url/00_url.js index 577caba902..bac15d3f45 100644 --- a/ext/url/00_url.js +++ b/ext/url/00_url.js @@ -22,7 +22,6 @@ const { ArrayPrototypeSort, ArrayPrototypeSplice, ObjectKeys, - ObjectPrototypeIsPrototypeOf, SafeArrayIterator, StringPrototypeSlice, StringPrototypeStartsWith, @@ -34,7 +33,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; const _list = Symbol("list"); const _urlObject = Symbol("url object"); @@ -459,24 +458,22 @@ class URL { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(URLPrototype, this), - keys: [ - "href", - "origin", - "protocol", - "username", - "password", - "host", - "hostname", - "port", - "pathname", - "hash", - "search", - ], - }), + return privateInspect( + this, + [ + "href", + "origin", + "protocol", + "username", + "password", + "host", + "hostname", + "port", + "pathname", + "hash", + "search", + ], + inspect, inspectOptions, ); } diff --git a/ext/url/01_urlpattern.js b/ext/url/01_urlpattern.js index 0bba59cf0e..a09c979eca 100644 --- a/ext/url/01_urlpattern.js +++ b/ext/url/01_urlpattern.js @@ -17,7 +17,6 @@ const { MathRandom, ObjectAssign, ObjectCreate, - ObjectPrototypeIsPrototypeOf, RegExpPrototypeExec, RegExpPrototypeTest, SafeMap, @@ -28,7 +27,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; const _components = Symbol("components"); @@ -368,22 +367,20 @@ class URLPattern { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(URLPatternPrototype, this), - keys: [ - "protocol", - "username", - "password", - "hostname", - "port", - "pathname", - "search", - "hash", - "hasRegExpGroups", - ], - }), + return privateInspect( + this, + [ + "protocol", + "username", + "password", + "hostname", + "port", + "pathname", + "search", + "hash", + "hasRegExpGroups", + ], + inspect, inspectOptions, ); } diff --git a/ext/web/01_dom_exception.js b/ext/web/01_dom_exception.js index f49337db59..259714a044 100644 --- a/ext/web/01_dom_exception.js +++ b/ext/web/01_dom_exception.js @@ -15,14 +15,13 @@ const { ObjectCreate, ObjectEntries, ObjectHasOwn, - ObjectPrototypeIsPrototypeOf, ObjectSetPrototypeOf, Symbol, SymbolFor, } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; const _name = Symbol("name"); const _message = Symbol("message"); @@ -137,16 +136,10 @@ class DOMException { return stack; } } - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(DOMExceptionPrototype, this), - keys: [ - "message", - "name", - "code", - ], - }), + return privateInspect( + this, + ["message", "name", "code"], + inspect, inspectOptions, ); } diff --git a/ext/web/02_event.js b/ext/web/02_event.js index 985578bcc2..483b945acc 100644 --- a/ext/web/02_event.js +++ b/ext/web/02_event.js @@ -36,7 +36,7 @@ const { import * as webidl from "ext:deno_webidl/00_webidl.js"; import { DOMException } from "./01_dom_exception.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; // This should be set via setGlobalThis this is required so that if even // user deletes globalThis it is still usable @@ -158,14 +158,7 @@ class Event { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(EventPrototype, this), - keys: EVENT_PROPS, - }), - inspectOptions, - ); + return privateInspect(this, EVENT_PROPS, inspect, inspectOptions); } get type() { @@ -387,8 +380,6 @@ class Event { } } -const EventPrototype = Event.prototype; - // Not spec compliant. The spec defines it as [LegacyUnforgeable] // but doing so has a big performance hit ReflectDefineProperty(Event.prototype, "isTrusted", { @@ -1111,19 +1102,17 @@ class ErrorEvent extends Event { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(ErrorEventPrototype, this), - keys: [ - ...new SafeArrayIterator(EVENT_PROPS), - "message", - "filename", - "lineno", - "colno", - "error", - ], - }), + return privateInspect( + this, + [ + ...new SafeArrayIterator(EVENT_PROPS), + "message", + "filename", + "lineno", + "colno", + "error", + ], + inspect, inspectOptions, ); } @@ -1177,24 +1166,20 @@ class CloseEvent extends Event { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(CloseEventPrototype, this), - keys: [ - ...new SafeArrayIterator(EVENT_PROPS), - "wasClean", - "code", - "reason", - ], - }), + return privateInspect( + this, + [ + ...new SafeArrayIterator(EVENT_PROPS), + "wasClean", + "code", + "reason", + ], + inspect, inspectOptions, ); } } -const CloseEventPrototype = CloseEvent.prototype; - class MessageEvent extends Event { get source() { return null; @@ -1214,17 +1199,15 @@ class MessageEvent extends Event { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(MessageEventPrototype, this), - keys: [ - ...new SafeArrayIterator(EVENT_PROPS), - "data", - "origin", - "lastEventId", - ], - }), + return privateInspect( + this, + [ + ...new SafeArrayIterator(EVENT_PROPS), + "data", + "origin", + "lastEventId", + ], + inspect, inspectOptions, ); } @@ -1233,8 +1216,6 @@ class MessageEvent extends Event { [SymbolToStringTag] = "MessageEvent"; } -const MessageEventPrototype = MessageEvent.prototype; - class CustomEvent extends Event { #detail = null; @@ -1254,15 +1235,13 @@ class CustomEvent extends Event { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(CustomEventPrototype, this), - keys: [ - ...new SafeArrayIterator(EVENT_PROPS), - "detail", - ], - }), + return privateInspect( + this, + [ + ...new SafeArrayIterator(EVENT_PROPS), + "detail", + ], + inspect, inspectOptions, ); } @@ -1271,8 +1250,6 @@ class CustomEvent extends Event { [SymbolToStringTag] = "CustomEvent"; } -const CustomEventPrototype = CustomEvent.prototype; - ReflectDefineProperty(CustomEvent.prototype, "detail", { enumerable: true, }); @@ -1289,17 +1266,15 @@ class ProgressEvent extends Event { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(ProgressEventPrototype, this), - keys: [ - ...new SafeArrayIterator(EVENT_PROPS), - "lengthComputable", - "loaded", - "total", - ], - }), + return privateInspect( + this, + [ + ...new SafeArrayIterator(EVENT_PROPS), + "lengthComputable", + "loaded", + "total", + ], + inspect, inspectOptions, ); } @@ -1308,8 +1283,6 @@ class ProgressEvent extends Event { [SymbolToStringTag] = "ProgressEvent"; } -const ProgressEventPrototype = ProgressEvent.prototype; - class PromiseRejectionEvent extends Event { #promise = null; #reason = null; @@ -1342,19 +1315,14 @@ class PromiseRejectionEvent extends Event { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - PromiseRejectionEventPrototype, - this, - ), - keys: [ - ...new SafeArrayIterator(EVENT_PROPS), - "promise", - "reason", - ], - }), + return privateInspect( + this, + [ + ...new SafeArrayIterator(EVENT_PROPS), + "promise", + "reason", + ], + inspect, inspectOptions, ); } @@ -1363,8 +1331,6 @@ class PromiseRejectionEvent extends Event { [SymbolToStringTag] = "PromiseRejectionEvent"; } -const PromiseRejectionEventPrototype = PromiseRejectionEvent.prototype; - defineEnumerableProps(PromiseRejectionEvent, [ "promise", "reason", diff --git a/ext/web/03_abort_signal.js b/ext/web/03_abort_signal.js index 81844d53fc..af87e8c2fd 100644 --- a/ext/web/03_abort_signal.js +++ b/ext/web/03_abort_signal.js @@ -8,7 +8,6 @@ const { ArrayPrototypeEvery, ArrayPrototypePush, FunctionPrototypeApply, - ObjectPrototypeIsPrototypeOf, SafeSet, SafeSetIterator, SafeWeakRef, @@ -25,7 +24,7 @@ const { import * as webidl from "ext:deno_webidl/00_webidl.js"; import { assert } from "./00_infra.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { defineEventHandler, Event, @@ -250,16 +249,10 @@ class AbortSignal extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(AbortSignalPrototype, this), - keys: [ - "aborted", - "reason", - "onabort", - ], - }), + return privateInspect( + this, + ["aborted", "reason", "onabort"], + inspect, inspectOptions, ); } @@ -287,16 +280,7 @@ class AbortController { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(AbortControllerPrototype, this), - keys: [ - "signal", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["signal"], inspect, inspectOptions); } } diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js index ea3a3110f6..faa53de740 100644 --- a/ext/web/06_streams.js +++ b/ext/web/06_streams.js @@ -99,7 +99,7 @@ import { signalAbort, } from "./03_abort_signal.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { assert, AssertionError } from "./00_infra.js"; /** @template T */ @@ -4993,18 +4993,10 @@ class ByteLengthQueuingStrategy { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - ByteLengthQueuingStrategyPrototype, - this, - ), - keys: [ - "highWaterMark", - "size", - ], - }), + return privateInspect( + this, + ["highWaterMark", "size"], + inspect, inspectOptions, ); } @@ -5050,18 +5042,10 @@ class CountQueuingStrategy { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - CountQueuingStrategyPrototype, - this, - ), - keys: [ - "highWaterMark", - "size", - ], - }), + return privateInspect( + this, + ["highWaterMark", "size"], + inspect, inspectOptions, ); } @@ -5365,17 +5349,7 @@ class ReadableStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - ReadableStreamPrototype, - this, - ), - keys: ["locked"], - }), - inspectOptions, - ); + return privateInspect(this, ["locked"], inspect, inspectOptions); } } @@ -5487,17 +5461,7 @@ class ReadableStreamDefaultReader { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - ReadableStreamDefaultReaderPrototype, - this, - ), - keys: ["closed"], - }), - inspectOptions, - ); + return privateInspect(this, ["closed"], inspect, inspectOptions); } } @@ -5657,17 +5621,7 @@ class ReadableStreamBYOBReader { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - ReadableStreamBYOBReaderPrototype, - this, - ), - keys: ["closed"], - }), - inspectOptions, - ); + return privateInspect(this, ["closed"], inspect, inspectOptions); } } @@ -5883,17 +5837,7 @@ class ReadableByteStreamController { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - ReadableByteStreamControllerPrototype, - this, - ), - keys: ["desiredSize"], - }), - inspectOptions, - ); + return privateInspect(this, ["desiredSize"], inspect, inspectOptions); } /** @@ -6037,17 +5981,7 @@ class ReadableStreamDefaultController { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - ReadableStreamDefaultControllerPrototype, - this, - ), - keys: ["desiredSize"], - }), - inspectOptions, - ); + return privateInspect(this, ["desiredSize"], inspect, inspectOptions); } /** @@ -6199,15 +6133,10 @@ class TransformStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - TransformStreamPrototype, - this, - ), - keys: ["readable", "writable"], - }), + return privateInspect( + this, + ["readable", "writable"], + inspect, inspectOptions, ); } @@ -6276,17 +6205,7 @@ class TransformStreamDefaultController { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - TransformStreamDefaultControllerPrototype, - this, - ), - keys: ["desiredSize"], - }), - inspectOptions, - ); + return privateInspect(this, ["desiredSize"], inspect, inspectOptions); } } @@ -6427,17 +6346,7 @@ class WritableStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - WritableStreamPrototype, - this, - ), - keys: ["locked"], - }), - inspectOptions, - ); + return privateInspect(this, ["locked"], inspect, inspectOptions); } } @@ -6572,19 +6481,10 @@ class WritableStreamDefaultWriter { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - WritableStreamDefaultWriterPrototype, - this, - ), - keys: [ - "closed", - "desiredSize", - "ready", - ], - }), + return privateInspect( + this, + ["closed", "desiredSize", "ready"], + inspect, inspectOptions, ); } @@ -6646,17 +6546,7 @@ class WritableStreamDefaultController { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - WritableStreamDefaultControllerPrototype, - this, - ), - keys: ["signal"], - }), - inspectOptions, - ); + return privateInspect(this, ["signal"], inspect, inspectOptions); } /** diff --git a/ext/web/08_text_encoding.js b/ext/web/08_text_encoding.js index 3163c96282..4812ef6b3d 100644 --- a/ext/web/08_text_encoding.js +++ b/ext/web/08_text_encoding.js @@ -27,7 +27,6 @@ const { DataViewPrototypeGetBuffer, DataViewPrototypeGetByteLength, DataViewPrototypeGetByteOffset, - ObjectPrototypeIsPrototypeOf, PromiseReject, PromiseResolve, // TODO(lucacasonato): add SharedArrayBuffer to primordials @@ -44,7 +43,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; class TextDecoder { /** @type {string} */ @@ -189,16 +188,10 @@ class TextDecoder { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(TextDecoderPrototype, this), - keys: [ - "encoding", - "fatal", - "ignoreBOM", - ], - }), + return privateInspect( + this, + ["encoding", "fatal", "ignoreBOM"], + inspect, inspectOptions, ); } @@ -261,14 +254,7 @@ class TextEncoder { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(TextEncoderPrototype, this), - keys: ["encoding"], - }), - inspectOptions, - ); + return privateInspect(this, ["encoding"], inspect, inspectOptions); } } @@ -367,21 +353,10 @@ class TextDecoderStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - TextDecoderStreamPrototype, - this, - ), - keys: [ - "encoding", - "fatal", - "ignoreBOM", - "readable", - "writable", - ], - }), + return privateInspect( + this, + ["encoding", "fatal", "ignoreBOM", "readable", "writable"], + inspect, inspectOptions, ); } @@ -460,19 +435,10 @@ class TextEncoderStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - TextEncoderStreamPrototype, - this, - ), - keys: [ - "encoding", - "readable", - "writable", - ], - }), + return privateInspect( + this, + ["encoding", "readbale", "writable"], + inspect, inspectOptions, ); } diff --git a/ext/web/09_file.js b/ext/web/09_file.js index 7c1d79ce31..23ef26d390 100644 --- a/ext/web/09_file.js +++ b/ext/web/09_file.js @@ -59,7 +59,7 @@ const { import * as webidl from "ext:deno_webidl/00_webidl.js"; import { ReadableStream } from "./06_streams.js"; import { URL } from "ext:deno_url/00_url.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; // TODO(lucacasonato): this needs to not be hardcoded and instead depend on // host os. @@ -435,17 +435,10 @@ class Blob { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(BlobPrototype, this), - keys: [ - "size", - "type", - ], - }), - inspectOptions, - ); + // return privateInspect(this, ["size", "type"], inspect, inspectOptions); + const { size, type } = this; + const value = { size, type }; + return `${this.constructor.name} ${inspect(value, inspectOptions)}`; } } @@ -554,16 +547,10 @@ class File extends Blob { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(FilePrototype, this), - keys: [ - "name", - "size", - "type", - ], - }), + return privateInspect( + this, + ["name", "size", "type"], + inspect, inspectOptions, ); } diff --git a/ext/web/10_filereader.js b/ext/web/10_filereader.js index 05f5771143..72a4b487eb 100644 --- a/ext/web/10_filereader.js +++ b/ext/web/10_filereader.js @@ -19,7 +19,6 @@ const { MapPrototypeGet, MapPrototypeSet, ObjectDefineProperty, - ObjectPrototypeIsPrototypeOf, queueMicrotask, SafeArrayIterator, SafeMap, @@ -34,7 +33,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { forgivingBase64Encode } from "./00_infra.js"; import { EventTarget, ProgressEvent } from "./02_event.js"; import { decode, TextDecoder } from "./08_text_encoding.js"; @@ -435,16 +434,10 @@ class FileReader extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(FileReaderPrototype, this), - keys: [ - "error", - "readyState", - "result", - ], - }), + return privateInspect( + this, + ["error", "readyState", "result"], + inspect, inspectOptions, ); } diff --git a/ext/web/13_message_port.js b/ext/web/13_message_port.js index d94ca13826..f27da4e79f 100644 --- a/ext/web/13_message_port.js +++ b/ext/web/13_message_port.js @@ -30,7 +30,7 @@ const { isArrayBuffer, } = core; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { defineEventHandler, EventTarget, @@ -69,17 +69,7 @@ class MessageChannel { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(MessageChannelPrototype, this), - keys: [ - "port1", - "port2", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["port1", "port2"], inspect, inspectOptions); } } @@ -277,15 +267,10 @@ class MessagePort extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(MessagePortPrototype, this), - keys: [ - "onmessage", - "onmessageerror", - ], - }), + return privateInspectSerialize( + this, + ["onmessage", "onmessageerror"], + inspect, inspectOptions, ); } diff --git a/ext/web/14_compression.js b/ext/web/14_compression.js index 1adb205b22..8736f3d59a 100644 --- a/ext/web/14_compression.js +++ b/ext/web/14_compression.js @@ -13,12 +13,11 @@ import { } from "ext:core/ops"; const { SymbolFor, - ObjectPrototypeIsPrototypeOf, TypedArrayPrototypeGetByteLength, } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { TransformStream } from "./06_streams.js"; webidl.converters.CompressionFormat = webidl.createEnumConverter( @@ -72,18 +71,10 @@ class CompressionStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - CompressionStreamPrototype, - this, - ), - keys: [ - "readable", - "writable", - ], - }), + return privateInspect( + this, + ["readable", "writable"], + inspect, inspectOptions, ); } @@ -134,18 +125,10 @@ class DecompressionStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - DecompressionStreamPrototype, - this, - ), - keys: [ - "readable", - "writable", - ], - }), + return privateInspect( + this, + ["readable", "writable"], + inspect, inspectOptions, ); } diff --git a/ext/web/15_performance.js b/ext/web/15_performance.js index 5045c0d318..02def22d86 100644 --- a/ext/web/15_performance.js +++ b/ext/web/15_performance.js @@ -8,7 +8,6 @@ const { ArrayPrototypeReverse, ArrayPrototypeSlice, ObjectKeys, - ObjectPrototypeIsPrototypeOf, ReflectHas, Symbol, SymbolFor, @@ -17,7 +16,7 @@ const { import * as webidl from "ext:deno_webidl/00_webidl.js"; import { structuredClone } from "./02_structured_clone.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { EventTarget } from "./02_event.js"; import { opNow } from "./02_timers.js"; import { DOMException } from "./01_dom_exception.js"; @@ -197,20 +196,10 @@ class PerformanceEntry { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - PerformanceEntryPrototype, - this, - ), - keys: [ - "name", - "entryType", - "startTime", - "duration", - ], - }), + return privateInspect( + this, + ["name", "entryType", "startTime", "duration"], + inspect, inspectOptions, ); } @@ -269,18 +258,10 @@ class PerformanceMark extends PerformanceEntry { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(PerformanceMarkPrototype, this), - keys: [ - "name", - "entryType", - "startTime", - "duration", - "detail", - ], - }), + return privateInspect( + this, + ["name", "entryType", "startTime", "duration", "detail"], + inspect, inspectOptions, ); } @@ -328,21 +309,10 @@ class PerformanceMeasure extends PerformanceEntry { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - PerformanceMeasurePrototype, - this, - ), - keys: [ - "name", - "entryType", - "startTime", - "duration", - "detail", - ], - }), + return privateInspect( + this, + ["entryType", "startTime", "duration", "detail"], + inspect, inspectOptions, ); } @@ -579,14 +549,7 @@ class Performance extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(PerformancePrototype, this), - keys: ["timeOrigin"], - }), - inspectOptions, - ); + return privateInspect(this, ["timeOrigin"], inspect, inspectOptions); } } webidl.configureInterface(Performance); diff --git a/ext/web/16_image_data.js b/ext/web/16_image_data.js index 2048f002d5..7fd6ae2bba 100644 --- a/ext/web/16_image_data.js +++ b/ext/web/16_image_data.js @@ -3,9 +3,8 @@ import { primordials } from "ext:core/mod.js"; import * as webidl from "ext:deno_webidl/00_webidl.js"; import { DOMException } from "./01_dom_exception.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; const { - ObjectPrototypeIsPrototypeOf, Symbol, SymbolFor, TypedArrayPrototypeGetLength, @@ -198,17 +197,10 @@ class ImageData { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(ImageDataPrototype, this), - keys: [ - "data", - "width", - "height", - "colorSpace", - ], - }), + return privateInspect( + this, + ["data", "width", "height", "colorSpace"], + inspect, inspectOptions, ); } diff --git a/ext/webgpu/01_webgpu.js b/ext/webgpu/01_webgpu.js index 36b35072c6..c5ffa71e80 100644 --- a/ext/webgpu/01_webgpu.js +++ b/ext/webgpu/01_webgpu.js @@ -127,7 +127,7 @@ import { setEventTargetData, } from "ext:deno_web/02_event.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; const _rid = Symbol("[[rid]]"); const _size = Symbol("[[size]]"); @@ -391,7 +391,7 @@ class GPU { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return `${this.constructor.name} ${inspect({}, inspectOptions)}`; + return privateInspect(this, [], inspect, inspectOptions); } } const GPUPrototype = GPU.prototype; @@ -539,17 +539,15 @@ class GPUAdapter { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUAdapterPrototype, this), - keys: [ - "features", - "limits", - "info", - "isFallbackAdapter", - ], - }), + return privateInspect( + this, + [ + "features", + "limits", + "info", + "isFallbackAdapter", + ], + inspect, inspectOptions, ); } @@ -590,17 +588,15 @@ class GPUAdapterInfo { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUAdapterInfoPrototype, this), - keys: [ - "vendor", - "architecture", - "device", - "description", - ], - }), + return privateInspect( + this, + [ + "vendor", + "architecture", + "device", + "description", + ], + inspect, inspectOptions, ); } @@ -773,46 +769,41 @@ class GPUSupportedLimits { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPUSupportedLimitsPrototype, - this, - ), - keys: [ - "maxTextureDimension1D", - "maxTextureDimension2D", - "maxTextureDimension3D", - "maxTextureArrayLayers", - "maxBindGroups", - "maxBindingsPerBindGroup", - "maxBufferSize", - "maxDynamicUniformBuffersPerPipelineLayout", - "maxDynamicStorageBuffersPerPipelineLayout", - "maxSampledTexturesPerShaderStage", - "maxSamplersPerShaderStage", - "maxStorageBuffersPerShaderStage", - "maxStorageTexturesPerShaderStage", - "maxUniformBuffersPerShaderStage", - "maxUniformBufferBindingSize", - "maxStorageBufferBindingSize", - "minUniformBufferOffsetAlignment", - "minStorageBufferOffsetAlignment", - "maxVertexBuffers", - "maxVertexAttributes", - "maxVertexBufferArrayStride", - "maxInterStageShaderComponents", - "maxColorAttachments", - "maxColorAttachmentBytesPerSample", - "maxComputeWorkgroupStorageSize", - "maxComputeInvocationsPerWorkgroup", - "maxComputeWorkgroupSizeX", - "maxComputeWorkgroupSizeY", - "maxComputeWorkgroupSizeZ", - "maxComputeWorkgroupsPerDimension", - ], - }), + return privateInspect( + this, + [ + "maxTextureDimension1D", + "maxTextureDimension2D", + "maxTextureDimension3D", + "maxTextureArrayLayers", + "maxBindGroups", + "maxBindingsPerBindGroup", + "maxBufferSize", + "maxDynamicUniformBuffersPerPipelineLayout", + "maxDynamicStorageBuffersPerPipelineLayout", + "maxSampledTexturesPerShaderStage", + "maxSamplersPerShaderStage", + "maxStorageBuffersPerShaderStage", + "maxStorageTexturesPerShaderStage", + "maxUniformBuffersPerShaderStage", + "maxUniformBufferBindingSize", + "maxStorageBufferBindingSize", + "minUniformBufferOffsetAlignment", + "minStorageBufferOffsetAlignment", + "maxVertexBuffers", + "maxVertexAttributes", + "maxVertexBufferArrayStride", + "maxInterStageShaderComponents", + "maxColorAttachments", + "maxColorAttachmentBytesPerSample", + "maxComputeWorkgroupStorageSize", + "maxComputeInvocationsPerWorkgroup", + "maxComputeWorkgroupSizeX", + "maxComputeWorkgroupSizeY", + "maxComputeWorkgroupSizeZ", + "maxComputeWorkgroupsPerDimension", + ], + inspect, inspectOptions, ); } @@ -881,18 +872,10 @@ class GPUDeviceLostInfo { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPUDeviceLostInfoPrototype, - this, - ), - keys: [ - "reason", - "message", - ], - }), + return privateInspect( + this, + ["reason", "message"], + inspect, inspectOptions, ); } @@ -1831,20 +1814,18 @@ class GPUDevice extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUDevicePrototype, this), - keys: [ - "features", - "label", - "limits", - "lost", - "queue", - // TODO(lucacasonato): emit an UncapturedErrorEvent - // "onuncapturederror" - ], - }), + return privateInspect( + this, + [ + "features", + "label", + "limits", + "lost", + "queue", + // TODO(lucacasonato): emit an UncapturedErrorEvent + // "onuncapturederror" + ], + inspect, inspectOptions, ); } @@ -2062,16 +2043,7 @@ class GPUQueue { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUQueuePrototype, this), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUQueue", GPUQueue); @@ -2373,17 +2345,15 @@ class GPUBuffer { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUBufferPrototype, this), - keys: [ - "label", - "mapState", - "size", - "usage", - ], - }), + return privateInspect( + this, + [ + "label", + "mapState", + "size", + "usage", + ], + inspect, inspectOptions, ); } @@ -2585,22 +2555,20 @@ class GPUTexture { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUTexturePrototype, this), - keys: [ - "label", - "width", - "height", - "depthOrArrayLayers", - "mipLevelCount", - "sampleCount", - "dimension", - "format", - "usage", - ], - }), + return privateInspect( + this, + [ + "label", + "width", + "height", + "depthOrArrayLayers", + "mipLevelCount", + "sampleCount", + "dimension", + "format", + "usage", + ], + inspect, inspectOptions, ); } @@ -2664,16 +2632,7 @@ class GPUTextureView { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUTextureViewPrototype, this), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUTextureView", GPUTextureView); @@ -2755,19 +2714,7 @@ class GPUBindGroupLayout { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPUBindGroupLayoutPrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUBindGroupLayout", GPUBindGroupLayout); @@ -2806,23 +2753,10 @@ class GPUPipelineLayout { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPUPipelineLayoutPrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUPipelineLayout", GPUPipelineLayout); -const GPUPipelineLayoutPrototype = GPUPipelineLayout.prototype; /** * @param {string | null} label @@ -2858,20 +2792,10 @@ class GPUBindGroup { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUBindGroupPrototype, this), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUBindGroup", GPUBindGroup); -const GPUBindGroupPrototype = GPUBindGroup.prototype; /** * @param {string | null} label * @param {InnerGPUDevice} device @@ -2906,16 +2830,7 @@ class GPUShaderModule { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUShaderModulePrototype, this), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUShaderModule", GPUShaderModule); @@ -3000,19 +2915,7 @@ class GPUComputePipeline { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPUComputePipelinePrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUComputePipeline", GPUComputePipeline); @@ -3078,19 +2981,7 @@ class GPURenderPipeline { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPURenderPipelinePrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPURenderPipeline", GPURenderPipeline); @@ -3799,19 +3690,7 @@ class GPUCommandEncoder { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPUCommandEncoderPrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUCommandEncoder", GPUCommandEncoder); @@ -4407,19 +4286,7 @@ class GPURenderPassEncoder { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPURenderPassEncoderPrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPURenderPassEncoder", GPURenderPassEncoder); @@ -4683,19 +4550,7 @@ class GPUComputePassEncoder { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPUComputePassEncoderPrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUComputePassEncoder", GPUComputePassEncoder); @@ -4736,20 +4591,10 @@ class GPUCommandBuffer { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUCommandBufferPrototype, this), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPUCommandBuffer", GPUCommandBuffer); -const GPUCommandBufferPrototype = GPUCommandBuffer.prototype; /** * @param {string | null} label @@ -5124,19 +4969,7 @@ class GPURenderBundleEncoder { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf( - GPURenderBundleEncoderPrototype, - this, - ), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPURenderBundleEncoder", GPURenderBundleEncoder); @@ -5177,20 +5010,10 @@ class GPURenderBundle { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPURenderBundlePrototype, this), - keys: [ - "label", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["label"], inspect, inspectOptions); } } GPUObjectBaseMixin("GPURenderBundle", GPURenderBundle); -const GPURenderBundlePrototype = GPURenderBundle.prototype; /** * @param {string | null} label * @param {InnerGPUDevice} device @@ -5248,16 +5071,10 @@ class GPUQuerySet { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUQuerySetPrototype, this), - keys: [ - "label", - "type", - "count", - ], - }), + return privateInspect( + this, + ["label", "type", "count"], + inspect, inspectOptions, ); } diff --git a/ext/webgpu/02_surface.js b/ext/webgpu/02_surface.js index f35f745af4..a145273e9c 100644 --- a/ext/webgpu/02_surface.js +++ b/ext/webgpu/02_surface.js @@ -14,14 +14,13 @@ import { op_webgpu_surface_present, } from "ext:core/ops"; const { - ObjectPrototypeIsPrototypeOf, Symbol, SymbolFor, TypeError, } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { loadWebGPU } from "ext:deno_webgpu/00_init.js"; const _surfaceRid = Symbol("[[surfaceRid]]"); @@ -144,16 +143,7 @@ class GPUCanvasContext { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(GPUCanvasContextPrototype, this), - keys: [ - "canvas", - ], - }), - inspectOptions, - ); + return privateInspect(this, ["canvas"], inspect, inspectOptions); } } const GPUCanvasContextPrototype = GPUCanvasContext.prototype; diff --git a/ext/webidl/00_webidl.js b/ext/webidl/00_webidl.js index 7440e47e7b..86e0b80eaa 100644 --- a/ext/webidl/00_webidl.js +++ b/ext/webidl/00_webidl.js @@ -1138,6 +1138,13 @@ function assertBranded(self, prototype) { if ( !ObjectPrototypeIsPrototypeOf(prototype, self) || self[brand] !== brand ) { + console.log( + self.toString(), + prototype.toString(), + self === prototype, + self[brand], + brand.toString(), + ); throw new TypeError("Illegal invocation"); } } diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js index 60580a56ce..9ea9930c7b 100644 --- a/ext/websocket/01_websocket.js +++ b/ext/websocket/01_websocket.js @@ -47,7 +47,7 @@ const { import { URL } from "ext:deno_url/00_url.js"; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { HTTP_TOKEN_CODE_POINT_RE } from "ext:deno_web/00_infra.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js"; import { clearTimeout, setTimeout } from "ext:deno_web/02_timers.js"; @@ -603,23 +603,21 @@ class WebSocket extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(WebSocketPrototype, this), - keys: [ - "url", - "readyState", - "extensions", - "protocol", - "binaryType", - "bufferedAmount", - "onmessage", - "onerror", - "onclose", - "onopen", - ], - }), + return privateInspect( + this, + [ + "url", + "readyState", + "extensions", + "protocol", + "binaryType", + "bufferedAmount", + "onmessage", + "onerror", + "onclose", + "onopen", + ], + inspect, inspectOptions, ); } diff --git a/ext/websocket/02_websocketstream.js b/ext/websocket/02_websocketstream.js index 92b1c6eae5..15431fa3f4 100644 --- a/ext/websocket/02_websocketstream.js +++ b/ext/websocket/02_websocketstream.js @@ -33,7 +33,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { Deferred, writableStreamClose } from "ext:deno_web/06_streams.js"; import { DOMException } from "ext:deno_web/01_dom_exception.js"; import { add, remove } from "ext:deno_web/03_abort_signal.js"; @@ -426,16 +426,10 @@ class WebSocketStream { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(WebSocketStreamPrototype, this), - keys: [ - "closed", - "opened", - "url", - ], - }), + return privateInspect( + this, + ["closed", "opened", "url"], + inspect, inspectOptions, ); } @@ -505,17 +499,10 @@ class WebSocketError extends DOMException { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(WebSocketErrorPrototype, this), - keys: [ - "message", - "name", - "closeCode", - "reason", - ], - }), + return privateInspect( + this, + ["message", "name", "closeCode", "reason"], + inspect, inspectOptions, ); } diff --git a/runtime/js/11_workers.js b/runtime/js/11_workers.js index 3853761920..bcbd1970d9 100644 --- a/runtime/js/11_workers.js +++ b/runtime/js/11_workers.js @@ -21,7 +21,7 @@ const { } = primordials; import * as webidl from "ext:deno_webidl/00_webidl.js"; -import { createFilteredInspectProxy } from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import { URL } from "ext:deno_url/00_url.js"; import { getLocationHref } from "ext:deno_web/12_location.js"; import { serializePermissions } from "ext:runtime/10_permissions.js"; @@ -292,16 +292,10 @@ class Worker extends EventTarget { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(WorkerPrototype, this), - keys: [ - "onerror", - "onmessage", - "onmessageerror", - ], - }), + return privateInspect( + this, + ["onerror", "onmessage", "onmessageerror"], + inspect, inspectOptions, ); } @@ -309,8 +303,6 @@ class Worker extends EventTarget { [SymbolToStringTag] = "Worker"; } -const WorkerPrototype = Worker.prototype; - defineEventHandler(Worker.prototype, "error"); defineEventHandler(Worker.prototype, "message"); defineEventHandler(Worker.prototype, "messageerror"); diff --git a/runtime/js/98_global_scope_window.js b/runtime/js/98_global_scope_window.js index aa18ed3613..3fb807a36c 100644 --- a/runtime/js/98_global_scope_window.js +++ b/runtime/js/98_global_scope_window.js @@ -8,12 +8,11 @@ import { } from "ext:core/ops"; const { ObjectDefineProperties, - ObjectPrototypeIsPrototypeOf, SymbolFor, } = primordials; import * as location from "ext:deno_web/12_location.js"; -import * as console from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import * as webidl from "ext:deno_webidl/00_webidl.js"; import * as globalInterfaces from "ext:deno_web/04_global_interfaces.js"; import * as webStorage from "ext:deno_webstorage/01_webstorage.js"; @@ -26,17 +25,10 @@ class Navigator { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - console.createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(NavigatorPrototype, this), - keys: [ - "hardwareConcurrency", - "userAgent", - "language", - "languages", - ], - }), + return privateInspect( + this, + ["hardwareConcurrency", "userAgent", "language", "languages"], + inspect, inspectOptions, ); } diff --git a/runtime/js/98_global_scope_worker.js b/runtime/js/98_global_scope_worker.js index 8e292108f8..19478bd838 100644 --- a/runtime/js/98_global_scope_worker.js +++ b/runtime/js/98_global_scope_worker.js @@ -8,12 +8,11 @@ import { } from "ext:core/ops"; const { ObjectDefineProperties, - ObjectPrototypeIsPrototypeOf, SymbolFor, } = primordials; import * as location from "ext:deno_web/12_location.js"; -import * as console from "ext:deno_console/01_console.js"; +import { privateInspect } from "ext:deno_console/01_console.js"; import * as webidl from "ext:deno_webidl/00_webidl.js"; import * as globalInterfaces from "ext:deno_web/04_global_interfaces.js"; import { loadWebGPU } from "ext:deno_webgpu/00_init.js"; @@ -38,17 +37,10 @@ class WorkerNavigator { } [SymbolFor("Deno.privateCustomInspect")](inspect, inspectOptions) { - return inspect( - console.createFilteredInspectProxy({ - object: this, - evaluate: ObjectPrototypeIsPrototypeOf(WorkerNavigatorPrototype, this), - keys: [ - "hardwareConcurrency", - "userAgent", - "language", - "languages", - ], - }), + return privateInspect( + this, + ["hardwareConcurrency", "userAgent", "language", "languages"], + inspect, inspectOptions, ); }