diff --git a/lib/constructs/interface.js b/lib/constructs/interface.js index deda7ff4..161bf591 100644 --- a/lib/constructs/interface.js +++ b/lib/constructs/interface.js @@ -90,6 +90,7 @@ class Interface { this.namedSetter = null; this.namedDeleter = null; this.stringifier = null; + this.needsPerGlobalProxyHandler = false; this.iterable = null; this._analyzed = false; @@ -229,11 +230,17 @@ class Interface { throw new Error(msg + "duplicated indexed setter"); } this.indexedSetter = member; + if (utils.hasCEReactions(member)) { + this.needsPerGlobalProxyHandler = true; + } } else if (isNamed(member)) { if (this.namedSetter) { throw new Error(msg + "duplicated named setter"); } this.namedSetter = member; + if (utils.hasCEReactions(member)) { + this.needsPerGlobalProxyHandler = true; + } } else { throw new Error(msg + "setter is neither indexed nor named"); } @@ -253,6 +260,9 @@ class Interface { throw new Error(msg + "duplicated named deleter"); } this.namedDeleter = member; + if (utils.hasCEReactions(member)) { + this.needsPerGlobalProxyHandler = true; + } } else { throw new Error(msg + "deleter is not named"); } @@ -683,7 +693,6 @@ class Interface { ${conv.body} `; - let invocation; if (!this.namedSetter.name) { invocation = ` @@ -709,9 +718,21 @@ class Interface { return prolog + invocation; }; - this.str += ` - const proxyHandler = { - `; + let sep = ""; + if (this.needsPerGlobalProxyHandler) { + this.str += ` + const proxyHandlerCache = new WeakMap(); + class ProxyHandler { + constructor(globalObject) { + this._globalObject = globalObject; + } + `; + } else { + this.str += ` + const proxyHandler = { + `; + sep = ","; + } // [[Get]] (necessary because of proxy semantics) this.str += ` @@ -735,7 +756,7 @@ class Interface { return undefined; } return Reflect.apply(getter, receiver, []); - }, + }${sep} `; // [[HasProperty]] (necessary because of proxy semantics) @@ -753,7 +774,7 @@ class Interface { return Reflect.has(parent, P); } return false; - }, + }${sep} `; // [[OwnPropertyKeys]] @@ -784,7 +805,7 @@ class Interface { keys.add(key); } return [...keys]; - }, + }${sep} `; // [[GetOwnProperty]] @@ -858,7 +879,7 @@ class Interface { } this.str += ` return Reflect.getOwnPropertyDescriptor(target, P); - }, + }${sep} `; // [[Set]] @@ -870,6 +891,12 @@ class Interface { if (target === receiver) { `; + if (this.needsPerGlobalProxyHandler) { + this.str += ` + const globalObject = this._globalObject; + `; + } + if (this.supportsIndexedProperties) { if (hasIndexedSetter) { this.str += ` @@ -966,7 +993,7 @@ class Interface { valueDesc = { writable: true, enumerable: true, configurable: true, value: V }; } return Reflect.defineProperty(receiver, P, valueDesc); - }, + }${sep} `; // [[DefineOwnProperty]] @@ -976,6 +1003,13 @@ class Interface { return Reflect.defineProperty(target, P, desc); } `; + + if (this.needsPerGlobalProxyHandler) { + this.str += ` + const globalObject = this._globalObject; + `; + } + if (this.supportsIndexedProperties) { this.str += ` if (utils.isArrayIndexPropName(P)) { @@ -1054,7 +1088,7 @@ class Interface { `; } this.str += ` - }, + }${sep} `; // [[Delete]] @@ -1064,6 +1098,13 @@ class Interface { return Reflect.deleteProperty(target, P); } `; + + if (this.needsPerGlobalProxyHandler) { + this.str += ` + const globalObject = this._globalObject; + `; + } + if (this.supportsIndexedProperties) { this.str += ` if (utils.isArrayIndexPropName(P)) { @@ -1109,7 +1150,7 @@ class Interface { } this.str += ` return Reflect.deleteProperty(target, P); - }, + }${sep} `; // [[PreventExtensions]] @@ -1168,9 +1209,22 @@ class Interface { `; if (this.isLegacyPlatformObj) { - this.str += ` + if (this.needsPerGlobalProxyHandler) { + this.str += ` + { + let proxyHandler = proxyHandlerCache.get(globalObject); + if (proxyHandler === undefined) { + proxyHandler = new ProxyHandler(globalObject); + proxyHandlerCache.set(globalObject, proxyHandler); + } + obj = new Proxy(obj, proxyHandler); + } + `; + } else { + this.str += ` obj = new Proxy(obj, proxyHandler); - `; + `; + } } this.str += ` @@ -1451,7 +1505,6 @@ class Interface { this.str += ` exports.install = function install(globalObject) { - const interfaceName = "${name}"; `; if (idl.inheritance) { @@ -1486,6 +1539,9 @@ class Interface { } generate() { + this.str += ` + const interfaceName = "${this.name}"; + `; this.generateIterator(); this.generateExport(); diff --git a/test/__snapshots__/test.js.snap b/test/__snapshots__/test.js.snap index 3f13d0a7..a526f8bf 100644 --- a/test/__snapshots__/test.js.snap +++ b/test/__snapshots__/test.js.snap @@ -9,6 +9,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"BufferSourceTypes\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -86,7 +88,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"BufferSourceTypes\\"; class BufferSourceTypes { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -278,6 +279,8 @@ const CEReactions = require(\\"../CEReactions.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"CEReactions\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -347,7 +350,14 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD configurable: true }); - obj = new Proxy(obj, proxyHandler); + { + let proxyHandler = proxyHandlerCache.get(globalObject); + if (proxyHandler === undefined) { + proxyHandler = new ProxyHandler(globalObject); + proxyHandlerCache.set(globalObject, proxyHandler); + } + obj = new Proxy(obj, proxyHandler); + } obj[impl][utils.wrapperSymbol] = obj; if (Impl.init) { @@ -357,7 +367,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"CEReactions\\"; class CEReactions { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -423,7 +432,12 @@ exports.install = function install(globalObject) { }); }; -const proxyHandler = { +const proxyHandlerCache = new WeakMap(); +class ProxyHandler { + constructor(globalObject) { + this._globalObject = globalObject; + } + get(target, P, receiver) { if (typeof P === \\"symbol\\") { return Reflect.get(target, P, receiver); @@ -444,7 +458,7 @@ const proxyHandler = { return undefined; } return Reflect.apply(getter, receiver, []); - }, + } has(target, P) { if (typeof P === \\"symbol\\") { @@ -459,7 +473,7 @@ const proxyHandler = { return Reflect.has(parent, P); } return false; - }, + } ownKeys(target) { const keys = new Set(); @@ -474,7 +488,7 @@ const proxyHandler = { keys.add(key); } return [...keys]; - }, + } getOwnPropertyDescriptor(target, P) { if (typeof P === \\"symbol\\") { @@ -494,13 +508,15 @@ const proxyHandler = { } return Reflect.getOwnPropertyDescriptor(target, P); - }, + } set(target, P, V, receiver) { if (typeof P === \\"symbol\\") { return Reflect.set(target, P, V, receiver); } if (target === receiver) { + const globalObject = this._globalObject; + if (typeof P === \\"string\\" && !utils.isArrayIndexPropName(P)) { let namedValue = V; @@ -555,12 +571,14 @@ const proxyHandler = { valueDesc = { writable: true, enumerable: true, configurable: true, value: V }; } return Reflect.defineProperty(receiver, P, valueDesc); - }, + } defineProperty(target, P, desc) { if (typeof P === \\"symbol\\") { return Reflect.defineProperty(target, P, desc); } + + const globalObject = this._globalObject; if (!utils.hasOwn(target, P)) { if (desc.get || desc.set) { return false; @@ -587,13 +605,15 @@ const proxyHandler = { return true; } return Reflect.defineProperty(target, P, desc); - }, + } deleteProperty(target, P) { if (typeof P === \\"symbol\\") { return Reflect.deleteProperty(target, P); } + const globalObject = this._globalObject; + if (target[impl][utils.supportsPropertyName](P) && !(P in target)) { CEReactions.preSteps(globalObject); try { @@ -605,12 +625,12 @@ const proxyHandler = { } return Reflect.deleteProperty(target, P); - }, + } preventExtensions() { return false; } -}; +} const Impl = require(\\"../implementations/CEReactions.js\\"); " @@ -625,6 +645,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"DOMImplementation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -702,7 +724,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"DOMImplementation\\"; class DOMImplementation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -929,6 +950,8 @@ const convertDictionary = require(\\"./Dictionary.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"DictionaryConvert\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -1006,7 +1029,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"DictionaryConvert\\"; class DictionaryConvert { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -1065,6 +1087,8 @@ const RequestDestination = require(\\"./RequestDestination.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Enum\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -1142,7 +1166,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Enum\\"; class Enum { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -1218,6 +1241,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Global\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -1380,7 +1405,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Global\\"; class Global { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -1413,6 +1437,8 @@ const HTMLConstructor_HTMLConstructor = require(\\"../HTMLConstructor.js\\").HTM const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"HTMLConstructor\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -1490,7 +1516,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"HTMLConstructor\\"; class HTMLConstructor { constructor() { return HTMLConstructor_HTMLConstructor(globalObject, interfaceName); @@ -1524,6 +1549,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"LegacyArrayClass\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -1601,7 +1628,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"LegacyArrayClass\\"; class LegacyArrayClass { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -1645,6 +1671,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"MixedIn\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -1722,7 +1750,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"MixedIn\\"; class MixedIn { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -1824,6 +1851,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Overloads\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -1901,7 +1930,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Overloads\\"; class Overloads { constructor() { const args = []; @@ -2241,6 +2269,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"PromiseTypes\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -2318,7 +2348,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"PromiseTypes\\"; class PromiseTypes { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -2408,6 +2437,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Reflect\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -2485,7 +2516,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Reflect\\"; class Reflect { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -2688,6 +2718,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"SeqAndRec\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -2765,7 +2797,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"SeqAndRec\\"; class SeqAndRec { constructor() { return exports.setup(Object.create(new.target.prototype), globalObject, undefined); @@ -2999,6 +3030,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Static\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -3076,7 +3109,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Static\\"; class Static { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -3151,6 +3183,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Storage\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -3230,7 +3264,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Storage\\"; class Storage { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -3533,6 +3566,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierAttribute\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -3610,7 +3645,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierAttribute\\"; class StringifierAttribute { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -3661,6 +3695,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierDefaultOperation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -3740,7 +3776,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierDefaultOperation\\"; class StringifierDefaultOperation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -3783,6 +3818,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierNamedOperation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -3862,7 +3899,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierNamedOperation\\"; class StringifierNamedOperation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -3914,6 +3950,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierOperation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -3991,7 +4029,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierOperation\\"; class StringifierOperation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -4037,6 +4074,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"TypedefsAndUnions\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -4114,7 +4153,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"TypedefsAndUnions\\"; class TypedefsAndUnions { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -4562,6 +4600,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URL\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -4639,7 +4679,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URL\\"; class URL { constructor(url) { if (arguments.length < 1) { @@ -4928,6 +4967,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URLList\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -5007,7 +5048,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLList\\"; class URLList { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -5237,6 +5277,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URLSearchParams\\"; + const IteratorPrototype = Object.create(utils.IteratorPrototype, { next: { value: function next() { @@ -5362,7 +5404,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLSearchParams\\"; class URLSearchParams { constructor() { const args = []; @@ -5701,6 +5742,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URLSearchParamsCollection\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -5782,7 +5825,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLSearchParamsCollection\\"; class URLSearchParamsCollection { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -6062,6 +6104,8 @@ const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; const URLSearchParamsCollection = require(\\"./URLSearchParamsCollection.js\\"); +const interfaceName = \\"URLSearchParamsCollection2\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -6145,8 +6189,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLSearchParamsCollection2\\"; - if (globalObject.URLSearchParamsCollection === undefined) { throw new Error( \\"Internal error: attempting to evaluate URLSearchParamsCollection2 before URLSearchParamsCollection\\" @@ -6401,6 +6443,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"UnderscoredProperties\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -6478,7 +6522,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"UnderscoredProperties\\"; class UnderscoredProperties { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -6594,6 +6637,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Unforgeable\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -6756,7 +6801,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Unforgeable\\"; class Unforgeable { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -6790,6 +6834,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"UnforgeableMap\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -6884,7 +6930,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"UnforgeableMap\\"; class UnforgeableMap { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -7093,6 +7138,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Unscopable\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -7170,7 +7217,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Unscopable\\"; class Unscopable { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -7251,6 +7297,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Variadic\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -7328,7 +7376,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Variadic\\"; class Variadic { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -7513,6 +7560,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"ZeroArgConstructor\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -7590,7 +7639,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"ZeroArgConstructor\\"; class ZeroArgConstructor { constructor() { return exports.setup(Object.create(new.target.prototype), globalObject, undefined); @@ -7624,6 +7672,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"BufferSourceTypes\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -7701,7 +7751,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"BufferSourceTypes\\"; class BufferSourceTypes { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -7892,6 +7941,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"CEReactions\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -7961,7 +8012,14 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD configurable: true }); - obj = new Proxy(obj, proxyHandler); + { + let proxyHandler = proxyHandlerCache.get(globalObject); + if (proxyHandler === undefined) { + proxyHandler = new ProxyHandler(globalObject); + proxyHandlerCache.set(globalObject, proxyHandler); + } + obj = new Proxy(obj, proxyHandler); + } obj[impl][utils.wrapperSymbol] = obj; if (Impl.init) { @@ -7971,7 +8029,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"CEReactions\\"; class CEReactions { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -8022,7 +8079,12 @@ exports.install = function install(globalObject) { }); }; -const proxyHandler = { +const proxyHandlerCache = new WeakMap(); +class ProxyHandler { + constructor(globalObject) { + this._globalObject = globalObject; + } + get(target, P, receiver) { if (typeof P === \\"symbol\\") { return Reflect.get(target, P, receiver); @@ -8043,7 +8105,7 @@ const proxyHandler = { return undefined; } return Reflect.apply(getter, receiver, []); - }, + } has(target, P) { if (typeof P === \\"symbol\\") { @@ -8058,7 +8120,7 @@ const proxyHandler = { return Reflect.has(parent, P); } return false; - }, + } ownKeys(target) { const keys = new Set(); @@ -8073,7 +8135,7 @@ const proxyHandler = { keys.add(key); } return [...keys]; - }, + } getOwnPropertyDescriptor(target, P) { if (typeof P === \\"symbol\\") { @@ -8093,13 +8155,15 @@ const proxyHandler = { } return Reflect.getOwnPropertyDescriptor(target, P); - }, + } set(target, P, V, receiver) { if (typeof P === \\"symbol\\") { return Reflect.set(target, P, V, receiver); } if (target === receiver) { + const globalObject = this._globalObject; + if (typeof P === \\"string\\" && !utils.isArrayIndexPropName(P)) { let namedValue = V; @@ -8149,12 +8213,14 @@ const proxyHandler = { valueDesc = { writable: true, enumerable: true, configurable: true, value: V }; } return Reflect.defineProperty(receiver, P, valueDesc); - }, + } defineProperty(target, P, desc) { if (typeof P === \\"symbol\\") { return Reflect.defineProperty(target, P, desc); } + + const globalObject = this._globalObject; if (!utils.hasOwn(target, P)) { if (desc.get || desc.set) { return false; @@ -8176,25 +8242,27 @@ const proxyHandler = { return true; } return Reflect.defineProperty(target, P, desc); - }, + } deleteProperty(target, P) { if (typeof P === \\"symbol\\") { return Reflect.deleteProperty(target, P); } + const globalObject = this._globalObject; + if (target[impl][utils.supportsPropertyName](P) && !(P in target)) { target[impl][utils.namedDelete](P); return true; } return Reflect.deleteProperty(target, P); - }, + } preventExtensions() { return false; } -}; +} const Impl = require(\\"../implementations/CEReactions.js\\"); " @@ -8209,6 +8277,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"DOMImplementation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -8286,7 +8356,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"DOMImplementation\\"; class DOMImplementation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -8513,6 +8582,8 @@ const convertDictionary = require(\\"./Dictionary.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"DictionaryConvert\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -8590,7 +8661,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"DictionaryConvert\\"; class DictionaryConvert { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -8649,6 +8719,8 @@ const RequestDestination = require(\\"./RequestDestination.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Enum\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -8726,7 +8798,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Enum\\"; class Enum { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -8802,6 +8873,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Global\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -8964,7 +9037,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Global\\"; class Global { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -8996,6 +9068,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"HTMLConstructor\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -9073,7 +9147,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"HTMLConstructor\\"; class HTMLConstructor { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -9107,6 +9180,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"LegacyArrayClass\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -9184,7 +9259,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"LegacyArrayClass\\"; class LegacyArrayClass { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -9228,6 +9302,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"MixedIn\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -9305,7 +9381,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"MixedIn\\"; class MixedIn { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -9407,6 +9482,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Overloads\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -9484,7 +9561,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Overloads\\"; class Overloads { constructor() { const args = []; @@ -9824,6 +9900,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"PromiseTypes\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -9901,7 +9979,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"PromiseTypes\\"; class PromiseTypes { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -9991,6 +10068,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Reflect\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -10068,7 +10147,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Reflect\\"; class Reflect { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -10271,6 +10349,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"SeqAndRec\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -10348,7 +10428,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"SeqAndRec\\"; class SeqAndRec { constructor() { return exports.setup(Object.create(new.target.prototype), globalObject, undefined); @@ -10582,6 +10661,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Static\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -10659,7 +10740,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Static\\"; class Static { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -10734,6 +10814,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Storage\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -10813,7 +10895,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Storage\\"; class Storage { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -11116,6 +11197,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierAttribute\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -11193,7 +11276,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierAttribute\\"; class StringifierAttribute { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -11244,6 +11326,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierDefaultOperation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -11323,7 +11407,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierDefaultOperation\\"; class StringifierDefaultOperation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -11366,6 +11449,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierNamedOperation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -11445,7 +11530,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierNamedOperation\\"; class StringifierNamedOperation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -11497,6 +11581,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"StringifierOperation\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -11574,7 +11660,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"StringifierOperation\\"; class StringifierOperation { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -11620,6 +11705,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"TypedefsAndUnions\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -11697,7 +11784,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"TypedefsAndUnions\\"; class TypedefsAndUnions { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -12145,6 +12231,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URL\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -12222,7 +12310,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URL\\"; class URL { constructor(url) { if (arguments.length < 1) { @@ -12511,6 +12598,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URLList\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -12590,7 +12679,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLList\\"; class URLList { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -12820,6 +12908,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URLSearchParams\\"; + const IteratorPrototype = Object.create(utils.IteratorPrototype, { next: { value: function next() { @@ -12945,7 +13035,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLSearchParams\\"; class URLSearchParams { constructor() { const args = []; @@ -13284,6 +13373,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"URLSearchParamsCollection\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -13365,7 +13456,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLSearchParamsCollection\\"; class URLSearchParamsCollection { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -13645,6 +13735,8 @@ const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; const URLSearchParamsCollection = require(\\"./URLSearchParamsCollection.js\\"); +const interfaceName = \\"URLSearchParamsCollection2\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -13728,8 +13820,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"URLSearchParamsCollection2\\"; - if (globalObject.URLSearchParamsCollection === undefined) { throw new Error( \\"Internal error: attempting to evaluate URLSearchParamsCollection2 before URLSearchParamsCollection\\" @@ -13984,6 +14074,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"UnderscoredProperties\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -14061,7 +14153,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"UnderscoredProperties\\"; class UnderscoredProperties { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -14177,6 +14268,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Unforgeable\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -14339,7 +14432,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Unforgeable\\"; class Unforgeable { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -14373,6 +14465,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"UnforgeableMap\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -14467,7 +14561,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"UnforgeableMap\\"; class UnforgeableMap { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -14676,6 +14769,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Unscopable\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -14753,7 +14848,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Unscopable\\"; class Unscopable { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -14834,6 +14928,8 @@ const convertURL = require(\\"./URL.js\\").convert; const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"Variadic\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -14911,7 +15007,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"Variadic\\"; class Variadic { constructor() { throw new TypeError(\\"Illegal constructor\\"); @@ -15096,6 +15191,8 @@ const utils = require(\\"./utils.js\\"); const impl = utils.implSymbol; const ctorRegistry = utils.ctorRegistrySymbol; +const interfaceName = \\"ZeroArgConstructor\\"; + /** * When an interface-module that implements this interface as a mixin is loaded, it will append its own \`.is()\` * method into this array. It allows objects that directly implements *those* interfaces to be recognized as @@ -15173,7 +15270,6 @@ exports.setup = function setup(obj, globalObject, constructorArgs = [], privateD }; exports.install = function install(globalObject) { - const interfaceName = \\"ZeroArgConstructor\\"; class ZeroArgConstructor { constructor() { return exports.setup(Object.create(new.target.prototype), globalObject, undefined);