UNPKG

1.44 kBJavaScriptView Raw
1var _Map = require("@babel/runtime-corejs3/core-js/map");
2
3var _Object$create = require("@babel/runtime-corejs3/core-js/object/create");
4
5var getPrototypeOf = require("./getPrototypeOf.js");
6
7var setPrototypeOf = require("./setPrototypeOf.js");
8
9var isNativeFunction = require("./isNativeFunction.js");
10
11var construct = require("./construct.js");
12
13function _wrapNativeSuper(Class) {
14 var _cache = typeof _Map === "function" ? new _Map() : undefined;
15
16 module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
17 if (Class === null || !isNativeFunction(Class)) return Class;
18
19 if (typeof Class !== "function") {
20 throw new TypeError("Super expression must either be null or a function");
21 }
22
23 if (typeof _cache !== "undefined") {
24 if (_cache.has(Class)) return _cache.get(Class);
25
26 _cache.set(Class, Wrapper);
27 }
28
29 function Wrapper() {
30 return construct(Class, arguments, getPrototypeOf(this).constructor);
31 }
32
33 Wrapper.prototype = _Object$create(Class.prototype, {
34 constructor: {
35 value: Wrapper,
36 enumerable: false,
37 writable: true,
38 configurable: true
39 }
40 });
41 return setPrototypeOf(Wrapper, Class);
42 }, module.exports.__esModule = true, module.exports["default"] = module.exports;
43 return _wrapNativeSuper(Class);
44}
45
46module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\No newline at end of file