This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
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.
3130 lines
95 KiB
3130 lines
95 KiB
(function (global, factory) { |
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : |
|
typeof define === 'function' && define.amd ? define(factory) : |
|
(global['jest-mock'] = factory()); |
|
}(this, (function () { 'use strict'; |
|
|
|
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; |
|
|
|
|
|
|
|
function unwrapExports (x) { |
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; |
|
} |
|
|
|
function createCommonjsModule(fn, module) { |
|
return module = { exports: {} }, fn(module, module.exports), module.exports; |
|
} |
|
|
|
var _global = createCommonjsModule(function (module) { |
|
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 |
|
var global = module.exports = typeof window != 'undefined' && window.Math == Math |
|
? window : typeof self != 'undefined' && self.Math == Math ? self |
|
// eslint-disable-next-line no-new-func |
|
: Function('return this')(); |
|
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef |
|
}); |
|
|
|
var _core = createCommonjsModule(function (module) { |
|
var core = module.exports = { version: '2.5.3' }; |
|
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef |
|
}); |
|
|
|
var _core_1 = _core.version; |
|
|
|
var _aFunction = function (it) { |
|
if (typeof it != 'function') throw TypeError(it + ' is not a function!'); |
|
return it; |
|
}; |
|
|
|
// optional / simple context binding |
|
|
|
var _ctx = function (fn, that, length) { |
|
_aFunction(fn); |
|
if (that === undefined) return fn; |
|
switch (length) { |
|
case 1: return function (a) { |
|
return fn.call(that, a); |
|
}; |
|
case 2: return function (a, b) { |
|
return fn.call(that, a, b); |
|
}; |
|
case 3: return function (a, b, c) { |
|
return fn.call(that, a, b, c); |
|
}; |
|
} |
|
return function (/* ...args */) { |
|
return fn.apply(that, arguments); |
|
}; |
|
}; |
|
|
|
var _isObject = function (it) { |
|
return typeof it === 'object' ? it !== null : typeof it === 'function'; |
|
}; |
|
|
|
var _anObject = function (it) { |
|
if (!_isObject(it)) throw TypeError(it + ' is not an object!'); |
|
return it; |
|
}; |
|
|
|
var _fails = function (exec) { |
|
try { |
|
return !!exec(); |
|
} catch (e) { |
|
return true; |
|
} |
|
}; |
|
|
|
// Thank's IE8 for his funny defineProperty |
|
var _descriptors = !_fails(function () { |
|
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; |
|
}); |
|
|
|
var document$1 = _global.document; |
|
// typeof document.createElement is 'object' in old IE |
|
var is = _isObject(document$1) && _isObject(document$1.createElement); |
|
var _domCreate = function (it) { |
|
return is ? document$1.createElement(it) : {}; |
|
}; |
|
|
|
var _ie8DomDefine = !_descriptors && !_fails(function () { |
|
return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7; |
|
}); |
|
|
|
// 7.1.1 ToPrimitive(input [, PreferredType]) |
|
|
|
// instead of the ES6 spec version, we didn't implement @@toPrimitive case |
|
// and the second argument - flag - preferred type is a string |
|
var _toPrimitive = function (it, S) { |
|
if (!_isObject(it)) return it; |
|
var fn, val; |
|
if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; |
|
if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) return val; |
|
if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) return val; |
|
throw TypeError("Can't convert object to primitive value"); |
|
}; |
|
|
|
var dP = Object.defineProperty; |
|
|
|
var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { |
|
_anObject(O); |
|
P = _toPrimitive(P, true); |
|
_anObject(Attributes); |
|
if (_ie8DomDefine) try { |
|
return dP(O, P, Attributes); |
|
} catch (e) { /* empty */ } |
|
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); |
|
if ('value' in Attributes) O[P] = Attributes.value; |
|
return O; |
|
}; |
|
|
|
var _objectDp = { |
|
f: f |
|
}; |
|
|
|
var _propertyDesc = function (bitmap, value) { |
|
return { |
|
enumerable: !(bitmap & 1), |
|
configurable: !(bitmap & 2), |
|
writable: !(bitmap & 4), |
|
value: value |
|
}; |
|
}; |
|
|
|
var _hide = _descriptors ? function (object, key, value) { |
|
return _objectDp.f(object, key, _propertyDesc(1, value)); |
|
} : function (object, key, value) { |
|
object[key] = value; |
|
return object; |
|
}; |
|
|
|
var PROTOTYPE = 'prototype'; |
|
|
|
var $export = function (type, name, source) { |
|
var IS_FORCED = type & $export.F; |
|
var IS_GLOBAL = type & $export.G; |
|
var IS_STATIC = type & $export.S; |
|
var IS_PROTO = type & $export.P; |
|
var IS_BIND = type & $export.B; |
|
var IS_WRAP = type & $export.W; |
|
var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}); |
|
var expProto = exports[PROTOTYPE]; |
|
var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] : (_global[name] || {})[PROTOTYPE]; |
|
var key, own, out; |
|
if (IS_GLOBAL) source = name; |
|
for (key in source) { |
|
// contains in native |
|
own = !IS_FORCED && target && target[key] !== undefined; |
|
if (own && key in exports) continue; |
|
// export native or passed |
|
out = own ? target[key] : source[key]; |
|
// prevent global pollution for namespaces |
|
exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] |
|
// bind timers to global for call from export context |
|
: IS_BIND && own ? _ctx(out, _global) |
|
// wrap global constructors for prevent change them in library |
|
: IS_WRAP && target[key] == out ? (function (C) { |
|
var F = function (a, b, c) { |
|
if (this instanceof C) { |
|
switch (arguments.length) { |
|
case 0: return new C(); |
|
case 1: return new C(a); |
|
case 2: return new C(a, b); |
|
} return new C(a, b, c); |
|
} return C.apply(this, arguments); |
|
}; |
|
F[PROTOTYPE] = C[PROTOTYPE]; |
|
return F; |
|
// make static versions for prototype methods |
|
})(out) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; |
|
// export proto methods to core.%CONSTRUCTOR%.methods.%NAME% |
|
if (IS_PROTO) { |
|
(exports.virtual || (exports.virtual = {}))[key] = out; |
|
// export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% |
|
if (type & $export.R && expProto && !expProto[key]) _hide(expProto, key, out); |
|
} |
|
} |
|
}; |
|
// type bitmap |
|
$export.F = 1; // forced |
|
$export.G = 2; // global |
|
$export.S = 4; // static |
|
$export.P = 8; // proto |
|
$export.B = 16; // bind |
|
$export.W = 32; // wrap |
|
$export.U = 64; // safe |
|
$export.R = 128; // real proto method for `library` |
|
var _export = $export; |
|
|
|
// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) |
|
_export(_export.S + _export.F * !_descriptors, 'Object', { defineProperty: _objectDp.f }); |
|
|
|
var $Object = _core.Object; |
|
var defineProperty$1 = function defineProperty(it, key, desc) { |
|
return $Object.defineProperty(it, key, desc); |
|
}; |
|
|
|
var defineProperty = createCommonjsModule(function (module) { |
|
module.exports = { "default": defineProperty$1, __esModule: true }; |
|
}); |
|
|
|
var _Object$defineProperty = unwrapExports(defineProperty); |
|
|
|
// 7.1.4 ToInteger |
|
var ceil = Math.ceil; |
|
var floor = Math.floor; |
|
var _toInteger = function (it) { |
|
return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); |
|
}; |
|
|
|
// 7.2.1 RequireObjectCoercible(argument) |
|
var _defined = function (it) { |
|
if (it == undefined) throw TypeError("Can't call method on " + it); |
|
return it; |
|
}; |
|
|
|
// true -> String#at |
|
// false -> String#codePointAt |
|
var _stringAt = function (TO_STRING) { |
|
return function (that, pos) { |
|
var s = String(_defined(that)); |
|
var i = _toInteger(pos); |
|
var l = s.length; |
|
var a, b; |
|
if (i < 0 || i >= l) return TO_STRING ? '' : undefined; |
|
a = s.charCodeAt(i); |
|
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff |
|
? TO_STRING ? s.charAt(i) : a |
|
: TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; |
|
}; |
|
}; |
|
|
|
var _library = true; |
|
|
|
var _redefine = _hide; |
|
|
|
var hasOwnProperty = {}.hasOwnProperty; |
|
var _has = function (it, key) { |
|
return hasOwnProperty.call(it, key); |
|
}; |
|
|
|
var _iterators = {}; |
|
|
|
var toString = {}.toString; |
|
|
|
var _cof = function (it) { |
|
return toString.call(it).slice(8, -1); |
|
}; |
|
|
|
// fallback for non-array-like ES3 and non-enumerable old V8 strings |
|
|
|
// eslint-disable-next-line no-prototype-builtins |
|
var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { |
|
return _cof(it) == 'String' ? it.split('') : Object(it); |
|
}; |
|
|
|
// to indexed object, toObject with fallback for non-array-like ES3 strings |
|
|
|
|
|
var _toIobject = function (it) { |
|
return _iobject(_defined(it)); |
|
}; |
|
|
|
// 7.1.15 ToLength |
|
|
|
var min = Math.min; |
|
var _toLength = function (it) { |
|
return it > 0 ? min(_toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 |
|
}; |
|
|
|
var max = Math.max; |
|
var min$1 = Math.min; |
|
var _toAbsoluteIndex = function (index, length) { |
|
index = _toInteger(index); |
|
return index < 0 ? max(index + length, 0) : min$1(index, length); |
|
}; |
|
|
|
// false -> Array#indexOf |
|
// true -> Array#includes |
|
|
|
|
|
|
|
var _arrayIncludes = function (IS_INCLUDES) { |
|
return function ($this, el, fromIndex) { |
|
var O = _toIobject($this); |
|
var length = _toLength(O.length); |
|
var index = _toAbsoluteIndex(fromIndex, length); |
|
var value; |
|
// Array#includes uses SameValueZero equality algorithm |
|
// eslint-disable-next-line no-self-compare |
|
if (IS_INCLUDES && el != el) while (length > index) { |
|
value = O[index++]; |
|
// eslint-disable-next-line no-self-compare |
|
if (value != value) return true; |
|
// Array#indexOf ignores holes, Array#includes - not |
|
} else for (;length > index; index++) if (IS_INCLUDES || index in O) { |
|
if (O[index] === el) return IS_INCLUDES || index || 0; |
|
} return !IS_INCLUDES && -1; |
|
}; |
|
}; |
|
|
|
var SHARED = '__core-js_shared__'; |
|
var store = _global[SHARED] || (_global[SHARED] = {}); |
|
var _shared = function (key) { |
|
return store[key] || (store[key] = {}); |
|
}; |
|
|
|
var id = 0; |
|
var px = Math.random(); |
|
var _uid = function (key) { |
|
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); |
|
}; |
|
|
|
var shared = _shared('keys'); |
|
|
|
var _sharedKey = function (key) { |
|
return shared[key] || (shared[key] = _uid(key)); |
|
}; |
|
|
|
var arrayIndexOf = _arrayIncludes(false); |
|
var IE_PROTO$1 = _sharedKey('IE_PROTO'); |
|
|
|
var _objectKeysInternal = function (object, names) { |
|
var O = _toIobject(object); |
|
var i = 0; |
|
var result = []; |
|
var key; |
|
for (key in O) if (key != IE_PROTO$1) _has(O, key) && result.push(key); |
|
// Don't enum bug & hidden keys |
|
while (names.length > i) if (_has(O, key = names[i++])) { |
|
~arrayIndexOf(result, key) || result.push(key); |
|
} |
|
return result; |
|
}; |
|
|
|
// IE 8- don't enum bug keys |
|
var _enumBugKeys = ( |
|
'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' |
|
).split(','); |
|
|
|
// 19.1.2.14 / 15.2.3.14 Object.keys(O) |
|
|
|
|
|
|
|
var _objectKeys = Object.keys || function keys(O) { |
|
return _objectKeysInternal(O, _enumBugKeys); |
|
}; |
|
|
|
var _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) { |
|
_anObject(O); |
|
var keys = _objectKeys(Properties); |
|
var length = keys.length; |
|
var i = 0; |
|
var P; |
|
while (length > i) _objectDp.f(O, P = keys[i++], Properties[P]); |
|
return O; |
|
}; |
|
|
|
var document$2 = _global.document; |
|
var _html = document$2 && document$2.documentElement; |
|
|
|
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) |
|
|
|
|
|
|
|
var IE_PROTO = _sharedKey('IE_PROTO'); |
|
var Empty = function () { /* empty */ }; |
|
var PROTOTYPE$1 = 'prototype'; |
|
|
|
// Create object with fake `null` prototype: use iframe Object with cleared prototype |
|
var createDict = function () { |
|
// Thrash, waste and sodomy: IE GC bug |
|
var iframe = _domCreate('iframe'); |
|
var i = _enumBugKeys.length; |
|
var lt = '<'; |
|
var gt = '>'; |
|
var iframeDocument; |
|
iframe.style.display = 'none'; |
|
_html.appendChild(iframe); |
|
iframe.src = 'javascript:'; // eslint-disable-line no-script-url |
|
// createDict = iframe.contentWindow.Object; |
|
// html.removeChild(iframe); |
|
iframeDocument = iframe.contentWindow.document; |
|
iframeDocument.open(); |
|
iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); |
|
iframeDocument.close(); |
|
createDict = iframeDocument.F; |
|
while (i--) delete createDict[PROTOTYPE$1][_enumBugKeys[i]]; |
|
return createDict(); |
|
}; |
|
|
|
var _objectCreate = Object.create || function create(O, Properties) { |
|
var result; |
|
if (O !== null) { |
|
Empty[PROTOTYPE$1] = _anObject(O); |
|
result = new Empty(); |
|
Empty[PROTOTYPE$1] = null; |
|
// add "__proto__" for Object.getPrototypeOf polyfill |
|
result[IE_PROTO] = O; |
|
} else result = createDict(); |
|
return Properties === undefined ? result : _objectDps(result, Properties); |
|
}; |
|
|
|
var _wks = createCommonjsModule(function (module) { |
|
var store = _shared('wks'); |
|
|
|
var Symbol = _global.Symbol; |
|
var USE_SYMBOL = typeof Symbol == 'function'; |
|
|
|
var $exports = module.exports = function (name) { |
|
return store[name] || (store[name] = |
|
USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : _uid)('Symbol.' + name)); |
|
}; |
|
|
|
$exports.store = store; |
|
}); |
|
|
|
var def = _objectDp.f; |
|
|
|
var TAG = _wks('toStringTag'); |
|
|
|
var _setToStringTag = function (it, tag, stat) { |
|
if (it && !_has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); |
|
}; |
|
|
|
var IteratorPrototype = {}; |
|
|
|
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() |
|
_hide(IteratorPrototype, _wks('iterator'), function () { return this; }); |
|
|
|
var _iterCreate = function (Constructor, NAME, next) { |
|
Constructor.prototype = _objectCreate(IteratorPrototype, { next: _propertyDesc(1, next) }); |
|
_setToStringTag(Constructor, NAME + ' Iterator'); |
|
}; |
|
|
|
// 7.1.13 ToObject(argument) |
|
|
|
var _toObject = function (it) { |
|
return Object(_defined(it)); |
|
}; |
|
|
|
// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) |
|
|
|
|
|
var IE_PROTO$2 = _sharedKey('IE_PROTO'); |
|
var ObjectProto = Object.prototype; |
|
|
|
var _objectGpo = Object.getPrototypeOf || function (O) { |
|
O = _toObject(O); |
|
if (_has(O, IE_PROTO$2)) return O[IE_PROTO$2]; |
|
if (typeof O.constructor == 'function' && O instanceof O.constructor) { |
|
return O.constructor.prototype; |
|
} return O instanceof Object ? ObjectProto : null; |
|
}; |
|
|
|
var ITERATOR = _wks('iterator'); |
|
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` |
|
var FF_ITERATOR = '@@iterator'; |
|
var KEYS = 'keys'; |
|
var VALUES = 'values'; |
|
|
|
var returnThis = function () { return this; }; |
|
|
|
var _iterDefine = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { |
|
_iterCreate(Constructor, NAME, next); |
|
var getMethod = function (kind) { |
|
if (!BUGGY && kind in proto) return proto[kind]; |
|
switch (kind) { |
|
case KEYS: return function keys() { return new Constructor(this, kind); }; |
|
case VALUES: return function values() { return new Constructor(this, kind); }; |
|
} return function entries() { return new Constructor(this, kind); }; |
|
}; |
|
var TAG = NAME + ' Iterator'; |
|
var DEF_VALUES = DEFAULT == VALUES; |
|
var VALUES_BUG = false; |
|
var proto = Base.prototype; |
|
var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; |
|
var $default = (!BUGGY && $native) || getMethod(DEFAULT); |
|
var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; |
|
var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; |
|
var methods, key, IteratorPrototype; |
|
// Fix native |
|
if ($anyNative) { |
|
IteratorPrototype = _objectGpo($anyNative.call(new Base())); |
|
if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { |
|
// Set @@toStringTag to native iterators |
|
_setToStringTag(IteratorPrototype, TAG, true); |
|
// fix for some old engines |
|
if (!_library && !_has(IteratorPrototype, ITERATOR)) _hide(IteratorPrototype, ITERATOR, returnThis); |
|
} |
|
} |
|
// fix Array#{values, @@iterator}.name in V8 / FF |
|
if (DEF_VALUES && $native && $native.name !== VALUES) { |
|
VALUES_BUG = true; |
|
$default = function values() { return $native.call(this); }; |
|
} |
|
// Define iterator |
|
if ((!_library || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { |
|
_hide(proto, ITERATOR, $default); |
|
} |
|
// Plug for library |
|
_iterators[NAME] = $default; |
|
_iterators[TAG] = returnThis; |
|
if (DEFAULT) { |
|
methods = { |
|
values: DEF_VALUES ? $default : getMethod(VALUES), |
|
keys: IS_SET ? $default : getMethod(KEYS), |
|
entries: $entries |
|
}; |
|
if (FORCED) for (key in methods) { |
|
if (!(key in proto)) _redefine(proto, key, methods[key]); |
|
} else _export(_export.P + _export.F * (BUGGY || VALUES_BUG), NAME, methods); |
|
} |
|
return methods; |
|
}; |
|
|
|
var $at = _stringAt(true); |
|
|
|
// 21.1.3.27 String.prototype[@@iterator]() |
|
_iterDefine(String, 'String', function (iterated) { |
|
this._t = String(iterated); // target |
|
this._i = 0; // next index |
|
// 21.1.5.2.1 %StringIteratorPrototype%.next() |
|
}, function () { |
|
var O = this._t; |
|
var index = this._i; |
|
var point; |
|
if (index >= O.length) return { value: undefined, done: true }; |
|
point = $at(O, index); |
|
this._i += point.length; |
|
return { value: point, done: false }; |
|
}); |
|
|
|
var _iterStep = function (done, value) { |
|
return { value: value, done: !!done }; |
|
}; |
|
|
|
// 22.1.3.4 Array.prototype.entries() |
|
// 22.1.3.13 Array.prototype.keys() |
|
// 22.1.3.29 Array.prototype.values() |
|
// 22.1.3.30 Array.prototype[@@iterator]() |
|
var es6_array_iterator = _iterDefine(Array, 'Array', function (iterated, kind) { |
|
this._t = _toIobject(iterated); // target |
|
this._i = 0; // next index |
|
this._k = kind; // kind |
|
// 22.1.5.2.1 %ArrayIteratorPrototype%.next() |
|
}, function () { |
|
var O = this._t; |
|
var kind = this._k; |
|
var index = this._i++; |
|
if (!O || index >= O.length) { |
|
this._t = undefined; |
|
return _iterStep(1); |
|
} |
|
if (kind == 'keys') return _iterStep(0, index); |
|
if (kind == 'values') return _iterStep(0, O[index]); |
|
return _iterStep(0, [index, O[index]]); |
|
}, 'values'); |
|
|
|
// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) |
|
_iterators.Arguments = _iterators.Array; |
|
|
|
var TO_STRING_TAG = _wks('toStringTag'); |
|
|
|
var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + |
|
'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + |
|
'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + |
|
'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + |
|
'TextTrackList,TouchList').split(','); |
|
|
|
for (var i = 0; i < DOMIterables.length; i++) { |
|
var NAME = DOMIterables[i]; |
|
var Collection = _global[NAME]; |
|
var proto = Collection && Collection.prototype; |
|
if (proto && !proto[TO_STRING_TAG]) _hide(proto, TO_STRING_TAG, NAME); |
|
_iterators[NAME] = _iterators.Array; |
|
} |
|
|
|
var f$1 = _wks; |
|
|
|
var _wksExt = { |
|
f: f$1 |
|
}; |
|
|
|
var iterator$2 = _wksExt.f('iterator'); |
|
|
|
var iterator = createCommonjsModule(function (module) { |
|
module.exports = { "default": iterator$2, __esModule: true }; |
|
}); |
|
|
|
unwrapExports(iterator); |
|
|
|
var _meta = createCommonjsModule(function (module) { |
|
var META = _uid('meta'); |
|
|
|
|
|
var setDesc = _objectDp.f; |
|
var id = 0; |
|
var isExtensible = Object.isExtensible || function () { |
|
return true; |
|
}; |
|
var FREEZE = !_fails(function () { |
|
return isExtensible(Object.preventExtensions({})); |
|
}); |
|
var setMeta = function (it) { |
|
setDesc(it, META, { value: { |
|
i: 'O' + ++id, // object ID |
|
w: {} // weak collections IDs |
|
} }); |
|
}; |
|
var fastKey = function (it, create) { |
|
// return primitive with prefix |
|
if (!_isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; |
|
if (!_has(it, META)) { |
|
// can't set metadata to uncaught frozen object |
|
if (!isExtensible(it)) return 'F'; |
|
// not necessary to add metadata |
|
if (!create) return 'E'; |
|
// add missing metadata |
|
setMeta(it); |
|
// return object ID |
|
} return it[META].i; |
|
}; |
|
var getWeak = function (it, create) { |
|
if (!_has(it, META)) { |
|
// can't set metadata to uncaught frozen object |
|
if (!isExtensible(it)) return true; |
|
// not necessary to add metadata |
|
if (!create) return false; |
|
// add missing metadata |
|
setMeta(it); |
|
// return hash weak collections IDs |
|
} return it[META].w; |
|
}; |
|
// add metadata on freeze-family methods calling |
|
var onFreeze = function (it) { |
|
if (FREEZE && meta.NEED && isExtensible(it) && !_has(it, META)) setMeta(it); |
|
return it; |
|
}; |
|
var meta = module.exports = { |
|
KEY: META, |
|
NEED: false, |
|
fastKey: fastKey, |
|
getWeak: getWeak, |
|
onFreeze: onFreeze |
|
}; |
|
}); |
|
|
|
var _meta_1 = _meta.KEY; |
|
var _meta_2 = _meta.NEED; |
|
var _meta_3 = _meta.fastKey; |
|
var _meta_4 = _meta.getWeak; |
|
var _meta_5 = _meta.onFreeze; |
|
|
|
var defineProperty$3 = _objectDp.f; |
|
var _wksDefine = function (name) { |
|
var $Symbol = _core.Symbol || (_core.Symbol = _library ? {} : _global.Symbol || {}); |
|
if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty$3($Symbol, name, { value: _wksExt.f(name) }); |
|
}; |
|
|
|
var f$2 = Object.getOwnPropertySymbols; |
|
|
|
var _objectGops = { |
|
f: f$2 |
|
}; |
|
|
|
var f$3 = {}.propertyIsEnumerable; |
|
|
|
var _objectPie = { |
|
f: f$3 |
|
}; |
|
|
|
// all enumerable object keys, includes symbols |
|
|
|
|
|
|
|
var _enumKeys = function (it) { |
|
var result = _objectKeys(it); |
|
var getSymbols = _objectGops.f; |
|
if (getSymbols) { |
|
var symbols = getSymbols(it); |
|
var isEnum = _objectPie.f; |
|
var i = 0; |
|
var key; |
|
while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key); |
|
} return result; |
|
}; |
|
|
|
// 7.2.2 IsArray(argument) |
|
|
|
var _isArray = Array.isArray || function isArray(arg) { |
|
return _cof(arg) == 'Array'; |
|
}; |
|
|
|
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) |
|
|
|
var hiddenKeys = _enumBugKeys.concat('length', 'prototype'); |
|
|
|
var f$5 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { |
|
return _objectKeysInternal(O, hiddenKeys); |
|
}; |
|
|
|
var _objectGopn = { |
|
f: f$5 |
|
}; |
|
|
|
// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window |
|
|
|
var gOPN$1 = _objectGopn.f; |
|
var toString$1 = {}.toString; |
|
|
|
var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames |
|
? Object.getOwnPropertyNames(window) : []; |
|
|
|
var getWindowNames = function (it) { |
|
try { |
|
return gOPN$1(it); |
|
} catch (e) { |
|
return windowNames.slice(); |
|
} |
|
}; |
|
|
|
var f$4 = function getOwnPropertyNames(it) { |
|
return windowNames && toString$1.call(it) == '[object Window]' ? getWindowNames(it) : gOPN$1(_toIobject(it)); |
|
}; |
|
|
|
var _objectGopnExt = { |
|
f: f$4 |
|
}; |
|
|
|
var gOPD$1 = Object.getOwnPropertyDescriptor; |
|
|
|
var f$6 = _descriptors ? gOPD$1 : function getOwnPropertyDescriptor(O, P) { |
|
O = _toIobject(O); |
|
P = _toPrimitive(P, true); |
|
if (_ie8DomDefine) try { |
|
return gOPD$1(O, P); |
|
} catch (e) { /* empty */ } |
|
if (_has(O, P)) return _propertyDesc(!_objectPie.f.call(O, P), O[P]); |
|
}; |
|
|
|
var _objectGopd = { |
|
f: f$6 |
|
}; |
|
|
|
// ECMAScript 6 symbols shim |
|
|
|
|
|
|
|
|
|
|
|
var META = _meta.KEY; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var gOPD = _objectGopd.f; |
|
var dP$1 = _objectDp.f; |
|
var gOPN = _objectGopnExt.f; |
|
var $Symbol = _global.Symbol; |
|
var $JSON = _global.JSON; |
|
var _stringify = $JSON && $JSON.stringify; |
|
var PROTOTYPE$2 = 'prototype'; |
|
var HIDDEN = _wks('_hidden'); |
|
var TO_PRIMITIVE = _wks('toPrimitive'); |
|
var isEnum = {}.propertyIsEnumerable; |
|
var SymbolRegistry = _shared('symbol-registry'); |
|
var AllSymbols = _shared('symbols'); |
|
var OPSymbols = _shared('op-symbols'); |
|
var ObjectProto$1 = Object[PROTOTYPE$2]; |
|
var USE_NATIVE = typeof $Symbol == 'function'; |
|
var QObject = _global.QObject; |
|
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 |
|
var setter = !QObject || !QObject[PROTOTYPE$2] || !QObject[PROTOTYPE$2].findChild; |
|
|
|
// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 |
|
var setSymbolDesc = _descriptors && _fails(function () { |
|
return _objectCreate(dP$1({}, 'a', { |
|
get: function () { return dP$1(this, 'a', { value: 7 }).a; } |
|
})).a != 7; |
|
}) ? function (it, key, D) { |
|
var protoDesc = gOPD(ObjectProto$1, key); |
|
if (protoDesc) delete ObjectProto$1[key]; |
|
dP$1(it, key, D); |
|
if (protoDesc && it !== ObjectProto$1) dP$1(ObjectProto$1, key, protoDesc); |
|
} : dP$1; |
|
|
|
var wrap = function (tag) { |
|
var sym = AllSymbols[tag] = _objectCreate($Symbol[PROTOTYPE$2]); |
|
sym._k = tag; |
|
return sym; |
|
}; |
|
|
|
var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) { |
|
return typeof it == 'symbol'; |
|
} : function (it) { |
|
return it instanceof $Symbol; |
|
}; |
|
|
|
var $defineProperty = function defineProperty(it, key, D) { |
|
if (it === ObjectProto$1) $defineProperty(OPSymbols, key, D); |
|
_anObject(it); |
|
key = _toPrimitive(key, true); |
|
_anObject(D); |
|
if (_has(AllSymbols, key)) { |
|
if (!D.enumerable) { |
|
if (!_has(it, HIDDEN)) dP$1(it, HIDDEN, _propertyDesc(1, {})); |
|
it[HIDDEN][key] = true; |
|
} else { |
|
if (_has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false; |
|
D = _objectCreate(D, { enumerable: _propertyDesc(0, false) }); |
|
} return setSymbolDesc(it, key, D); |
|
} return dP$1(it, key, D); |
|
}; |
|
var $defineProperties = function defineProperties(it, P) { |
|
_anObject(it); |
|
var keys = _enumKeys(P = _toIobject(P)); |
|
var i = 0; |
|
var l = keys.length; |
|
var key; |
|
while (l > i) $defineProperty(it, key = keys[i++], P[key]); |
|
return it; |
|
}; |
|
var $create = function create(it, P) { |
|
return P === undefined ? _objectCreate(it) : $defineProperties(_objectCreate(it), P); |
|
}; |
|
var $propertyIsEnumerable = function propertyIsEnumerable(key) { |
|
var E = isEnum.call(this, key = _toPrimitive(key, true)); |
|
if (this === ObjectProto$1 && _has(AllSymbols, key) && !_has(OPSymbols, key)) return false; |
|
return E || !_has(this, key) || !_has(AllSymbols, key) || _has(this, HIDDEN) && this[HIDDEN][key] ? E : true; |
|
}; |
|
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) { |
|
it = _toIobject(it); |
|
key = _toPrimitive(key, true); |
|
if (it === ObjectProto$1 && _has(AllSymbols, key) && !_has(OPSymbols, key)) return; |
|
var D = gOPD(it, key); |
|
if (D && _has(AllSymbols, key) && !(_has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true; |
|
return D; |
|
}; |
|
var $getOwnPropertyNames = function getOwnPropertyNames(it) { |
|
var names = gOPN(_toIobject(it)); |
|
var result = []; |
|
var i = 0; |
|
var key; |
|
while (names.length > i) { |
|
if (!_has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key); |
|
} return result; |
|
}; |
|
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) { |
|
var IS_OP = it === ObjectProto$1; |
|
var names = gOPN(IS_OP ? OPSymbols : _toIobject(it)); |
|
var result = []; |
|
var i = 0; |
|
var key; |
|
while (names.length > i) { |
|
if (_has(AllSymbols, key = names[i++]) && (IS_OP ? _has(ObjectProto$1, key) : true)) result.push(AllSymbols[key]); |
|
} return result; |
|
}; |
|
|
|
// 19.4.1.1 Symbol([description]) |
|
if (!USE_NATIVE) { |
|
$Symbol = function Symbol() { |
|
if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!'); |
|
var tag = _uid(arguments.length > 0 ? arguments[0] : undefined); |
|
var $set = function (value) { |
|
if (this === ObjectProto$1) $set.call(OPSymbols, value); |
|
if (_has(this, HIDDEN) && _has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; |
|
setSymbolDesc(this, tag, _propertyDesc(1, value)); |
|
}; |
|
if (_descriptors && setter) setSymbolDesc(ObjectProto$1, tag, { configurable: true, set: $set }); |
|
return wrap(tag); |
|
}; |
|
_redefine($Symbol[PROTOTYPE$2], 'toString', function toString() { |
|
return this._k; |
|
}); |
|
|
|
_objectGopd.f = $getOwnPropertyDescriptor; |
|
_objectDp.f = $defineProperty; |
|
_objectGopn.f = _objectGopnExt.f = $getOwnPropertyNames; |
|
_objectPie.f = $propertyIsEnumerable; |
|
_objectGops.f = $getOwnPropertySymbols; |
|
|
|
if (_descriptors && !_library) { |
|
_redefine(ObjectProto$1, 'propertyIsEnumerable', $propertyIsEnumerable, true); |
|
} |
|
|
|
_wksExt.f = function (name) { |
|
return wrap(_wks(name)); |
|
}; |
|
} |
|
|
|
_export(_export.G + _export.W + _export.F * !USE_NATIVE, { Symbol: $Symbol }); |
|
|
|
for (var es6Symbols = ( |
|
// 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 |
|
'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' |
|
).split(','), j = 0; es6Symbols.length > j;)_wks(es6Symbols[j++]); |
|
|
|
for (var wellKnownSymbols = _objectKeys(_wks.store), k = 0; wellKnownSymbols.length > k;) _wksDefine(wellKnownSymbols[k++]); |
|
|
|
_export(_export.S + _export.F * !USE_NATIVE, 'Symbol', { |
|
// 19.4.2.1 Symbol.for(key) |
|
'for': function (key) { |
|
return _has(SymbolRegistry, key += '') |
|
? SymbolRegistry[key] |
|
: SymbolRegistry[key] = $Symbol(key); |
|
}, |
|
// 19.4.2.5 Symbol.keyFor(sym) |
|
keyFor: function keyFor(sym) { |
|
if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!'); |
|
for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key; |
|
}, |
|
useSetter: function () { setter = true; }, |
|
useSimple: function () { setter = false; } |
|
}); |
|
|
|
_export(_export.S + _export.F * !USE_NATIVE, 'Object', { |
|
// 19.1.2.2 Object.create(O [, Properties]) |
|
create: $create, |
|
// 19.1.2.4 Object.defineProperty(O, P, Attributes) |
|
defineProperty: $defineProperty, |
|
// 19.1.2.3 Object.defineProperties(O, Properties) |
|
defineProperties: $defineProperties, |
|
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) |
|
getOwnPropertyDescriptor: $getOwnPropertyDescriptor, |
|
// 19.1.2.7 Object.getOwnPropertyNames(O) |
|
getOwnPropertyNames: $getOwnPropertyNames, |
|
// 19.1.2.8 Object.getOwnPropertySymbols(O) |
|
getOwnPropertySymbols: $getOwnPropertySymbols |
|
}); |
|
|
|
// 24.3.2 JSON.stringify(value [, replacer [, space]]) |
|
$JSON && _export(_export.S + _export.F * (!USE_NATIVE || _fails(function () { |
|
var S = $Symbol(); |
|
// MS Edge converts symbol values to JSON as {} |
|
// WebKit converts symbol values to JSON as null |
|
// V8 throws on boxed symbols |
|
return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}'; |
|
})), 'JSON', { |
|
stringify: function stringify(it) { |
|
var args = [it]; |
|
var i = 1; |
|
var replacer, $replacer; |
|
while (arguments.length > i) args.push(arguments[i++]); |
|
$replacer = replacer = args[1]; |
|
if (!_isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined |
|
if (!_isArray(replacer)) replacer = function (key, value) { |
|
if (typeof $replacer == 'function') value = $replacer.call(this, key, value); |
|
if (!isSymbol(value)) return value; |
|
}; |
|
args[1] = replacer; |
|
return _stringify.apply($JSON, args); |
|
} |
|
}); |
|
|
|
// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) |
|
$Symbol[PROTOTYPE$2][TO_PRIMITIVE] || _hide($Symbol[PROTOTYPE$2], TO_PRIMITIVE, $Symbol[PROTOTYPE$2].valueOf); |
|
// 19.4.3.5 Symbol.prototype[@@toStringTag] |
|
_setToStringTag($Symbol, 'Symbol'); |
|
// 20.2.1.9 Math[@@toStringTag] |
|
_setToStringTag(Math, 'Math', true); |
|
// 24.3.3 JSON[@@toStringTag] |
|
_setToStringTag(_global.JSON, 'JSON', true); |
|
|
|
_wksDefine('asyncIterator'); |
|
|
|
_wksDefine('observable'); |
|
|
|
var symbol$2 = _core.Symbol; |
|
|
|
var symbol = createCommonjsModule(function (module) { |
|
module.exports = { "default": symbol$2, __esModule: true }; |
|
}); |
|
|
|
unwrapExports(symbol); |
|
|
|
var _typeof_1 = createCommonjsModule(function (module, exports) { |
|
exports.__esModule = true; |
|
|
|
|
|
|
|
var _iterator2 = _interopRequireDefault(iterator); |
|
|
|
|
|
|
|
var _symbol2 = _interopRequireDefault(symbol); |
|
|
|
var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; |
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
|
|
|
exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { |
|
return typeof obj === "undefined" ? "undefined" : _typeof(obj); |
|
} : function (obj) { |
|
return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); |
|
}; |
|
}); |
|
|
|
var _typeof = unwrapExports(_typeof_1); |
|
|
|
var _redefineAll = function (target, src, safe) { |
|
for (var key in src) { |
|
if (safe && target[key]) target[key] = src[key]; |
|
else _hide(target, key, src[key]); |
|
} return target; |
|
}; |
|
|
|
var _anInstance = function (it, Constructor, name, forbiddenField) { |
|
if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { |
|
throw TypeError(name + ': incorrect invocation!'); |
|
} return it; |
|
}; |
|
|
|
// call something on iterator step with safe closing on error |
|
|
|
var _iterCall = function (iterator, fn, value, entries) { |
|
try { |
|
return entries ? fn(_anObject(value)[0], value[1]) : fn(value); |
|
// 7.4.6 IteratorClose(iterator, completion) |
|
} catch (e) { |
|
var ret = iterator['return']; |
|
if (ret !== undefined) _anObject(ret.call(iterator)); |
|
throw e; |
|
} |
|
}; |
|
|
|
// check on default Array iterator |
|
|
|
var ITERATOR$1 = _wks('iterator'); |
|
var ArrayProto = Array.prototype; |
|
|
|
var _isArrayIter = function (it) { |
|
return it !== undefined && (_iterators.Array === it || ArrayProto[ITERATOR$1] === it); |
|
}; |
|
|
|
// getting tag from 19.1.3.6 Object.prototype.toString() |
|
|
|
var TAG$1 = _wks('toStringTag'); |
|
// ES3 wrong here |
|
var ARG = _cof(function () { return arguments; }()) == 'Arguments'; |
|
|
|
// fallback for IE11 Script Access Denied error |
|
var tryGet = function (it, key) { |
|
try { |
|
return it[key]; |
|
} catch (e) { /* empty */ } |
|
}; |
|
|
|
var _classof = function (it) { |
|
var O, T, B; |
|
return it === undefined ? 'Undefined' : it === null ? 'Null' |
|
// @@toStringTag case |
|
: typeof (T = tryGet(O = Object(it), TAG$1)) == 'string' ? T |
|
// builtinTag case |
|
: ARG ? _cof(O) |
|
// ES3 arguments fallback |
|
: (B = _cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; |
|
}; |
|
|
|
var ITERATOR$2 = _wks('iterator'); |
|
|
|
var core_getIteratorMethod = _core.getIteratorMethod = function (it) { |
|
if (it != undefined) return it[ITERATOR$2] |
|
|| it['@@iterator'] |
|
|| _iterators[_classof(it)]; |
|
}; |
|
|
|
var _forOf = createCommonjsModule(function (module) { |
|
var BREAK = {}; |
|
var RETURN = {}; |
|
var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { |
|
var iterFn = ITERATOR ? function () { return iterable; } : core_getIteratorMethod(iterable); |
|
var f = _ctx(fn, that, entries ? 2 : 1); |
|
var index = 0; |
|
var length, step, iterator, result; |
|
if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); |
|
// fast case for arrays with default iterator |
|
if (_isArrayIter(iterFn)) for (length = _toLength(iterable.length); length > index; index++) { |
|
result = entries ? f(_anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); |
|
if (result === BREAK || result === RETURN) return result; |
|
} else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { |
|
result = _iterCall(iterator, f, step.value, entries); |
|
if (result === BREAK || result === RETURN) return result; |
|
} |
|
}; |
|
exports.BREAK = BREAK; |
|
exports.RETURN = RETURN; |
|
}); |
|
|
|
var SPECIES = _wks('species'); |
|
|
|
var _setSpecies = function (KEY) { |
|
var C = typeof _core[KEY] == 'function' ? _core[KEY] : _global[KEY]; |
|
if (_descriptors && C && !C[SPECIES]) _objectDp.f(C, SPECIES, { |
|
configurable: true, |
|
get: function () { return this; } |
|
}); |
|
}; |
|
|
|
var _validateCollection = function (it, TYPE) { |
|
if (!_isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); |
|
return it; |
|
}; |
|
|
|
var dP$2 = _objectDp.f; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fastKey = _meta.fastKey; |
|
|
|
var SIZE = _descriptors ? '_s' : 'size'; |
|
|
|
var getEntry = function (that, key) { |
|
// fast case |
|
var index = fastKey(key); |
|
var entry; |
|
if (index !== 'F') return that._i[index]; |
|
// frozen object case |
|
for (entry = that._f; entry; entry = entry.n) { |
|
if (entry.k == key) return entry; |
|
} |
|
}; |
|
|
|
var _collectionStrong = { |
|
getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { |
|
var C = wrapper(function (that, iterable) { |
|
_anInstance(that, C, NAME, '_i'); |
|
that._t = NAME; // collection type |
|
that._i = _objectCreate(null); // index |
|
that._f = undefined; // first entry |
|
that._l = undefined; // last entry |
|
that[SIZE] = 0; // size |
|
if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that); |
|
}); |
|
_redefineAll(C.prototype, { |
|
// 23.1.3.1 Map.prototype.clear() |
|
// 23.2.3.2 Set.prototype.clear() |
|
clear: function clear() { |
|
for (var that = _validateCollection(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { |
|
entry.r = true; |
|
if (entry.p) entry.p = entry.p.n = undefined; |
|
delete data[entry.i]; |
|
} |
|
that._f = that._l = undefined; |
|
that[SIZE] = 0; |
|
}, |
|
// 23.1.3.3 Map.prototype.delete(key) |
|
// 23.2.3.4 Set.prototype.delete(value) |
|
'delete': function (key) { |
|
var that = _validateCollection(this, NAME); |
|
var entry = getEntry(that, key); |
|
if (entry) { |
|
var next = entry.n; |
|
var prev = entry.p; |
|
delete that._i[entry.i]; |
|
entry.r = true; |
|
if (prev) prev.n = next; |
|
if (next) next.p = prev; |
|
if (that._f == entry) that._f = next; |
|
if (that._l == entry) that._l = prev; |
|
that[SIZE]--; |
|
} return !!entry; |
|
}, |
|
// 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) |
|
// 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) |
|
forEach: function forEach(callbackfn /* , that = undefined */) { |
|
_validateCollection(this, NAME); |
|
var f = _ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); |
|
var entry; |
|
while (entry = entry ? entry.n : this._f) { |
|
f(entry.v, entry.k, this); |
|
// revert to the last existing entry |
|
while (entry && entry.r) entry = entry.p; |
|
} |
|
}, |
|
// 23.1.3.7 Map.prototype.has(key) |
|
// 23.2.3.7 Set.prototype.has(value) |
|
has: function has(key) { |
|
return !!getEntry(_validateCollection(this, NAME), key); |
|
} |
|
}); |
|
if (_descriptors) dP$2(C.prototype, 'size', { |
|
get: function () { |
|
return _validateCollection(this, NAME)[SIZE]; |
|
} |
|
}); |
|
return C; |
|
}, |
|
def: function (that, key, value) { |
|
var entry = getEntry(that, key); |
|
var prev, index; |
|
// change existing entry |
|
if (entry) { |
|
entry.v = value; |
|
// create new entry |
|
} else { |
|
that._l = entry = { |
|
i: index = fastKey(key, true), // <- index |
|
k: key, // <- key |
|
v: value, // <- value |
|
p: prev = that._l, // <- previous entry |
|
n: undefined, // <- next entry |
|
r: false // <- removed |
|
}; |
|
if (!that._f) that._f = entry; |
|
if (prev) prev.n = entry; |
|
that[SIZE]++; |
|
// add to index |
|
if (index !== 'F') that._i[index] = entry; |
|
} return that; |
|
}, |
|
getEntry: getEntry, |
|
setStrong: function (C, NAME, IS_MAP) { |
|
// add .keys, .values, .entries, [@@iterator] |
|
// 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 |
|
_iterDefine(C, NAME, function (iterated, kind) { |
|
this._t = _validateCollection(iterated, NAME); // target |
|
this._k = kind; // kind |
|
this._l = undefined; // previous |
|
}, function () { |
|
var that = this; |
|
var kind = that._k; |
|
var entry = that._l; |
|
// revert to the last existing entry |
|
while (entry && entry.r) entry = entry.p; |
|
// get next entry |
|
if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { |
|
// or finish the iteration |
|
that._t = undefined; |
|
return _iterStep(1); |
|
} |
|
// return step by kind |
|
if (kind == 'keys') return _iterStep(0, entry.k); |
|
if (kind == 'values') return _iterStep(0, entry.v); |
|
return _iterStep(0, [entry.k, entry.v]); |
|
}, IS_MAP ? 'entries' : 'values', !IS_MAP, true); |
|
|
|
// add [@@species], 23.1.2.2, 23.2.2.2 |
|
_setSpecies(NAME); |
|
} |
|
}; |
|
|
|
var SPECIES$1 = _wks('species'); |
|
|
|
var _arraySpeciesConstructor = function (original) { |
|
var C; |
|
if (_isArray(original)) { |
|
C = original.constructor; |
|
// cross-realm fallback |
|
if (typeof C == 'function' && (C === Array || _isArray(C.prototype))) C = undefined; |
|
if (_isObject(C)) { |
|
C = C[SPECIES$1]; |
|
if (C === null) C = undefined; |
|
} |
|
} return C === undefined ? Array : C; |
|
}; |
|
|
|
// 9.4.2.3 ArraySpeciesCreate(originalArray, length) |
|
|
|
|
|
var _arraySpeciesCreate = function (original, length) { |
|
return new (_arraySpeciesConstructor(original))(length); |
|
}; |
|
|
|
// 0 -> Array#forEach |
|
// 1 -> Array#map |
|
// 2 -> Array#filter |
|
// 3 -> Array#some |
|
// 4 -> Array#every |
|
// 5 -> Array#find |
|
// 6 -> Array#findIndex |
|
|
|
|
|
|
|
|
|
|
|
var _arrayMethods = function (TYPE, $create) { |
|
var IS_MAP = TYPE == 1; |
|
var IS_FILTER = TYPE == 2; |
|
var IS_SOME = TYPE == 3; |
|
var IS_EVERY = TYPE == 4; |
|
var IS_FIND_INDEX = TYPE == 6; |
|
var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; |
|
var create = $create || _arraySpeciesCreate; |
|
return function ($this, callbackfn, that) { |
|
var O = _toObject($this); |
|
var self = _iobject(O); |
|
var f = _ctx(callbackfn, that, 3); |
|
var length = _toLength(self.length); |
|
var index = 0; |
|
var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; |
|
var val, res; |
|
for (;length > index; index++) if (NO_HOLES || index in self) { |
|
val = self[index]; |
|
res = f(val, index, O); |
|
if (TYPE) { |
|
if (IS_MAP) result[index] = res; // map |
|
else if (res) switch (TYPE) { |
|
case 3: return true; // some |
|
case 5: return val; // find |
|
case 6: return index; // findIndex |
|
case 2: result.push(val); // filter |
|
} else if (IS_EVERY) return false; // every |
|
} |
|
} |
|
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; |
|
}; |
|
}; |
|
|
|
var dP$3 = _objectDp.f; |
|
var each = _arrayMethods(0); |
|
|
|
|
|
var _collection = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { |
|
var Base = _global[NAME]; |
|
var C = Base; |
|
var ADDER = IS_MAP ? 'set' : 'add'; |
|
var proto = C && C.prototype; |
|
var O = {}; |
|
if (!_descriptors || typeof C != 'function' || !(IS_WEAK || proto.forEach && !_fails(function () { |
|
new C().entries().next(); |
|
}))) { |
|
// create collection constructor |
|
C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); |
|
_redefineAll(C.prototype, methods); |
|
_meta.NEED = true; |
|
} else { |
|
C = wrapper(function (target, iterable) { |
|
_anInstance(target, C, NAME, '_c'); |
|
target._c = new Base(); |
|
if (iterable != undefined) _forOf(iterable, IS_MAP, target[ADDER], target); |
|
}); |
|
each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) { |
|
var IS_ADDER = KEY == 'add' || KEY == 'set'; |
|
if (KEY in proto && !(IS_WEAK && KEY == 'clear')) _hide(C.prototype, KEY, function (a, b) { |
|
_anInstance(this, C, KEY); |
|
if (!IS_ADDER && IS_WEAK && !_isObject(a)) return KEY == 'get' ? undefined : false; |
|
var result = this._c[KEY](a === 0 ? 0 : a, b); |
|
return IS_ADDER ? this : result; |
|
}); |
|
}); |
|
IS_WEAK || dP$3(C.prototype, 'size', { |
|
get: function () { |
|
return this._c.size; |
|
} |
|
}); |
|
} |
|
|
|
_setToStringTag(C, NAME); |
|
|
|
O[NAME] = C; |
|
_export(_export.G + _export.W + _export.F, O); |
|
|
|
if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); |
|
|
|
return C; |
|
}; |
|
|
|
var MAP = 'Map'; |
|
|
|
// 23.1 Map Objects |
|
var es6_map = _collection(MAP, function (get) { |
|
return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; |
|
}, { |
|
// 23.1.3.6 Map.prototype.get(key) |
|
get: function get(key) { |
|
var entry = _collectionStrong.getEntry(_validateCollection(this, MAP), key); |
|
return entry && entry.v; |
|
}, |
|
// 23.1.3.9 Map.prototype.set(key, value) |
|
set: function set(key, value) { |
|
return _collectionStrong.def(_validateCollection(this, MAP), key === 0 ? 0 : key, value); |
|
} |
|
}, _collectionStrong, true); |
|
|
|
var _arrayFromIterable = function (iter, ITERATOR) { |
|
var result = []; |
|
_forOf(iter, false, result.push, result, ITERATOR); |
|
return result; |
|
}; |
|
|
|
// https://github.com/DavidBruant/Map-Set.prototype.toJSON |
|
|
|
|
|
var _collectionToJson = function (NAME) { |
|
return function toJSON() { |
|
if (_classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic"); |
|
return _arrayFromIterable(this); |
|
}; |
|
}; |
|
|
|
// https://github.com/DavidBruant/Map-Set.prototype.toJSON |
|
|
|
|
|
_export(_export.P + _export.R, 'Map', { toJSON: _collectionToJson('Map') }); |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/ |
|
|
|
|
|
var _setCollectionOf = function (COLLECTION) { |
|
_export(_export.S, COLLECTION, { of: function of() { |
|
var length = arguments.length; |
|
var A = new Array(length); |
|
while (length--) A[length] = arguments[length]; |
|
return new this(A); |
|
} }); |
|
}; |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of |
|
_setCollectionOf('Map'); |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/ |
|
|
|
|
|
|
|
|
|
|
|
var _setCollectionFrom = function (COLLECTION) { |
|
_export(_export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) { |
|
var mapFn = arguments[1]; |
|
var mapping, A, n, cb; |
|
_aFunction(this); |
|
mapping = mapFn !== undefined; |
|
if (mapping) _aFunction(mapFn); |
|
if (source == undefined) return new this(); |
|
A = []; |
|
if (mapping) { |
|
n = 0; |
|
cb = _ctx(mapFn, arguments[2], 2); |
|
_forOf(source, false, function (nextItem) { |
|
A.push(cb(nextItem, n++)); |
|
}); |
|
} else { |
|
_forOf(source, false, A.push, A); |
|
} |
|
return new this(A); |
|
} }); |
|
}; |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from |
|
_setCollectionFrom('Map'); |
|
|
|
var map$1 = _core.Map; |
|
|
|
var map = createCommonjsModule(function (module) { |
|
module.exports = { "default": map$1, __esModule: true }; |
|
}); |
|
|
|
var _Map = unwrapExports(map); |
|
|
|
var SET = 'Set'; |
|
|
|
// 23.2 Set Objects |
|
var es6_set = _collection(SET, function (get) { |
|
return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; |
|
}, { |
|
// 23.2.3.1 Set.prototype.add(value) |
|
add: function add(value) { |
|
return _collectionStrong.def(_validateCollection(this, SET), value = value === 0 ? 0 : value, value); |
|
} |
|
}, _collectionStrong); |
|
|
|
// https://github.com/DavidBruant/Map-Set.prototype.toJSON |
|
|
|
|
|
_export(_export.P + _export.R, 'Set', { toJSON: _collectionToJson('Set') }); |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of |
|
_setCollectionOf('Set'); |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from |
|
_setCollectionFrom('Set'); |
|
|
|
var set$1 = _core.Set; |
|
|
|
var set = createCommonjsModule(function (module) { |
|
module.exports = { "default": set$1, __esModule: true }; |
|
}); |
|
|
|
var _Set = unwrapExports(set); |
|
|
|
// 19.1.2.1 Object.assign(target, source, ...) |
|
|
|
|
|
|
|
|
|
|
|
var $assign = Object.assign; |
|
|
|
// should work with symbols and should have deterministic property order (V8 bug) |
|
var _objectAssign = !$assign || _fails(function () { |
|
var A = {}; |
|
var B = {}; |
|
// eslint-disable-next-line no-undef |
|
var S = Symbol(); |
|
var K = 'abcdefghijklmnopqrst'; |
|
A[S] = 7; |
|
K.split('').forEach(function (k) { B[k] = k; }); |
|
return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; |
|
}) ? function assign(target, source) { // eslint-disable-line no-unused-vars |
|
var T = _toObject(target); |
|
var aLen = arguments.length; |
|
var index = 1; |
|
var getSymbols = _objectGops.f; |
|
var isEnum = _objectPie.f; |
|
while (aLen > index) { |
|
var S = _iobject(arguments[index++]); |
|
var keys = getSymbols ? _objectKeys(S).concat(getSymbols(S)) : _objectKeys(S); |
|
var length = keys.length; |
|
var j = 0; |
|
var key; |
|
while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key]; |
|
} return T; |
|
} : $assign; |
|
|
|
var getWeak = _meta.getWeak; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var arrayFind = _arrayMethods(5); |
|
var arrayFindIndex = _arrayMethods(6); |
|
var id$1 = 0; |
|
|
|
// fallback for uncaught frozen keys |
|
var uncaughtFrozenStore = function (that) { |
|
return that._l || (that._l = new UncaughtFrozenStore()); |
|
}; |
|
var UncaughtFrozenStore = function () { |
|
this.a = []; |
|
}; |
|
var findUncaughtFrozen = function (store, key) { |
|
return arrayFind(store.a, function (it) { |
|
return it[0] === key; |
|
}); |
|
}; |
|
UncaughtFrozenStore.prototype = { |
|
get: function (key) { |
|
var entry = findUncaughtFrozen(this, key); |
|
if (entry) return entry[1]; |
|
}, |
|
has: function (key) { |
|
return !!findUncaughtFrozen(this, key); |
|
}, |
|
set: function (key, value) { |
|
var entry = findUncaughtFrozen(this, key); |
|
if (entry) entry[1] = value; |
|
else this.a.push([key, value]); |
|
}, |
|
'delete': function (key) { |
|
var index = arrayFindIndex(this.a, function (it) { |
|
return it[0] === key; |
|
}); |
|
if (~index) this.a.splice(index, 1); |
|
return !!~index; |
|
} |
|
}; |
|
|
|
var _collectionWeak = { |
|
getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { |
|
var C = wrapper(function (that, iterable) { |
|
_anInstance(that, C, NAME, '_i'); |
|
that._t = NAME; // collection type |
|
that._i = id$1++; // collection id |
|
that._l = undefined; // leak store for uncaught frozen objects |
|
if (iterable != undefined) _forOf(iterable, IS_MAP, that[ADDER], that); |
|
}); |
|
_redefineAll(C.prototype, { |
|
// 23.3.3.2 WeakMap.prototype.delete(key) |
|
// 23.4.3.3 WeakSet.prototype.delete(value) |
|
'delete': function (key) { |
|
if (!_isObject(key)) return false; |
|
var data = getWeak(key); |
|
if (data === true) return uncaughtFrozenStore(_validateCollection(this, NAME))['delete'](key); |
|
return data && _has(data, this._i) && delete data[this._i]; |
|
}, |
|
// 23.3.3.4 WeakMap.prototype.has(key) |
|
// 23.4.3.4 WeakSet.prototype.has(value) |
|
has: function has(key) { |
|
if (!_isObject(key)) return false; |
|
var data = getWeak(key); |
|
if (data === true) return uncaughtFrozenStore(_validateCollection(this, NAME)).has(key); |
|
return data && _has(data, this._i); |
|
} |
|
}); |
|
return C; |
|
}, |
|
def: function (that, key, value) { |
|
var data = getWeak(_anObject(key), true); |
|
if (data === true) uncaughtFrozenStore(that).set(key, value); |
|
else data[that._i] = value; |
|
return that; |
|
}, |
|
ufstore: uncaughtFrozenStore |
|
}; |
|
|
|
var es6_weakMap = createCommonjsModule(function (module) { |
|
var each = _arrayMethods(0); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var WEAK_MAP = 'WeakMap'; |
|
var getWeak = _meta.getWeak; |
|
var isExtensible = Object.isExtensible; |
|
var uncaughtFrozenStore = _collectionWeak.ufstore; |
|
var tmp = {}; |
|
var InternalMap; |
|
|
|
var wrapper = function (get) { |
|
return function WeakMap() { |
|
return get(this, arguments.length > 0 ? arguments[0] : undefined); |
|
}; |
|
}; |
|
|
|
var methods = { |
|
// 23.3.3.3 WeakMap.prototype.get(key) |
|
get: function get(key) { |
|
if (_isObject(key)) { |
|
var data = getWeak(key); |
|
if (data === true) return uncaughtFrozenStore(_validateCollection(this, WEAK_MAP)).get(key); |
|
return data ? data[this._i] : undefined; |
|
} |
|
}, |
|
// 23.3.3.5 WeakMap.prototype.set(key, value) |
|
set: function set(key, value) { |
|
return _collectionWeak.def(_validateCollection(this, WEAK_MAP), key, value); |
|
} |
|
}; |
|
|
|
// 23.3 WeakMap Objects |
|
var $WeakMap = module.exports = _collection(WEAK_MAP, wrapper, methods, _collectionWeak, true, true); |
|
|
|
// IE11 WeakMap frozen keys fix |
|
if (_fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) { |
|
InternalMap = _collectionWeak.getConstructor(wrapper, WEAK_MAP); |
|
_objectAssign(InternalMap.prototype, methods); |
|
_meta.NEED = true; |
|
each(['delete', 'has', 'get', 'set'], function (key) { |
|
var proto = $WeakMap.prototype; |
|
var method = proto[key]; |
|
_redefine(proto, key, function (a, b) { |
|
// store frozen objects on internal weakmap shim |
|
if (_isObject(a) && !isExtensible(a)) { |
|
if (!this._f) this._f = new InternalMap(); |
|
var result = this._f[key](a, b); |
|
return key == 'set' ? this : result; |
|
// store all the rest on native weakmap |
|
} return method.call(this, a, b); |
|
}); |
|
}); |
|
} |
|
}); |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of |
|
_setCollectionOf('WeakMap'); |
|
|
|
// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from |
|
_setCollectionFrom('WeakMap'); |
|
|
|
var weakMap$1 = _core.WeakMap; |
|
|
|
var weakMap = createCommonjsModule(function (module) { |
|
module.exports = { "default": weakMap$1, __esModule: true }; |
|
}); |
|
|
|
var _WeakMap = unwrapExports(weakMap); |
|
|
|
var classCallCheck = createCommonjsModule(function (module, exports) { |
|
exports.__esModule = true; |
|
|
|
exports.default = function (instance, Constructor) { |
|
if (!(instance instanceof Constructor)) { |
|
throw new TypeError("Cannot call a class as a function"); |
|
} |
|
}; |
|
}); |
|
|
|
var _classCallCheck = unwrapExports(classCallCheck); |
|
|
|
var createClass = createCommonjsModule(function (module, exports) { |
|
exports.__esModule = true; |
|
|
|
|
|
|
|
var _defineProperty2 = _interopRequireDefault(defineProperty); |
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
|
|
|
exports.default = function () { |
|
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; |
|
(0, _defineProperty2.default)(target, descriptor.key, descriptor); |
|
} |
|
} |
|
|
|
return function (Constructor, protoProps, staticProps) { |
|
if (protoProps) defineProperties(Constructor.prototype, protoProps); |
|
if (staticProps) defineProperties(Constructor, staticProps); |
|
return Constructor; |
|
}; |
|
}(); |
|
}); |
|
|
|
var _createClass = unwrapExports(createClass); |
|
|
|
// 7.3.20 SpeciesConstructor(O, defaultConstructor) |
|
|
|
|
|
var SPECIES$2 = _wks('species'); |
|
var _speciesConstructor = function (O, D) { |
|
var C = _anObject(O).constructor; |
|
var S; |
|
return C === undefined || (S = _anObject(C)[SPECIES$2]) == undefined ? D : _aFunction(S); |
|
}; |
|
|
|
// fast apply, http://jsperf.lnkit.com/fast-apply/5 |
|
var _invoke = function (fn, args, that) { |
|
var un = that === undefined; |
|
switch (args.length) { |
|
case 0: return un ? fn() |
|
: fn.call(that); |
|
case 1: return un ? fn(args[0]) |
|
: fn.call(that, args[0]); |
|
case 2: return un ? fn(args[0], args[1]) |
|
: fn.call(that, args[0], args[1]); |
|
case 3: return un ? fn(args[0], args[1], args[2]) |
|
: fn.call(that, args[0], args[1], args[2]); |
|
case 4: return un ? fn(args[0], args[1], args[2], args[3]) |
|
: fn.call(that, args[0], args[1], args[2], args[3]); |
|
} return fn.apply(that, args); |
|
}; |
|
|
|
var process$1 = _global.process; |
|
var setTask = _global.setImmediate; |
|
var clearTask = _global.clearImmediate; |
|
var MessageChannel = _global.MessageChannel; |
|
var Dispatch = _global.Dispatch; |
|
var counter = 0; |
|
var queue = {}; |
|
var ONREADYSTATECHANGE = 'onreadystatechange'; |
|
var defer; |
|
var channel; |
|
var port; |
|
var run = function () { |
|
var id = +this; |
|
// eslint-disable-next-line no-prototype-builtins |
|
if (queue.hasOwnProperty(id)) { |
|
var fn = queue[id]; |
|
delete queue[id]; |
|
fn(); |
|
} |
|
}; |
|
var listener = function (event) { |
|
run.call(event.data); |
|
}; |
|
// Node.js 0.9+ & IE10+ has setImmediate, otherwise: |
|
if (!setTask || !clearTask) { |
|
setTask = function setImmediate(fn) { |
|
var args = []; |
|
var i = 1; |
|
while (arguments.length > i) args.push(arguments[i++]); |
|
queue[++counter] = function () { |
|
// eslint-disable-next-line no-new-func |
|
_invoke(typeof fn == 'function' ? fn : Function(fn), args); |
|
}; |
|
defer(counter); |
|
return counter; |
|
}; |
|
clearTask = function clearImmediate(id) { |
|
delete queue[id]; |
|
}; |
|
// Node.js 0.8- |
|
if (_cof(process$1) == 'process') { |
|
defer = function (id) { |
|
process$1.nextTick(_ctx(run, id, 1)); |
|
}; |
|
// Sphere (JS game engine) Dispatch API |
|
} else if (Dispatch && Dispatch.now) { |
|
defer = function (id) { |
|
Dispatch.now(_ctx(run, id, 1)); |
|
}; |
|
// Browsers with MessageChannel, includes WebWorkers |
|
} else if (MessageChannel) { |
|
channel = new MessageChannel(); |
|
port = channel.port2; |
|
channel.port1.onmessage = listener; |
|
defer = _ctx(port.postMessage, port, 1); |
|
// Browsers with postMessage, skip WebWorkers |
|
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object' |
|
} else if (_global.addEventListener && typeof postMessage == 'function' && !_global.importScripts) { |
|
defer = function (id) { |
|
_global.postMessage(id + '', '*'); |
|
}; |
|
_global.addEventListener('message', listener, false); |
|
// IE8- |
|
} else if (ONREADYSTATECHANGE in _domCreate('script')) { |
|
defer = function (id) { |
|
_html.appendChild(_domCreate('script'))[ONREADYSTATECHANGE] = function () { |
|
_html.removeChild(this); |
|
run.call(id); |
|
}; |
|
}; |
|
// Rest old browsers |
|
} else { |
|
defer = function (id) { |
|
setTimeout(_ctx(run, id, 1), 0); |
|
}; |
|
} |
|
} |
|
var _task = { |
|
set: setTask, |
|
clear: clearTask |
|
}; |
|
|
|
var macrotask = _task.set; |
|
var Observer = _global.MutationObserver || _global.WebKitMutationObserver; |
|
var process$2 = _global.process; |
|
var Promise = _global.Promise; |
|
var isNode$1 = _cof(process$2) == 'process'; |
|
|
|
var _microtask = function () { |
|
var head, last, notify; |
|
|
|
var flush = function () { |
|
var parent, fn; |
|
if (isNode$1 && (parent = process$2.domain)) parent.exit(); |
|
while (head) { |
|
fn = head.fn; |
|
head = head.next; |
|
try { |
|
fn(); |
|
} catch (e) { |
|
if (head) notify(); |
|
else last = undefined; |
|
throw e; |
|
} |
|
} last = undefined; |
|
if (parent) parent.enter(); |
|
}; |
|
|
|
// Node.js |
|
if (isNode$1) { |
|
notify = function () { |
|
process$2.nextTick(flush); |
|
}; |
|
// browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 |
|
} else if (Observer && !(_global.navigator && _global.navigator.standalone)) { |
|
var toggle = true; |
|
var node = document.createTextNode(''); |
|
new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new |
|
notify = function () { |
|
node.data = toggle = !toggle; |
|
}; |
|
// environments with maybe non-completely correct, but existent Promise |
|
} else if (Promise && Promise.resolve) { |
|
var promise = Promise.resolve(); |
|
notify = function () { |
|
promise.then(flush); |
|
}; |
|
// for other environments - macrotask based on: |
|
// - setImmediate |
|
// - MessageChannel |
|
// - window.postMessag |
|
// - onreadystatechange |
|
// - setTimeout |
|
} else { |
|
notify = function () { |
|
// strange IE + webpack dev server bug - use .call(global) |
|
macrotask.call(_global, flush); |
|
}; |
|
} |
|
|
|
return function (fn) { |
|
var task = { fn: fn, next: undefined }; |
|
if (last) last.next = task; |
|
if (!head) { |
|
head = task; |
|
notify(); |
|
} last = task; |
|
}; |
|
}; |
|
|
|
// 25.4.1.5 NewPromiseCapability(C) |
|
|
|
|
|
function PromiseCapability(C) { |
|
var resolve, reject; |
|
this.promise = new C(function ($$resolve, $$reject) { |
|
if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); |
|
resolve = $$resolve; |
|
reject = $$reject; |
|
}); |
|
this.resolve = _aFunction(resolve); |
|
this.reject = _aFunction(reject); |
|
} |
|
|
|
var f$7 = function (C) { |
|
return new PromiseCapability(C); |
|
}; |
|
|
|
var _newPromiseCapability = { |
|
f: f$7 |
|
}; |
|
|
|
var _perform = function (exec) { |
|
try { |
|
return { e: false, v: exec() }; |
|
} catch (e) { |
|
return { e: true, v: e }; |
|
} |
|
}; |
|
|
|
var _promiseResolve = function (C, x) { |
|
_anObject(C); |
|
if (_isObject(x) && x.constructor === C) return x; |
|
var promiseCapability = _newPromiseCapability.f(C); |
|
var resolve = promiseCapability.resolve; |
|
resolve(x); |
|
return promiseCapability.promise; |
|
}; |
|
|
|
var ITERATOR$3 = _wks('iterator'); |
|
var SAFE_CLOSING = false; |
|
|
|
try { |
|
var riter = [7][ITERATOR$3](); |
|
riter['return'] = function () { SAFE_CLOSING = true; }; |
|
// eslint-disable-next-line no-throw-literal |
|
|
|
} catch (e) { /* empty */ } |
|
|
|
var _iterDetect = function (exec, skipClosing) { |
|
if (!skipClosing && !SAFE_CLOSING) return false; |
|
var safe = false; |
|
try { |
|
var arr = [7]; |
|
var iter = arr[ITERATOR$3](); |
|
iter.next = function () { return { done: safe = true }; }; |
|
arr[ITERATOR$3] = function () { return iter; }; |
|
exec(arr); |
|
} catch (e) { /* empty */ } |
|
return safe; |
|
}; |
|
|
|
var task = _task.set; |
|
var microtask = _microtask(); |
|
|
|
|
|
|
|
var PROMISE = 'Promise'; |
|
var TypeError$1 = _global.TypeError; |
|
var process = _global.process; |
|
var $Promise = _global[PROMISE]; |
|
var isNode = _classof(process) == 'process'; |
|
var empty = function () { /* empty */ }; |
|
var Internal; |
|
var newGenericPromiseCapability; |
|
var OwnPromiseCapability; |
|
var Wrapper; |
|
var newPromiseCapability = newGenericPromiseCapability = _newPromiseCapability.f; |
|
|
|
var USE_NATIVE$1 = !!function () { |
|
try { |
|
// correct subclassing with @@species support |
|
var promise = $Promise.resolve(1); |
|
var FakePromise = (promise.constructor = {})[_wks('species')] = function (exec) { |
|
exec(empty, empty); |
|
}; |
|
// unhandled rejections tracking support, NodeJS Promise without it fails @@species test |
|
return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise; |
|
} catch (e) { /* empty */ } |
|
}(); |
|
|
|
// helpers |
|
var isThenable = function (it) { |
|
var then; |
|
return _isObject(it) && typeof (then = it.then) == 'function' ? then : false; |
|
}; |
|
var notify = function (promise, isReject) { |
|
if (promise._n) return; |
|
promise._n = true; |
|
var chain = promise._c; |
|
microtask(function () { |
|
var value = promise._v; |
|
var ok = promise._s == 1; |
|
var i = 0; |
|
var run = function (reaction) { |
|
var handler = ok ? reaction.ok : reaction.fail; |
|
var resolve = reaction.resolve; |
|
var reject = reaction.reject; |
|
var domain = reaction.domain; |
|
var result, then; |
|
try { |
|
if (handler) { |
|
if (!ok) { |
|
if (promise._h == 2) onHandleUnhandled(promise); |
|
promise._h = 1; |
|
} |
|
if (handler === true) result = value; |
|
else { |
|
if (domain) domain.enter(); |
|
result = handler(value); |
|
if (domain) domain.exit(); |
|
} |
|
if (result === reaction.promise) { |
|
reject(TypeError$1('Promise-chain cycle')); |
|
} else if (then = isThenable(result)) { |
|
then.call(result, resolve, reject); |
|
} else resolve(result); |
|
} else reject(value); |
|
} catch (e) { |
|
reject(e); |
|
} |
|
}; |
|
while (chain.length > i) run(chain[i++]); // variable length - can't use forEach |
|
promise._c = []; |
|
promise._n = false; |
|
if (isReject && !promise._h) onUnhandled(promise); |
|
}); |
|
}; |
|
var onUnhandled = function (promise) { |
|
task.call(_global, function () { |
|
var value = promise._v; |
|
var unhandled = isUnhandled(promise); |
|
var result, handler, console; |
|
if (unhandled) { |
|
result = _perform(function () { |
|
if (isNode) { |
|
process.emit('unhandledRejection', value, promise); |
|
} else if (handler = _global.onunhandledrejection) { |
|
handler({ promise: promise, reason: value }); |
|
} else if ((console = _global.console) && console.error) { |
|
console.error('Unhandled promise rejection', value); |
|
} |
|
}); |
|
// Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should |
|
promise._h = isNode || isUnhandled(promise) ? 2 : 1; |
|
} promise._a = undefined; |
|
if (unhandled && result.e) throw result.v; |
|
}); |
|
}; |
|
var isUnhandled = function (promise) { |
|
return promise._h !== 1 && (promise._a || promise._c).length === 0; |
|
}; |
|
var onHandleUnhandled = function (promise) { |
|
task.call(_global, function () { |
|
var handler; |
|
if (isNode) { |
|
process.emit('rejectionHandled', promise); |
|
} else if (handler = _global.onrejectionhandled) { |
|
handler({ promise: promise, reason: promise._v }); |
|
} |
|
}); |
|
}; |
|
var $reject = function (value) { |
|
var promise = this; |
|
if (promise._d) return; |
|
promise._d = true; |
|
promise = promise._w || promise; // unwrap |
|
promise._v = value; |
|
promise._s = 2; |
|
if (!promise._a) promise._a = promise._c.slice(); |
|
notify(promise, true); |
|
}; |
|
var $resolve = function (value) { |
|
var promise = this; |
|
var then; |
|
if (promise._d) return; |
|
promise._d = true; |
|
promise = promise._w || promise; // unwrap |
|
try { |
|
if (promise === value) throw TypeError$1("Promise can't be resolved itself"); |
|
if (then = isThenable(value)) { |
|
microtask(function () { |
|
var wrapper = { _w: promise, _d: false }; // wrap |
|
try { |
|
then.call(value, _ctx($resolve, wrapper, 1), _ctx($reject, wrapper, 1)); |
|
} catch (e) { |
|
$reject.call(wrapper, e); |
|
} |
|
}); |
|
} else { |
|
promise._v = value; |
|
promise._s = 1; |
|
notify(promise, false); |
|
} |
|
} catch (e) { |
|
$reject.call({ _w: promise, _d: false }, e); // wrap |
|
} |
|
}; |
|
|
|
// constructor polyfill |
|
if (!USE_NATIVE$1) { |
|
// 25.4.3.1 Promise(executor) |
|
$Promise = function Promise(executor) { |
|
_anInstance(this, $Promise, PROMISE, '_h'); |
|
_aFunction(executor); |
|
Internal.call(this); |
|
try { |
|
executor(_ctx($resolve, this, 1), _ctx($reject, this, 1)); |
|
} catch (err) { |
|
$reject.call(this, err); |
|
} |
|
}; |
|
// eslint-disable-next-line no-unused-vars |
|
Internal = function Promise(executor) { |
|
this._c = []; // <- awaiting reactions |
|
this._a = undefined; // <- checked in isUnhandled reactions |
|
this._s = 0; // <- state |
|
this._d = false; // <- done |
|
this._v = undefined; // <- value |
|
this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled |
|
this._n = false; // <- notify |
|
}; |
|
Internal.prototype = _redefineAll($Promise.prototype, { |
|
// 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) |
|
then: function then(onFulfilled, onRejected) { |
|
var reaction = newPromiseCapability(_speciesConstructor(this, $Promise)); |
|
reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; |
|
reaction.fail = typeof onRejected == 'function' && onRejected; |
|
reaction.domain = isNode ? process.domain : undefined; |
|
this._c.push(reaction); |
|
if (this._a) this._a.push(reaction); |
|
if (this._s) notify(this, false); |
|
return reaction.promise; |
|
}, |
|
// 25.4.5.1 Promise.prototype.catch(onRejected) |
|
'catch': function (onRejected) { |
|
return this.then(undefined, onRejected); |
|
} |
|
}); |
|
OwnPromiseCapability = function () { |
|
var promise = new Internal(); |
|
this.promise = promise; |
|
this.resolve = _ctx($resolve, promise, 1); |
|
this.reject = _ctx($reject, promise, 1); |
|
}; |
|
_newPromiseCapability.f = newPromiseCapability = function (C) { |
|
return C === $Promise || C === Wrapper |
|
? new OwnPromiseCapability(C) |
|
: newGenericPromiseCapability(C); |
|
}; |
|
} |
|
|
|
_export(_export.G + _export.W + _export.F * !USE_NATIVE$1, { Promise: $Promise }); |
|
_setToStringTag($Promise, PROMISE); |
|
_setSpecies(PROMISE); |
|
Wrapper = _core[PROMISE]; |
|
|
|
// statics |
|
_export(_export.S + _export.F * !USE_NATIVE$1, PROMISE, { |
|
// 25.4.4.5 Promise.reject(r) |
|
reject: function reject(r) { |
|
var capability = newPromiseCapability(this); |
|
var $$reject = capability.reject; |
|
$$reject(r); |
|
return capability.promise; |
|
} |
|
}); |
|
_export(_export.S + _export.F * (_library || !USE_NATIVE$1), PROMISE, { |
|
// 25.4.4.6 Promise.resolve(x) |
|
resolve: function resolve(x) { |
|
return _promiseResolve(_library && this === Wrapper ? $Promise : this, x); |
|
} |
|
}); |
|
_export(_export.S + _export.F * !(USE_NATIVE$1 && _iterDetect(function (iter) { |
|
$Promise.all(iter)['catch'](empty); |
|
})), PROMISE, { |
|
// 25.4.4.1 Promise.all(iterable) |
|
all: function all(iterable) { |
|
var C = this; |
|
var capability = newPromiseCapability(C); |
|
var resolve = capability.resolve; |
|
var reject = capability.reject; |
|
var result = _perform(function () { |
|
var values = []; |
|
var index = 0; |
|
var remaining = 1; |
|
_forOf(iterable, false, function (promise) { |
|
var $index = index++; |
|
var alreadyCalled = false; |
|
values.push(undefined); |
|
remaining++; |
|
C.resolve(promise).then(function (value) { |
|
if (alreadyCalled) return; |
|
alreadyCalled = true; |
|
values[$index] = value; |
|
--remaining || resolve(values); |
|
}, reject); |
|
}); |
|
--remaining || resolve(values); |
|
}); |
|
if (result.e) reject(result.v); |
|
return capability.promise; |
|
}, |
|
// 25.4.4.4 Promise.race(iterable) |
|
race: function race(iterable) { |
|
var C = this; |
|
var capability = newPromiseCapability(C); |
|
var reject = capability.reject; |
|
var result = _perform(function () { |
|
_forOf(iterable, false, function (promise) { |
|
C.resolve(promise).then(capability.resolve, reject); |
|
}); |
|
}); |
|
if (result.e) reject(result.v); |
|
return capability.promise; |
|
} |
|
}); |
|
|
|
_export(_export.P + _export.R, 'Promise', { 'finally': function (onFinally) { |
|
var C = _speciesConstructor(this, _core.Promise || _global.Promise); |
|
var isFunction = typeof onFinally == 'function'; |
|
return this.then( |
|
isFunction ? function (x) { |
|
return _promiseResolve(C, onFinally()).then(function () { return x; }); |
|
} : onFinally, |
|
isFunction ? function (e) { |
|
return _promiseResolve(C, onFinally()).then(function () { throw e; }); |
|
} : onFinally |
|
); |
|
} }); |
|
|
|
// https://github.com/tc39/proposal-promise-try |
|
|
|
|
|
|
|
|
|
_export(_export.S, 'Promise', { 'try': function (callbackfn) { |
|
var promiseCapability = _newPromiseCapability.f(this); |
|
var result = _perform(callbackfn); |
|
(result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v); |
|
return promiseCapability.promise; |
|
} }); |
|
|
|
var promise$1 = _core.Promise; |
|
|
|
var promise = createCommonjsModule(function (module) { |
|
module.exports = { "default": promise$1, __esModule: true }; |
|
}); |
|
|
|
var _Promise = unwrapExports(promise); |
|
|
|
// most Object methods by ES6 should accept primitives |
|
|
|
|
|
|
|
var _objectSap = function (KEY, exec) { |
|
var fn = (_core.Object || {})[KEY] || Object[KEY]; |
|
var exp = {}; |
|
exp[KEY] = exec(fn); |
|
_export(_export.S + _export.F * _fails(function () { fn(1); }), 'Object', exp); |
|
}; |
|
|
|
// 19.1.2.14 Object.keys(O) |
|
|
|
|
|
|
|
_objectSap('keys', function () { |
|
return function keys(it) { |
|
return _objectKeys(_toObject(it)); |
|
}; |
|
}); |
|
|
|
var keys$1 = _core.Object.keys; |
|
|
|
var keys = createCommonjsModule(function (module) { |
|
module.exports = { "default": keys$1, __esModule: true }; |
|
}); |
|
|
|
var _Object$keys = unwrapExports(keys); |
|
|
|
// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) |
|
|
|
var $getOwnPropertyDescriptor$1 = _objectGopd.f; |
|
|
|
_objectSap('getOwnPropertyDescriptor', function () { |
|
return function getOwnPropertyDescriptor(it, key) { |
|
return $getOwnPropertyDescriptor$1(_toIobject(it), key); |
|
}; |
|
}); |
|
|
|
var $Object$1 = _core.Object; |
|
var getOwnPropertyDescriptor$1 = function getOwnPropertyDescriptor(it, key) { |
|
return $Object$1.getOwnPropertyDescriptor(it, key); |
|
}; |
|
|
|
var getOwnPropertyDescriptor = createCommonjsModule(function (module) { |
|
module.exports = { "default": getOwnPropertyDescriptor$1, __esModule: true }; |
|
}); |
|
|
|
var _Object$getOwnPropertyDescriptor = unwrapExports(getOwnPropertyDescriptor); |
|
|
|
// 19.1.2.7 Object.getOwnPropertyNames(O) |
|
_objectSap('getOwnPropertyNames', function () { |
|
return _objectGopnExt.f; |
|
}); |
|
|
|
var $Object$2 = _core.Object; |
|
var getOwnPropertyNames$1 = function getOwnPropertyNames(it) { |
|
return $Object$2.getOwnPropertyNames(it); |
|
}; |
|
|
|
var getOwnPropertyNames = createCommonjsModule(function (module) { |
|
module.exports = { "default": getOwnPropertyNames$1, __esModule: true }; |
|
}); |
|
|
|
var _Object$getOwnPropertyNames = unwrapExports(getOwnPropertyNames); |
|
|
|
// 19.1.2.9 Object.getPrototypeOf(O) |
|
|
|
|
|
|
|
_objectSap('getPrototypeOf', function () { |
|
return function getPrototypeOf(it) { |
|
return _objectGpo(_toObject(it)); |
|
}; |
|
}); |
|
|
|
var getPrototypeOf$1 = _core.Object.getPrototypeOf; |
|
|
|
var getPrototypeOf = createCommonjsModule(function (module) { |
|
module.exports = { "default": getPrototypeOf$1, __esModule: true }; |
|
}); |
|
|
|
var _Object$getPrototypeOf = unwrapExports(getPrototypeOf); |
|
|
|
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) |
|
_export(_export.S, 'Object', { create: _objectCreate }); |
|
|
|
var $Object$3 = _core.Object; |
|
var create$1 = function create(P, D) { |
|
return $Object$3.create(P, D); |
|
}; |
|
|
|
var create = createCommonjsModule(function (module) { |
|
module.exports = { "default": create$1, __esModule: true }; |
|
}); |
|
|
|
var _Object$create = unwrapExports(create); |
|
|
|
// 19.1.3.1 Object.assign(target, source) |
|
|
|
|
|
_export(_export.S + _export.F, 'Object', { assign: _objectAssign }); |
|
|
|
var assign$1 = _core.Object.assign; |
|
|
|
var assign = createCommonjsModule(function (module) { |
|
module.exports = { "default": assign$1, __esModule: true }; |
|
}); |
|
|
|
var _Object$assign = unwrapExports(assign); |
|
|
|
var src = createCommonjsModule(function (module) { |
|
/** |
|
* Copyright (c) 2014-present, Facebook, Inc. All rights reserved. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* |
|
*/ |
|
|
|
var MOCK_CONSTRUCTOR_NAME = 'mockConstructor'; |
|
|
|
var FUNCTION_NAME_RESERVED_PATTERN = /[\s!-\/:-@\[-`{-~]/; |
|
var FUNCTION_NAME_RESERVED_REPLACE = new RegExp(FUNCTION_NAME_RESERVED_PATTERN.source, 'g'); |
|
|
|
var RESERVED_KEYWORDS = _Object$assign(_Object$create(null), { |
|
arguments: true, |
|
await: true, |
|
break: true, |
|
case: true, |
|
catch: true, |
|
class: true, |
|
const: true, |
|
continue: true, |
|
debugger: true, |
|
default: true, |
|
delete: true, |
|
do: true, |
|
else: true, |
|
enum: true, |
|
eval: true, |
|
export: true, |
|
extends: true, |
|
false: true, |
|
finally: true, |
|
for: true, |
|
function: true, |
|
if: true, |
|
implements: true, |
|
import: true, |
|
in: true, |
|
instanceof: true, |
|
interface: true, |
|
let: true, |
|
new: true, |
|
null: true, |
|
package: true, |
|
private: true, |
|
protected: true, |
|
public: true, |
|
return: true, |
|
static: true, |
|
super: true, |
|
switch: true, |
|
this: true, |
|
throw: true, |
|
true: true, |
|
try: true, |
|
typeof: true, |
|
var: true, |
|
void: true, |
|
while: true, |
|
with: true, |
|
yield: true |
|
}); |
|
|
|
function matchArity(fn, length) { |
|
var mockConstructor = void 0; |
|
|
|
switch (length) { |
|
case 1: |
|
mockConstructor = function mockConstructor(a) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 2: |
|
mockConstructor = function mockConstructor(a, b) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 3: |
|
mockConstructor = function mockConstructor(a, b, c) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 4: |
|
mockConstructor = function mockConstructor(a, b, c, d) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 5: |
|
mockConstructor = function mockConstructor(a, b, c, d, e) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 6: |
|
mockConstructor = function mockConstructor(a, b, c, d, e, f) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 7: |
|
mockConstructor = function mockConstructor(a, b, c, d, e, f, g) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 8: |
|
mockConstructor = function mockConstructor(a, b, c, d, e, f, g, h) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
case 9: |
|
mockConstructor = function mockConstructor(a, b, c, d, e, f, g, h, i) { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
default: |
|
mockConstructor = function mockConstructor() { |
|
return fn.apply(this, arguments); |
|
}; |
|
break; |
|
} |
|
|
|
return mockConstructor; |
|
} |
|
|
|
function isA(typeName, value) { |
|
return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; |
|
} |
|
|
|
function getType(ref) { |
|
if (isA('Function', ref) || isA('AsyncFunction', ref)) { |
|
return 'function'; |
|
} else if (Array.isArray(ref)) { |
|
return 'array'; |
|
} else if (isA('Object', ref)) { |
|
return 'object'; |
|
} else if (isA('Number', ref) || isA('String', ref) || isA('Boolean', ref) || isA('Symbol', ref)) { |
|
return 'constant'; |
|
} else if (isA('Map', ref) || isA('WeakMap', ref) || isA('Set', ref)) { |
|
return 'collection'; |
|
} else if (isA('RegExp', ref)) { |
|
return 'regexp'; |
|
} else if (ref === undefined) { |
|
return 'undefined'; |
|
} else if (ref === null) { |
|
return 'null'; |
|
} else { |
|
return null; |
|
} |
|
} |
|
|
|
function isReadonlyProp(object, prop) { |
|
return (prop === 'arguments' || prop === 'caller' || prop === 'callee' || prop === 'name' || prop === 'length') && (isA('Function', object) || isA('AsyncFunction', object)) || (prop === 'source' || prop === 'global' || prop === 'ignoreCase' || prop === 'multiline') && isA('RegExp', object); |
|
} |
|
|
|
function getSlots(object) { |
|
var slots = {}; |
|
if (!object) { |
|
return []; |
|
} |
|
|
|
var parent = _Object$getPrototypeOf(object); |
|
do { |
|
if (object === _Object$getPrototypeOf(Function)) { |
|
break; |
|
} |
|
var ownNames = _Object$getOwnPropertyNames(object); |
|
for (var i = 0; i < ownNames.length; i++) { |
|
var prop = ownNames[i]; |
|
if (!isReadonlyProp(object, prop)) { |
|
var propDesc = _Object$getOwnPropertyDescriptor(object, prop); |
|
if (!propDesc.get || object.__esModule) { |
|
slots[prop] = true; |
|
} |
|
} |
|
} |
|
object = parent; |
|
} while (object && (parent = _Object$getPrototypeOf(object)) !== null); |
|
return _Object$keys(slots); |
|
} |
|
|
|
function wrapAsyncParam(fn, asyncAction) { |
|
if (asyncAction === 'reject') { |
|
return function (value) { |
|
return fn(_Promise.reject(value)); |
|
}; |
|
} |
|
|
|
return function (value) { |
|
return fn(_Promise.resolve(value)); |
|
}; |
|
} |
|
|
|
var ModuleMockerClass = function () { |
|
|
|
/** |
|
* @see README.md |
|
* @param global Global object of the test environment, used to create |
|
* mocks |
|
*/ |
|
function ModuleMockerClass(global) { |
|
_classCallCheck(this, ModuleMockerClass); |
|
|
|
this._environmentGlobal = global; |
|
this._mockState = new _WeakMap(); |
|
this._mockConfigRegistry = new _WeakMap(); |
|
this._spyState = new _Set(); |
|
this.ModuleMocker = ModuleMockerClass; |
|
} |
|
|
|
_createClass(ModuleMockerClass, [{ |
|
key: '_ensureMockConfig', |
|
value: function _ensureMockConfig(f) { |
|
var config = this._mockConfigRegistry.get(f); |
|
if (!config) { |
|
config = this._defaultMockConfig(); |
|
this._mockConfigRegistry.set(f, config); |
|
} |
|
return config; |
|
} |
|
}, { |
|
key: '_ensureMockState', |
|
value: function _ensureMockState(f) { |
|
var state = this._mockState.get(f); |
|
if (!state) { |
|
state = this._defaultMockState(); |
|
this._mockState.set(f, state); |
|
} |
|
return state; |
|
} |
|
}, { |
|
key: '_defaultMockConfig', |
|
value: function _defaultMockConfig() { |
|
return { |
|
defaultReturnValue: undefined, |
|
isReturnValueLastSet: false, |
|
mockImpl: undefined, |
|
mockName: 'jest.fn()', |
|
specificMockImpls: [], |
|
specificReturnValues: [] |
|
}; |
|
} |
|
}, { |
|
key: '_defaultMockState', |
|
value: function _defaultMockState() { |
|
return { |
|
calls: [], |
|
instances: [], |
|
timestamps: [] |
|
}; |
|
} |
|
}, { |
|
key: '_makeComponent', |
|
value: function _makeComponent(metadata, restore) { |
|
var _this2 = this; |
|
|
|
if (metadata.type === 'object') { |
|
return new this._environmentGlobal.Object(); |
|
} else if (metadata.type === 'array') { |
|
return new this._environmentGlobal.Array(); |
|
} else if (metadata.type === 'regexp') { |
|
return new this._environmentGlobal.RegExp(''); |
|
} else if (metadata.type === 'constant' || metadata.type === 'collection' || metadata.type === 'null' || metadata.type === 'undefined') { |
|
return metadata.value; |
|
} else if (metadata.type === 'function') { |
|
/* eslint-disable prefer-const */ |
|
var f = void 0; |
|
/* eslint-enable prefer-const */ |
|
|
|
var prototype = metadata.members && metadata.members.prototype && metadata.members.prototype.members || {}; |
|
var prototypeSlots = getSlots(prototype); |
|
var mocker = this; |
|
var mockConstructor = matchArity(function () { |
|
var _this = this; |
|
|
|
var mockState = mocker._ensureMockState(f); |
|
var mockConfig = mocker._ensureMockConfig(f); |
|
mockState.instances.push(this); |
|
mockState.calls.push(Array.prototype.slice.call(arguments)); |
|
mockState.timestamps.push(Date.now()); |
|
if (this instanceof f) { |
|
// This is probably being called as a constructor |
|
prototypeSlots.forEach(function (slot) { |
|
// Copy prototype methods to the instance to make |
|
// it easier to interact with mock instance call and |
|
// return values |
|
if (prototype[slot].type === 'function') { |
|
var protoImpl = _this[slot]; |
|
_this[slot] = mocker.generateFromMetadata(prototype[slot]); |
|
_this[slot]._protoImpl = protoImpl; |
|
} |
|
}); |
|
|
|
// Run the mock constructor implementation |
|
var mockImpl = mockConfig.specificMockImpls.length ? mockConfig.specificMockImpls.shift() : mockConfig.mockImpl; |
|
return mockImpl && mockImpl.apply(this, arguments); |
|
} |
|
|
|
var returnValue = mockConfig.defaultReturnValue; |
|
// If return value is last set, either specific or default, i.e. |
|
// mockReturnValueOnce()/mockReturnValue() is called and no |
|
// mockImplementationOnce()/mockImplementation() is called after that. |
|
// use the set return value. |
|
if (mockConfig.specificReturnValues.length) { |
|
return mockConfig.specificReturnValues.shift(); |
|
} |
|
|
|
if (mockConfig.isReturnValueLastSet) { |
|
return mockConfig.defaultReturnValue; |
|
} |
|
|
|
// If mockImplementationOnce()/mockImplementation() is last set, |
|
// or specific return values are used up, use the mock implementation. |
|
var specificMockImpl = void 0; |
|
if (returnValue === undefined) { |
|
specificMockImpl = mockConfig.specificMockImpls.shift(); |
|
if (specificMockImpl === undefined) { |
|
specificMockImpl = mockConfig.mockImpl; |
|
} |
|
if (specificMockImpl) { |
|
return specificMockImpl.apply(this, arguments); |
|
} |
|
} |
|
|
|
// Otherwise use prototype implementation |
|
if (returnValue === undefined && f._protoImpl) { |
|
return f._protoImpl.apply(this, arguments); |
|
} |
|
|
|
return returnValue; |
|
}, metadata.length || 0); |
|
|
|
f = this._createMockFunction(metadata, mockConstructor); |
|
f._isMockFunction = true; |
|
f.getMockImplementation = function () { |
|
return _this2._ensureMockConfig(f).mockImpl; |
|
}; |
|
|
|
if (typeof restore === 'function') { |
|
this._spyState.add(restore); |
|
} |
|
|
|
this._mockState.set(f, this._defaultMockState()); |
|
this._mockConfigRegistry.set(f, this._defaultMockConfig()); |
|
|
|
// $FlowFixMe - defineProperty getters not supported |
|
Object.defineProperty(f, 'mock', { |
|
configurable: false, |
|
enumerable: true, |
|
get: function get() { |
|
return _this2._ensureMockState(f); |
|
}, |
|
set: function set$$1(val) { |
|
return _this2._mockState.set(f, val); |
|
} |
|
}); |
|
|
|
f.mockClear = function () { |
|
_this2._mockState.delete(f); |
|
return f; |
|
}; |
|
|
|
f.mockReset = function () { |
|
_this2._mockState.delete(f); |
|
_this2._mockConfigRegistry.delete(f); |
|
return f; |
|
}; |
|
|
|
f.mockReturnValueOnce = function (value) { |
|
// next function call will return this value or default return value |
|
var mockConfig = _this2._ensureMockConfig(f); |
|
mockConfig.specificReturnValues.push(value); |
|
return f; |
|
}; |
|
|
|
f.mockResolvedValueOnce = wrapAsyncParam(f.mockReturnValueOnce, 'resolve'); |
|
|
|
f.mockRejectedValueOnce = wrapAsyncParam(f.mockReturnValueOnce, 'reject'); |
|
|
|
f.mockReturnValue = function (value) { |
|
// next function call will return specified return value or this one |
|
var mockConfig = _this2._ensureMockConfig(f); |
|
mockConfig.isReturnValueLastSet = true; |
|
mockConfig.defaultReturnValue = value; |
|
return f; |
|
}; |
|
|
|
f.mockResolvedValue = wrapAsyncParam(f.mockReturnValue, 'resolve'); |
|
|
|
f.mockRejectedValue = wrapAsyncParam(f.mockReturnValue, 'reject'); |
|
|
|
f.mockImplementationOnce = function (fn) { |
|
// next function call will use this mock implementation return value |
|
// or default mock implementation return value |
|
var mockConfig = _this2._ensureMockConfig(f); |
|
mockConfig.isReturnValueLastSet = false; |
|
mockConfig.specificMockImpls.push(fn); |
|
return f; |
|
}; |
|
|
|
f.mockImplementation = function (fn) { |
|
// next function call will use mock implementation return value |
|
var mockConfig = _this2._ensureMockConfig(f); |
|
mockConfig.isReturnValueLastSet = false; |
|
mockConfig.defaultReturnValue = undefined; |
|
mockConfig.mockImpl = fn; |
|
return f; |
|
}; |
|
|
|
f.mockReturnThis = function () { |
|
return f.mockImplementation(function () { |
|
return this; |
|
}); |
|
}; |
|
|
|
f.mockName = function (name) { |
|
if (name) { |
|
var mockConfig = _this2._ensureMockConfig(f); |
|
mockConfig.mockName = name; |
|
} |
|
return f; |
|
}; |
|
|
|
f.getMockName = function () { |
|
var mockConfig = _this2._ensureMockConfig(f); |
|
return mockConfig.mockName || 'jest.fn()'; |
|
}; |
|
|
|
if (metadata.mockImpl) { |
|
f.mockImplementation(metadata.mockImpl); |
|
} |
|
|
|
f.mockRestore = restore ? restore : function () {}; |
|
|
|
return f; |
|
} else { |
|
var unknownType = metadata.type || 'undefined type'; |
|
throw new Error('Unrecognized type ' + unknownType); |
|
} |
|
} |
|
}, { |
|
key: '_createMockFunction', |
|
value: function _createMockFunction(metadata, mockConstructor) { |
|
var name = metadata.name; |
|
if (!name) { |
|
return mockConstructor; |
|
} |
|
|
|
// Preserve `name` property of mocked function. |
|
var boundFunctionPrefix = 'bound '; |
|
var bindCall = ''; |
|
// if-do-while for perf reasons. The common case is for the if to fail. |
|
if (name && name.startsWith(boundFunctionPrefix)) { |
|
do { |
|
name = name.substring(boundFunctionPrefix.length); |
|
// Call bind() just to alter the function name. |
|
bindCall = '.bind(null)'; |
|
} while (name && name.startsWith(boundFunctionPrefix)); |
|
} |
|
|
|
// Special case functions named `mockConstructor` to guard for infinite |
|
// loops. |
|
if (name === MOCK_CONSTRUCTOR_NAME) { |
|
return mockConstructor; |
|
} |
|
|
|
// It's a syntax error to define functions with a reserved keyword |
|
// as name. |
|
if (RESERVED_KEYWORDS[name]) { |
|
name = '$' + name; |
|
} |
|
|
|
// It's also a syntax error to define a function with a reserved character |
|
// as part of it's name. |
|
if (FUNCTION_NAME_RESERVED_PATTERN.test(name)) { |
|
name = name.replace(FUNCTION_NAME_RESERVED_REPLACE, '$'); |
|
} |
|
|
|
var body = 'return function ' + name + '() {' + 'return ' + MOCK_CONSTRUCTOR_NAME + '.apply(this,arguments);' + '}' + bindCall; |
|
var createConstructor = new this._environmentGlobal.Function(MOCK_CONSTRUCTOR_NAME, body); |
|
|
|
return createConstructor(mockConstructor); |
|
} |
|
}, { |
|
key: '_generateMock', |
|
value: function _generateMock(metadata, callbacks, refs) { |
|
var _this3 = this; |
|
|
|
var mock = this._makeComponent(metadata); |
|
if (metadata.refID != null) { |
|
refs[metadata.refID] = mock; |
|
} |
|
|
|
getSlots(metadata.members).forEach(function (slot) { |
|
var slotMetadata = metadata.members && metadata.members[slot] || {}; |
|
if (slotMetadata.ref != null) { |
|
callbacks.push(function () { |
|
return mock[slot] = refs[slotMetadata.ref]; |
|
}); |
|
} else { |
|
mock[slot] = _this3._generateMock(slotMetadata, callbacks, refs); |
|
} |
|
}); |
|
|
|
if (metadata.type !== 'undefined' && metadata.type !== 'null' && mock.prototype) { |
|
mock.prototype.constructor = mock; |
|
} |
|
|
|
return mock; |
|
} |
|
|
|
/** |
|
* @see README.md |
|
* @param metadata Metadata for the mock in the schema returned by the |
|
* getMetadata method of this module. |
|
*/ |
|
|
|
}, { |
|
key: 'generateFromMetadata', |
|
value: function generateFromMetadata(_metadata) { |
|
var callbacks = []; |
|
var refs = {}; |
|
var mock = this._generateMock(_metadata, callbacks, refs); |
|
callbacks.forEach(function (setter) { |
|
return setter(); |
|
}); |
|
return mock; |
|
} |
|
|
|
/** |
|
* @see README.md |
|
* @param component The component for which to retrieve metadata. |
|
*/ |
|
|
|
}, { |
|
key: 'getMetadata', |
|
value: function getMetadata(component, _refs) { |
|
var _this4 = this; |
|
|
|
var refs = _refs || new _Map(); |
|
var ref = refs.get(component); |
|
if (ref != null) { |
|
return { ref: ref }; |
|
} |
|
|
|
var type = getType(component); |
|
if (!type) { |
|
return null; |
|
} |
|
|
|
var metadata = { type: type }; |
|
if (type === 'constant' || type === 'collection' || type === 'undefined' || type === 'null') { |
|
metadata.value = component; |
|
return metadata; |
|
} else if (type === 'function') { |
|
metadata.name = component.name; |
|
if (component._isMockFunction) { |
|
metadata.mockImpl = component.getMockImplementation(); |
|
} |
|
} |
|
|
|
metadata.refID = refs.size; |
|
refs.set(component, metadata.refID); |
|
|
|
var members = null; |
|
// Leave arrays alone |
|
if (type !== 'array') { |
|
if (type !== 'undefined') { |
|
getSlots(component).forEach(function (slot) { |
|
if (type === 'function' && component._isMockFunction && slot.match(/^mock/)) { |
|
return; |
|
} |
|
|
|
if (!component.hasOwnProperty && component[slot] !== undefined || component.hasOwnProperty && component.hasOwnProperty(slot) || type === 'object' && component[slot] != Object.prototype[slot]) { |
|
var slotMetadata = _this4.getMetadata(component[slot], refs); |
|
if (slotMetadata) { |
|
if (!members) { |
|
members = {}; |
|
} |
|
members[slot] = slotMetadata; |
|
} |
|
} |
|
}); |
|
} |
|
|
|
// If component is native code function, prototype might be undefined |
|
if (type === 'function' && component.prototype) { |
|
var prototype = this.getMetadata(component.prototype, refs); |
|
if (prototype && prototype.members) { |
|
if (!members) { |
|
members = {}; |
|
} |
|
members.prototype = prototype; |
|
} |
|
} |
|
} |
|
|
|
if (members) { |
|
metadata.members = members; |
|
} |
|
|
|
return metadata; |
|
} |
|
}, { |
|
key: 'isMockFunction', |
|
value: function isMockFunction(fn) { |
|
return !!(fn && fn._isMockFunction); |
|
} |
|
}, { |
|
key: 'fn', |
|
value: function fn(implementation) { |
|
var length = implementation ? implementation.length : 0; |
|
var fn = this._makeComponent({ length: length, type: 'function' }); |
|
if (implementation) { |
|
fn.mockImplementation(implementation); |
|
} |
|
return fn; |
|
} |
|
}, { |
|
key: 'spyOn', |
|
value: function spyOn(object, methodName, accessType) { |
|
if (accessType) { |
|
return this._spyOnProperty(object, methodName, accessType); |
|
} |
|
|
|
if ((typeof object === 'undefined' ? 'undefined' : _typeof(object)) !== 'object' && typeof object !== 'function') { |
|
throw new Error('Cannot spyOn on a primitive value; ' + this._typeOf(object) + ' given'); |
|
} |
|
|
|
var original = object[methodName]; |
|
|
|
if (!this.isMockFunction(original)) { |
|
if (typeof original !== 'function') { |
|
throw new Error('Cannot spy the ' + methodName + ' property because it is not a function; ' + this._typeOf(original) + ' given instead'); |
|
} |
|
|
|
object[methodName] = this._makeComponent({ type: 'function' }, function () { |
|
object[methodName] = original; |
|
}); |
|
|
|
object[methodName].mockImplementation(function () { |
|
return original.apply(this, arguments); |
|
}); |
|
} |
|
|
|
return object[methodName]; |
|
} |
|
}, { |
|
key: '_spyOnProperty', |
|
value: function _spyOnProperty(obj, propertyName) { |
|
var accessType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'get'; |
|
|
|
if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' && typeof obj !== 'function') { |
|
throw new Error('Cannot spyOn on a primitive value; ' + this._typeOf(obj) + ' given'); |
|
} |
|
|
|
if (!obj) { |
|
throw new Error('spyOn could not find an object to spy upon for ' + propertyName + ''); |
|
} |
|
|
|
if (!propertyName) { |
|
throw new Error('No property name supplied'); |
|
} |
|
|
|
var descriptor = _Object$getOwnPropertyDescriptor(obj, propertyName); |
|
|
|
if (!descriptor) { |
|
throw new Error(propertyName + ' property does not exist'); |
|
} |
|
|
|
if (!descriptor.configurable) { |
|
throw new Error(propertyName + ' is not declared configurable'); |
|
} |
|
|
|
if (!descriptor[accessType]) { |
|
throw new Error('Property ' + propertyName + ' does not have access type ' + accessType); |
|
} |
|
|
|
var original = descriptor[accessType]; |
|
|
|
if (!this.isMockFunction(original)) { |
|
if (typeof original !== 'function') { |
|
throw new Error('Cannot spy the ' + propertyName + ' property because it is not a function; ' + this._typeOf(original) + ' given instead'); |
|
} |
|
|
|
descriptor[accessType] = this._makeComponent({ type: 'function' }, function () { |
|
descriptor[accessType] = original; |
|
_Object$defineProperty(obj, propertyName, descriptor); |
|
}); |
|
|
|
descriptor[accessType].mockImplementation(function () { |
|
return original.apply(this, arguments); |
|
}); |
|
} |
|
|
|
_Object$defineProperty(obj, propertyName, descriptor); |
|
return descriptor[accessType]; |
|
} |
|
}, { |
|
key: 'clearAllMocks', |
|
value: function clearAllMocks() { |
|
this._mockState = new _WeakMap(); |
|
} |
|
}, { |
|
key: 'resetAllMocks', |
|
value: function resetAllMocks() { |
|
this._mockConfigRegistry = new _WeakMap(); |
|
this._mockState = new _WeakMap(); |
|
} |
|
}, { |
|
key: 'restoreAllMocks', |
|
value: function restoreAllMocks() { |
|
this._spyState.forEach(function (restore) { |
|
return restore(); |
|
}); |
|
this._spyState = new _Set(); |
|
} |
|
}, { |
|
key: '_typeOf', |
|
value: function _typeOf(value) { |
|
return value == null ? '' + value : typeof value === 'undefined' ? 'undefined' : _typeof(value); |
|
} |
|
}]); |
|
|
|
return ModuleMockerClass; |
|
}(); |
|
|
|
module.exports = new ModuleMockerClass(commonjsGlobal); |
|
}); |
|
|
|
var index = unwrapExports(src); |
|
|
|
return index; |
|
|
|
})));
|
|
|