38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
var getPrototypeOf = require("./getPrototypeOf"),
|
|
setPrototypeOf = require("./setPrototypeOf"),
|
|
isNativeFunction = require("./isNativeFunction"),
|
|
construct = require("./construct");
|
|
function _wrapNativeSuper(t) {
|
|
var e = "function" == typeof Map ? new Map() : void 0;
|
|
return (
|
|
(module.exports = _wrapNativeSuper =
|
|
function (t) {
|
|
if (null === t || !isNativeFunction(t)) return t;
|
|
if ("function" != typeof t)
|
|
throw new TypeError(
|
|
"Super expression must either be null or a function"
|
|
);
|
|
if (void 0 !== e) {
|
|
if (e.has(t)) return e.get(t);
|
|
e.set(t, r);
|
|
}
|
|
function r() {
|
|
return construct(t, arguments, getPrototypeOf(this).constructor);
|
|
}
|
|
return (
|
|
(r.prototype = Object.create(t.prototype, {
|
|
constructor: {
|
|
value: r,
|
|
enumerable: !1,
|
|
writable: !0,
|
|
configurable: !0,
|
|
},
|
|
})),
|
|
setPrototypeOf(r, t)
|
|
);
|
|
}),
|
|
_wrapNativeSuper(t)
|
|
);
|
|
}
|
|
module.exports = _wrapNativeSuper;
|