1816 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			1816 lines
		
	
	
		
			55 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.default = void 0; | ||
|  | 
 | ||
|  | function _template() { | ||
|  |   const data = _interopRequireDefault(require("@babel/template")); | ||
|  | 
 | ||
|  |   _template = function () { | ||
|  |     return data; | ||
|  |   }; | ||
|  | 
 | ||
|  |   return data; | ||
|  | } | ||
|  | 
 | ||
|  | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
|  | 
 | ||
|  | const helpers = Object.create(null); | ||
|  | var _default = helpers; | ||
|  | exports.default = _default; | ||
|  | 
 | ||
|  | const helper = minVersion => tpl => ({ | ||
|  |   minVersion, | ||
|  |   ast: () => _template().default.program.ast(tpl) | ||
|  | }); | ||
|  | 
 | ||
|  | helpers.typeof = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _typeof(obj) { | ||
|  |     if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { | ||
|  |       _typeof = function (obj) { return typeof obj; }; | ||
|  |     } else { | ||
|  |       _typeof = function (obj) { | ||
|  |         return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype | ||
|  |           ? "symbol" | ||
|  |           : typeof obj; | ||
|  |       }; | ||
|  |     } | ||
|  | 
 | ||
|  |     return _typeof(obj); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.jsx = helper("7.0.0-beta.0")`
 | ||
|  |   var REACT_ELEMENT_TYPE; | ||
|  | 
 | ||
|  |   export default function _createRawReactElement(type, props, key, children) { | ||
|  |     if (!REACT_ELEMENT_TYPE) { | ||
|  |       REACT_ELEMENT_TYPE = ( | ||
|  |         typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") | ||
|  |       ) || 0xeac7; | ||
|  |     } | ||
|  | 
 | ||
|  |     var defaultProps = type && type.defaultProps; | ||
|  |     var childrenLength = arguments.length - 3; | ||
|  | 
 | ||
|  |     if (!props && childrenLength !== 0) { | ||
|  |       // If we're going to assign props.children, we create a new object now
 | ||
|  |       // to avoid mutating defaultProps.
 | ||
|  |       props = { | ||
|  |         children: void 0, | ||
|  |       }; | ||
|  |     } | ||
|  |     if (props && defaultProps) { | ||
|  |       for (var propName in defaultProps) { | ||
|  |         if (props[propName] === void 0) { | ||
|  |           props[propName] = defaultProps[propName]; | ||
|  |         } | ||
|  |       } | ||
|  |     } else if (!props) { | ||
|  |       props = defaultProps || {}; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (childrenLength === 1) { | ||
|  |       props.children = children; | ||
|  |     } else if (childrenLength > 1) { | ||
|  |       var childArray = new Array(childrenLength); | ||
|  |       for (var i = 0; i < childrenLength; i++) { | ||
|  |         childArray[i] = arguments[i + 3]; | ||
|  |       } | ||
|  |       props.children = childArray; | ||
|  |     } | ||
|  | 
 | ||
|  |     return { | ||
|  |       $$typeof: REACT_ELEMENT_TYPE, | ||
|  |       type: type, | ||
|  |       key: key === undefined ? null : '' + key, | ||
|  |       ref: null, | ||
|  |       props: props, | ||
|  |       _owner: null, | ||
|  |     }; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.asyncIterator = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _asyncIterator(iterable) { | ||
|  |     var method | ||
|  |     if (typeof Symbol !== "undefined") { | ||
|  |       if (Symbol.asyncIterator) { | ||
|  |         method = iterable[Symbol.asyncIterator] | ||
|  |         if (method != null) return method.call(iterable); | ||
|  |       } | ||
|  |       if (Symbol.iterator) { | ||
|  |         method = iterable[Symbol.iterator] | ||
|  |         if (method != null) return method.call(iterable); | ||
|  |       } | ||
|  |     } | ||
|  |     throw new TypeError("Object is not async iterable"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.AwaitValue = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _AwaitValue(value) { | ||
|  |     this.wrapped = value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.AsyncGenerator = helper("7.0.0-beta.0")`
 | ||
|  |   import AwaitValue from "AwaitValue"; | ||
|  | 
 | ||
|  |   export default function AsyncGenerator(gen) { | ||
|  |     var front, back; | ||
|  | 
 | ||
|  |     function send(key, arg) { | ||
|  |       return new Promise(function (resolve, reject) { | ||
|  |         var request = { | ||
|  |           key: key, | ||
|  |           arg: arg, | ||
|  |           resolve: resolve, | ||
|  |           reject: reject, | ||
|  |           next: null, | ||
|  |         }; | ||
|  | 
 | ||
|  |         if (back) { | ||
|  |           back = back.next = request; | ||
|  |         } else { | ||
|  |           front = back = request; | ||
|  |           resume(key, arg); | ||
|  |         } | ||
|  |       }); | ||
|  |     } | ||
|  | 
 | ||
|  |     function resume(key, arg) { | ||
|  |       try { | ||
|  |         var result = gen[key](arg) | ||
|  |         var value = result.value; | ||
|  |         var wrappedAwait = value instanceof AwaitValue; | ||
|  | 
 | ||
|  |         Promise.resolve(wrappedAwait ? value.wrapped : value).then( | ||
|  |           function (arg) { | ||
|  |             if (wrappedAwait) { | ||
|  |               resume("next", arg); | ||
|  |               return | ||
|  |             } | ||
|  | 
 | ||
|  |             settle(result.done ? "return" : "normal", arg); | ||
|  |           }, | ||
|  |           function (err) { resume("throw", err); }); | ||
|  |       } catch (err) { | ||
|  |         settle("throw", err); | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     function settle(type, value) { | ||
|  |       switch (type) { | ||
|  |         case "return": | ||
|  |           front.resolve({ value: value, done: true }); | ||
|  |           break; | ||
|  |         case "throw": | ||
|  |           front.reject(value); | ||
|  |           break; | ||
|  |         default: | ||
|  |           front.resolve({ value: value, done: false }); | ||
|  |           break; | ||
|  |       } | ||
|  | 
 | ||
|  |       front = front.next; | ||
|  |       if (front) { | ||
|  |         resume(front.key, front.arg); | ||
|  |       } else { | ||
|  |         back = null; | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     this._invoke = send; | ||
|  | 
 | ||
|  |     // Hide "return" method if generator return is not supported
 | ||
|  |     if (typeof gen.return !== "function") { | ||
|  |       this.return = undefined; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   if (typeof Symbol === "function" && Symbol.asyncIterator) { | ||
|  |     AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; | ||
|  |   } | ||
|  | 
 | ||
|  |   AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; | ||
|  |   AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; | ||
|  |   AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; | ||
|  | `;
 | ||
|  | helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")`
 | ||
|  |   import AsyncGenerator from "AsyncGenerator"; | ||
|  | 
 | ||
|  |   export default function _wrapAsyncGenerator(fn) { | ||
|  |     return function () { | ||
|  |       return new AsyncGenerator(fn.apply(this, arguments)); | ||
|  |     }; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.awaitAsyncGenerator = helper("7.0.0-beta.0")`
 | ||
|  |   import AwaitValue from "AwaitValue"; | ||
|  | 
 | ||
|  |   export default function _awaitAsyncGenerator(value) { | ||
|  |     return new AwaitValue(value); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.asyncGeneratorDelegate = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _asyncGeneratorDelegate(inner, awaitWrap) { | ||
|  |     var iter = {}, waiting = false; | ||
|  | 
 | ||
|  |     function pump(key, value) { | ||
|  |       waiting = true; | ||
|  |       value = new Promise(function (resolve) { resolve(inner[key](value)); }); | ||
|  |       return { done: false, value: awaitWrap(value) }; | ||
|  |     }; | ||
|  | 
 | ||
|  |     if (typeof Symbol === "function" && Symbol.iterator) { | ||
|  |       iter[Symbol.iterator] = function () { return this; }; | ||
|  |     } | ||
|  | 
 | ||
|  |     iter.next = function (value) { | ||
|  |       if (waiting) { | ||
|  |         waiting = false; | ||
|  |         return value; | ||
|  |       } | ||
|  |       return pump("next", value); | ||
|  |     }; | ||
|  | 
 | ||
|  |     if (typeof inner.throw === "function") { | ||
|  |       iter.throw = function (value) { | ||
|  |         if (waiting) { | ||
|  |           waiting = false; | ||
|  |           throw value; | ||
|  |         } | ||
|  |         return pump("throw", value); | ||
|  |       }; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (typeof inner.return === "function") { | ||
|  |       iter.return = function (value) { | ||
|  |         return pump("return", value); | ||
|  |       }; | ||
|  |     } | ||
|  | 
 | ||
|  |     return iter; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.asyncToGenerator = helper("7.0.0-beta.0")`
 | ||
|  |   function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { | ||
|  |     try { | ||
|  |       var info = gen[key](arg); | ||
|  |       var value = info.value; | ||
|  |     } catch (error) { | ||
|  |       reject(error); | ||
|  |       return; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (info.done) { | ||
|  |       resolve(value); | ||
|  |     } else { | ||
|  |       Promise.resolve(value).then(_next, _throw); | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   export default function _asyncToGenerator(fn) { | ||
|  |     return function () { | ||
|  |       var self = this, args = arguments; | ||
|  |       return new Promise(function (resolve, reject) { | ||
|  |         var gen = fn.apply(self, args); | ||
|  |         function _next(value) { | ||
|  |           asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); | ||
|  |         } | ||
|  |         function _throw(err) { | ||
|  |           asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); | ||
|  |         } | ||
|  | 
 | ||
|  |         _next(undefined); | ||
|  |       }); | ||
|  |     }; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classCallCheck = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _classCallCheck(instance, Constructor) { | ||
|  |     if (!(instance instanceof Constructor)) { | ||
|  |       throw new TypeError("Cannot call a class as a function"); | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.createClass = helper("7.0.0-beta.0")`
 | ||
|  |   function _defineProperties(target, props) { | ||
|  |     for (var i = 0; i < props.length; i ++) { | ||
|  |       var descriptor = props[i]; | ||
|  |       descriptor.enumerable = descriptor.enumerable || false; | ||
|  |       descriptor.configurable = true; | ||
|  |       if ("value" in descriptor) descriptor.writable = true; | ||
|  |       Object.defineProperty(target, descriptor.key, descriptor); | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   export default function _createClass(Constructor, protoProps, staticProps) { | ||
|  |     if (protoProps) _defineProperties(Constructor.prototype, protoProps); | ||
|  |     if (staticProps) _defineProperties(Constructor, staticProps); | ||
|  |     return Constructor; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.defineEnumerableProperties = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _defineEnumerableProperties(obj, descs) { | ||
|  |     for (var key in descs) { | ||
|  |       var desc = descs[key]; | ||
|  |       desc.configurable = desc.enumerable = true; | ||
|  |       if ("value" in desc) desc.writable = true; | ||
|  |       Object.defineProperty(obj, key, desc); | ||
|  |     } | ||
|  | 
 | ||
|  |     // Symbols are not enumerated over by for-in loops. If native
 | ||
|  |     // Symbols are available, fetch all of the descs object's own
 | ||
|  |     // symbol properties and define them on our target object too.
 | ||
|  |     if (Object.getOwnPropertySymbols) { | ||
|  |       var objectSymbols = Object.getOwnPropertySymbols(descs); | ||
|  |       for (var i = 0; i < objectSymbols.length; i++) { | ||
|  |         var sym = objectSymbols[i]; | ||
|  |         var desc = descs[sym]; | ||
|  |         desc.configurable = desc.enumerable = true; | ||
|  |         if ("value" in desc) desc.writable = true; | ||
|  |         Object.defineProperty(obj, sym, desc); | ||
|  |       } | ||
|  |     } | ||
|  |     return obj; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.defaults = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _defaults(obj, defaults) { | ||
|  |     var keys = Object.getOwnPropertyNames(defaults); | ||
|  |     for (var i = 0; i < keys.length; i++) { | ||
|  |       var key = keys[i]; | ||
|  |       var value = Object.getOwnPropertyDescriptor(defaults, key); | ||
|  |       if (value && value.configurable && obj[key] === undefined) { | ||
|  |         Object.defineProperty(obj, key, value); | ||
|  |       } | ||
|  |     } | ||
|  |     return obj; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.defineProperty = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _defineProperty(obj, key, value) { | ||
|  |     // Shortcircuit the slow defineProperty path when possible.
 | ||
|  |     // We are trying to avoid issues where setters defined on the
 | ||
|  |     // prototype cause side effects under the fast path of simple
 | ||
|  |     // assignment. By checking for existence of the property with
 | ||
|  |     // the in operator, we can optimize most of this overhead away.
 | ||
|  |     if (key in obj) { | ||
|  |       Object.defineProperty(obj, key, { | ||
|  |         value: value, | ||
|  |         enumerable: true, | ||
|  |         configurable: true, | ||
|  |         writable: true | ||
|  |       }); | ||
|  |     } else { | ||
|  |       obj[key] = value; | ||
|  |     } | ||
|  |     return obj; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.extends = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _extends() { | ||
|  |     _extends = Object.assign || function (target) { | ||
|  |       for (var i = 1; i < arguments.length; i++) { | ||
|  |         var source = arguments[i]; | ||
|  |         for (var key in source) { | ||
|  |           if (Object.prototype.hasOwnProperty.call(source, key)) { | ||
|  |             target[key] = source[key]; | ||
|  |           } | ||
|  |         } | ||
|  |       } | ||
|  |       return target; | ||
|  |     }; | ||
|  | 
 | ||
|  |     return _extends.apply(this, arguments); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.objectSpread = helper("7.0.0-beta.0")`
 | ||
|  |   import defineProperty from "defineProperty"; | ||
|  | 
 | ||
|  |   export default function _objectSpread(target) { | ||
|  |     for (var i = 1; i < arguments.length; i++) { | ||
|  |       var source = (arguments[i] != null) ? arguments[i] : {}; | ||
|  |       var ownKeys = Object.keys(source); | ||
|  |       if (typeof Object.getOwnPropertySymbols === 'function') { | ||
|  |         ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { | ||
|  |           return Object.getOwnPropertyDescriptor(source, sym).enumerable; | ||
|  |         })); | ||
|  |       } | ||
|  |       ownKeys.forEach(function(key) { | ||
|  |         defineProperty(target, key, source[key]); | ||
|  |       }); | ||
|  |     } | ||
|  |     return target; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.inherits = helper("7.0.0-beta.0")`
 | ||
|  |   import setPrototypeOf from "setPrototypeOf"; | ||
|  | 
 | ||
|  |   export default function _inherits(subClass, superClass) { | ||
|  |     if (typeof superClass !== "function" && superClass !== null) { | ||
|  |       throw new TypeError("Super expression must either be null or a function"); | ||
|  |     } | ||
|  |     subClass.prototype = Object.create(superClass && superClass.prototype, { | ||
|  |       constructor: { | ||
|  |         value: subClass, | ||
|  |         writable: true, | ||
|  |         configurable: true | ||
|  |       } | ||
|  |     }); | ||
|  |     if (superClass) setPrototypeOf(subClass, superClass); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.inheritsLoose = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _inheritsLoose(subClass, superClass) { | ||
|  |     subClass.prototype = Object.create(superClass.prototype); | ||
|  |     subClass.prototype.constructor = subClass; | ||
|  |     subClass.__proto__ = superClass; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.getPrototypeOf = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _getPrototypeOf(o) { | ||
|  |     _getPrototypeOf = Object.setPrototypeOf | ||
|  |       ? Object.getPrototypeOf | ||
|  |       : function _getPrototypeOf(o) { | ||
|  |           return o.__proto__ || Object.getPrototypeOf(o); | ||
|  |         }; | ||
|  |     return _getPrototypeOf(o); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.setPrototypeOf = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _setPrototypeOf(o, p) { | ||
|  |     _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { | ||
|  |       o.__proto__ = p; | ||
|  |       return o; | ||
|  |     }; | ||
|  |     return _setPrototypeOf(o, p); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.construct = helper("7.0.0-beta.0")`
 | ||
|  |   import setPrototypeOf from "setPrototypeOf"; | ||
|  | 
 | ||
|  |   function isNativeReflectConstruct() { | ||
|  |     if (typeof Reflect === "undefined" || !Reflect.construct) return false; | ||
|  | 
 | ||
|  |     // core-js@3
 | ||
|  |     if (Reflect.construct.sham) return false; | ||
|  | 
 | ||
|  |     // Proxy can't be polyfilled. Every browser implemented
 | ||
|  |     // proxies before or at the same time as Reflect.construct,
 | ||
|  |     // so if they support Proxy they also support Reflect.construct.
 | ||
|  |     if (typeof Proxy === "function") return true; | ||
|  | 
 | ||
|  |     // Since Reflect.construct can't be properly polyfilled, some
 | ||
|  |     // implementations (e.g. core-js@2) don't set the correct internal slots.
 | ||
|  |     // Those polyfills don't allow us to subclass built-ins, so we need to
 | ||
|  |     // use our fallback implementation.
 | ||
|  |     try { | ||
|  |       // If the internal slots aren't set, this throws an error similar to
 | ||
|  |       //   TypeError: this is not a Date object.
 | ||
|  |       Date.prototype.toString.call(Reflect.construct(Date, [], function() {})); | ||
|  |       return true; | ||
|  |     } catch (e) { | ||
|  |       return false; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   export default function _construct(Parent, args, Class) { | ||
|  |     if (isNativeReflectConstruct()) { | ||
|  |       _construct = Reflect.construct; | ||
|  |     } else { | ||
|  |       // NOTE: If Parent !== Class, the correct __proto__ is set *after*
 | ||
|  |       //       calling the constructor.
 | ||
|  |       _construct = function _construct(Parent, args, Class) { | ||
|  |         var a = [null]; | ||
|  |         a.push.apply(a, args); | ||
|  |         var Constructor = Function.bind.apply(Parent, a); | ||
|  |         var instance = new Constructor(); | ||
|  |         if (Class) setPrototypeOf(instance, Class.prototype); | ||
|  |         return instance; | ||
|  |       }; | ||
|  |     } | ||
|  |     // Avoid issues with Class being present but undefined when it wasn't
 | ||
|  |     // present in the original call.
 | ||
|  |     return _construct.apply(null, arguments); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.isNativeFunction = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _isNativeFunction(fn) { | ||
|  |     // Note: This function returns "true" for core-js functions.
 | ||
|  |     return Function.toString.call(fn).indexOf("[native code]") !== -1; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.wrapNativeSuper = helper("7.0.0-beta.0")`
 | ||
|  |   import getPrototypeOf from "getPrototypeOf"; | ||
|  |   import setPrototypeOf from "setPrototypeOf"; | ||
|  |   import isNativeFunction from "isNativeFunction"; | ||
|  |   import construct from "construct"; | ||
|  | 
 | ||
|  |   export default function _wrapNativeSuper(Class) { | ||
|  |     var _cache = typeof Map === "function" ? new Map() : undefined; | ||
|  | 
 | ||
|  |     _wrapNativeSuper = function _wrapNativeSuper(Class) { | ||
|  |       if (Class === null || !isNativeFunction(Class)) return Class; | ||
|  |       if (typeof Class !== "function") { | ||
|  |         throw new TypeError("Super expression must either be null or a function"); | ||
|  |       } | ||
|  |       if (typeof _cache !== "undefined") { | ||
|  |         if (_cache.has(Class)) return _cache.get(Class); | ||
|  |         _cache.set(Class, Wrapper); | ||
|  |       } | ||
|  |       function Wrapper() { | ||
|  |         return construct(Class, arguments, getPrototypeOf(this).constructor) | ||
|  |       } | ||
|  |       Wrapper.prototype = Object.create(Class.prototype, { | ||
|  |         constructor: { | ||
|  |           value: Wrapper, | ||
|  |           enumerable: false, | ||
|  |           writable: true, | ||
|  |           configurable: true, | ||
|  |         } | ||
|  |       }); | ||
|  | 
 | ||
|  |       return setPrototypeOf(Wrapper, Class); | ||
|  |     } | ||
|  | 
 | ||
|  |     return _wrapNativeSuper(Class) | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.instanceof = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _instanceof(left, right) { | ||
|  |     if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { | ||
|  |       return right[Symbol.hasInstance](left); | ||
|  |     } else { | ||
|  |       return left instanceof right; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.interopRequireDefault = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _interopRequireDefault(obj) { | ||
|  |     return obj && obj.__esModule ? obj : { default: obj }; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.interopRequireWildcard = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _interopRequireWildcard(obj) { | ||
|  |     if (obj && obj.__esModule) { | ||
|  |       return obj; | ||
|  |     } else { | ||
|  |       var newObj = {}; | ||
|  |       if (obj != null) { | ||
|  |         for (var key in obj) { | ||
|  |           if (Object.prototype.hasOwnProperty.call(obj, key)) { | ||
|  |             var desc = Object.defineProperty && Object.getOwnPropertyDescriptor | ||
|  |               ? Object.getOwnPropertyDescriptor(obj, key) | ||
|  |               : {}; | ||
|  |             if (desc.get || desc.set) { | ||
|  |               Object.defineProperty(newObj, key, desc); | ||
|  |             } else { | ||
|  |               newObj[key] = obj[key]; | ||
|  |             } | ||
|  |           } | ||
|  |         } | ||
|  |       } | ||
|  |       newObj.default = obj; | ||
|  |       return newObj; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.newArrowCheck = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _newArrowCheck(innerThis, boundThis) { | ||
|  |     if (innerThis !== boundThis) { | ||
|  |       throw new TypeError("Cannot instantiate an arrow function"); | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.objectDestructuringEmpty = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _objectDestructuringEmpty(obj) { | ||
|  |     if (obj == null) throw new TypeError("Cannot destructure undefined"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.objectWithoutPropertiesLoose = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _objectWithoutPropertiesLoose(source, excluded) { | ||
|  |     if (source == null) return {}; | ||
|  | 
 | ||
|  |     var target = {}; | ||
|  |     var sourceKeys = Object.keys(source); | ||
|  |     var key, i; | ||
|  | 
 | ||
|  |     for (i = 0; i < sourceKeys.length; i++) { | ||
|  |       key = sourceKeys[i]; | ||
|  |       if (excluded.indexOf(key) >= 0) continue; | ||
|  |       target[key] = source[key]; | ||
|  |     } | ||
|  | 
 | ||
|  |     return target; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.objectWithoutProperties = helper("7.0.0-beta.0")`
 | ||
|  |   import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose"; | ||
|  | 
 | ||
|  |   export default function _objectWithoutProperties(source, excluded) { | ||
|  |     if (source == null) return {}; | ||
|  | 
 | ||
|  |     var target = objectWithoutPropertiesLoose(source, excluded); | ||
|  |     var key, i; | ||
|  | 
 | ||
|  |     if (Object.getOwnPropertySymbols) { | ||
|  |       var sourceSymbolKeys = Object.getOwnPropertySymbols(source); | ||
|  |       for (i = 0; i < sourceSymbolKeys.length; i++) { | ||
|  |         key = sourceSymbolKeys[i]; | ||
|  |         if (excluded.indexOf(key) >= 0) continue; | ||
|  |         if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; | ||
|  |         target[key] = source[key]; | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     return target; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.assertThisInitialized = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _assertThisInitialized(self) { | ||
|  |     if (self === void 0) { | ||
|  |       throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); | ||
|  |     } | ||
|  |     return self; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.possibleConstructorReturn = helper("7.0.0-beta.0")`
 | ||
|  |   import assertThisInitialized from "assertThisInitialized"; | ||
|  | 
 | ||
|  |   export default function _possibleConstructorReturn(self, call) { | ||
|  |     if (call && (typeof call === "object" || typeof call === "function")) { | ||
|  |       return call; | ||
|  |     } | ||
|  |     return assertThisInitialized(self); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.superPropBase = helper("7.0.0-beta.0")`
 | ||
|  |   import getPrototypeOf from "getPrototypeOf"; | ||
|  | 
 | ||
|  |   export default function _superPropBase(object, property) { | ||
|  |     // Yes, this throws if object is null to being with, that's on purpose.
 | ||
|  |     while (!Object.prototype.hasOwnProperty.call(object, property)) { | ||
|  |       object = getPrototypeOf(object); | ||
|  |       if (object === null) break; | ||
|  |     } | ||
|  |     return object; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.get = helper("7.0.0-beta.0")`
 | ||
|  |   import getPrototypeOf from "getPrototypeOf"; | ||
|  |   import superPropBase from "superPropBase"; | ||
|  | 
 | ||
|  |   export default function _get(target, property, receiver) { | ||
|  |     if (typeof Reflect !== "undefined" && Reflect.get) { | ||
|  |       _get = Reflect.get; | ||
|  |     } else { | ||
|  |       _get = function _get(target, property, receiver) { | ||
|  |         var base = superPropBase(target, property); | ||
|  | 
 | ||
|  |         if (!base) return; | ||
|  | 
 | ||
|  |         var desc = Object.getOwnPropertyDescriptor(base, property); | ||
|  |         if (desc.get) { | ||
|  |           return desc.get.call(receiver); | ||
|  |         } | ||
|  | 
 | ||
|  |         return desc.value; | ||
|  |       }; | ||
|  |     } | ||
|  |     return _get(target, property, receiver || target); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.set = helper("7.0.0-beta.0")`
 | ||
|  |   import getPrototypeOf from "getPrototypeOf"; | ||
|  |   import superPropBase from "superPropBase"; | ||
|  |   import defineProperty from "defineProperty"; | ||
|  | 
 | ||
|  |   function set(target, property, value, receiver) { | ||
|  |     if (typeof Reflect !== "undefined" && Reflect.set) { | ||
|  |       set = Reflect.set; | ||
|  |     } else { | ||
|  |       set = function set(target, property, value, receiver) { | ||
|  |         var base = superPropBase(target, property); | ||
|  |         var desc; | ||
|  | 
 | ||
|  |         if (base) { | ||
|  |           desc = Object.getOwnPropertyDescriptor(base, property); | ||
|  |           if (desc.set) { | ||
|  |             desc.set.call(receiver, value); | ||
|  |             return true; | ||
|  |           } else if (!desc.writable) { | ||
|  |             // Both getter and non-writable fall into this.
 | ||
|  |             return false; | ||
|  |           } | ||
|  |         } | ||
|  | 
 | ||
|  |         // Without a super that defines the property, spec boils down to
 | ||
|  |         // "define on receiver" for some reason.
 | ||
|  |         desc = Object.getOwnPropertyDescriptor(receiver, property); | ||
|  |         if (desc) { | ||
|  |           if (!desc.writable) { | ||
|  |             // Setter, getter, and non-writable fall into this.
 | ||
|  |             return false; | ||
|  |           } | ||
|  | 
 | ||
|  |           desc.value = value; | ||
|  |           Object.defineProperty(receiver, property, desc); | ||
|  |         } else { | ||
|  |           // Avoid setters that may be defined on Sub's prototype, but not on
 | ||
|  |           // the instance.
 | ||
|  |           defineProperty(receiver, property, value); | ||
|  |         } | ||
|  | 
 | ||
|  |         return true; | ||
|  |       }; | ||
|  |     } | ||
|  | 
 | ||
|  |     return set(target, property, value, receiver); | ||
|  |   } | ||
|  | 
 | ||
|  |   export default function _set(target, property, value, receiver, isStrict) { | ||
|  |     var s = set(target, property, value, receiver || target); | ||
|  |     if (!s && isStrict) { | ||
|  |       throw new Error('failed to set property'); | ||
|  |     } | ||
|  | 
 | ||
|  |     return value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.taggedTemplateLiteral = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _taggedTemplateLiteral(strings, raw) { | ||
|  |     if (!raw) { raw = strings.slice(0); } | ||
|  |     return Object.freeze(Object.defineProperties(strings, { | ||
|  |         raw: { value: Object.freeze(raw) } | ||
|  |     })); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.taggedTemplateLiteralLoose = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _taggedTemplateLiteralLoose(strings, raw) { | ||
|  |     if (!raw) { raw = strings.slice(0); } | ||
|  |     strings.raw = raw; | ||
|  |     return strings; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.temporalRef = helper("7.0.0-beta.0")`
 | ||
|  |   import undef from "temporalUndefined"; | ||
|  | 
 | ||
|  |   export default function _temporalRef(val, name) { | ||
|  |     if (val === undef) { | ||
|  |       throw new ReferenceError(name + " is not defined - temporal dead zone"); | ||
|  |     } else { | ||
|  |       return val; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.readOnlyError = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _readOnlyError(name) { | ||
|  |     throw new Error("\\"" + name + "\\" is read-only"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classNameTDZError = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _classNameTDZError(name) { | ||
|  |     throw new Error("Class \\"" + name + "\\" cannot be referenced in computed property keys."); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.temporalUndefined = helper("7.0.0-beta.0")`
 | ||
|  |   export default {}; | ||
|  | `;
 | ||
|  | helpers.slicedToArray = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithHoles from "arrayWithHoles"; | ||
|  |   import iterableToArrayLimit from "iterableToArrayLimit"; | ||
|  |   import nonIterableRest from "nonIterableRest"; | ||
|  | 
 | ||
|  |   export default function _slicedToArray(arr, i) { | ||
|  |     return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.slicedToArrayLoose = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithHoles from "arrayWithHoles"; | ||
|  |   import iterableToArrayLimitLoose from "iterableToArrayLimitLoose"; | ||
|  |   import nonIterableRest from "nonIterableRest"; | ||
|  | 
 | ||
|  |   export default function _slicedToArrayLoose(arr, i) { | ||
|  |     return arrayWithHoles(arr) || iterableToArrayLimitLoose(arr, i) || nonIterableRest(); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.toArray = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithHoles from "arrayWithHoles"; | ||
|  |   import iterableToArray from "iterableToArray"; | ||
|  |   import nonIterableRest from "nonIterableRest"; | ||
|  | 
 | ||
|  |   export default function _toArray(arr) { | ||
|  |     return arrayWithHoles(arr) || iterableToArray(arr) || nonIterableRest(); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.toConsumableArray = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithoutHoles from "arrayWithoutHoles"; | ||
|  |   import iterableToArray from "iterableToArray"; | ||
|  |   import nonIterableSpread from "nonIterableSpread"; | ||
|  | 
 | ||
|  |   export default function _toConsumableArray(arr) { | ||
|  |     return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.arrayWithoutHoles = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _arrayWithoutHoles(arr) { | ||
|  |     if (Array.isArray(arr)) { | ||
|  |       for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; | ||
|  |       return arr2; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.arrayWithHoles = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _arrayWithHoles(arr) { | ||
|  |     if (Array.isArray(arr)) return arr; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.iterableToArray = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _iterableToArray(iter) { | ||
|  |     if ( | ||
|  |       Symbol.iterator in Object(iter) || | ||
|  |       Object.prototype.toString.call(iter) === "[object Arguments]" | ||
|  |     ) return Array.from(iter); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.iterableToArrayLimit = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _iterableToArrayLimit(arr, i) { | ||
|  |     // this is an expanded form of \`for...of\` that properly supports abrupt completions of
 | ||
|  |     // iterators etc. variable names have been minimised to reduce the size of this massive
 | ||
|  |     // helper. sometimes spec compliancy is annoying :(
 | ||
|  |     //
 | ||
|  |     // _n = _iteratorNormalCompletion
 | ||
|  |     // _d = _didIteratorError
 | ||
|  |     // _e = _iteratorError
 | ||
|  |     // _i = _iterator
 | ||
|  |     // _s = _step
 | ||
|  | 
 | ||
|  |     var _arr = []; | ||
|  |     var _n = true; | ||
|  |     var _d = false; | ||
|  |     var _e = undefined; | ||
|  |     try { | ||
|  |       for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { | ||
|  |         _arr.push(_s.value); | ||
|  |         if (i && _arr.length === i) break; | ||
|  |       } | ||
|  |     } catch (err) { | ||
|  |       _d = true; | ||
|  |       _e = err; | ||
|  |     } finally { | ||
|  |       try { | ||
|  |         if (!_n && _i["return"] != null) _i["return"](); | ||
|  |       } finally { | ||
|  |         if (_d) throw _e; | ||
|  |       } | ||
|  |     } | ||
|  |     return _arr; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.iterableToArrayLimitLoose = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _iterableToArrayLimitLoose(arr, i) { | ||
|  |     var _arr = []; | ||
|  |     for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { | ||
|  |       _arr.push(_step.value); | ||
|  |       if (i && _arr.length === i) break; | ||
|  |     } | ||
|  |     return _arr; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.nonIterableSpread = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _nonIterableSpread() { | ||
|  |     throw new TypeError("Invalid attempt to spread non-iterable instance"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.nonIterableRest = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _nonIterableRest() { | ||
|  |     throw new TypeError("Invalid attempt to destructure non-iterable instance"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _skipFirstGeneratorNext(fn) { | ||
|  |     return function () { | ||
|  |       var it = fn.apply(this, arguments); | ||
|  |       it.next(); | ||
|  |       return it; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.toPrimitive = helper("7.1.5")`
 | ||
|  |   export default function _toPrimitive( | ||
|  |     input, | ||
|  |     hint /*: "default" | "string" | "number" | void */ | ||
|  |   ) { | ||
|  |     if (typeof input !== "object" || input === null) return input; | ||
|  |     var prim = input[Symbol.toPrimitive]; | ||
|  |     if (prim !== undefined) { | ||
|  |       var res = prim.call(input, hint || "default"); | ||
|  |       if (typeof res !== "object") return res; | ||
|  |       throw new TypeError("@@toPrimitive must return a primitive value."); | ||
|  |     } | ||
|  |     return (hint === "string" ? String : Number)(input); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.toPropertyKey = helper("7.1.5")`
 | ||
|  |   import toPrimitive from "toPrimitive"; | ||
|  | 
 | ||
|  |   export default function _toPropertyKey(arg) { | ||
|  |     var key = toPrimitive(arg, "string"); | ||
|  |     return typeof key === "symbol" ? key : String(key); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.initializerWarningHelper = helper("7.0.0-beta.0")`
 | ||
|  |     export default function _initializerWarningHelper(descriptor, context){ | ||
|  |         throw new Error( | ||
|  |           'Decorating class property failed. Please ensure that ' + | ||
|  |           'proposal-class-properties is enabled and set to use loose mode. ' + | ||
|  |           'To use proposal-class-properties in spec mode with decorators, wait for ' + | ||
|  |           'the next major version of decorators in stage 2.' | ||
|  |         ); | ||
|  |     } | ||
|  | `;
 | ||
|  | helpers.initializerDefineProperty = helper("7.0.0-beta.0")`
 | ||
|  |     export default function _initializerDefineProperty(target, property, descriptor, context){ | ||
|  |         if (!descriptor) return; | ||
|  | 
 | ||
|  |         Object.defineProperty(target, property, { | ||
|  |             enumerable: descriptor.enumerable, | ||
|  |             configurable: descriptor.configurable, | ||
|  |             writable: descriptor.writable, | ||
|  |             value: descriptor.initializer ? descriptor.initializer.call(context) : void 0, | ||
|  |         }); | ||
|  |     } | ||
|  | `;
 | ||
|  | helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")`
 | ||
|  |     export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){ | ||
|  |         var desc = {}; | ||
|  |         Object.keys(descriptor).forEach(function(key){ | ||
|  |             desc[key] = descriptor[key]; | ||
|  |         }); | ||
|  |         desc.enumerable = !!desc.enumerable; | ||
|  |         desc.configurable = !!desc.configurable; | ||
|  |         if ('value' in desc || desc.initializer){ | ||
|  |             desc.writable = true; | ||
|  |         } | ||
|  | 
 | ||
|  |         desc = decorators.slice().reverse().reduce(function(desc, decorator){ | ||
|  |             return decorator(target, property, desc) || desc; | ||
|  |         }, desc); | ||
|  | 
 | ||
|  |         if (context && desc.initializer !== void 0){ | ||
|  |             desc.value = desc.initializer ? desc.initializer.call(context) : void 0; | ||
|  |             desc.initializer = undefined; | ||
|  |         } | ||
|  | 
 | ||
|  |         if (desc.initializer === void 0){ | ||
|  |             // This is a hack to avoid this being processed by 'transform-runtime'.
 | ||
|  |             // See issue #9.
 | ||
|  |             Object.defineProperty(target, property, desc); | ||
|  |             desc = null; | ||
|  |         } | ||
|  | 
 | ||
|  |         return desc; | ||
|  |     } | ||
|  | `;
 | ||
|  | helpers.classPrivateFieldLooseKey = helper("7.0.0-beta.0")`
 | ||
|  |   var id = 0; | ||
|  |   export default function _classPrivateFieldKey(name) { | ||
|  |     return "__private_" + (id++) + "_" + name; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateFieldLooseBase = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _classPrivateFieldBase(receiver, privateKey) { | ||
|  |     if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { | ||
|  |       throw new TypeError("attempted to use private field on non-instance"); | ||
|  |     } | ||
|  |     return receiver; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateFieldGet = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _classPrivateFieldGet(receiver, privateMap) { | ||
|  |     if (!privateMap.has(receiver)) { | ||
|  |       throw new TypeError("attempted to get private field on non-instance"); | ||
|  |     } | ||
|  |     var descriptor = privateMap.get(receiver); | ||
|  |     if (descriptor.get) { | ||
|  |       return descriptor.get.call(receiver); | ||
|  |     } | ||
|  |     return descriptor.value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateFieldSet = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _classPrivateFieldSet(receiver, privateMap, value) { | ||
|  |     if (!privateMap.has(receiver)) { | ||
|  |       throw new TypeError("attempted to set private field on non-instance"); | ||
|  |     } | ||
|  |     var descriptor = privateMap.get(receiver); | ||
|  |     if (descriptor.set) { | ||
|  |       descriptor.set.call(receiver, value); | ||
|  |     } else { | ||
|  |       if (!descriptor.writable) { | ||
|  |         // This should only throw in strict mode, but class bodies are
 | ||
|  |         // always strict and private fields can only be used inside
 | ||
|  |         // class bodies.
 | ||
|  |         throw new TypeError("attempted to set read only private field"); | ||
|  |       } | ||
|  | 
 | ||
|  |       descriptor.value = value; | ||
|  |     } | ||
|  | 
 | ||
|  |     return value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")`
 | ||
|  |   export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { | ||
|  |     if (receiver !== classConstructor) { | ||
|  |       throw new TypeError("Private static access of wrong provenance"); | ||
|  |     } | ||
|  |     return descriptor.value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")`
 | ||
|  |   export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { | ||
|  |     if (receiver !== classConstructor) { | ||
|  |       throw new TypeError("Private static access of wrong provenance"); | ||
|  |     } | ||
|  |     if (!descriptor.writable) { | ||
|  |       // This should only throw in strict mode, but class bodies are
 | ||
|  |       // always strict and private fields can only be used inside
 | ||
|  |       // class bodies.
 | ||
|  |       throw new TypeError("attempted to set read only private field"); | ||
|  |     } | ||
|  |     descriptor.value = value; | ||
|  |     return value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateMethodGet = helper("7.3.2")`
 | ||
|  |   export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) { | ||
|  |     if (receiver !== classConstructor) { | ||
|  |       throw new TypeError("Private static access of wrong provenance"); | ||
|  |     } | ||
|  |     return method; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateMethodSet = helper("7.3.2")`
 | ||
|  |   export default function _classStaticPrivateMethodSet() { | ||
|  |     throw new TypeError("attempted to set read only static private field"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.decorate = helper("7.1.5")`
 | ||
|  |   import toArray from "toArray"; | ||
|  |   import toPropertyKey from "toPropertyKey"; | ||
|  | 
 | ||
|  |   // These comments are stripped by @babel/template
 | ||
|  |   /*:: | ||
|  |   type PropertyDescriptor = | ||
|  |     | { | ||
|  |         value: any, | ||
|  |         writable: boolean, | ||
|  |         configurable: boolean, | ||
|  |         enumerable: boolean, | ||
|  |       } | ||
|  |     | { | ||
|  |         get?: () => any, | ||
|  |         set?: (v: any) => void, | ||
|  |         configurable: boolean, | ||
|  |         enumerable: boolean, | ||
|  |       }; | ||
|  | 
 | ||
|  |   type FieldDescriptor ={ | ||
|  |     writable: boolean, | ||
|  |     configurable: boolean, | ||
|  |     enumerable: boolean, | ||
|  |   }; | ||
|  | 
 | ||
|  |   type Placement = "static" | "prototype" | "own"; | ||
|  |   type Key = string | symbol; // PrivateName is not supported yet.
 | ||
|  | 
 | ||
|  |   type ElementDescriptor = | ||
|  |     | { | ||
|  |         kind: "method", | ||
|  |         key: Key, | ||
|  |         placement: Placement, | ||
|  |         descriptor: PropertyDescriptor | ||
|  |       } | ||
|  |     | { | ||
|  |         kind: "field", | ||
|  |         key: Key, | ||
|  |         placement: Placement, | ||
|  |         descriptor: FieldDescriptor, | ||
|  |         initializer?: () => any, | ||
|  |       }; | ||
|  | 
 | ||
|  |   // This is exposed to the user code
 | ||
|  |   type ElementObjectInput = ElementDescriptor & { | ||
|  |     [@@toStringTag]?: "Descriptor" | ||
|  |   }; | ||
|  | 
 | ||
|  |   // This is exposed to the user code
 | ||
|  |   type ElementObjectOutput = ElementDescriptor & { | ||
|  |     [@@toStringTag]?: "Descriptor" | ||
|  |     extras?: ElementDescriptor[], | ||
|  |     finisher?: ClassFinisher, | ||
|  |   }; | ||
|  | 
 | ||
|  |   // This is exposed to the user code
 | ||
|  |   type ClassObject = { | ||
|  |     [@@toStringTag]?: "Descriptor", | ||
|  |     kind: "class", | ||
|  |     elements: ElementDescriptor[], | ||
|  |   }; | ||
|  | 
 | ||
|  |   type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput; | ||
|  |   type ClassDecorator = (descriptor: ClassObject) => ?ClassObject; | ||
|  |   type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>; | ||
|  | 
 | ||
|  |   // Only used by Babel in the transform output, not part of the spec.
 | ||
|  |   type ElementDefinition = | ||
|  |     | { | ||
|  |         kind: "method", | ||
|  |         value: any, | ||
|  |         key: Key, | ||
|  |         static?: boolean, | ||
|  |         decorators?: ElementDecorator[], | ||
|  |       } | ||
|  |     | { | ||
|  |         kind: "field", | ||
|  |         value: () => any, | ||
|  |         key: Key, | ||
|  |         static?: boolean, | ||
|  |         decorators?: ElementDecorator[], | ||
|  |     }; | ||
|  | 
 | ||
|  |   declare function ClassFactory<C>(initialize: (instance: C) => void): { | ||
|  |     F: Class<C>, | ||
|  |     d: ElementDefinition[] | ||
|  |   } | ||
|  | 
 | ||
|  |   */ | ||
|  | 
 | ||
|  |   /*:: | ||
|  |   // Various combinations with/without extras and with one or many finishers
 | ||
|  | 
 | ||
|  |   type ElementFinisherExtras = { | ||
|  |     element: ElementDescriptor, | ||
|  |     finisher?: ClassFinisher, | ||
|  |     extras?: ElementDescriptor[], | ||
|  |   }; | ||
|  | 
 | ||
|  |   type ElementFinishersExtras = { | ||
|  |     element: ElementDescriptor, | ||
|  |     finishers: ClassFinisher[], | ||
|  |     extras: ElementDescriptor[], | ||
|  |   }; | ||
|  | 
 | ||
|  |   type ElementsFinisher = { | ||
|  |     elements: ElementDescriptor[], | ||
|  |     finisher?: ClassFinisher, | ||
|  |   }; | ||
|  | 
 | ||
|  |   type ElementsFinishers = { | ||
|  |     elements: ElementDescriptor[], | ||
|  |     finishers: ClassFinisher[], | ||
|  |   }; | ||
|  | 
 | ||
|  |   */ | ||
|  | 
 | ||
|  |   /*:: | ||
|  | 
 | ||
|  |   type Placements = { | ||
|  |     static: Key[], | ||
|  |     prototype: Key[], | ||
|  |     own: Key[], | ||
|  |   }; | ||
|  | 
 | ||
|  |   */ | ||
|  | 
 | ||
|  |   // ClassDefinitionEvaluation (Steps 26-*)
 | ||
|  |   export default function _decorate( | ||
|  |     decorators /*: ClassDecorator[] */, | ||
|  |     factory /*: ClassFactory */, | ||
|  |     superClass /*: ?Class<*> */, | ||
|  |     mixins /*: ?Array<Function> */, | ||
|  |   ) /*: Class<*> */ { | ||
|  |     var api = _getDecoratorsApi(); | ||
|  |     if (mixins) { | ||
|  |       for (var i = 0; i < mixins.length; i++) { | ||
|  |         api = mixins[i](api); | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     var r = factory(function initialize(O) { | ||
|  |       api.initializeInstanceElements(O, decorated.elements); | ||
|  |     }, superClass); | ||
|  |     var decorated = api.decorateClass( | ||
|  |       _coalesceClassElements(r.d.map(_createElementDescriptor)), | ||
|  |       decorators, | ||
|  |     ); | ||
|  | 
 | ||
|  |     api.initializeClassElements(r.F, decorated.elements); | ||
|  | 
 | ||
|  |     return api.runClassFinishers(r.F, decorated.finishers); | ||
|  |   } | ||
|  | 
 | ||
|  |   function _getDecoratorsApi() { | ||
|  |     _getDecoratorsApi = function() { | ||
|  |       return api; | ||
|  |     }; | ||
|  | 
 | ||
|  |     var api = { | ||
|  |       elementsDefinitionOrder: [["method"], ["field"]], | ||
|  | 
 | ||
|  |       // InitializeInstanceElements
 | ||
|  |       initializeInstanceElements: function( | ||
|  |         /*::<C>*/ O /*: C */, | ||
|  |         elements /*: ElementDescriptor[] */, | ||
|  |       ) { | ||
|  |         ["method", "field"].forEach(function(kind) { | ||
|  |           elements.forEach(function(element /*: ElementDescriptor */) { | ||
|  |             if (element.kind === kind && element.placement === "own") { | ||
|  |               this.defineClassElement(O, element); | ||
|  |             } | ||
|  |           }, this); | ||
|  |         }, this); | ||
|  |       }, | ||
|  | 
 | ||
|  |       // InitializeClassElements
 | ||
|  |       initializeClassElements: function( | ||
|  |         /*::<C>*/ F /*: Class<C> */, | ||
|  |         elements /*: ElementDescriptor[] */, | ||
|  |       ) { | ||
|  |         var proto = F.prototype; | ||
|  | 
 | ||
|  |         ["method", "field"].forEach(function(kind) { | ||
|  |           elements.forEach(function(element /*: ElementDescriptor */) { | ||
|  |             var placement = element.placement; | ||
|  |             if ( | ||
|  |               element.kind === kind && | ||
|  |               (placement === "static" || placement === "prototype") | ||
|  |             ) { | ||
|  |               var receiver = placement === "static" ? F : proto; | ||
|  |               this.defineClassElement(receiver, element); | ||
|  |             } | ||
|  |           }, this); | ||
|  |         }, this); | ||
|  |       }, | ||
|  | 
 | ||
|  |       // DefineClassElement
 | ||
|  |       defineClassElement: function( | ||
|  |         /*::<C>*/ receiver /*: C | Class<C> */, | ||
|  |         element /*: ElementDescriptor */, | ||
|  |       ) { | ||
|  |         var descriptor /*: PropertyDescriptor */ = element.descriptor; | ||
|  |         if (element.kind === "field") { | ||
|  |           var initializer = element.initializer; | ||
|  |           descriptor = { | ||
|  |             enumerable: descriptor.enumerable, | ||
|  |             writable: descriptor.writable, | ||
|  |             configurable: descriptor.configurable, | ||
|  |             value: initializer === void 0 ? void 0 : initializer.call(receiver), | ||
|  |           }; | ||
|  |         } | ||
|  |         Object.defineProperty(receiver, element.key, descriptor); | ||
|  |       }, | ||
|  | 
 | ||
|  |       // DecorateClass
 | ||
|  |       decorateClass: function( | ||
|  |         elements /*: ElementDescriptor[] */, | ||
|  |         decorators /*: ClassDecorator[] */, | ||
|  |       ) /*: ElementsFinishers */ { | ||
|  |         var newElements /*: ElementDescriptor[] */ = []; | ||
|  |         var finishers /*: ClassFinisher[] */ = []; | ||
|  |         var placements /*: Placements */ = { | ||
|  |           static: [], | ||
|  |           prototype: [], | ||
|  |           own: [], | ||
|  |         }; | ||
|  | 
 | ||
|  |         elements.forEach(function(element /*: ElementDescriptor */) { | ||
|  |           this.addElementPlacement(element, placements); | ||
|  |         }, this); | ||
|  | 
 | ||
|  |         elements.forEach(function(element /*: ElementDescriptor */) { | ||
|  |           if (!_hasDecorators(element)) return newElements.push(element); | ||
|  | 
 | ||
|  |           var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement( | ||
|  |             element, | ||
|  |             placements, | ||
|  |           ); | ||
|  |           newElements.push(elementFinishersExtras.element); | ||
|  |           newElements.push.apply(newElements, elementFinishersExtras.extras); | ||
|  |           finishers.push.apply(finishers, elementFinishersExtras.finishers); | ||
|  |         }, this); | ||
|  | 
 | ||
|  |         if (!decorators) { | ||
|  |           return { elements: newElements, finishers: finishers }; | ||
|  |         } | ||
|  | 
 | ||
|  |         var result /*: ElementsFinishers */ = this.decorateConstructor( | ||
|  |           newElements, | ||
|  |           decorators, | ||
|  |         ); | ||
|  |         finishers.push.apply(finishers, result.finishers); | ||
|  |         result.finishers = finishers; | ||
|  | 
 | ||
|  |         return result; | ||
|  |       }, | ||
|  | 
 | ||
|  |       // AddElementPlacement
 | ||
|  |       addElementPlacement: function( | ||
|  |         element /*: ElementDescriptor */, | ||
|  |         placements /*: Placements */, | ||
|  |         silent /*: boolean */, | ||
|  |       ) { | ||
|  |         var keys = placements[element.placement]; | ||
|  |         if (!silent && keys.indexOf(element.key) !== -1) { | ||
|  |           throw new TypeError("Duplicated element (" + element.key + ")"); | ||
|  |         } | ||
|  |         keys.push(element.key); | ||
|  |       }, | ||
|  | 
 | ||
|  |       // DecorateElement
 | ||
|  |       decorateElement: function( | ||
|  |         element /*: ElementDescriptor */, | ||
|  |         placements /*: Placements */, | ||
|  |       ) /*: ElementFinishersExtras */ { | ||
|  |         var extras /*: ElementDescriptor[] */ = []; | ||
|  |         var finishers /*: ClassFinisher[] */ = []; | ||
|  | 
 | ||
|  |         for ( | ||
|  |           var decorators = element.decorators, i = decorators.length - 1; | ||
|  |           i >= 0; | ||
|  |           i-- | ||
|  |         ) { | ||
|  |           // (inlined) RemoveElementPlacement
 | ||
|  |           var keys = placements[element.placement]; | ||
|  |           keys.splice(keys.indexOf(element.key), 1); | ||
|  | 
 | ||
|  |           var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor( | ||
|  |             element, | ||
|  |           ); | ||
|  |           var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras( | ||
|  |             (0, decorators[i])(elementObject) /*: ElementObjectOutput */ || | ||
|  |               elementObject, | ||
|  |           ); | ||
|  | 
 | ||
|  |           element = elementFinisherExtras.element; | ||
|  |           this.addElementPlacement(element, placements); | ||
|  | 
 | ||
|  |           if (elementFinisherExtras.finisher) { | ||
|  |             finishers.push(elementFinisherExtras.finisher); | ||
|  |           } | ||
|  | 
 | ||
|  |           var newExtras /*: ElementDescriptor[] | void */ = | ||
|  |             elementFinisherExtras.extras; | ||
|  |           if (newExtras) { | ||
|  |             for (var j = 0; j < newExtras.length; j++) { | ||
|  |               this.addElementPlacement(newExtras[j], placements); | ||
|  |             } | ||
|  |             extras.push.apply(extras, newExtras); | ||
|  |           } | ||
|  |         } | ||
|  | 
 | ||
|  |         return { element: element, finishers: finishers, extras: extras }; | ||
|  |       }, | ||
|  | 
 | ||
|  |       // DecorateConstructor
 | ||
|  |       decorateConstructor: function( | ||
|  |         elements /*: ElementDescriptor[] */, | ||
|  |         decorators /*: ClassDecorator[] */, | ||
|  |       ) /*: ElementsFinishers */ { | ||
|  |         var finishers /*: ClassFinisher[] */ = []; | ||
|  | 
 | ||
|  |         for (var i = decorators.length - 1; i >= 0; i--) { | ||
|  |           var obj /*: ClassObject */ = this.fromClassDescriptor(elements); | ||
|  |           var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor( | ||
|  |             (0, decorators[i])(obj) /*: ClassObject */ || obj, | ||
|  |           ); | ||
|  | 
 | ||
|  |           if (elementsAndFinisher.finisher !== undefined) { | ||
|  |             finishers.push(elementsAndFinisher.finisher); | ||
|  |           } | ||
|  | 
 | ||
|  |           if (elementsAndFinisher.elements !== undefined) { | ||
|  |             elements = elementsAndFinisher.elements; | ||
|  | 
 | ||
|  |             for (var j = 0; j < elements.length - 1; j++) { | ||
|  |               for (var k = j + 1; k < elements.length; k++) { | ||
|  |                 if ( | ||
|  |                   elements[j].key === elements[k].key && | ||
|  |                   elements[j].placement === elements[k].placement | ||
|  |                 ) { | ||
|  |                   throw new TypeError( | ||
|  |                     "Duplicated element (" + elements[j].key + ")", | ||
|  |                   ); | ||
|  |                 } | ||
|  |               } | ||
|  |             } | ||
|  |           } | ||
|  |         } | ||
|  | 
 | ||
|  |         return { elements: elements, finishers: finishers }; | ||
|  |       }, | ||
|  | 
 | ||
|  |       // FromElementDescriptor
 | ||
|  |       fromElementDescriptor: function( | ||
|  |         element /*: ElementDescriptor */, | ||
|  |       ) /*: ElementObject */ { | ||
|  |         var obj /*: ElementObject */ = { | ||
|  |           kind: element.kind, | ||
|  |           key: element.key, | ||
|  |           placement: element.placement, | ||
|  |           descriptor: element.descriptor, | ||
|  |         }; | ||
|  | 
 | ||
|  |         var desc = { | ||
|  |           value: "Descriptor", | ||
|  |           configurable: true, | ||
|  |         }; | ||
|  |         Object.defineProperty(obj, Symbol.toStringTag, desc); | ||
|  | 
 | ||
|  |         if (element.kind === "field") obj.initializer = element.initializer; | ||
|  | 
 | ||
|  |         return obj; | ||
|  |       }, | ||
|  | 
 | ||
|  |       // ToElementDescriptors
 | ||
|  |       toElementDescriptors: function( | ||
|  |         elementObjects /*: ElementObject[] */, | ||
|  |       ) /*: ElementDescriptor[] */ { | ||
|  |         if (elementObjects === undefined) return; | ||
|  |         return toArray(elementObjects).map(function(elementObject) { | ||
|  |           var element = this.toElementDescriptor(elementObject); | ||
|  |           this.disallowProperty(elementObject, "finisher", "An element descriptor"); | ||
|  |           this.disallowProperty(elementObject, "extras", "An element descriptor"); | ||
|  |           return element; | ||
|  |         }, this); | ||
|  |       }, | ||
|  | 
 | ||
|  |       // ToElementDescriptor
 | ||
|  |       toElementDescriptor: function( | ||
|  |         elementObject /*: ElementObject */, | ||
|  |       ) /*: ElementDescriptor */ { | ||
|  |         var kind = String(elementObject.kind); | ||
|  |         if (kind !== "method" && kind !== "field") { | ||
|  |           throw new TypeError( | ||
|  |             'An element descriptor\\'s .kind property must be either "method" or' + | ||
|  |               ' "field", but a decorator created an element descriptor with' + | ||
|  |               ' .kind "' + | ||
|  |               kind + | ||
|  |               '"', | ||
|  |           ); | ||
|  |         } | ||
|  | 
 | ||
|  |         var key = toPropertyKey(elementObject.key); | ||
|  | 
 | ||
|  |         var placement = String(elementObject.placement); | ||
|  |         if ( | ||
|  |           placement !== "static" && | ||
|  |           placement !== "prototype" && | ||
|  |           placement !== "own" | ||
|  |         ) { | ||
|  |           throw new TypeError( | ||
|  |             'An element descriptor\\'s .placement property must be one of "static",' + | ||
|  |               ' "prototype" or "own", but a decorator created an element descriptor' + | ||
|  |               ' with .placement "' + | ||
|  |               placement + | ||
|  |               '"', | ||
|  |           ); | ||
|  |         } | ||
|  | 
 | ||
|  |         var descriptor /*: PropertyDescriptor */ = elementObject.descriptor; | ||
|  | 
 | ||
|  |         this.disallowProperty(elementObject, "elements", "An element descriptor"); | ||
|  | 
 | ||
|  |         var element /*: ElementDescriptor */ = { | ||
|  |           kind: kind, | ||
|  |           key: key, | ||
|  |           placement: placement, | ||
|  |           descriptor: Object.assign({}, descriptor), | ||
|  |         }; | ||
|  | 
 | ||
|  |         if (kind !== "field") { | ||
|  |           this.disallowProperty(elementObject, "initializer", "A method descriptor"); | ||
|  |         } else { | ||
|  |           this.disallowProperty( | ||
|  |             descriptor, | ||
|  |             "get", | ||
|  |             "The property descriptor of a field descriptor", | ||
|  |           ); | ||
|  |           this.disallowProperty( | ||
|  |             descriptor, | ||
|  |             "set", | ||
|  |             "The property descriptor of a field descriptor", | ||
|  |           ); | ||
|  |           this.disallowProperty( | ||
|  |             descriptor, | ||
|  |             "value", | ||
|  |             "The property descriptor of a field descriptor", | ||
|  |           ); | ||
|  | 
 | ||
|  |           element.initializer = elementObject.initializer; | ||
|  |         } | ||
|  | 
 | ||
|  |         return element; | ||
|  |       }, | ||
|  | 
 | ||
|  |       toElementFinisherExtras: function( | ||
|  |         elementObject /*: ElementObject */, | ||
|  |       ) /*: ElementFinisherExtras */ { | ||
|  |         var element /*: ElementDescriptor */ = this.toElementDescriptor( | ||
|  |           elementObject, | ||
|  |         ); | ||
|  |         var finisher /*: ClassFinisher */ = _optionalCallableProperty( | ||
|  |           elementObject, | ||
|  |           "finisher", | ||
|  |         ); | ||
|  |         var extras /*: ElementDescriptors[] */ = this.toElementDescriptors( | ||
|  |           elementObject.extras, | ||
|  |         ); | ||
|  | 
 | ||
|  |         return { element: element, finisher: finisher, extras: extras }; | ||
|  |       }, | ||
|  | 
 | ||
|  |       // FromClassDescriptor
 | ||
|  |       fromClassDescriptor: function( | ||
|  |         elements /*: ElementDescriptor[] */, | ||
|  |       ) /*: ClassObject */ { | ||
|  |         var obj = { | ||
|  |           kind: "class", | ||
|  |           elements: elements.map(this.fromElementDescriptor, this), | ||
|  |         }; | ||
|  | 
 | ||
|  |         var desc = { value: "Descriptor", configurable: true }; | ||
|  |         Object.defineProperty(obj, Symbol.toStringTag, desc); | ||
|  | 
 | ||
|  |         return obj; | ||
|  |       }, | ||
|  | 
 | ||
|  |       // ToClassDescriptor
 | ||
|  |       toClassDescriptor: function( | ||
|  |         obj /*: ClassObject */, | ||
|  |       ) /*: ElementsFinisher */ { | ||
|  |         var kind = String(obj.kind); | ||
|  |         if (kind !== "class") { | ||
|  |           throw new TypeError( | ||
|  |             'A class descriptor\\'s .kind property must be "class", but a decorator' + | ||
|  |               ' created a class descriptor with .kind "' + | ||
|  |               kind + | ||
|  |               '"', | ||
|  |           ); | ||
|  |         } | ||
|  | 
 | ||
|  |         this.disallowProperty(obj, "key", "A class descriptor"); | ||
|  |         this.disallowProperty(obj, "placement", "A class descriptor"); | ||
|  |         this.disallowProperty(obj, "descriptor", "A class descriptor"); | ||
|  |         this.disallowProperty(obj, "initializer", "A class descriptor"); | ||
|  |         this.disallowProperty(obj, "extras", "A class descriptor"); | ||
|  | 
 | ||
|  |         var finisher = _optionalCallableProperty(obj, "finisher"); | ||
|  |         var elements = this.toElementDescriptors(obj.elements); | ||
|  | 
 | ||
|  |         return { elements: elements, finisher: finisher }; | ||
|  |       }, | ||
|  | 
 | ||
|  |       // RunClassFinishers
 | ||
|  |       runClassFinishers: function( | ||
|  |         constructor /*: Class<*> */, | ||
|  |         finishers /*: ClassFinisher[] */, | ||
|  |       ) /*: Class<*> */ { | ||
|  |         for (var i = 0; i < finishers.length; i++) { | ||
|  |           var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor); | ||
|  |           if (newConstructor !== undefined) { | ||
|  |             // NOTE: This should check if IsConstructor(newConstructor) is false.
 | ||
|  |             if (typeof newConstructor !== "function") { | ||
|  |               throw new TypeError("Finishers must return a constructor."); | ||
|  |             } | ||
|  |             constructor = newConstructor; | ||
|  |           } | ||
|  |         } | ||
|  |         return constructor; | ||
|  |       }, | ||
|  | 
 | ||
|  |       disallowProperty: function(obj, name, objectType) { | ||
|  |         if (obj[name] !== undefined) { | ||
|  |           throw new TypeError(objectType + " can't have a ." + name + " property."); | ||
|  |         } | ||
|  |       } | ||
|  |     }; | ||
|  | 
 | ||
|  |     return api; | ||
|  |   } | ||
|  | 
 | ||
|  |   // ClassElementEvaluation
 | ||
|  |   function _createElementDescriptor( | ||
|  |     def /*: ElementDefinition */, | ||
|  |   ) /*: ElementDescriptor */ { | ||
|  |     var key = toPropertyKey(def.key); | ||
|  | 
 | ||
|  |     var descriptor /*: PropertyDescriptor */; | ||
|  |     if (def.kind === "method") { | ||
|  |       descriptor = { | ||
|  |         value: def.value, | ||
|  |         writable: true, | ||
|  |         configurable: true, | ||
|  |         enumerable: false, | ||
|  |       }; | ||
|  |     } else if (def.kind === "get") { | ||
|  |       descriptor = { get: def.value, configurable: true, enumerable: false }; | ||
|  |     } else if (def.kind === "set") { | ||
|  |       descriptor = { set: def.value, configurable: true, enumerable: false }; | ||
|  |     } else if (def.kind === "field") { | ||
|  |       descriptor = { configurable: true, writable: true, enumerable: true }; | ||
|  |     } | ||
|  | 
 | ||
|  |     var element /*: ElementDescriptor */ = { | ||
|  |       kind: def.kind === "field" ? "field" : "method", | ||
|  |       key: key, | ||
|  |       placement: def.static | ||
|  |         ? "static" | ||
|  |         : def.kind === "field" | ||
|  |         ? "own" | ||
|  |         : "prototype", | ||
|  |       descriptor: descriptor, | ||
|  |     }; | ||
|  |     if (def.decorators) element.decorators = def.decorators; | ||
|  |     if (def.kind === "field") element.initializer = def.value; | ||
|  | 
 | ||
|  |     return element; | ||
|  |   } | ||
|  | 
 | ||
|  |   // CoalesceGetterSetter
 | ||
|  |   function _coalesceGetterSetter( | ||
|  |     element /*: ElementDescriptor */, | ||
|  |     other /*: ElementDescriptor */, | ||
|  |   ) { | ||
|  |     if (element.descriptor.get !== undefined) { | ||
|  |       other.descriptor.get = element.descriptor.get; | ||
|  |     } else { | ||
|  |       other.descriptor.set = element.descriptor.set; | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   // CoalesceClassElements
 | ||
|  |   function _coalesceClassElements( | ||
|  |     elements /*: ElementDescriptor[] */, | ||
|  |   ) /*: ElementDescriptor[] */ { | ||
|  |     var newElements /*: ElementDescriptor[] */ = []; | ||
|  | 
 | ||
|  |     var isSameElement = function( | ||
|  |       other /*: ElementDescriptor */, | ||
|  |     ) /*: boolean */ { | ||
|  |       return ( | ||
|  |         other.kind === "method" && | ||
|  |         other.key === element.key && | ||
|  |         other.placement === element.placement | ||
|  |       ); | ||
|  |     }; | ||
|  | 
 | ||
|  |     for (var i = 0; i < elements.length; i++) { | ||
|  |       var element /*: ElementDescriptor */ = elements[i]; | ||
|  |       var other /*: ElementDescriptor */; | ||
|  | 
 | ||
|  |       if ( | ||
|  |         element.kind === "method" && | ||
|  |         (other = newElements.find(isSameElement)) | ||
|  |       ) { | ||
|  |         if ( | ||
|  |           _isDataDescriptor(element.descriptor) || | ||
|  |           _isDataDescriptor(other.descriptor) | ||
|  |         ) { | ||
|  |           if (_hasDecorators(element) || _hasDecorators(other)) { | ||
|  |             throw new ReferenceError( | ||
|  |               "Duplicated methods (" + element.key + ") can't be decorated.", | ||
|  |             ); | ||
|  |           } | ||
|  |           other.descriptor = element.descriptor; | ||
|  |         } else { | ||
|  |           if (_hasDecorators(element)) { | ||
|  |             if (_hasDecorators(other)) { | ||
|  |               throw new ReferenceError( | ||
|  |                 "Decorators can't be placed on different accessors with for " + | ||
|  |                   "the same property (" + | ||
|  |                   element.key + | ||
|  |                   ").", | ||
|  |               ); | ||
|  |             } | ||
|  |             other.decorators = element.decorators; | ||
|  |           } | ||
|  |           _coalesceGetterSetter(element, other); | ||
|  |         } | ||
|  |       } else { | ||
|  |         newElements.push(element); | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     return newElements; | ||
|  |   } | ||
|  | 
 | ||
|  |   function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ { | ||
|  |     return element.decorators && element.decorators.length; | ||
|  |   } | ||
|  | 
 | ||
|  |   function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ { | ||
|  |     return ( | ||
|  |       desc !== undefined && | ||
|  |       !(desc.value === undefined && desc.writable === undefined) | ||
|  |     ); | ||
|  |   } | ||
|  | 
 | ||
|  |   function _optionalCallableProperty /*::<T>*/( | ||
|  |     obj /*: T */, | ||
|  |     name /*: $Keys<T> */, | ||
|  |   ) /*: ?Function */ { | ||
|  |     var value = obj[name]; | ||
|  |     if (value !== undefined && typeof value !== "function") { | ||
|  |       throw new TypeError("Expected '" + name + "' to be a function"); | ||
|  |     } | ||
|  |     return value; | ||
|  |   } | ||
|  | 
 | ||
|  | `;
 | ||
|  | helpers.classPrivateMethodGet = helper("7.1.6")`
 | ||
|  |   export default function _classPrivateMethodGet(receiver, privateSet, fn) { | ||
|  |     if (!privateSet.has(receiver)) { | ||
|  |       throw new TypeError("attempted to get private field on non-instance"); | ||
|  |     } | ||
|  |     return fn; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateMethodSet = helper("7.1.6")`
 | ||
|  |   export default function _classPrivateMethodSet() { | ||
|  |     throw new TypeError("attempted to reassign private method"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.wrapRegExp = helper("7.2.6")`
 | ||
|  |   import wrapNativeSuper from "wrapNativeSuper"; | ||
|  |   import getPrototypeOf from "getPrototypeOf"; | ||
|  |   import possibleConstructorReturn from "possibleConstructorReturn"; | ||
|  |   import inherits from "inherits"; | ||
|  | 
 | ||
|  |   export default function _wrapRegExp(re, groups) { | ||
|  |     _wrapRegExp = function(re, groups) { | ||
|  |       return new BabelRegExp(re, groups); | ||
|  |     }; | ||
|  | 
 | ||
|  |     var _RegExp = wrapNativeSuper(RegExp); | ||
|  |     var _super = RegExp.prototype; | ||
|  |     var _groups = new WeakMap(); | ||
|  | 
 | ||
|  |     function BabelRegExp(re, groups) { | ||
|  |       var _this = _RegExp.call(this, re); | ||
|  |       _groups.set(_this, groups); | ||
|  |       return _this; | ||
|  |     } | ||
|  |     inherits(BabelRegExp, _RegExp); | ||
|  | 
 | ||
|  |     BabelRegExp.prototype.exec = function(str) { | ||
|  |       var result = _super.exec.call(this, str); | ||
|  |       if (result) result.groups = buildGroups(result, this); | ||
|  |       return result; | ||
|  |     }; | ||
|  |     BabelRegExp.prototype[Symbol.replace] = function(str, substitution) { | ||
|  |       if (typeof substitution === "string") { | ||
|  |         var groups = _groups.get(this); | ||
|  |         return _super[Symbol.replace].call( | ||
|  |           this, | ||
|  |           str, | ||
|  |           substitution.replace(/\\$<([^>]+)>/g, function(_, name) { | ||
|  |             return "$" + groups[name]; | ||
|  |           }) | ||
|  |         ); | ||
|  |       } else if (typeof substitution === "function") { | ||
|  |         var _this = this; | ||
|  |         return _super[Symbol.replace].call( | ||
|  |           this, | ||
|  |           str, | ||
|  |           function() { | ||
|  |             var args = []; | ||
|  |             args.push.apply(args, arguments); | ||
|  |             if (typeof args[args.length - 1] !== "object") { | ||
|  |               // Modern engines already pass result.groups as the last arg.
 | ||
|  |               args.push(buildGroups(args, _this)); | ||
|  |             } | ||
|  |             return substitution.apply(this, args); | ||
|  |           } | ||
|  |         ); | ||
|  |       } else { | ||
|  |         return _super[Symbol.replace].call(this, str, substitution); | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     function buildGroups(result, re) { | ||
|  |       // NOTE: This function should return undefined if there are no groups,
 | ||
|  |       // but in that case Babel doesn't add the wrapper anyway.
 | ||
|  | 
 | ||
|  |       var g = _groups.get(re); | ||
|  |       return Object.keys(g).reduce(function(groups, name) { | ||
|  |         groups[name] = result[g[name]]; | ||
|  |         return groups; | ||
|  |       }, Object.create(null)); | ||
|  |     } | ||
|  | 
 | ||
|  |     return _wrapRegExp.apply(this, arguments); | ||
|  |   } | ||
|  | `;
 |