From 970cf26cee591fd8920e5bdf9cbac97b160df775 Mon Sep 17 00:00:00 2001 From: ExE Boss <3889017+ExE-Boss@users.noreply.github.com> Date: Sun, 14 Mar 2021 17:00:00 +0100 Subject: [PATCH] =?UTF-8?q?Implement=20=E2=80=9Cinternally=C2=A0create=20a?= =?UTF-8?q?=C2=A0new=C2=A0object=20implementing=20the=C2=A0interface?= =?UTF-8?q?=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +- lib/constructs/interface.js | 18 +- test/__snapshots__/test.js.snap | 1440 ++++++++++++++++++++++--------- 3 files changed, 1055 insertions(+), 407 deletions(-) diff --git a/README.md b/README.md index 426889ce..c8182c17 100644 --- a/README.md +++ b/README.md @@ -282,11 +282,11 @@ Creates a new instance of the wrapper class and corresponding implementation cla This is useful inside implementation class files, where it is easiest to only deal with impls, not wrappers. -#### `new(globalObject)` +#### `new(globalObject, newTarget)` Creates a new instance of the wrapper class and corresponding implementation class, but without invoking the implementation class constructor logic. Then returns the implementation class. -This corresponds to the [Web IDL "new" algorithm](https://heycam.github.io/webidl/#new), and is useful when implementing specifications that initialize objects in different ways than their constructors do. +This corresponds to the [WebIDL "create a new object implementing the interface"](https://heycam.github.io/webidl/#new) and ["internally create a new object implementing the interface"](https://heycam.github.io/webidl/#internally-create-a-new-object-implementing-the-interface) algorithms, and is useful when implementing specifications that initialize objects in different ways than their constructors do. #### `setup(obj, globalObject, constructorArgs, privateData)` diff --git a/lib/constructs/interface.js b/lib/constructs/interface.js index 922cc194..ae992846 100644 --- a/lib/constructs/interface.js +++ b/lib/constructs/interface.js @@ -1206,9 +1206,17 @@ class Interface { generateIface() { this.str += ` - function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol]["${this.name}"]; - return Object.create(ctor.prototype); + function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol]["${this.name}"].prototype; + } + + return Object.create(proto); } `; @@ -1276,8 +1284,8 @@ class Interface { return wrapper; }; - exports.new = globalObject => { - ${this.isLegacyPlatformObj ? "let" : "const"} wrapper = makeWrapper(globalObject); + exports.new = (globalObject, newTarget) => { + ${this.isLegacyPlatformObj ? "let" : "const"} wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { diff --git a/test/__snapshots__/test.js.snap b/test/__snapshots__/test.js.snap index 0fa3e033..dc204966 100644 --- a/test/__snapshots__/test.js.snap +++ b/test/__snapshots__/test.js.snap @@ -196,9 +196,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -229,8 +237,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -468,9 +476,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairNoArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairNoArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -501,8 +517,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -678,9 +694,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -711,8 +735,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -865,9 +889,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueNoArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueNoArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -898,8 +930,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -1045,9 +1077,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterableWithReturn\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterableWithReturn\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -1078,8 +1118,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -1240,9 +1280,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'BufferSourceTypes'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"BufferSourceTypes\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"BufferSourceTypes\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -1273,8 +1321,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -1506,9 +1554,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'CEReactions'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"CEReactions\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"CEReactions\\"].prototype; + } + + return Object.create(proto); } function makeProxy(wrapper, globalObject) { @@ -1550,8 +1606,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -1992,9 +2048,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'DOMImplementation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"DOMImplementation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"DOMImplementation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -2025,8 +2089,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -2217,9 +2281,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'DOMRect'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"DOMRect\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"DOMRect\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -2250,8 +2322,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -2562,9 +2634,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'DictionaryConvert'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"DictionaryConvert\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"DictionaryConvert\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -2595,8 +2675,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -2689,9 +2769,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Enum'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Enum\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Enum\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -2722,8 +2810,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -2878,9 +2966,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'EventTarget'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"EventTarget\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"EventTarget\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -2911,8 +3007,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -3016,9 +3112,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Global'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Global\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Global\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -3148,8 +3252,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -3237,9 +3341,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'HTMLConstructor'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"HTMLConstructor\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"HTMLConstructor\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -3270,8 +3382,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -3339,9 +3451,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyLenientAttributes'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyLenientAttributes\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyLenientAttributes\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -3372,8 +3492,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -3535,9 +3655,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyNoInterfaceObject'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyNoInterfaceObject\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyNoInterfaceObject\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -3568,8 +3696,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -3667,9 +3795,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyUnforgeable'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeable\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeable\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -3798,8 +3934,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -3867,9 +4003,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyUnforgeableMap'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeableMap\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeableMap\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -3919,8 +4063,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -4167,9 +4311,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'MixedIn'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"MixedIn\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"MixedIn\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -4200,8 +4352,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -4424,9 +4576,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Overloads'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Overloads\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Overloads\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -4457,8 +4617,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -4836,9 +4996,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'PromiseTypes'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"PromiseTypes\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"PromiseTypes\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -4909,8 +5077,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -5078,9 +5246,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Reflect'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Reflect\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Reflect\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -5111,8 +5287,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -5369,9 +5545,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Replaceable'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Replaceable\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Replaceable\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -5402,8 +5586,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -5531,9 +5715,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'SeqAndRec'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"SeqAndRec\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"SeqAndRec\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -5564,8 +5756,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -5838,9 +6030,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Static'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Static\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Static\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -5871,8 +6071,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -5992,9 +6192,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Storage'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Storage\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Storage\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -6027,8 +6235,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -6376,9 +6584,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierAttribute'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierAttribute\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierAttribute\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -6409,8 +6625,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -6499,9 +6715,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierDefaultOperation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierDefaultOperation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierDefaultOperation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -6532,8 +6756,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -6613,9 +6837,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierNamedOperation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierNamedOperation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierNamedOperation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -6646,8 +6878,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -6739,9 +6971,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierOperation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierOperation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierOperation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -6772,8 +7012,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -6853,9 +7093,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'TypedefsAndUnions'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"TypedefsAndUnions\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"TypedefsAndUnions\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -6886,8 +7134,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -7402,9 +7650,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URL'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URL\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URL\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -7435,8 +7691,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -7898,9 +8154,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URLList'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLList\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLList\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -7933,8 +8197,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -8216,9 +8480,17 @@ exports.createDefaultIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLSearchParams\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLSearchParams\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -8249,8 +8521,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -8657,9 +8929,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URLSearchParamsCollection'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -8692,8 +8972,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -9016,9 +9296,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URLSearchParamsCollection2'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection2\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection2\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -9053,8 +9341,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -9340,9 +9628,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'UnderscoredProperties'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"UnderscoredProperties\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"UnderscoredProperties\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -9373,8 +9669,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -9533,9 +9829,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Unscopable'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Unscopable\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Unscopable\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -9566,8 +9870,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -9690,9 +9994,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Variadic'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Variadic\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Variadic\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -9723,8 +10035,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -9947,9 +10259,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'ZeroArgConstructor'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"ZeroArgConstructor\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"ZeroArgConstructor\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -9980,8 +10300,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -10145,9 +10465,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -10178,8 +10506,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -10417,9 +10745,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairNoArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterablePairNoArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -10450,8 +10786,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -10627,9 +10963,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -10660,8 +11004,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -10814,9 +11158,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueNoArgs\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterableValueNoArgs\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -10847,8 +11199,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -10994,9 +11346,17 @@ exports.createDefaultAsyncIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"AsyncIterableWithReturn\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"AsyncIterableWithReturn\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -11027,8 +11387,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -11189,9 +11549,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'BufferSourceTypes'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"BufferSourceTypes\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"BufferSourceTypes\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -11222,8 +11590,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -11454,9 +11822,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'CEReactions'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"CEReactions\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"CEReactions\\"].prototype; + } + + return Object.create(proto); } function makeProxy(wrapper, globalObject) { @@ -11498,8 +11874,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -11900,9 +12276,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'DOMImplementation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"DOMImplementation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"DOMImplementation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -11933,8 +12317,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -12125,9 +12509,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'DOMRect'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"DOMRect\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"DOMRect\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -12158,8 +12550,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -12470,9 +12862,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'DictionaryConvert'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"DictionaryConvert\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"DictionaryConvert\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -12503,8 +12903,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -12597,9 +12997,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Enum'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Enum\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Enum\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -12630,8 +13038,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -12786,9 +13194,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'EventTarget'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"EventTarget\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"EventTarget\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -12819,8 +13235,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -12924,9 +13340,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Global'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Global\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Global\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -13056,8 +13480,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -13144,9 +13568,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'HTMLConstructor'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"HTMLConstructor\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"HTMLConstructor\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -13177,8 +13609,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -13246,9 +13678,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyLenientAttributes'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyLenientAttributes\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyLenientAttributes\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -13279,8 +13719,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -13442,9 +13882,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyNoInterfaceObject'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyNoInterfaceObject\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyNoInterfaceObject\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -13475,8 +13923,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -13574,9 +14022,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyUnforgeable'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeable\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeable\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -13705,8 +14161,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -13774,9 +14230,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'LegacyUnforgeableMap'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeableMap\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"LegacyUnforgeableMap\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -13826,8 +14290,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -14074,9 +14538,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'MixedIn'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"MixedIn\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"MixedIn\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -14107,8 +14579,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -14331,9 +14803,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Overloads'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Overloads\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Overloads\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -14364,8 +14844,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -14743,9 +15223,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'PromiseTypes'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"PromiseTypes\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"PromiseTypes\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -14816,8 +15304,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -14984,9 +15472,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Reflect'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Reflect\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Reflect\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -15017,8 +15513,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -15261,9 +15757,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Replaceable'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Replaceable\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Replaceable\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -15294,8 +15798,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -15423,9 +15927,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'SeqAndRec'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"SeqAndRec\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"SeqAndRec\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -15456,8 +15968,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -15730,9 +16242,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Static'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Static\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Static\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -15763,8 +16283,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -15884,9 +16404,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Storage'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Storage\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Storage\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -15919,8 +16447,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -16268,9 +16796,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierAttribute'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierAttribute\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierAttribute\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -16301,8 +16837,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -16391,9 +16927,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierDefaultOperation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierDefaultOperation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierDefaultOperation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -16424,8 +16968,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -16505,9 +17049,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierNamedOperation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierNamedOperation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierNamedOperation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -16538,8 +17090,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -16631,9 +17183,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'StringifierOperation'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"StringifierOperation\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"StringifierOperation\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -16664,8 +17224,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -16745,9 +17305,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'TypedefsAndUnions'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"TypedefsAndUnions\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"TypedefsAndUnions\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -16778,8 +17346,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -17294,9 +17862,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URL'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URL\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URL\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -17327,8 +17903,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -17790,9 +18366,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URLList'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLList\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLList\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -17825,8 +18409,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -18108,9 +18692,17 @@ exports.createDefaultIterator = (globalObject, target, kind) => { return iterator; }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLSearchParams\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLSearchParams\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -18141,8 +18733,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -18549,9 +19141,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URLSearchParamsCollection'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -18584,8 +19184,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -18908,9 +19508,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'URLSearchParamsCollection2'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection2\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"URLSearchParamsCollection2\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -18945,8 +19553,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - let wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + let wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -19232,9 +19840,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'UnderscoredProperties'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"UnderscoredProperties\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"UnderscoredProperties\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -19265,8 +19881,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -19425,9 +20041,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Unscopable'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Unscopable\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Unscopable\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -19458,8 +20082,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -19582,9 +20206,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'Variadic'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"Variadic\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"Variadic\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -19615,8 +20247,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, { @@ -19839,9 +20471,17 @@ exports.convert = (value, { context = \\"The provided value\\" } = {}) => { throw new TypeError(\`\${context} is not of type 'ZeroArgConstructor'.\`); }; -function makeWrapper(globalObject) { - const ctor = globalObject[ctorRegistrySymbol][\\"ZeroArgConstructor\\"]; - return Object.create(ctor.prototype); +function makeWrapper(globalObject, newTarget) { + let proto; + if (newTarget !== undefined) { + proto = newTarget.prototype; + } + + if (!utils.isObject(proto)) { + proto = globalObject[ctorRegistrySymbol][\\"ZeroArgConstructor\\"].prototype; + } + + return Object.create(proto); } exports.create = (globalObject, constructorArgs, privateData) => { @@ -19872,8 +20512,8 @@ exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) return wrapper; }; -exports.new = globalObject => { - const wrapper = makeWrapper(globalObject); +exports.new = (globalObject, newTarget) => { + const wrapper = makeWrapper(globalObject, newTarget); exports._internalSetup(wrapper, globalObject); Object.defineProperty(wrapper, implSymbol, {