You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					1793 lines
				
				57 KiB
			
		
		
			
		
	
	
					1793 lines
				
				57 KiB
			| 
											3 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |   value: true | ||
|  | }); | ||
|  | exports.default = void 0; | ||
|  | var _template = require("@babel/template"); | ||
|  | var _helpersGenerated = require("./helpers-generated"); | ||
|  | const helpers = Object.assign({ | ||
|  |   __proto__: null | ||
|  | }, _helpersGenerated.default); | ||
|  | var _default = helpers; | ||
|  | exports.default = _default; | ||
|  | const helper = minVersion => tpl => ({ | ||
|  |   minVersion, | ||
|  |   ast: () => _template.default.program.ast(tpl) | ||
|  | }); | ||
|  | { | ||
|  |   helpers.AwaitValue = helper("7.0.0-beta.0")`
 | ||
|  |     export default function _AwaitValue(value) { | ||
|  |       this.wrapped = value; | ||
|  |     } | ||
|  |   `;
 | ||
|  | } | ||
|  | 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.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")`
 | ||
|  |   import toPropertyKey from "toPropertyKey"; | ||
|  |   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, toPropertyKey(descriptor.key), descriptor); | ||
|  |     } | ||
|  |   } | ||
|  | 
 | ||
|  |   export default function _createClass(Constructor, protoProps, staticProps) { | ||
|  |     if (protoProps) _defineProperties(Constructor.prototype, protoProps); | ||
|  |     if (staticProps) _defineProperties(Constructor, staticProps); | ||
|  |     Object.defineProperty(Constructor, "prototype", { writable: false }); | ||
|  |     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")`
 | ||
|  |   import toPropertyKey from "toPropertyKey"; | ||
|  |   export default function _defineProperty(obj, key, value) { | ||
|  |     key = toPropertyKey(key); | ||
|  |     // 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 ? Object.assign.bind() : 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) ? Object(arguments[i]) : {}; | ||
|  |       var ownKeys = Object.keys(source); | ||
|  |       if (typeof Object.getOwnPropertySymbols === 'function') { | ||
|  |         ownKeys.push.apply(ownKeys, 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"); | ||
|  |     } | ||
|  |     // We can't use defineProperty to set the prototype in a single step because it
 | ||
|  |     // doesn't work in Chrome <= 36. https://github.com/babel/babel/issues/14056
 | ||
|  |     // V8 bug: https://bugs.chromium.org/p/v8/issues/detail?id=3334
 | ||
|  |     subClass.prototype = Object.create(superClass && superClass.prototype, { | ||
|  |       constructor: { | ||
|  |         value: subClass, | ||
|  |         writable: true, | ||
|  |         configurable: true | ||
|  |       } | ||
|  |     }); | ||
|  |     Object.defineProperty(subClass, "prototype", { writable: false }); | ||
|  |     if (superClass) setPrototypeOf(subClass, superClass); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.inheritsLoose = helper("7.0.0-beta.0")`
 | ||
|  |   import setPrototypeOf from "setPrototypeOf"; | ||
|  | 
 | ||
|  |   export default function _inheritsLoose(subClass, superClass) { | ||
|  |     subClass.prototype = Object.create(superClass.prototype); | ||
|  |     subClass.prototype.constructor = subClass; | ||
|  |     setPrototypeOf(subClass, superClass); | ||
|  |   } | ||
|  | `;
 | ||
|  | 
 | ||
|  | helpers.getPrototypeOf = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _getPrototypeOf(o) { | ||
|  |     _getPrototypeOf = Object.setPrototypeOf | ||
|  |       ? Object.getPrototypeOf.bind() | ||
|  |       : 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 | ||
|  |       ? Object.setPrototypeOf.bind() | ||
|  |       : function _setPrototypeOf(o, p) { | ||
|  |           o.__proto__ = p; | ||
|  |           return o; | ||
|  |         }; | ||
|  |     return _setPrototypeOf(o, p); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.isNativeReflectConstruct = helper("7.9.0")`
 | ||
|  |   export default 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 Boolean object.
 | ||
|  | 
 | ||
|  |       Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})); | ||
|  |       return true; | ||
|  |     } catch (e) { | ||
|  |       return false; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | 
 | ||
|  | helpers.construct = helper("7.0.0-beta.0")`
 | ||
|  |   import setPrototypeOf from "setPrototypeOf"; | ||
|  |   import isNativeReflectConstruct from "isNativeReflectConstruct"; | ||
|  | 
 | ||
|  |   export default function _construct(Parent, args, Class) { | ||
|  |     if (isNativeReflectConstruct()) { | ||
|  |       _construct = Reflect.construct.bind(); | ||
|  |     } 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.14.0")`
 | ||
|  |   function _getRequireWildcardCache(nodeInterop) { | ||
|  |     if (typeof WeakMap !== "function") return null; | ||
|  | 
 | ||
|  |     var cacheBabelInterop = new WeakMap(); | ||
|  |     var cacheNodeInterop = new WeakMap(); | ||
|  |     return (_getRequireWildcardCache = function (nodeInterop) { | ||
|  |       return nodeInterop ? cacheNodeInterop : cacheBabelInterop; | ||
|  |     })(nodeInterop); | ||
|  |   } | ||
|  | 
 | ||
|  |   export default function _interopRequireWildcard(obj, nodeInterop) { | ||
|  |     if (!nodeInterop && obj && obj.__esModule) { | ||
|  |       return obj; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) { | ||
|  |       return { default: obj } | ||
|  |     } | ||
|  | 
 | ||
|  |     var cache = _getRequireWildcardCache(nodeInterop); | ||
|  |     if (cache && cache.has(obj)) { | ||
|  |       return cache.get(obj); | ||
|  |     } | ||
|  | 
 | ||
|  |     var newObj = {}; | ||
|  |     var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; | ||
|  |     for (var key in obj) { | ||
|  |       if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { | ||
|  |         var desc = hasPropertyDescriptor | ||
|  |           ? Object.getOwnPropertyDescriptor(obj, key) | ||
|  |           : null; | ||
|  |         if (desc && (desc.get || desc.set)) { | ||
|  |           Object.defineProperty(newObj, key, desc); | ||
|  |         } else { | ||
|  |           newObj[key] = obj[key]; | ||
|  |         } | ||
|  |       } | ||
|  |     } | ||
|  |     newObj.default = obj; | ||
|  |     if (cache) { | ||
|  |       cache.set(obj, newObj); | ||
|  |     } | ||
|  |     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 " + obj); | ||
|  |   } | ||
|  | `;
 | ||
|  | 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; | ||
|  |     } else if (call !== void 0) { | ||
|  |       throw new TypeError("Derived constructors may only return object or undefined"); | ||
|  |     } | ||
|  | 
 | ||
|  |     return assertThisInitialized(self); | ||
|  |   } | ||
|  | `;
 | ||
|  | 
 | ||
|  | helpers.createSuper = helper("7.9.0")`
 | ||
|  |   import getPrototypeOf from "getPrototypeOf"; | ||
|  |   import isNativeReflectConstruct from "isNativeReflectConstruct"; | ||
|  |   import possibleConstructorReturn from "possibleConstructorReturn"; | ||
|  | 
 | ||
|  |   export default function _createSuper(Derived) { | ||
|  |     var hasNativeReflectConstruct = isNativeReflectConstruct(); | ||
|  | 
 | ||
|  |     return function _createSuperInternal() { | ||
|  |       var Super = getPrototypeOf(Derived), result; | ||
|  |       if (hasNativeReflectConstruct) { | ||
|  |         // NOTE: This doesn't work if this.__proto__.constructor has been modified.
 | ||
|  |         var NewTarget = getPrototypeOf(this).constructor; | ||
|  |         result = Reflect.construct(Super, arguments, NewTarget); | ||
|  |       } else { | ||
|  |         result = Super.apply(this, arguments); | ||
|  |       } | ||
|  |       return possibleConstructorReturn(this, result); | ||
|  |     } | ||
|  |   } | ||
|  |  `;
 | ||
|  | 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 superPropBase from "superPropBase"; | ||
|  | 
 | ||
|  |   export default function _get() { | ||
|  |     if (typeof Reflect !== "undefined" && Reflect.get) { | ||
|  |       _get = Reflect.get.bind(); | ||
|  |     } else { | ||
|  |       _get = function _get(target, property, receiver) { | ||
|  |         var base = superPropBase(target, property); | ||
|  | 
 | ||
|  |         if (!base) return; | ||
|  | 
 | ||
|  |         var desc = Object.getOwnPropertyDescriptor(base, property); | ||
|  |         if (desc.get) { | ||
|  |           // STEP 3. If receiver is not present, then set receiver to target.
 | ||
|  |           return desc.get.call(arguments.length < 3 ? target : receiver); | ||
|  |         } | ||
|  | 
 | ||
|  |         return desc.value; | ||
|  |       }; | ||
|  |     } | ||
|  |     return _get.apply(this, arguments); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.set = helper("7.0.0-beta.0")`
 | ||
|  |   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 TypeError('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.readOnlyError = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _readOnlyError(name) { | ||
|  |     throw new TypeError("\\"" + name + "\\" is read-only"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.writeOnlyError = helper("7.12.13")`
 | ||
|  |   export default function _writeOnlyError(name) { | ||
|  |     throw new TypeError("\\"" + name + "\\" is write-only"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classNameTDZError = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _classNameTDZError(name) { | ||
|  |     throw new ReferenceError("Class \\"" + name + "\\" cannot be referenced in computed property keys."); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.temporalUndefined = helper("7.0.0-beta.0")`
 | ||
|  |   // This function isn't mean to be called, but to be used as a reference.
 | ||
|  |   // We can't use a normal object because it isn't hoisted.
 | ||
|  |   export default function _temporalUndefined() {} | ||
|  | `;
 | ||
|  | helpers.tdz = helper("7.5.5")`
 | ||
|  |   export default function _tdzError(name) { | ||
|  |     throw new ReferenceError(name + " is not defined - temporal dead zone"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.temporalRef = helper("7.0.0-beta.0")`
 | ||
|  |   import undef from "temporalUndefined"; | ||
|  |   import err from "tdz"; | ||
|  | 
 | ||
|  |   export default function _temporalRef(val, name) { | ||
|  |     return val === undef ? err(name) : val; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.slicedToArray = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithHoles from "arrayWithHoles"; | ||
|  |   import iterableToArrayLimit from "iterableToArrayLimit"; | ||
|  |   import unsupportedIterableToArray from "unsupportedIterableToArray"; | ||
|  |   import nonIterableRest from "nonIterableRest"; | ||
|  | 
 | ||
|  |   export default function _slicedToArray(arr, i) { | ||
|  |     return ( | ||
|  |       arrayWithHoles(arr) || | ||
|  |       iterableToArrayLimit(arr, i) || | ||
|  |       unsupportedIterableToArray(arr, i) || | ||
|  |       nonIterableRest() | ||
|  |     ); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.slicedToArrayLoose = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithHoles from "arrayWithHoles"; | ||
|  |   import iterableToArrayLimitLoose from "iterableToArrayLimitLoose"; | ||
|  |   import unsupportedIterableToArray from "unsupportedIterableToArray"; | ||
|  |   import nonIterableRest from "nonIterableRest"; | ||
|  | 
 | ||
|  |   export default function _slicedToArrayLoose(arr, i) { | ||
|  |     return ( | ||
|  |       arrayWithHoles(arr) || | ||
|  |       iterableToArrayLimitLoose(arr, i) || | ||
|  |       unsupportedIterableToArray(arr, i) || | ||
|  |       nonIterableRest() | ||
|  |     ); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.toArray = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithHoles from "arrayWithHoles"; | ||
|  |   import iterableToArray from "iterableToArray"; | ||
|  |   import unsupportedIterableToArray from "unsupportedIterableToArray"; | ||
|  |   import nonIterableRest from "nonIterableRest"; | ||
|  | 
 | ||
|  |   export default function _toArray(arr) { | ||
|  |     return ( | ||
|  |       arrayWithHoles(arr) || | ||
|  |       iterableToArray(arr) || | ||
|  |       unsupportedIterableToArray(arr) || | ||
|  |       nonIterableRest() | ||
|  |     ); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.toConsumableArray = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayWithoutHoles from "arrayWithoutHoles"; | ||
|  |   import iterableToArray from "iterableToArray"; | ||
|  |   import unsupportedIterableToArray from "unsupportedIterableToArray"; | ||
|  |   import nonIterableSpread from "nonIterableSpread"; | ||
|  | 
 | ||
|  |   export default function _toConsumableArray(arr) { | ||
|  |     return ( | ||
|  |       arrayWithoutHoles(arr) || | ||
|  |       iterableToArray(arr) || | ||
|  |       unsupportedIterableToArray(arr) || | ||
|  |       nonIterableSpread() | ||
|  |     ); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.arrayWithoutHoles = helper("7.0.0-beta.0")`
 | ||
|  |   import arrayLikeToArray from "arrayLikeToArray"; | ||
|  | 
 | ||
|  |   export default function _arrayWithoutHoles(arr) { | ||
|  |     if (Array.isArray(arr)) return arrayLikeToArray(arr); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.arrayWithHoles = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _arrayWithHoles(arr) { | ||
|  |     if (Array.isArray(arr)) return arr; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.maybeArrayLike = helper("7.9.0")`
 | ||
|  |   import arrayLikeToArray from "arrayLikeToArray"; | ||
|  | 
 | ||
|  |   export default function _maybeArrayLike(next, arr, i) { | ||
|  |     if (arr && !Array.isArray(arr) && typeof arr.length === "number") { | ||
|  |       var len = arr.length; | ||
|  |       return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len); | ||
|  |     } | ||
|  |     return next(arr, i); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.iterableToArray = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _iterableToArray(iter) { | ||
|  |     if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.unsupportedIterableToArray = helper("7.9.0")`
 | ||
|  |   import arrayLikeToArray from "arrayLikeToArray"; | ||
|  | 
 | ||
|  |   export default function _unsupportedIterableToArray(o, minLen) { | ||
|  |     if (!o) return; | ||
|  |     if (typeof o === "string") return arrayLikeToArray(o, minLen); | ||
|  |     var n = Object.prototype.toString.call(o).slice(8, -1); | ||
|  |     if (n === "Object" && o.constructor) n = o.constructor.name; | ||
|  |     if (n === "Map" || n === "Set") return Array.from(o); | ||
|  |     if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) | ||
|  |       return arrayLikeToArray(o, minLen); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.arrayLikeToArray = helper("7.9.0")`
 | ||
|  |   export default function _arrayLikeToArray(arr, len) { | ||
|  |     if (len == null || len > arr.length) len = arr.length; | ||
|  |     for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; | ||
|  |     return arr2; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.nonIterableSpread = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _nonIterableSpread() { | ||
|  |     throw new TypeError( | ||
|  |       "Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." | ||
|  |     ); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.nonIterableRest = helper("7.0.0-beta.0")`
 | ||
|  |   export default function _nonIterableRest() { | ||
|  |     throw new TypeError( | ||
|  |       "Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." | ||
|  |     ); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.createForOfIteratorHelper = helper("7.9.0")`
 | ||
|  |   import unsupportedIterableToArray from "unsupportedIterableToArray"; | ||
|  | 
 | ||
|  |   // s: start (create the iterator)
 | ||
|  |   // n: next
 | ||
|  |   // e: error (called whenever something throws)
 | ||
|  |   // f: finish (always called at the end)
 | ||
|  | 
 | ||
|  |   export default function _createForOfIteratorHelper(o, allowArrayLike) { | ||
|  |     var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; | ||
|  | 
 | ||
|  |     if (!it) { | ||
|  |       // Fallback for engines without symbol support
 | ||
|  |       if ( | ||
|  |         Array.isArray(o) || | ||
|  |         (it = unsupportedIterableToArray(o)) || | ||
|  |         (allowArrayLike && o && typeof o.length === "number") | ||
|  |       ) { | ||
|  |         if (it) o = it; | ||
|  |         var i = 0; | ||
|  |         var F = function(){}; | ||
|  |         return { | ||
|  |           s: F, | ||
|  |           n: function() { | ||
|  |             if (i >= o.length) return { done: true }; | ||
|  |             return { done: false, value: o[i++] }; | ||
|  |           }, | ||
|  |           e: function(e) { throw e; }, | ||
|  |           f: F, | ||
|  |         }; | ||
|  |       } | ||
|  | 
 | ||
|  |       throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); | ||
|  |     } | ||
|  | 
 | ||
|  |     var normalCompletion = true, didErr = false, err; | ||
|  | 
 | ||
|  |     return { | ||
|  |       s: function() { | ||
|  |         it = it.call(o); | ||
|  |       }, | ||
|  |       n: function() { | ||
|  |         var step = it.next(); | ||
|  |         normalCompletion = step.done; | ||
|  |         return step; | ||
|  |       }, | ||
|  |       e: function(e) { | ||
|  |         didErr = true; | ||
|  |         err = e; | ||
|  |       }, | ||
|  |       f: function() { | ||
|  |         try { | ||
|  |           if (!normalCompletion && it.return != null) it.return(); | ||
|  |         } finally { | ||
|  |           if (didErr) throw err; | ||
|  |         } | ||
|  |       } | ||
|  |     }; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.createForOfIteratorHelperLoose = helper("7.9.0")`
 | ||
|  |   import unsupportedIterableToArray from "unsupportedIterableToArray"; | ||
|  | 
 | ||
|  |   export default function _createForOfIteratorHelperLoose(o, allowArrayLike) { | ||
|  |     var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; | ||
|  | 
 | ||
|  |     if (it) return (it = it.call(o)).next.bind(it); | ||
|  | 
 | ||
|  |     // Fallback for engines without symbol support
 | ||
|  |     if ( | ||
|  |       Array.isArray(o) || | ||
|  |       (it = unsupportedIterableToArray(o)) || | ||
|  |       (allowArrayLike && o && typeof o.length === "number") | ||
|  |     ) { | ||
|  |       if (it) o = it; | ||
|  |       var i = 0; | ||
|  |       return function() { | ||
|  |         if (i >= o.length) return { done: true }; | ||
|  |         return { done: false, value: o[i++] }; | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); | ||
|  |   } | ||
|  | `;
 | ||
|  | 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 runs after the decorators transform.' | ||
|  |         ); | ||
|  |     } | ||
|  | `;
 | ||
|  | 
 | ||
|  | 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){ | ||
|  |             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")`
 | ||
|  |   import classApplyDescriptorGet from "classApplyDescriptorGet"; | ||
|  |   import classExtractFieldDescriptor from "classExtractFieldDescriptor"; | ||
|  |   export default function _classPrivateFieldGet(receiver, privateMap) { | ||
|  |     var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get"); | ||
|  |     return classApplyDescriptorGet(receiver, descriptor); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateFieldSet = helper("7.0.0-beta.0")`
 | ||
|  |   import classApplyDescriptorSet from "classApplyDescriptorSet"; | ||
|  |   import classExtractFieldDescriptor from "classExtractFieldDescriptor"; | ||
|  |   export default function _classPrivateFieldSet(receiver, privateMap, value) { | ||
|  |     var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); | ||
|  |     classApplyDescriptorSet(receiver, descriptor, value); | ||
|  |     return value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateFieldDestructureSet = helper("7.4.4")`
 | ||
|  |   import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet"; | ||
|  |   import classExtractFieldDescriptor from "classExtractFieldDescriptor"; | ||
|  |   export default function _classPrivateFieldDestructureSet(receiver, privateMap) { | ||
|  |     var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set"); | ||
|  |     return classApplyDescriptorDestructureSet(receiver, descriptor); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classExtractFieldDescriptor = helper("7.13.10")`
 | ||
|  |   export default function _classExtractFieldDescriptor(receiver, privateMap, action) { | ||
|  |     if (!privateMap.has(receiver)) { | ||
|  |       throw new TypeError("attempted to " + action + " private field on non-instance"); | ||
|  |     } | ||
|  |     return privateMap.get(receiver); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")`
 | ||
|  |   import classApplyDescriptorGet from "classApplyDescriptorGet"; | ||
|  |   import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; | ||
|  |   import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; | ||
|  |   export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { | ||
|  |     classCheckPrivateStaticAccess(receiver, classConstructor); | ||
|  |     classCheckPrivateStaticFieldDescriptor(descriptor, "get"); | ||
|  |     return classApplyDescriptorGet(receiver, descriptor); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")`
 | ||
|  |   import classApplyDescriptorSet from "classApplyDescriptorSet"; | ||
|  |   import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; | ||
|  |   import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; | ||
|  |   export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { | ||
|  |     classCheckPrivateStaticAccess(receiver, classConstructor); | ||
|  |     classCheckPrivateStaticFieldDescriptor(descriptor, "set"); | ||
|  |     classApplyDescriptorSet(receiver, descriptor, value); | ||
|  |     return value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateMethodGet = helper("7.3.2")`
 | ||
|  |   import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; | ||
|  |   export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) { | ||
|  |     classCheckPrivateStaticAccess(receiver, classConstructor); | ||
|  |     return method; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateMethodSet = helper("7.3.2")`
 | ||
|  |   export default function _classStaticPrivateMethodSet() { | ||
|  |     throw new TypeError("attempted to set read only static private field"); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classApplyDescriptorGet = helper("7.13.10")`
 | ||
|  |   export default function _classApplyDescriptorGet(receiver, descriptor) { | ||
|  |     if (descriptor.get) { | ||
|  |       return descriptor.get.call(receiver); | ||
|  |     } | ||
|  |     return descriptor.value; | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classApplyDescriptorSet = helper("7.13.10")`
 | ||
|  |   export default function _classApplyDescriptorSet(receiver, descriptor, value) { | ||
|  |     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; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classApplyDescriptorDestructureSet = helper("7.13.10")`
 | ||
|  |   export default function _classApplyDescriptorDestructureSet(receiver, descriptor) { | ||
|  |     if (descriptor.set) { | ||
|  |       if (!("__destrObj" in descriptor)) { | ||
|  |         descriptor.__destrObj = { | ||
|  |           set value(v) { | ||
|  |             descriptor.set.call(receiver, v) | ||
|  |           }, | ||
|  |         }; | ||
|  |       } | ||
|  |       return descriptor.__destrObj; | ||
|  |     } 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"); | ||
|  |       } | ||
|  | 
 | ||
|  |       return descriptor; | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classStaticPrivateFieldDestructureSet = helper("7.13.10")`
 | ||
|  |   import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet"; | ||
|  |   import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess"; | ||
|  |   import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor"; | ||
|  |   export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) { | ||
|  |     classCheckPrivateStaticAccess(receiver, classConstructor); | ||
|  |     classCheckPrivateStaticFieldDescriptor(descriptor, "set"); | ||
|  |     return classApplyDescriptorDestructureSet(receiver, descriptor); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classCheckPrivateStaticAccess = helper("7.13.10")`
 | ||
|  |   export default function _classCheckPrivateStaticAccess(receiver, classConstructor) { | ||
|  |     if (receiver !== classConstructor) { | ||
|  |       throw new TypeError("Private static access of wrong provenance"); | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classCheckPrivateStaticFieldDescriptor = helper("7.13.10")`
 | ||
|  |   export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { | ||
|  |     if (descriptor === undefined) { | ||
|  |       throw new TypeError("attempted to " + action + " private static field before its declaration"); | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | 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.checkPrivateRedeclaration = helper("7.14.1")`
 | ||
|  |   export default function _checkPrivateRedeclaration(obj, privateCollection) { | ||
|  |     if (privateCollection.has(obj)) { | ||
|  |       throw new TypeError("Cannot initialize the same private elements twice on an object"); | ||
|  |     } | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateFieldInitSpec = helper("7.14.1")`
 | ||
|  |   import checkPrivateRedeclaration from "checkPrivateRedeclaration"; | ||
|  | 
 | ||
|  |   export default function _classPrivateFieldInitSpec(obj, privateMap, value) { | ||
|  |     checkPrivateRedeclaration(obj, privateMap); | ||
|  |     privateMap.set(obj, value); | ||
|  |   } | ||
|  | `;
 | ||
|  | helpers.classPrivateMethodInitSpec = helper("7.14.1")`
 | ||
|  |   import checkPrivateRedeclaration from "checkPrivateRedeclaration"; | ||
|  | 
 | ||
|  |   export default function _classPrivateMethodInitSpec(obj, privateSet) { | ||
|  |     checkPrivateRedeclaration(obj, privateSet); | ||
|  |     privateSet.add(obj); | ||
|  |   } | ||
|  | `;
 | ||
|  | { | ||
|  |   helpers.classPrivateMethodSet = helper("7.1.6")`
 | ||
|  |     export default function _classPrivateMethodSet() { | ||
|  |       throw new TypeError("attempted to reassign private method"); | ||
|  |     } | ||
|  |   `;
 | ||
|  | } | ||
|  | helpers.identity = helper("7.17.0")`
 | ||
|  |   export default function _identity(x) { | ||
|  |     return x; | ||
|  |   } | ||
|  | `;
 | ||
|  | 
 | ||
|  | //# sourceMappingURL=helpers.js.map
 |