UNPKG

atd-browser-support

Version:
1,454 lines (1,281 loc) 339 kB
/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; __webpack_require__(1); __webpack_require__(2); __webpack_require__(3); __webpack_require__(4); __webpack_require__(5); /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /******/(function (modules) { // webpackBootstrap /******/ // The module cache /******/var installedModules = {}; /******/ /******/ // The require function /******/function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/if (installedModules[moduleId]) { /******/return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/var module = installedModules[moduleId] = { /******/i: moduleId, /******/l: false, /******/exports: {} /******/ }; /******/ /******/ // Execute the module function /******/modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/module.l = true; /******/ /******/ // Return the exports of the module /******/return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/__webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/__webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/__webpack_require__.d = function (exports, name, getter) { /******/if (!__webpack_require__.o(exports, name)) { /******/Object.defineProperty(exports, name, { /******/configurable: false, /******/enumerable: true, /******/get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/__webpack_require__.n = function (module) { /******/var getter = module && module.__esModule ? /******/function getDefault() { return module['default']; } : /******/function getModuleExports() { return module; }; /******/__webpack_require__.d(getter, 'a', getter); /******/return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/__webpack_require__.o = function (object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/__webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/return __webpack_require__(__webpack_require__.s = 13); /******/ })( /************************************************************************/ /******/[ /* 0 */ /***/function (module, exports, __webpack_require__) { "use strict"; var implementation = __webpack_require__(20); module.exports = Function.prototype.bind || implementation; /***/ }, /* 1 */ /***/function (module, exports, __webpack_require__) { "use strict"; module.exports = function requirePromise() { if (typeof Promise !== 'function') { throw new TypeError('`Promise.prototype.finally` requires a global `Promise` be available.'); } }; /***/ }, /* 2 */ /***/function (module, exports, __webpack_require__) { "use strict"; var bind = __webpack_require__(0); module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); /***/ }, /* 3 */ /***/function (module, exports, __webpack_require__) { "use strict"; var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); }; var fnToStr = Function.prototype.toString; var constructorRegex = /^\s*class /; var isES6ClassFn = function isES6ClassFn(value) { try { var fnStr = fnToStr.call(value); var singleStripped = fnStr.replace(/\/\/.*\n/g, ''); var multiStripped = singleStripped.replace(/\/\*[.\s\S]*\*\//g, ''); var spaceStripped = multiStripped.replace(/\n/mg, ' ').replace(/ {2}/g, ' '); return constructorRegex.test(spaceStripped); } catch (e) { return false; // not a function } }; var tryFunctionObject = function tryFunctionObject(value) { try { if (isES6ClassFn(value)) { return false; } fnToStr.call(value); return true; } catch (e) { return false; } }; var toStr = Object.prototype.toString; var fnClass = '[object Function]'; var genClass = '[object GeneratorFunction]'; var hasToStringTag = typeof Symbol === 'function' && _typeof(Symbol.toStringTag) === 'symbol'; module.exports = function isCallable(value) { if (!value) { return false; } if (typeof value !== 'function' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object') { return false; } if (hasToStringTag) { return tryFunctionObject(value); } if (isES6ClassFn(value)) { return false; } var strClass = toStr.call(value); return strClass === fnClass || strClass === genClass; }; /***/ }, /* 4 */ /***/function (module, exports, __webpack_require__) { "use strict"; var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); }; var keys = __webpack_require__(21); var foreach = __webpack_require__(23); var hasSymbols = typeof Symbol === 'function' && _typeof(Symbol()) === 'symbol'; var toStr = Object.prototype.toString; var isFunction = function isFunction(fn) { return typeof fn === 'function' && toStr.call(fn) === '[object Function]'; }; var arePropertyDescriptorsSupported = function arePropertyDescriptorsSupported() { var obj = {}; try { Object.defineProperty(obj, 'x', { enumerable: false, value: obj }); /* eslint-disable no-unused-vars, no-restricted-syntax */ for (var _ in obj) { return false; } /* eslint-enable no-unused-vars, no-restricted-syntax */ return obj.x === obj; } catch (e) { /* this is IE 8. */ return false; } }; var supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported(); var defineProperty = function defineProperty(object, name, value, predicate) { if (name in object && (!isFunction(predicate) || !predicate())) { return; } if (supportsDescriptors) { Object.defineProperty(object, name, { configurable: true, enumerable: false, value: value, writable: true }); } else { object[name] = value; } }; var defineProperties = function defineProperties(object, map) { var predicates = arguments.length > 2 ? arguments[2] : {}; var props = keys(map); if (hasSymbols) { props = props.concat(Object.getOwnPropertySymbols(map)); } foreach(props, function (name) { defineProperty(object, name, map[name], predicates[name]); }); }; defineProperties.supportsDescriptors = !!supportsDescriptors; module.exports = defineProperties; /***/ }, /* 5 */ /***/function (module, exports, __webpack_require__) { "use strict"; var requirePromise = __webpack_require__(1); requirePromise(); var ES = __webpack_require__(24); var bind = __webpack_require__(0); var promiseResolve = function PromiseResolve(C, value) { return new C(function (resolve) { resolve(value); }); }; var OriginalPromise = Promise; var createThenFinally = function CreateThenFinally(C, onFinally) { return function (value) { var result = onFinally(); var promise = promiseResolve(C, result); var valueThunk = function valueThunk() { return value; }; return promise.then(valueThunk); }; }; var createCatchFinally = function CreateCatchFinally(C, onFinally) { return function (reason) { var result = onFinally(); var promise = promiseResolve(C, result); var thrower = function thrower() { throw reason; }; return promise.then(thrower); }; }; var then = bind.call(Function.call, OriginalPromise.prototype.then); var promiseFinally = function finally_(onFinally) { /* eslint no-invalid-this: 0 */ var promise = this; then(promise, null, function () {}); // throw if IsPromise(this) is false; catch() to avoid unhandled rejection warnings var C = ES.SpeciesConstructor(promise, OriginalPromise); // may throw var thenFinally = onFinally; var catchFinally = onFinally; if (ES.IsCallable(onFinally)) { thenFinally = createThenFinally(C, onFinally); catchFinally = createCatchFinally(C, onFinally); } return promise.then(thenFinally, catchFinally); }; if (Object.getOwnPropertyDescriptor) { var descriptor = Object.getOwnPropertyDescriptor(promiseFinally, 'name'); if (descriptor && descriptor.configurable) { Object.defineProperty(promiseFinally, 'name', { configurable: true, value: 'finally' }); } } module.exports = promiseFinally; /***/ }, /* 6 */ /***/function (module, exports, __webpack_require__) { "use strict"; var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); }; module.exports = function isPrimitive(value) { return value === null || typeof value !== 'function' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object'; }; /***/ }, /* 7 */ /***/function (module, exports, __webpack_require__) { "use strict"; module.exports = Number.isNaN || function isNaN(a) { return a !== a; }; /***/ }, /* 8 */ /***/function (module, exports, __webpack_require__) { "use strict"; var $isNaN = Number.isNaN || function (a) { return a !== a; }; module.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; }; /***/ }, /* 9 */ /***/function (module, exports, __webpack_require__) { "use strict"; var has = Object.prototype.hasOwnProperty; module.exports = function assign(target, source) { if (Object.assign) { return Object.assign(target, source); } for (var key in source) { if (has.call(source, key)) { target[key] = source[key]; } } return target; }; /***/ }, /* 10 */ /***/function (module, exports, __webpack_require__) { "use strict"; module.exports = function sign(number) { return number >= 0 ? 1 : -1; }; /***/ }, /* 11 */ /***/function (module, exports, __webpack_require__) { "use strict"; module.exports = function mod(number, modulo) { var remain = number % modulo; return Math.floor(remain >= 0 ? remain : remain + modulo); }; /***/ }, /* 12 */ /***/function (module, exports, __webpack_require__) { "use strict"; var requirePromise = __webpack_require__(1); var implementation = __webpack_require__(5); module.exports = function getPolyfill() { requirePromise(); return typeof Promise.prototype['finally'] === 'function' ? Promise.prototype['finally'] : implementation; }; /***/ }, /* 13 */ /***/function (module, exports, __webpack_require__) { "use strict"; __webpack_require__(14); __webpack_require__(15); __webpack_require__(18); var _promisePrototype = __webpack_require__(19); var _promisePrototype2 = _interopRequireDefault(_promisePrototype); __webpack_require__(35); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _promisePrototype2.default.shim(); /***/ }, /* 14 */ /***/function (module, exports, __webpack_require__) { "use strict"; // Polyfill for creating CustomEvents on IE9/10/11 // code pulled from: // https://github.com/d4tocchini/customevent-polyfill // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill try { var ce = new window.CustomEvent('test'); ce.preventDefault(); if (ce.defaultPrevented !== true) { // IE has problems with .preventDefault() on custom events // http://stackoverflow.com/questions/23349191 throw new Error('Could not prevent default'); } } catch (e) { var CustomEvent = function CustomEvent(event, params) { var evt, origPrevent; params = params || { bubbles: false, cancelable: false, detail: undefined }; evt = document.createEvent("CustomEvent"); evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); origPrevent = evt.preventDefault; evt.preventDefault = function () { origPrevent.call(this); try { Object.defineProperty(this, 'defaultPrevented', { get: function get() { return true; } }); } catch (e) { this.defaultPrevented = true; } }; return evt; }; CustomEvent.prototype = window.Event.prototype; window.CustomEvent = CustomEvent; // expose definition to window } /***/ }, /* 15 */ /***/function (module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */ (function (global, process) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__; var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); }; /*! * https://github.com/paulmillr/es6-shim * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com) * and contributors, MIT License * es6-shim: v0.35.1 * see https://github.com/paulmillr/es6-shim/blob/0.35.1/LICENSE * Details and documentation: * https://github.com/paulmillr/es6-shim/ */ // UMD (Universal Module Definition) // see https://github.com/umdjs/umd/blob/master/returnExports.js (function (root, factory) { /*global define, module, exports */ if (true) { // AMD. Register as an anonymous module. !(__WEBPACK_AMD_DEFINE_FACTORY__ = factory, __WEBPACK_AMD_DEFINE_RESULT__ = typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? __WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module) : __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') { // Node. Does not work with strict CommonJS, but // only CommonJS-like environments that support module.exports, // like Node. module.exports = factory(); } else { // Browser globals (root is window) root.returnExports = factory(); } })(undefined, function () { 'use strict'; var _apply = Function.call.bind(Function.apply); var _call = Function.call.bind(Function.call); var isArray = Array.isArray; var keys = Object.keys; var not = function notThunker(func) { return function notThunk() { return !_apply(func, this, arguments); }; }; var throwsError = function throwsError(func) { try { func(); return false; } catch (e) { return true; } }; var valueOrFalseIfThrows = function valueOrFalseIfThrows(func) { try { return func(); } catch (e) { return false; } }; var isCallableWithoutNew = not(throwsError); var arePropertyDescriptorsSupported = function arePropertyDescriptorsSupported() { // if Object.defineProperty exists but throws, it's IE 8 return !throwsError(function () { Object.defineProperty({}, 'x', { get: function get() {} }); }); }; var supportsDescriptors = !!Object.defineProperty && arePropertyDescriptorsSupported(); var functionsHaveNames = function foo() {}.name === 'foo'; // eslint-disable-line no-extra-parens var _forEach = Function.call.bind(Array.prototype.forEach); var _reduce = Function.call.bind(Array.prototype.reduce); var _filter = Function.call.bind(Array.prototype.filter); var _some = Function.call.bind(Array.prototype.some); var defineProperty = function defineProperty(object, name, value, force) { if (!force && name in object) { return; } if (supportsDescriptors) { Object.defineProperty(object, name, { configurable: true, enumerable: false, writable: true, value: value }); } else { object[name] = value; } }; // Define configurable, writable and non-enumerable props // if they don’t exist. var defineProperties = function defineProperties(object, map, forceOverride) { _forEach(keys(map), function (name) { var method = map[name]; defineProperty(object, name, method, !!forceOverride); }); }; var _toString = Function.call.bind(Object.prototype.toString); var isCallable = false ? function IsCallableSlow(x) { // Some old browsers (IE, FF) say that typeof /abc/ === 'function' return typeof x === 'function' && _toString(x) === '[object Function]'; } : function IsCallableFast(x) { return typeof x === 'function'; }; var Value = { getter: function getter(object, name, _getter) { if (!supportsDescriptors) { throw new TypeError('getters require true ES5 support'); } Object.defineProperty(object, name, { configurable: true, enumerable: false, get: _getter }); }, proxy: function proxy(originalObject, key, targetObject) { if (!supportsDescriptors) { throw new TypeError('getters require true ES5 support'); } var originalDescriptor = Object.getOwnPropertyDescriptor(originalObject, key); Object.defineProperty(targetObject, key, { configurable: originalDescriptor.configurable, enumerable: originalDescriptor.enumerable, get: function getKey() { return originalObject[key]; }, set: function setKey(value) { originalObject[key] = value; } }); }, redefine: function redefine(object, property, newValue) { if (supportsDescriptors) { var descriptor = Object.getOwnPropertyDescriptor(object, property); descriptor.value = newValue; Object.defineProperty(object, property, descriptor); } else { object[property] = newValue; } }, defineByDescriptor: function defineByDescriptor(object, property, descriptor) { if (supportsDescriptors) { Object.defineProperty(object, property, descriptor); } else if ('value' in descriptor) { object[property] = descriptor.value; } }, preserveToString: function preserveToString(target, source) { if (source && isCallable(source.toString)) { defineProperty(target, 'toString', source.toString.bind(source), true); } } }; // Simple shim for Object.create on ES3 browsers // (unlike real shim, no attempt to support `prototype === null`) var create = Object.create || function (prototype, properties) { var Prototype = function Prototype() {}; Prototype.prototype = prototype; var object = new Prototype(); if (typeof properties !== 'undefined') { keys(properties).forEach(function (key) { Value.defineByDescriptor(object, key, properties[key]); }); } return object; }; var supportsSubclassing = function supportsSubclassing(C, f) { if (!Object.setPrototypeOf) { return false; /* skip test on IE < 11 */ } return valueOrFalseIfThrows(function () { var Sub = function Subclass(arg) { var o = new C(arg); Object.setPrototypeOf(o, Subclass.prototype); return o; }; Object.setPrototypeOf(Sub, C); Sub.prototype = create(C.prototype, { constructor: { value: Sub } }); return f(Sub); }); }; var getGlobal = function getGlobal() { /* global self, window, global */ // the only reliable means to get the global object is // `Function('return this')()` // However, this causes CSP violations in Chrome apps. if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } throw new Error('unable to locate global object'); }; var globals = getGlobal(); var globalIsFinite = globals.isFinite; var _indexOf = Function.call.bind(String.prototype.indexOf); var _arrayIndexOfApply = Function.apply.bind(Array.prototype.indexOf); var _concat = Function.call.bind(Array.prototype.concat); // var _sort = Function.call.bind(Array.prototype.sort); var _strSlice = Function.call.bind(String.prototype.slice); var _push = Function.call.bind(Array.prototype.push); var _pushApply = Function.apply.bind(Array.prototype.push); var _shift = Function.call.bind(Array.prototype.shift); var _max = Math.max; var _min = Math.min; var _floor = Math.floor; var _abs = Math.abs; var _exp = Math.exp; var _log = Math.log; var _sqrt = Math.sqrt; var _hasOwnProperty = Function.call.bind(Object.prototype.hasOwnProperty); var ArrayIterator; // make our implementation private var noop = function noop() {}; var OrigMap = globals.Map; var origMapDelete = OrigMap && OrigMap.prototype['delete']; var origMapGet = OrigMap && OrigMap.prototype.get; var origMapHas = OrigMap && OrigMap.prototype.has; var origMapSet = OrigMap && OrigMap.prototype.set; var _Symbol = globals.Symbol || {}; var symbolSpecies = _Symbol.species || '@@species'; var numberIsNaN = Number.isNaN || function isNaN(value) { // NaN !== NaN, but they are identical. // NaNs are the only non-reflexive value, i.e., if x !== x, // then x is NaN. // isNaN is broken: it converts its argument to number, so // isNaN('foo') => true return value !== value; }; var numberIsFinite = Number.isFinite || function isFinite(value) { return typeof value === 'number' && globalIsFinite(value); }; var _sign = isCallable(Math.sign) ? Math.sign : function sign(value) { var number = Number(value); if (number === 0) { return number; } if (numberIsNaN(number)) { return number; } return number < 0 ? -1 : 1; }; // taken directly from https://github.com/ljharb/is-arguments/blob/master/index.js // can be replaced with require('is-arguments') if we ever use a build process instead var isStandardArguments = function isArguments(value) { return _toString(value) === '[object Arguments]'; }; var isLegacyArguments = function isArguments(value) { return value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.length === 'number' && value.length >= 0 && _toString(value) !== '[object Array]' && _toString(value.callee) === '[object Function]'; }; var isArguments = isStandardArguments(arguments) ? isStandardArguments : isLegacyArguments; var Type = { primitive: function primitive(x) { return x === null || typeof x !== 'function' && (typeof x === 'undefined' ? 'undefined' : _typeof(x)) !== 'object'; }, string: function string(x) { return _toString(x) === '[object String]'; }, regex: function regex(x) { return _toString(x) === '[object RegExp]'; }, symbol: function symbol(x) { return typeof globals.Symbol === 'function' && (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'symbol'; } }; var overrideNative = function overrideNative(object, property, replacement) { var original = object[property]; defineProperty(object, property, replacement, true); Value.preserveToString(object[property], original); }; // eslint-disable-next-line no-restricted-properties var hasSymbols = typeof _Symbol === 'function' && typeof _Symbol['for'] === 'function' && Type.symbol(_Symbol()); // This is a private name in the es6 spec, equal to '[Symbol.iterator]' // we're going to use an arbitrary _-prefixed name to make our shims // work properly with each other, even though we don't have full Iterator // support. That is, `Array.from(map.keys())` will work, but we don't // pretend to export a "real" Iterator interface. var $iterator$ = Type.symbol(_Symbol.iterator) ? _Symbol.iterator : '_es6-shim iterator_'; // Firefox ships a partial implementation using the name @@iterator. // https://bugzilla.mozilla.org/show_bug.cgi?id=907077#c14 // So use that name if we detect it. if (globals.Set && typeof new globals.Set()['@@iterator'] === 'function') { $iterator$ = '@@iterator'; } // Reflect if (!globals.Reflect) { defineProperty(globals, 'Reflect', {}, true); } var Reflect = globals.Reflect; var $String = String; /* global document */ var domAll = typeof document === 'undefined' || !document ? null : document.all; /* jshint eqnull:true */ var isNullOrUndefined = domAll == null ? function isNullOrUndefined(x) { /* jshint eqnull:true */ return x == null; } : function isNullOrUndefinedAndNotDocumentAll(x) { /* jshint eqnull:true */ return x == null && x !== domAll; }; var ES = { // http://www.ecma-international.org/ecma-262/6.0/#sec-call Call: function Call(F, V) { var args = arguments.length > 2 ? arguments[2] : []; if (!ES.IsCallable(F)) { throw new TypeError(F + ' is not a function'); } return _apply(F, V, args); }, RequireObjectCoercible: function RequireObjectCoercible(x, optMessage) { if (isNullOrUndefined(x)) { throw new TypeError(optMessage || 'Cannot call method on ' + x); } return x; }, // This might miss the "(non-standard exotic and does not implement // [[Call]])" case from // http://www.ecma-international.org/ecma-262/6.0/#sec-typeof-operator-runtime-semantics-evaluation // but we can't find any evidence these objects exist in practice. // If we find some in the future, you could test `Object(x) === x`, // which is reliable according to // http://www.ecma-international.org/ecma-262/6.0/#sec-toobject // but is not well optimized by runtimes and creates an object // whenever it returns false, and thus is very slow. TypeIsObject: function TypeIsObject(x) { if (x === void 0 || x === null || x === true || x === false) { return false; } return typeof x === 'function' || (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' || x === domAll; }, ToObject: function ToObject(o, optMessage) { return Object(ES.RequireObjectCoercible(o, optMessage)); }, IsCallable: isCallable, IsConstructor: function IsConstructor(x) { // We can't tell callables from constructors in ES5 return ES.IsCallable(x); }, ToInt32: function ToInt32(x) { return ES.ToNumber(x) >> 0; }, ToUint32: function ToUint32(x) { return ES.ToNumber(x) >>> 0; }, ToNumber: function ToNumber(value) { if (_toString(value) === '[object Symbol]') { throw new TypeError('Cannot convert a Symbol value to a number'); } return +value; }, ToInteger: function ToInteger(value) { var number = ES.ToNumber(value); if (numberIsNaN(number)) { return 0; } if (number === 0 || !numberIsFinite(number)) { return number; } return (number > 0 ? 1 : -1) * _floor(_abs(number)); }, ToLength: function ToLength(value) { var len = ES.ToInteger(value); if (len <= 0) { return 0; } // includes converting -0 to +0 if (len > Number.MAX_SAFE_INTEGER) { return Number.MAX_SAFE_INTEGER; } return len; }, SameValue: function SameValue(a, b) { if (a === b) { // 0 === -0, but they are not identical. if (a === 0) { return 1 / a === 1 / b; } return true; } return numberIsNaN(a) && numberIsNaN(b); }, SameValueZero: function SameValueZero(a, b) { // same as SameValue except for SameValueZero(+0, -0) == true return a === b || numberIsNaN(a) && numberIsNaN(b); }, IsIterable: function IsIterable(o) { return ES.TypeIsObject(o) && (typeof o[$iterator$] !== 'undefined' || isArguments(o)); }, GetIterator: function GetIterator(o) { if (isArguments(o)) { // special case support for `arguments` return new ArrayIterator(o, 'value'); } var itFn = ES.GetMethod(o, $iterator$); if (!ES.IsCallable(itFn)) { // Better diagnostics if itFn is null or undefined throw new TypeError('value is not an iterable'); } var it = ES.Call(itFn, o); if (!ES.TypeIsObject(it)) { throw new TypeError('bad iterator'); } return it; }, GetMethod: function GetMethod(o, p) { var func = ES.ToObject(o)[p]; if (isNullOrUndefined(func)) { return void 0; } if (!ES.IsCallable(func)) { throw new TypeError('Method not callable: ' + p); } return func; }, IteratorComplete: function IteratorComplete(iterResult) { return !!iterResult.done; }, IteratorClose: function IteratorClose(iterator, completionIsThrow) { var returnMethod = ES.GetMethod(iterator, 'return'); if (returnMethod === void 0) { return; } var innerResult, innerException; try { innerResult = ES.Call(returnMethod, iterator); } catch (e) { innerException = e; } if (completionIsThrow) { return; } if (innerException) { throw innerException; } if (!ES.TypeIsObject(innerResult)) { throw new TypeError("Iterator's return method returned a non-object."); } }, IteratorNext: function IteratorNext(it) { var result = arguments.length > 1 ? it.next(arguments[1]) : it.next(); if (!ES.TypeIsObject(result)) { throw new TypeError('bad iterator'); } return result; }, IteratorStep: function IteratorStep(it) { var result = ES.IteratorNext(it); var done = ES.IteratorComplete(result); return done ? false : result; }, Construct: function Construct(C, args, newTarget, isES6internal) { var target = typeof newTarget === 'undefined' ? C : newTarget; if (!isES6internal && Reflect.construct) { // Try to use Reflect.construct if available return Reflect.construct(C, args, target); } // OK, we have to fake it. This will only work if the // C.[[ConstructorKind]] == "base" -- but that's the only // kind we can make in ES5 code anyway. // OrdinaryCreateFromConstructor(target, "%ObjectPrototype%") var proto = target.prototype; if (!ES.TypeIsObject(proto)) { proto = Object.prototype; } var obj = create(proto); // Call the constructor. var result = ES.Call(C, obj, args); return ES.TypeIsObject(result) ? result : obj; }, SpeciesConstructor: function SpeciesConstructor(O, defaultConstructor) { var C = O.constructor; if (C === void 0) { return defaultConstructor; } if (!ES.TypeIsObject(C)) { throw new TypeError('Bad constructor'); } var S = C[symbolSpecies]; if (isNullOrUndefined(S)) { return defaultConstructor; } if (!ES.IsConstructor(S)) { throw new TypeError('Bad @@species'); } return S; }, CreateHTML: function CreateHTML(string, tag, attribute, value) { var S = ES.ToString(string); var p1 = '<' + tag; if (attribute !== '') { var V = ES.ToString(value); var escapedV = V.replace(/"/g, '&quot;'); p1 += ' ' + attribute + '="' + escapedV + '"'; } var p2 = p1 + '>'; var p3 = p2 + S; return p3 + '</' + tag + '>'; }, IsRegExp: function IsRegExp(argument) { if (!ES.TypeIsObject(argument)) { return false; } var isRegExp = argument[_Symbol.match]; if (typeof isRegExp !== 'undefined') { return !!isRegExp; } return Type.regex(argument); }, ToString: function ToString(string) { return $String(string); } }; // Well-known Symbol shims if (supportsDescriptors && hasSymbols) { var defineWellKnownSymbol = function defineWellKnownSymbol(name) { if (Type.symbol(_Symbol[name])) { return _Symbol[name]; } // eslint-disable-next-line no-restricted-properties var sym = _Symbol['for']('Symbol.' + name); Object.defineProperty(_Symbol, name, { configurable: false, enumerable: false, writable: false, value: sym }); return sym; }; if (!Type.symbol(_Symbol.search)) { var symbolSearch = defineWellKnownSymbol('search'); var originalSearch = String.prototype.search; defineProperty(RegExp.prototype, symbolSearch, function search(string) { return ES.Call(originalSearch, string, [this]); }); var searchShim = function search(regexp) { var O = ES.RequireObjectCoercible(this); if (!isNullOrUndefined(regexp)) { var searcher = ES.GetMethod(regexp, symbolSearch); if (typeof searcher !== 'undefined') { return ES.Call(searcher, regexp, [O]); } } return ES.Call(originalSearch, O, [ES.ToString(regexp)]); }; overrideNative(String.prototype, 'search', searchShim); } if (!Type.symbol(_Symbol.replace)) { var symbolReplace = defineWellKnownSymbol('replace'); var originalReplace = String.prototype.replace; defineProperty(RegExp.prototype, symbolReplace, function replace(string, replaceValue) { return ES.Call(originalReplace, string, [this, replaceValue]); }); var replaceShim = function replace(searchValue, replaceValue) { var O = ES.RequireObjectCoercible(this); if (!isNullOrUndefined(searchValue)) { var replacer = ES.GetMethod(searchValue, symbolReplace); if (typeof replacer !== 'undefined') { return ES.Call(replacer, searchValue, [O, replaceValue]); } } return ES.Call(originalReplace, O, [ES.ToString(searchValue), replaceValue]); }; overrideNative(String.prototype, 'replace', replaceShim); } if (!Type.symbol(_Symbol.split)) { var symbolSplit = defineWellKnownSymbol('split'); var originalSplit = String.prototype.split; defineProperty(RegExp.prototype, symbolSplit, function split(string, limit) { return ES.Call(originalSplit, string, [this, limit]); }); var splitShim = function split(separator, limit) { var O = ES.RequireObjectCoercible(this); if (!isNullOrUndefined(separator)) { var splitter = ES.GetMethod(separator, symbolSplit); if (typeof splitter !== 'undefined') { return ES.Call(splitter, separator, [O, limit]); } } return ES.Call(originalSplit, O, [ES.ToString(separator), limit]); }; overrideNative(String.prototype, 'split', splitShim); } var symbolMatchExists = Type.symbol(_Symbol.match); var stringMatchIgnoresSymbolMatch = symbolMatchExists && function () { // Firefox 41, through Nightly 45 has Symbol.match, but String#match ignores it. // Firefox 40 and below have Symbol.match but String#match works fine. var o = {}; o[_Symbol.match] = function () { return 42; }; return 'a'.match(o) !== 42; }(); if (!symbolMatchExists || stringMatchIgnoresSymbolMatch) { var symbolMatch = defineWellKnownSymbol('match'); var originalMatch = String.prototype.match; defineProperty(RegExp.prototype, symbolMatch, function match(string) { return ES.Call(originalMatch, string, [this]); }); var matchShim = function match(regexp) { var O = ES.RequireObjectCoercible(this); if (!isNullOrUndefined(regexp)) { var matcher = ES.GetMethod(regexp, symbolMatch); if (typeof matcher !== 'undefined') { return ES.Call(matcher, regexp, [O]); } } return ES.Call(originalMatch, O, [ES.ToString(regexp)]); }; overrideNative(String.prototype, 'match', matchShim); } } var wrapConstructor = function wrapConstructor(original, replacement, keysToSkip) { Value.preserveToString(replacement, original); if (Object.setPrototypeOf) { // sets up proper prototype chain where possible Object.setPrototypeOf(original, replacement); } if (supportsDescriptors) { _forEach(Object.getOwnPropertyNames(original), function (key) { if (key in noop || keysToSkip[key]) { return; } Value.proxy(original, key, replacement); }); } else { _forEach(Object.keys(original), function (key) { if (key in noop || keysToSkip[key]) { return; } replacement[key] = original[key]; }); } replacement.prototype = original.prototype; Value.redefine(original.prototype, 'constructor', replacement); }; var defaultSpeciesGetter = function defaultSpeciesGetter() { return this; }; var addDefaultSpecies = function addDefaultSpecies(C) { if (supportsDescriptors && !_hasOwnProperty(C, symbolSpecies)) { Value.getter(C, symbolSpecies, defaultSpeciesGetter); } }; var addIterator = function addIterator(prototype, impl) { var implementation = impl || function iterator() { return this; }; defineProperty(prototype, $iterator$, implementation); if (!prototype[$iterator$] && Type.symbol($iterator$)) { // implementations are buggy when $iterator$ is a Symbol prototype[$iterator$] = implementation; } }; var createDataProperty = function createDataProperty(object, name, value) { if (supportsDescriptors) { Object.defineProperty(object, name, { configurable: true, enumerable: true, writable: true, value: value }); } else { object[name] = value; } }; var createDataPropertyOrThrow = function createDataPropertyOrThrow(object, name, value) { createDataProperty(object, name, value); if (!ES.SameValue(object[name], value)) { throw new TypeError('property is nonconfigurable'); } }; var emulateES6construct = function emulateES6construct(o, defaultNewTarget, defaultProto, slots) { // This is an es5 approximation to es6 construct semantics. in es6, // 'new Foo' invokes Foo.[[Construct]] which (for almost all objects) // just sets the internal variable NewTarget (in es6 syntax `new.target`) // to Foo and then returns Foo(). // Many ES6 object then have constructors of the form: // 1. If NewTarget is undefined, throw a TypeError exception // 2. Let xxx by OrdinaryCreateFromConstructor(NewTarget, yyy, zzz) // So we're going to emulate those first two steps. if (!ES.TypeIsObject(o)) { throw new TypeError('Constructor requires `new`: ' + defaultNewTarget.name); } var proto = defaultNewTarget.prototype; if (!ES.TypeIsObject(proto)) { proto = defaultProto; } var obj = create(proto); for (var name in slots) { if (_hasOwnProperty(slots, name)) { var value = slots[name]; defineProperty(obj, name, value, true); } } return obj; }; // Firefox 31 reports this function's length as 0 // https://bugzilla.mozilla.org/show_bug.cgi?id=1062484 if (String.fromCodePoint && String.fromCodePoint.length !== 1) { var originalFromCodePoint = String.fromCodePoint; overrideNative(String, 'fromCodePoint', function fromCodePoint(codePoints) { return ES.Call(originalFromCodePoint, this, arguments); }); } var StringShims = { fromCodePoint: function fromCodePoint(codePoints) { var result = []; var next; for (var i = 0, length = arguments.length; i < length; i++) { next = Number(arguments[i]); if (!ES.SameValue(next, ES.ToInteger(next)) || next < 0 || next > 0x10FFFF) { throw new RangeError('Invalid code point ' + next); } if (next < 0x10000) { _push(result, String.fromCharCode(next)); } else { next -= 0x10000; _push(result, String.fromCharCode((next >> 10) + 0xD800)); _push(result, String.fromCharCode(next % 0x400 + 0xDC00)); } } return result.join(''); }, raw: function raw(callSite) { var cooked = ES.ToObject(callSite, 'bad callSite'); var rawString = ES.ToObject(cooked.raw, 'bad raw value'); var len = rawString.length; var literalsegments = ES.ToLength(len); if (literalsegments <= 0) { return ''; } var stringElements = []; var nextIndex = 0; var nextKey, next, nextSeg, nextSub; while (nextIndex < literalsegments) { nextKey = ES.ToString(nextIndex); nextSeg = ES.ToString(rawString[nextKey]); _push(stringElements, nextSeg); if (nextIndex + 1 >= literalsegments) { break; } next = nextIndex + 1 < arguments.length ? arguments[nextIndex + 1] : ''; nextSub = ES.ToString(next); _push(stringElements, nextSub); nextIndex += 1; } return stringElements.join(''); } }; if (String.raw && String.raw({ raw: { 0: 'x', 1: 'y', length: 2 } }) !== 'xy') { // IE 11 TP has a broken String.raw implementation overrideNative(String, 'raw', StringShims.raw); } defineProperties(String, StringShims); // Fast repeat, uses the `Exponentiation by squaring` algorithm. // Perf: http://jsperf.com/string-repeat2/2 var stringRepeat = function repeat(s, times) { if (times < 1) { return ''; } if (times % 2) { return repeat(s, times - 1) + s; } var half = repeat(s, times / 2); return half + half; }; var stringMaxLength = Infinity; var StringPrototypeShims = { repeat: function repeat(times) { var thisStr = ES.ToString(ES.RequireObjectCoercible(this)); var numTimes = ES.ToInteger(times); if (numTimes < 0 || numTimes >= stringMaxLength) { throw new RangeError('repeat count must be less than infinity and not overflow maximum string size'); } return stringRepeat(thisStr, numTimes); }, startsWith: function startsWith(searchString) { var S = ES.ToString(ES.RequireObjectCoercible(this)); if (ES.IsRegExp(searchString)) { throw new TypeError('Cannot call method "startsWith" with a regex'); } var searchStr = ES.ToString(searchString); var position; if (arguments.length > 1) { position = arguments[1]; } var start = _max(ES.ToInteger(position)