UNPKG

1.23 kBJavaScriptView Raw
1var _Object$create = require("../core-js/object/create");
2
3var _Map = require("../core-js/map");
4
5var getPrototypeOf = require("./getPrototypeOf");
6
7var setPrototypeOf = require("./setPrototypeOf");
8
9var isNativeFunction = require("./isNativeFunction");
10
11var construct = require("./construct");
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 };
43
44 return _wrapNativeSuper(Class);
45}
46
47module.exports = _wrapNativeSuper;
\No newline at end of file