d99d49ce46dd268b60d1a1bf49bc0d640b3aee09f899ce2a4c96b8bc6b0e760b8aad2fe1f55a2d38deb346d5eca96c3448e601d24035096485b03fe70ebdc0 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = _wrapNativeSuper;
  6. var _getPrototypeOf = require("./getPrototypeOf.js");
  7. var _setPrototypeOf = require("./setPrototypeOf.js");
  8. var _isNativeFunction = require("./isNativeFunction.js");
  9. var _construct = require("./construct.js");
  10. function _wrapNativeSuper(Class) {
  11. var _cache = typeof Map === "function" ? new Map() : undefined;
  12. exports.default = _wrapNativeSuper = function _wrapNativeSuper(Class) {
  13. if (Class === null || !(0, _isNativeFunction.default)(Class)) return Class;
  14. if (typeof Class !== "function") {
  15. throw new TypeError("Super expression must either be null or a function");
  16. }
  17. if (_cache !== undefined) {
  18. if (_cache.has(Class)) return _cache.get(Class);
  19. _cache.set(Class, Wrapper);
  20. }
  21. function Wrapper() {
  22. return (0, _construct.default)(Class, arguments, (0, _getPrototypeOf.default)(this).constructor);
  23. }
  24. Wrapper.prototype = Object.create(Class.prototype, {
  25. constructor: {
  26. value: Wrapper,
  27. enumerable: false,
  28. writable: true,
  29. configurable: true
  30. }
  31. });
  32. return (0, _setPrototypeOf.default)(Wrapper, Class);
  33. };
  34. return _wrapNativeSuper(Class);
  35. }
  36. //# sourceMappingURL=wrapNativeSuper.js.map