27 lines
984 B
JavaScript
27 lines
984 B
JavaScript
|
import getPrototypeOf from "./getPrototypeOf.js";
|
||
|
import setPrototypeOf from "./setPrototypeOf.js";
|
||
|
import isNativeFunction from "./isNativeFunction.js";
|
||
|
import construct from "./construct.js";
|
||
|
function _wrapNativeSuper(t) {
|
||
|
var r = "function" == typeof Map ? new Map() : void 0;
|
||
|
return _wrapNativeSuper = function _wrapNativeSuper(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 !== r) {
|
||
|
if (r.has(t)) return r.get(t);
|
||
|
r.set(t, Wrapper);
|
||
|
}
|
||
|
function Wrapper() {
|
||
|
return construct(t, arguments, getPrototypeOf(this).constructor);
|
||
|
}
|
||
|
return Wrapper.prototype = Object.create(t.prototype, {
|
||
|
constructor: {
|
||
|
value: Wrapper,
|
||
|
enumerable: !1,
|
||
|
writable: !0,
|
||
|
configurable: !0
|
||
|
}
|
||
|
}), setPrototypeOf(Wrapper, t);
|
||
|
}, _wrapNativeSuper(t);
|
||
|
}
|
||
|
export { _wrapNativeSuper as default };
|