http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/90fac505/packages/weex-js-framework/index.js ---------------------------------------------------------------------- diff --git a/packages/weex-js-framework/index.js b/packages/weex-js-framework/index.js index e868002..a05a400 100644 --- a/packages/weex-js-framework/index.js +++ b/packages/weex-js-framework/index.js @@ -1,6 +1,5 @@ -(this.nativeLog || function(s) {console.log(s)})('START JS FRAMEWORK 0.21.8, Build 2017-08-10 14:43.'); -;(this.getJSFMVersion = function(){return "0.21.8"}); -var global = this, process = { env: {} };var setTimeout = global.setTimeout; +(this.nativeLog || function(s) {console.log(s)})('START JS FRAMEWORK 0.21.11, Build 2017-08-23 15:52.'); +(this.getJSFMVersion = function(){return "0.21.11"});var global = this, process = { env: {} };var setTimeout = global.setTimeout; (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory() : @@ -8,8 +7,6 @@ var global = this, process = { env: {} };var setTimeout = global.setTimeout; (factory()); }(this, (function () { 'use strict'; -var subversion = {"browser":"0.5.0","framework":"0.21.8","vue-render":"0.12.3","transformer":">=0.1.5 <0.5"}; - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -28,94 +25,119 @@ var subversion = {"browser":"0.5.0","framework":"0.21.8","vue-render":"0.12.3"," * specific language governing permissions and limitations * under the License. */ +var config = {}; -/* eslint-disable */ +var instanceMap = {}; -// Production steps of ECMA-262, Edition 6, 22.1.2.1 -// Reference: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from +function init$1 (cfg) { + config.Document = cfg.Document; + config.Element = cfg.Element; + config.Comment = cfg.Comment; + config.sendTasks = cfg.sendTasks; +} -/* istanbul ignore if */ -if (!Array.from) { - Array.from = (function() { - var toStr = Object.prototype.toString; - var isCallable = function(fn) { - return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; - }; - var toInteger = function(value) { - var number = Number(value); - if (isNaN(number)) { - return 0; - } - if (number === 0 || !isFinite(number)) { - return number; - } - return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); - }; - var maxSafeInteger = Math.pow(2, 53) - 1; - var toLength = function(value) { - var len = toInteger(value); - return Math.min(Math.max(len, 0), maxSafeInteger); - }; +function registerComponents (components) {} - // The length property of the from method is 1. - return function from(arrayLike/*, mapFn, thisArg */) { - // 1. Let C be the this value. - var C = this; +function registerModules (modules) {} - // 2. Let items be ToObject(arrayLike). - var items = Object(arrayLike); +function registerMethods (apis) {} - // 3. ReturnIfAbrupt(items). - if (arrayLike == null) { - throw new TypeError('Array.from requires an array-like object - not null or undefined'); - } +function prepareInstance (id, options, data) {} - // 4. If mapfn is undefined, then let mapping be false. - var mapFn = arguments.length > 1 ? arguments[1] : void undefined; - var T; - if (typeof mapFn !== 'undefined') { - // 5. else - // 5. a If IsCallable(mapfn) is false, throw a TypeError exception. - if (!isCallable(mapFn)) { - throw new TypeError('Array.from: when provided, the second argument must be a function'); - } +function createInstance (id, code, options, data, serviceObjects) { + var document = new config.Document(id, options.bundleUrl); + var callbacks = {}; - // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 2) { - T = arguments[2]; - } - } + var lastCallbackId = 0; + document.addCallback = function (func) { + lastCallbackId++; + callbacks[lastCallbackId] = func; + return lastCallbackId + }; + document.handleCallback = function (funcId, data, ifLast) { + var callback = callbacks[funcId]; + if (ifLast) { + delete callbacks[funcId]; + } + return callback(data) + }; + instanceMap[id] = document; - // 10. Let lenValue be Get(items, "length"). - // 11. Let len be ToLength(lenValue). - var len = toLength(items.length); + var globalObjects = Object.assign({ + Document: config.Document, + Element: config.Element, + Comment: config.Comment, + sendTasks: config.sendTasks, + id: id, options: options, data: data, document: document + }, serviceObjects); - // 13. If IsConstructor(C) is true, then - // 13. a. Let A be the result of calling the [[Construct]] internal method of C with an argument list containing the single item len. - // 14. a. Else, Let A be ArrayCreate(len). - var A = isCallable(C) ? Object(new C(len)) : new Array(len); + var globalKeys = []; + var globalValues = []; + for (var key in globalObjects) { + globalKeys.push(key); + globalValues.push(globalObjects[key]); + } + globalKeys.push(code); - // 16. Let k be 0. - var k = 0; - // 17. Repeat, while k < len⦠(also steps a - h) - var kValue; - while (k < len) { - kValue = items[k]; - if (mapFn) { - A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); - } else { - A[k] = kValue; - } - k += 1; + var result = new (Function.prototype.bind.apply( Function, [ null ].concat( globalKeys) )); + result.apply(void 0, globalValues); + + return { document: document } +} + +function refreshInstance (id, data) {} + +function destroyInstance (id) { + delete instanceMap[id]; +} + +function getRoot (id) { + return instanceMap[id].body.toJSON() +} + +function receiveTasks (id, tasks) { + var jsHandlers = { + fireEvent: function (id, ref, type, data, domChanges) { + var document = instanceMap[id]; + var el = document.getRef(ref); + return document.fireEvent(el, type, data, domChanges) + }, + + callback: function (id, funcId, data, ifLast) { + var document = instanceMap[id]; + return document.handleCallback(funcId, data, ifLast) + } + }; + + var document = instanceMap[id]; + if (document && Array.isArray(tasks)) { + var results = []; + tasks.forEach(function (task) { + var handler = jsHandlers[task.method]; + var args = [].concat( task.args ); + if (typeof handler === 'function') { + args.unshift(id); + results.push(handler.apply(void 0, args)); } - // 18. Let putStatus be Put(A, "length", len, true). - A.length = len; - // 20. Return A. - return A; - }; - }()); + }); + return results + } } + +var Vanilla = Object.freeze({ + init: init$1, + registerComponents: registerComponents, + registerModules: registerModules, + registerMethods: registerMethods, + prepareInstance: prepareInstance, + createInstance: createInstance, + refreshInstance: refreshInstance, + destroyInstance: destroyInstance, + getRoot: getRoot, + receiveTasks: receiveTasks +}); + var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; @@ -128,11562 +150,10097 @@ 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.0' }; -if (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef -}); +var factory = createCommonjsModule(function (module) { +'use strict'; -var _isObject = function (it) { - return typeof it === 'object' ? it !== null : typeof it === 'function'; -}; +module.exports = function weexFactory (exports, renderer) { -var isObject = _isObject; -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; - } -}; +// these helpers produces better vm code in JS engines due to their +// explicitness and function inlining +function isUndef (v) { + return v === undefined || v === null +} -// Thank's IE8 for his funny defineProperty -var _descriptors = !_fails(function () { - return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; -}); +function isDef (v) { + return v !== undefined && v !== null +} -var isObject$1 = _isObject; -var document$1 = _global.document; -// typeof document.createElement is 'object' in old IE -var is = isObject$1(document$1) && isObject$1(document$1.createElement); -var _domCreate = function (it) { - return is ? document$1.createElement(it) : {}; -}; +function isTrue (v) { + return v === true +} -var _ie8DomDefine = !_descriptors && !_fails(function () { - return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7; -}); +function isFalse (v) { + return v === false +} -// 7.1.1 ToPrimitive(input [, PreferredType]) -var isObject$2 = _isObject; -// 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$2(it)) { return it; } - var fn, val; - if (S && typeof (fn = it.toString) == 'function' && !isObject$2(val = fn.call(it))) { return val; } - if (typeof (fn = it.valueOf) == 'function' && !isObject$2(val = fn.call(it))) { return val; } - if (!S && typeof (fn = it.toString) == 'function' && !isObject$2(val = fn.call(it))) { return val; } - throw TypeError("Can't convert object to primitive value"); -}; +/** + * Check if value is primitive + */ +function isPrimitive (value) { + return ( + typeof value === 'string' || + typeof value === 'number' || + typeof value === 'boolean' + ) +} -var anObject = _anObject; -var IE8_DOM_DEFINE = _ie8DomDefine; -var toPrimitive = _toPrimitive; -var dP$1 = Object.defineProperty; +/** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + */ +function isObject (obj) { + return obj !== null && typeof obj === 'object' +} -var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { - anObject(O); - P = toPrimitive(P, true); - anObject(Attributes); - if (IE8_DOM_DEFINE) { try { - return dP$1(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 _toString = Object.prototype.toString; -var _objectDp = { - f: f -}; - -var _propertyDesc = function (bitmap, value) { - return { - enumerable: !(bitmap & 1), - configurable: !(bitmap & 2), - writable: !(bitmap & 4), - value: value - }; -}; - -var dP = _objectDp; -var createDesc = _propertyDesc; -var _hide = _descriptors ? function (object, key, value) { - return dP.f(object, key, createDesc(1, value)); -} : function (object, key, value) { - object[key] = value; - return object; -}; +/** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ +function isPlainObject (obj) { + return _toString.call(obj) === '[object Object]' +} -var hasOwnProperty = {}.hasOwnProperty; -var _has = function (it, key) { - return hasOwnProperty.call(it, key); -}; +function isRegExp (v) { + return _toString.call(v) === '[object RegExp]' +} -var id = 0; -var px = Math.random(); -var _uid = function (key) { - return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); -}; +/** + * Check if val is a valid array index. + */ +function isValidArrayIndex (val) { + var n = parseFloat(val); + return n >= 0 && Math.floor(n) === n && isFinite(val) +} -var _redefine = createCommonjsModule(function (module) { -var global = _global; -var hide = _hide; -var has = _has; -var SRC = _uid('src'); -var TO_STRING = 'toString'; -var $toString = Function[TO_STRING]; -var TPL = ('' + $toString).split(TO_STRING); +/** + * Convert a value to a string that is actually rendered. + */ +function toString (val) { + return val == null + ? '' + : typeof val === 'object' + ? JSON.stringify(val, null, 2) + : String(val) +} -_core.inspectSource = function (it) { - return $toString.call(it); -}; +/** + * Convert a input value to a number for persistence. + * If the conversion fails, return original string. + */ +function toNumber (val) { + var n = parseFloat(val); + return isNaN(n) ? val : n +} -(module.exports = function (O, key, val, safe) { - var isFunction = typeof val == 'function'; - if (isFunction) { has(val, 'name') || hide(val, 'name', key); } - if (O[key] === val) { return; } - if (isFunction) { has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); } - if (O === global) { - O[key] = val; - } else if (!safe) { - delete O[key]; - hide(O, key, val); - } else if (O[key]) { - O[key] = val; - } else { - hide(O, key, val); +/** + * Make a map and return a function for checking if a key + * is in that map. + */ +function makeMap ( + str, + expectsLowerCase +) { + var map = Object.create(null); + var list = str.split(','); + for (var i = 0; i < list.length; i++) { + map[list[i]] = true; } -// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -})(Function.prototype, TO_STRING, function toString() { - return typeof this == 'function' && this[SRC] || $toString.call(this); -}); -}); - -var _aFunction = function (it) { - if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); } - return it; -}; + return expectsLowerCase + ? function (val) { return map[val.toLowerCase()]; } + : function (val) { return map[val]; } +} -// optional / simple context binding -var aFunction = _aFunction; -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); - }; -}; +/** + * Check if a tag is a built-in tag. + */ +var isBuiltInTag = makeMap('slot,component', true); -var global$1 = _global; -var core = _core; -var hide = _hide; -var redefine = _redefine; -var ctx = _ctx; -var PROTOTYPE = 'prototype'; +/** + * Check if a attribute is a reserved attribute. + */ +var isReservedAttribute = makeMap('key,ref,slot,is'); -var $export$1 = function (type, name, source) { - var IS_FORCED = type & $export$1.F; - var IS_GLOBAL = type & $export$1.G; - var IS_STATIC = type & $export$1.S; - var IS_PROTO = type & $export$1.P; - var IS_BIND = type & $export$1.B; - var target = IS_GLOBAL ? global$1 : IS_STATIC ? global$1[name] || (global$1[name] = {}) : (global$1[name] || {})[PROTOTYPE]; - var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); - var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); - var key, own, out, exp; - if (IS_GLOBAL) { source = name; } - for (key in source) { - // contains in native - own = !IS_FORCED && target && target[key] !== undefined; - // export native or passed - out = (own ? target : source)[key]; - // bind timers to global for call from export context - exp = IS_BIND && own ? ctx(out, global$1) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; - // extend global - if (target) { redefine(target, key, out, type & $export$1.U); } - // export - if (exports[key] != out) { hide(exports, key, exp); } - if (IS_PROTO && expProto[key] != out) { expProto[key] = out; } +/** + * Remove an item from an array + */ +function remove (arr, item) { + if (arr.length) { + var index = arr.indexOf(item); + if (index > -1) { + return arr.splice(index, 1) + } } -}; -global$1.core = core; -// type bitmap -$export$1.F = 1; // forced -$export$1.G = 2; // global -$export$1.S = 4; // static -$export$1.P = 8; // proto -$export$1.B = 16; // bind -$export$1.W = 32; // wrap -$export$1.U = 64; // safe -$export$1.R = 128; // real proto method for `library` -var _export = $export$1; - -var toString$1 = {}.toString; +} -var _cof = function (it) { - return toString$1.call(it).slice(8, -1); -}; +/** + * Check whether the object has the property. + */ +var hasOwnProperty = Object.prototype.hasOwnProperty; +function hasOwn (obj, key) { + return hasOwnProperty.call(obj, key) +} -// fallback for non-array-like ES3 and non-enumerable old V8 strings -var cof = _cof; -// eslint-disable-next-line no-prototype-builtins -var _iobject = Object('z').propertyIsEnumerable(0) ? Object : function (it) { - return cof(it) == 'String' ? it.split('') : Object(it); -}; +/** + * Create a cached version of a pure function. + */ +function cached (fn) { + var cache = Object.create(null); + return (function cachedFn (str) { + var hit = cache[str]; + return hit || (cache[str] = fn(str)) + }) +} -// 7.2.1 RequireObjectCoercible(argument) -var _defined = function (it) { - if (it == undefined) { throw TypeError("Can't call method on " + it); } - return it; -}; +/** + * Camelize a hyphen-delimited string. + */ +var camelizeRE = /-(\w)/g; +var camelize = cached(function (str) { + return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }) +}); -// to indexed object, toObject with fallback for non-array-like ES3 strings -var IObject$1 = _iobject; -var defined = _defined; -var _toIobject = function (it) { - return IObject$1(defined(it)); -}; +/** + * Capitalize a string. + */ +var capitalize = cached(function (str) { + return str.charAt(0).toUpperCase() + str.slice(1) +}); -// 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); -}; +/** + * Hyphenate a camelCase string. + */ +var hyphenateRE = /([^-])([A-Z])/g; +var hyphenate = cached(function (str) { + return str + .replace(hyphenateRE, '$1-$2') + .replace(hyphenateRE, '$1-$2') + .toLowerCase() +}); -// 7.1.15 ToLength -var toInteger = _toInteger; -var min = Math.min; -var _toLength = function (it) { - return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 -}; +/** + * Simple bind, faster than native + */ +function bind (fn, ctx) { + function boundFn (a) { + var l = arguments.length; + return l + ? l > 1 + ? fn.apply(ctx, arguments) + : fn.call(ctx, a) + : fn.call(ctx) + } + // record original fn length + boundFn._length = fn.length; + return boundFn +} -var toInteger$1 = _toInteger; -var max = Math.max; -var min$1 = Math.min; -var _toAbsoluteIndex = function (index, length) { - index = toInteger$1(index); - return index < 0 ? max(index + length, 0) : min$1(index, length); -}; +/** + * Convert an Array-like object to a real Array. + */ +function toArray (list, start) { + start = start || 0; + var i = list.length - start; + var ret = new Array(i); + while (i--) { + ret[i] = list[i + start]; + } + return ret +} -// false -> Array#indexOf -// true -> Array#includes -var toIObject$1 = _toIobject; -var toLength = _toLength; -var toAbsoluteIndex = _toAbsoluteIndex; -var _arrayIncludes = function (IS_INCLUDES) { - return function ($this, el, fromIndex) { - var O = toIObject$1($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; - }; -}; +/** + * Mix properties into target object. + */ +function extend (to, _from) { + for (var key in _from) { + to[key] = _from[key]; + } + return to +} -var global$2 = _global; -var SHARED = '__core-js_shared__'; -var store = global$2[SHARED] || (global$2[SHARED] = {}); -var _shared = function (key) { - return store[key] || (store[key] = {}); -}; +/** + * Merge an Array of Objects into a single Object. + */ +function toObject (arr) { + var res = {}; + for (var i = 0; i < arr.length; i++) { + if (arr[i]) { + extend(res, arr[i]); + } + } + return res +} -var shared = _shared('keys'); -var uid = _uid; -var _sharedKey = function (key) { - return shared[key] || (shared[key] = uid(key)); -}; +/** + * Perform no operation. + * Stubbing args to make Flow happy without leaving useless transpiled code + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/) + */ +function noop (a, b, c) {} -var has$1 = _has; -var toIObject = _toIobject; -var arrayIndexOf = _arrayIncludes(false); -var IE_PROTO = _sharedKey('IE_PROTO'); +/** + * Always return false. + */ +var no = function (a, b, c) { return false; }; -var _objectKeysInternal = function (object, names) { - var O = toIObject(object); - var i = 0; - var result = []; - var key; - for (key in O) { if (key != IE_PROTO) { has$1(O, key) && result.push(key); } } - // Don't enum bug & hidden keys - while (names.length > i) { if (has$1(O, key = names[i++])) { - ~arrayIndexOf(result, key) || result.push(key); - } } - return result; -}; +/** + * Return same value + */ +var identity = function (_) { return _; }; -// IE 8- don't enum bug keys -var _enumBugKeys = ( - 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' -).split(','); +/** + * Generate a static keys string from compiler modules. + */ -// 19.1.2.14 / 15.2.3.14 Object.keys(O) -var $keys = _objectKeysInternal; -var enumBugKeys = _enumBugKeys; -var _objectKeys = Object.keys || function keys(O) { - return $keys(O, enumBugKeys); -}; +/** + * Check if two values are loosely equal - that is, + * if they are plain objects, do they have the same shape? + */ +function looseEqual (a, b) { + if (a === b) { return true } + var isObjectA = isObject(a); + var isObjectB = isObject(b); + if (isObjectA && isObjectB) { + try { + var isArrayA = Array.isArray(a); + var isArrayB = Array.isArray(b); + if (isArrayA && isArrayB) { + return a.length === b.length && a.every(function (e, i) { + return looseEqual(e, b[i]) + }) + } else if (!isArrayA && !isArrayB) { + var keysA = Object.keys(a); + var keysB = Object.keys(b); + return keysA.length === keysB.length && keysA.every(function (key) { + return looseEqual(a[key], b[key]) + }) + } else { + /* istanbul ignore next */ + return false + } + } catch (e) { + /* istanbul ignore next */ + return false + } + } else if (!isObjectA && !isObjectB) { + return String(a) === String(b) + } else { + return false + } +} -var f$1 = Object.getOwnPropertySymbols; +function looseIndexOf (arr, val) { + for (var i = 0; i < arr.length; i++) { + if (looseEqual(arr[i], val)) { return i } + } + return -1 +} -var _objectGops = { - f: f$1 -}; +/** + * Ensure a function is called only once. + */ +function once (fn) { + var called = false; + return function () { + if (!called) { + called = true; + fn.apply(this, arguments); + } + } +} -var f$2 = {}.propertyIsEnumerable; +var SSR_ATTR = 'data-server-rendered'; -var _objectPie = { - f: f$2 -}; +var ASSET_TYPES = [ + 'component', + 'directive', + 'filter' +]; -// 7.1.13 ToObject(argument) -var defined$1 = _defined; -var _toObject = function (it) { - return Object(defined$1(it)); -}; +var LIFECYCLE_HOOKS = [ + 'beforeCreate', + 'created', + 'beforeMount', + 'mounted', + 'beforeUpdate', + 'updated', + 'beforeDestroy', + 'destroyed', + 'activated', + 'deactivated' +]; -// 19.1.2.1 Object.assign(target, source, ...) -var getKeys = _objectKeys; -var gOPS = _objectGops; -var pIE = _objectPie; -var toObject = _toObject; -var IObject = _iobject; -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) { - var arguments$1 = arguments; - // eslint-disable-line no-unused-vars - var T = toObject(target); - var aLen = arguments.length; - var index = 1; - var getSymbols = gOPS.f; - var isEnum = pIE.f; - while (aLen > index) { - var S = IObject(arguments$1[index++]); - var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(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 config = ({ + /** + * Option merge strategies (used in core/util/options) + */ + optionMergeStrategies: Object.create(null), -// 19.1.3.1 Object.assign(target, source) -var $export = _export; + /** + * Whether to suppress warnings. + */ + silent: false, -$export($export.S + $export.F, 'Object', { assign: _objectAssign }); + /** + * Show production mode tip message on boot? + */ + productionTip: "development" !== 'production', -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + /** + * Whether to enable devtools + */ + devtools: "development" !== 'production', -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + /** + * Whether to record perf + */ + performance: false, -/* eslint-disable */ + /** + * Error handler for watcher errors + */ + errorHandler: null, -// https://gist.github.com/WebReflection/5593554 + /** + * Warn handler for watcher warns + */ + warnHandler: null, -/* istanbul ignore if */ -if (!Object.setPrototypeOf) { - Object.setPrototypeOf = (function(Object, magic) { - var set; - function setPrototypeOf(O, proto) { - set.call(O, proto); - return O; - } - try { - // this works already in Firefox and Safari - set = Object.getOwnPropertyDescriptor(Object.prototype, magic).set; - set.call({}, null); - } catch (e) { - if ( - // IE < 11 cannot be shimmed - Object.prototype !== {}[magic] || - // neither can any browser that actually - // implemented __proto__ correctly - // (all but old V8 will return here) - {__proto__: null}.__proto__ === void 0 - // this case means null objects cannot be passed - // through setPrototypeOf in a reliable way - // which means here a **Sham** is needed instead - ) { - return; - } - // nodejs 0.8 and 0.10 are (buggy and..) fine here - // probably Chrome or some old Mobile stock browser - set = function(proto) { - this[magic] = proto; - }; - // please note that this will **not** work - // in those browsers that do not inherit - // __proto__ by mistake from Object.prototype - // in these cases we should probably throw an error - // or at least be informed about the issue - setPrototypeOf.polyfill = setPrototypeOf( - setPrototypeOf({}, null), - Object.prototype - ) instanceof Object; - // setPrototypeOf.polyfill === true means it works as meant - // setPrototypeOf.polyfill === false means it's not 100% reliable - // setPrototypeOf.polyfill === undefined - // or - // setPrototypeOf.polyfill == null means it's not a polyfill - // which means it works as expected - // we can even delete Object.prototype.__proto__; - } - return setPrototypeOf; - }(Object, '__proto__')); -} + /** + * Ignore certain custom elements + */ + ignoredElements: [], -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ + /** + * Custom user key aliases for v-on + */ + keyCodes: Object.create(null), -// fix Promise Problem on JSContext of iOS7~8 -// @see https://bugs.webkit.org/show_bug.cgi?id=135866 + /** + * Check if a tag is reserved so that it cannot be registered as a + * component. This is platform-dependent and may be overwritten. + */ + isReservedTag: no, -var ref = commonjsGlobal; -var WXEnvironment$1 = ref.WXEnvironment; + /** + * Check if an attribute is reserved so that it cannot be used as a component + * prop. This is platform-dependent and may be overwritten. + */ + isReservedAttr: no, -/* istanbul ignore next */ -if (WXEnvironment$1 && WXEnvironment$1.platform === 'iOS') { - commonjsGlobal.Promise = undefined; -} + /** + * Check if a tag is an unknown element. + * Platform-dependent. + */ + isUnknownElement: no, -var _wks = createCommonjsModule(function (module) { -var store = _shared('wks'); -var uid = _uid; -var Symbol = _global.Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; + /** + * Get the namespace of an element + */ + getTagNamespace: noop, -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; + /** + * Parse the real tag name for the specific platform. + */ + parsePlatformTagName: identity, -$exports.store = store; + /** + * Check if an attribute must be bound using property, e.g. value + * Platform-dependent. + */ + mustUseProp: no, + + /** + * Exposed for legacy reasons + */ + _lifecycleHooks: LIFECYCLE_HOOKS }); -// getting tag from 19.1.3.6 Object.prototype.toString() -var cof$1 = _cof; -var TAG = _wks('toStringTag'); -// ES3 wrong here -var ARG = cof$1(function () { return arguments; }()) == 'Arguments'; +/* */ -// fallback for IE11 Script Access Denied error -var tryGet = function (it, key) { - try { - return it[key]; - } catch (e) { /* empty */ } -}; +var emptyObject = Object.freeze({}); -var _classof = function (it) { - var O, T, B; - return it === undefined ? 'Undefined' : it === null ? 'Null' - // @@toStringTag case - : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T - // builtinTag case - : ARG ? cof$1(O) - // ES3 arguments fallback - : (B = cof$1(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; -}; +/** + * Check if a string starts with $ or _ + */ +function isReserved (str) { + var c = (str + '').charCodeAt(0); + return c === 0x24 || c === 0x5F +} -// 19.1.3.6 Object.prototype.toString() -var classof = _classof; -var test = {}; -test[_wks('toStringTag')] = 'z'; -if (test + '' != '[object z]') { - _redefine(Object.prototype, 'toString', function toString() { - return '[object ' + classof(this) + ']'; - }, true); +/** + * Define a property. + */ +function def (obj, key, val, enumerable) { + Object.defineProperty(obj, key, { + value: val, + enumerable: !!enumerable, + writable: true, + configurable: true + }); } -var toInteger$2 = _toInteger; -var defined$2 = _defined; -// true -> String#at -// false -> String#codePointAt -var _stringAt = function (TO_STRING) { - return function (that, pos) { - var s = String(defined$2(that)); - var i = toInteger$2(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; - }; -}; +/** + * Parse simple path. + */ +var bailRE = /[^\w.$]/; +function parsePath (path) { + if (bailRE.test(path)) { + return + } + var segments = path.split('.'); + return function (obj) { + for (var i = 0; i < segments.length; i++) { + if (!obj) { return } + obj = obj[segments[i]]; + } + return obj + } +} -var _library = false; +/* */ -var _iterators = {}; +var warn = noop; +var tip = noop; +var formatComponentName = (null); // work around flow check -var dP$2 = _objectDp; -var anObject$2 = _anObject; -var getKeys$1 = _objectKeys; +{ + var hasConsole = typeof console !== 'undefined'; + var classifyRE = /(?:^|[-_])(\w)/g; + var classify = function (str) { return str + .replace(classifyRE, function (c) { return c.toUpperCase(); }) + .replace(/[-_]/g, ''); }; -var _objectDps = _descriptors ? Object.defineProperties : function defineProperties(O, Properties) { - anObject$2(O); - var keys = getKeys$1(Properties); - var length = keys.length; - var i = 0; - var P; - while (length > i) { dP$2.f(O, P = keys[i++], Properties[P]); } - return O; -}; + warn = function (msg, vm) { + var trace = vm ? generateComponentTrace(vm) : ''; -var document$2 = _global.document; -var _html = document$2 && document$2.documentElement; + if (config.warnHandler) { + config.warnHandler.call(null, msg, vm, trace); + } else if (hasConsole && (!config.silent)) { + console.error(("[Vue warn]: " + msg + trace)); + } + }; -// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) -var anObject$1 = _anObject; -var dPs = _objectDps; -var enumBugKeys$1 = _enumBugKeys; -var IE_PROTO$1 = _sharedKey('IE_PROTO'); -var Empty = function () { /* empty */ }; -var PROTOTYPE$1 = 'prototype'; + tip = function (msg, vm) { + if (hasConsole && (!config.silent)) { + console.warn("[Vue tip]: " + msg + ( + vm ? generateComponentTrace(vm) : '' + )); + } + }; -// 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$1.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$1[i]]; } - return createDict(); -}; + formatComponentName = function (vm, includeFile) { + if (vm.$root === vm) { + return '<Root>' + } + var name = typeof vm === 'string' + ? vm + : typeof vm === 'function' && vm.options + ? vm.options.name + : vm._isVue + ? vm.$options.name || vm.$options._componentTag + : vm.name; -var _objectCreate = Object.create || function create(O, Properties) { - var result; - if (O !== null) { - Empty[PROTOTYPE$1] = anObject$1(O); - result = new Empty(); - Empty[PROTOTYPE$1] = null; - // add "__proto__" for Object.getPrototypeOf polyfill - result[IE_PROTO$1] = O; - } else { result = createDict(); } - return Properties === undefined ? result : dPs(result, Properties); -}; + var file = vm._isVue && vm.$options.__file; + if (!name && file) { + var match = file.match(/([^/\\]+)\.vue$/); + name = match && match[1]; + } -var def = _objectDp.f; -var has$3 = _has; -var TAG$1 = _wks('toStringTag'); + return ( + (name ? ("<" + (classify(name)) + ">") : "<Anonymous>") + + (file && includeFile !== false ? (" at " + file) : '') + ) + }; -var _setToStringTag = function (it, tag, stat) { - if (it && !has$3(it = stat ? it : it.prototype, TAG$1)) { def(it, TAG$1, { configurable: true, value: tag }); } -}; + var repeat = function (str, n) { + var res = ''; + while (n) { + if (n % 2 === 1) { res += str; } + if (n > 1) { str += str; } + n >>= 1; + } + return res + }; -var create$1 = _objectCreate; -var descriptor = _propertyDesc; -var setToStringTag$1 = _setToStringTag; -var IteratorPrototype = {}; + var generateComponentTrace = function (vm) { + if (vm._isVue && vm.$parent) { + var tree = []; + var currentRecursiveSequence = 0; + while (vm) { + if (tree.length > 0) { + var last = tree[tree.length - 1]; + if (last.constructor === vm.constructor) { + currentRecursiveSequence++; + vm = vm.$parent; + continue + } else if (currentRecursiveSequence > 0) { + tree[tree.length - 1] = [last, currentRecursiveSequence]; + currentRecursiveSequence = 0; + } + } + tree.push(vm); + vm = vm.$parent; + } + return '\n\nfound in\n\n' + tree + .map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm) + ? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)") + : formatComponentName(vm))); }) + .join('\n') + } else { + return ("\n\n(found in " + (formatComponentName(vm)) + ")") + } + }; +} -// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() -_hide(IteratorPrototype, _wks('iterator'), function () { return this; }); +/* */ -var _iterCreate = function (Constructor, NAME, next) { - Constructor.prototype = create$1(IteratorPrototype, { next: descriptor(1, next) }); - setToStringTag$1(Constructor, NAME + ' Iterator'); -}; +function handleError (err, vm, info) { + if (config.errorHandler) { + config.errorHandler.call(null, err, vm, info); + } else { + { + warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm); + } + /* istanbul ignore else */ + if (inBrowser && typeof console !== 'undefined') { + console.error(err); + } else { + throw err + } + } +} -// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) -var has$4 = _has; -var toObject$1 = _toObject; -var IE_PROTO$2 = _sharedKey('IE_PROTO'); -var ObjectProto = Object.prototype; +/* */ +/* globals MutationObserver */ -var _objectGpo = Object.getPrototypeOf || function (O) { - O = toObject$1(O); - if (has$4(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; -}; +// can we use __proto__? +var hasProto = '__proto__' in {}; -var LIBRARY = _library; -var $export$2 = _export; -var redefine$1 = _redefine; -var hide$1 = _hide; -var has$2 = _has; -var Iterators = _iterators; -var $iterCreate = _iterCreate; -var setToStringTag = _setToStringTag; -var getPrototypeOf = _objectGpo; -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'; +// Browser environment sniffing +var inBrowser = typeof window !== 'undefined'; +var UA = inBrowser && window.navigator.userAgent.toLowerCase(); +var isIE = UA && /msie|trident/.test(UA); +var isIE9 = UA && UA.indexOf('msie 9.0') > 0; +var isEdge = UA && UA.indexOf('edge/') > 0; +var isAndroid = UA && UA.indexOf('android') > 0; +var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA); +var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge; -var returnThis = function () { return this; }; +// Firefix has a "watch" function on Object.prototype... +var nativeWatch = ({}).watch; -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 = $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 = getPrototypeOf($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$2(IteratorPrototype, ITERATOR)) { hide$1(IteratorPrototype, ITERATOR, returnThis); } +var supportsPassive = false; +if (inBrowser) { + try { + var opts = {}; + Object.defineProperty(opts, 'passive', ({ + get: function get () { + /* istanbul ignore next */ + supportsPassive = true; + } + })); // https://github.com/facebook/flow/issues/285 + window.addEventListener('test-passive', null, opts); + } catch (e) {} +} + +// this needs to be lazy-evaled because vue may be required before +// vue-server-renderer can set VUE_ENV +var _isServer; +var isServerRendering = function () { + if (_isServer === undefined) { + /* istanbul ignore if */ + if (!inBrowser && typeof commonjsGlobal !== 'undefined') { + // detect presence of vue-server-renderer and avoid + // Webpack shimming the process + _isServer = commonjsGlobal['process'].env.VUE_ENV === 'server'; + } else { + _isServer = false; } } - // 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$1(proto, ITERATOR, $default); + return _isServer +}; + +// detect devtools +var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__; + +/* istanbul ignore next */ +function isNative (Ctor) { + return typeof Ctor === 'function' && /native code/.test(Ctor.toString()) +} + +var hasSymbol = + typeof Symbol !== 'undefined' && isNative(Symbol) && + typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys); + +/** + * Defer a task to execute it asynchronously. + */ +var nextTick = (function () { + var callbacks = []; + var pending = false; + var timerFunc; + + function nextTickHandler () { + pending = false; + var copies = callbacks.slice(0); + callbacks.length = 0; + for (var i = 0; i < copies.length; i++) { + copies[i](); + } } - // 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 + + // the nextTick behavior leverages the microtask queue, which can be accessed + // via either native Promise.then or MutationObserver. + // MutationObserver has wider support, however it is seriously bugged in + // UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It + // completely stops working after triggering a few times... so, if native + // Promise is available, we will use it: + /* istanbul ignore if */ + if (typeof Promise !== 'undefined' && isNative(Promise)) { + var p = Promise.resolve(); + var logError = function (err) { console.error(err); }; + timerFunc = function () { + p.then(nextTickHandler).catch(logError); + // in problematic UIWebViews, Promise.then doesn't completely break, but + // it can get stuck in a weird state where callbacks are pushed into the + // microtask queue but the queue isn't being flushed, until the browser + // needs to do some other work, e.g. handle a timer. Therefore we can + // "force" the microtask queue to be flushed by adding an empty timer. + if (isIOS) { setTimeout(noop); } + }; + } else if (typeof MutationObserver !== 'undefined' && ( + isNative(MutationObserver) || + // PhantomJS and iOS 7.x + MutationObserver.toString() === '[object MutationObserverConstructor]' + )) { + // use MutationObserver where native Promise is not available, + // e.g. PhantomJS IE11, iOS7, Android 4.4 + var counter = 1; + var observer = new MutationObserver(nextTickHandler); + var textNode = document.createTextNode(String(counter)); + observer.observe(textNode, { + characterData: true + }); + timerFunc = function () { + counter = (counter + 1) % 2; + textNode.data = String(counter); + }; + } else { + // fallback to setTimeout + /* istanbul ignore next */ + timerFunc = function () { + setTimeout(nextTickHandler, 0); }; - if (FORCED) { for (key in methods) { - if (!(key in proto)) { redefine$1(proto, key, methods[key]); } - } } else { $export$2($export$2.P + $export$2.F * (BUGGY || VALUES_BUG), NAME, methods); } } - return methods; -}; -var $at = _stringAt(true); + return function queueNextTick (cb, ctx) { + var _resolve; + callbacks.push(function () { + if (cb) { + try { + cb.call(ctx); + } catch (e) { + handleError(e, ctx, 'nextTick'); + } + } else if (_resolve) { + _resolve(ctx); + } + }); + if (!pending) { + pending = true; + timerFunc(); + } + if (!cb && typeof Promise !== 'undefined') { + return new Promise(function (resolve, reject) { + _resolve = resolve; + }) + } + } +})(); -// 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 _Set; +/* istanbul ignore if */ +if (typeof Set !== 'undefined' && isNative(Set)) { + // use native Set when available. + _Set = Set; +} else { + // a non-standard Set polyfill that only works with primitive keys. + _Set = (function () { + function Set () { + this.set = Object.create(null); + } + Set.prototype.has = function has (key) { + return this.set[key] === true + }; + Set.prototype.add = function add (key) { + this.set[key] = true; + }; + Set.prototype.clear = function clear () { + this.set = Object.create(null); + }; -// 22.1.3.31 Array.prototype[@@unscopables] -var UNSCOPABLES = _wks('unscopables'); -var ArrayProto = Array.prototype; -if (ArrayProto[UNSCOPABLES] == undefined) { _hide(ArrayProto, UNSCOPABLES, {}); } -var _addToUnscopables = function (key) { - ArrayProto[UNSCOPABLES][key] = true; + return Set; + }()); +} + +/* */ + + +var uid$1 = 0; + +/** + * A dep is an observable that can have multiple + * directives subscribing to it. + */ +var Dep = function Dep () { + this.id = uid$1++; + this.subs = []; }; -var _iterStep = function (done, value) { - return { value: value, done: !!done }; +Dep.prototype.addSub = function addSub (sub) { + this.subs.push(sub); }; -var addToUnscopables = _addToUnscopables; -var step = _iterStep; -var Iterators$2 = _iterators; -var toIObject$2 = _toIobject; +Dep.prototype.removeSub = function removeSub (sub) { + remove(this.subs, sub); +}; -// 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$2(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 step(1); +Dep.prototype.depend = function depend () { + if (Dep.target) { + Dep.target.addDep(this); } - if (kind == 'keys') { return step(0, index); } - if (kind == 'values') { return step(0, O[index]); } - return step(0, [index, O[index]]); -}, 'values'); - -// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) -Iterators$2.Arguments = Iterators$2.Array; +}; -addToUnscopables('keys'); -addToUnscopables('values'); -addToUnscopables('entries'); +Dep.prototype.notify = function notify () { + // stabilize the subscriber list first + var subs = this.subs.slice(); + for (var i = 0, l = subs.length; i < l; i++) { + subs[i].update(); + } +}; -var $iterators = es6_array_iterator; -var getKeys$2 = _objectKeys; -var redefine$2 = _redefine; -var global$3 = _global; -var hide$2 = _hide; -var Iterators$1 = _iterators; -var wks = _wks; -var ITERATOR$1 = wks('iterator'); -var TO_STRING_TAG = wks('toStringTag'); -var ArrayValues = Iterators$1.Array; +// the current target watcher being evaluated. +// this is globally unique because there could be only one +// watcher being evaluated at any time. +Dep.target = null; +var targetStack = []; -var DOMIterables = { - CSSRuleList: true, // TODO: Not spec compliant, should be false. - CSSStyleDeclaration: false, - CSSValueList: false, - ClientRectList: false, - DOMRectList: false, - DOMStringList: false, - DOMTokenList: true, - DataTransferItemList: false, - FileList: false, - HTMLAllCollection: false, - HTMLCollection: false, - HTMLFormElement: false, - HTMLSelectElement: false, - MediaList: true, // TODO: Not spec compliant, should be false. - MimeTypeArray: false, - NamedNodeMap: false, - NodeList: true, - PaintRequestList: false, - Plugin: false, - PluginArray: false, - SVGLengthList: false, - SVGNumberList: false, - SVGPathSegList: false, - SVGPointList: false, - SVGStringList: false, - SVGTransformList: false, - SourceBufferList: false, - StyleSheetList: true, // TODO: Not spec compliant, should be false. - TextTrackCueList: false, - TextTrackList: false, - TouchList: false -}; +function pushTarget (_target) { + if (Dep.target) { targetStack.push(Dep.target); } + Dep.target = _target; +} -for (var collections = getKeys$2(DOMIterables), i = 0; i < collections.length; i++) { - var NAME = collections[i]; - var explicit = DOMIterables[NAME]; - var Collection = global$3[NAME]; - var proto = Collection && Collection.prototype; - var key; - if (proto) { - if (!proto[ITERATOR$1]) { hide$2(proto, ITERATOR$1, ArrayValues); } - if (!proto[TO_STRING_TAG]) { hide$2(proto, TO_STRING_TAG, NAME); } - Iterators$1[NAME] = ArrayValues; - if (explicit) { for (key in $iterators) { if (!proto[key]) { redefine$2(proto, key, $iterators[key], true); } } } - } +function popTarget () { + Dep.target = targetStack.pop(); } -var _anInstance = function (it, Constructor, name, forbiddenField) { - if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { - throw TypeError(name + ': incorrect invocation!'); - } return it; -}; +/* + * not type checking this file because flow doesn't play well with + * dynamically accessing methods on Array prototype + */ -// call something on iterator step with safe closing on error -var anObject$3 = _anObject; -var _iterCall = function (iterator, fn, value, entries) { - try { - return entries ? fn(anObject$3(value)[0], value[1]) : fn(value); - // 7.4.6 IteratorClose(iterator, completion) - } catch (e) { - var ret = iterator['return']; - if (ret !== undefined) { anObject$3(ret.call(iterator)); } - throw e; - } -}; +var arrayProto = Array.prototype; +var arrayMethods = Object.create(arrayProto);[ + 'push', + 'pop', + 'shift', + 'unshift', + 'splice', + 'sort', + 'reverse' +] +.forEach(function (method) { + // cache original method + var original = arrayProto[method]; + def(arrayMethods, method, function mutator () { + var arguments$1 = arguments; -// check on default Array iterator -var Iterators$3 = _iterators; -var ITERATOR$2 = _wks('iterator'); -var ArrayProto$1 = Array.prototype; + var args = [], len = arguments.length; + while ( len-- ) { args[ len ] = arguments$1[ len ]; } -var _isArrayIter = function (it) { - return it !== undefined && (Iterators$3.Array === it || ArrayProto$1[ITERATOR$2] === it); -}; + var result = original.apply(this, args); + var ob = this.__ob__; + var inserted; + switch (method) { + case 'push': + case 'unshift': + inserted = args; + break + case 'splice': + inserted = args.slice(2); + break + } + if (inserted) { ob.observeArray(inserted); } + // notify change + ob.dep.notify(); + return result + }); +}); -var classof$2 = _classof; -var ITERATOR$3 = _wks('iterator'); -var Iterators$4 = _iterators; -var core_getIteratorMethod = _core.getIteratorMethod = function (it) { - if (it != undefined) { return it[ITERATOR$3] - || it['@@iterator'] - || Iterators$4[classof$2(it)]; } -}; +/* */ -var _forOf = createCommonjsModule(function (module) { -var ctx = _ctx; -var call = _iterCall; -var isArrayIter = _isArrayIter; -var anObject = _anObject; -var toLength = _toLength; -var getIterFn = core_getIteratorMethod; -var BREAK = {}; -var RETURN = {}; -var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { - var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(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 = call(iterator, f, step.value, entries); - if (result === BREAK || result === RETURN) { return result; } - } } -}; -exports.BREAK = BREAK; -exports.RETURN = RETURN; -}); +var arrayKeys = Object.getOwnPropertyNames(arrayMethods); -// 7.3.20 SpeciesConstructor(O, defaultConstructor) -var anObject$4 = _anObject; -var aFunction$2 = _aFunction; -var SPECIES = _wks('species'); -var _speciesConstructor = function (O, D) { - var C = anObject$4(O).constructor; - var S; - return C === undefined || (S = anObject$4(C)[SPECIES]) == undefined ? D : aFunction$2(S); +/** + * By default, when a reactive property is set, the new value is + * also converted to become reactive. However when passing down props, + * we don't want to force conversion because the value may be a nested value + * under a frozen data structure. Converting it would defeat the optimization. + */ +var observerState = { + shouldConvert: true }; -// 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); +/** + * Observer class that are attached to each observed + * object. Once attached, the observer converts target + * object's property keys into getter/setters that + * collect dependencies and dispatches updates. + */ +var Observer = function Observer (value) { + this.value = value; + this.dep = new Dep(); + this.vmCount = 0; + def(value, '__ob__', this); + if (Array.isArray(value)) { + var augment = hasProto + ? protoAugment + : copyAugment; + augment(value, arrayMethods, arrayKeys); + this.observeArray(value); + } else { + this.walk(value); + } }; -var ctx$2 = _ctx; -var invoke = _invoke; -var html = _html; -var cel = _domCreate; -var global$5 = _global; -var process$2 = global$5.process; -var setTask = global$5.setImmediate; -var clearTask = global$5.clearImmediate; -var MessageChannel = global$5.MessageChannel; -var Dispatch = global$5.Dispatch; -var counter = 0; -var queue = {}; -var ONREADYSTATECHANGE = 'onreadystatechange'; -var defer; -var channel; -var port; -var run$1 = function () { - var id = +this; - // eslint-disable-next-line no-prototype-builtins - if (queue.hasOwnProperty(id)) { - var fn = queue[id]; - delete queue[id]; - fn(); +/** + * Walk through each property and convert them into + * getter/setters. This method should only be called when + * value type is Object. + */ +Observer.prototype.walk = function walk (obj) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length; i++) { + defineReactive$$1(obj, keys[i], obj[keys[i]]); } }; -var listener = function (event) { - run$1.call(event.data); -}; -// Node.js 0.9+ & IE10+ has setImmediate, otherwise: -if (!setTask || !clearTask) { - setTask = function setImmediate(fn) { - var arguments$1 = arguments; - var args = []; - var i = 1; - while (arguments.length > i) { args.push(arguments$1[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$2) == 'process') { - defer = function (id) { - process$2.nextTick(ctx$2(run$1, id, 1)); - }; - // Sphere (JS game engine) Dispatch API - } else if (Dispatch && Dispatch.now) { - defer = function (id) { - Dispatch.now(ctx$2(run$1, id, 1)); - }; - // Browsers with MessageChannel, includes WebWorkers - } else if (MessageChannel) { - channel = new MessageChannel(); - port = channel.port2; - channel.port1.onmessage = listener; - defer = ctx$2(port.postMessage, port, 1); - // Browsers with postMessage, skip WebWorkers - // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' - } else if (global$5.addEventListener && typeof postMessage == 'function' && !global$5.importScripts) { - defer = function (id) { - global$5.postMessage(id + '', '*'); - }; - global$5.addEventListener('message', listener, false); - // IE8- - } else if (ONREADYSTATECHANGE in cel('script')) { - defer = function (id) { - html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { - html.removeChild(this); - run$1.call(id); - }; - }; - // Rest old browsers - } else { - defer = function (id) { - setTimeout(ctx$2(run$1, id, 1), 0); - }; +/** + * Observe a list of Array items. + */ +Observer.prototype.observeArray = function observeArray (items) { + for (var i = 0, l = items.length; i < l; i++) { + observe(items[i]); } -} -var _task = { - set: setTask, - clear: clearTask }; -var global$6 = _global; -var macrotask = _task.set; -var Observer = global$6.MutationObserver || global$6.WebKitMutationObserver; -var process$3 = global$6.process; -var Promise$1 = global$6.Promise; -var isNode$1 = _cof(process$3) == 'process'; - -var _microtask = function () { - var head, last, notify; +// helpers - var flush = function () { - var parent, fn; - if (isNode$1 && (parent = process$3.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(); } - }; +/** + * Augment an target Object or Array by intercepting + * the prototype chain using __proto__ + */ +function protoAugment (target, src, keys) { + /* eslint-disable no-proto */ + target.__proto__ = src; + /* eslint-enable no-proto */ +} - // Node.js - if (isNode$1) { - notify = function () { - process$3.nextTick(flush); - }; - // browsers with MutationObserver - } else if (Observer) { - 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$1 && Promise$1.resolve) { - var promise = Promise$1.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$6, flush); - }; +/** + * Augment an target Object or Array by defining + * hidden properties. + */ +/* istanbul ignore next */ +function copyAugment (target, src, keys) { + for (var i = 0, l = keys.length; i < l; i++) { + var key = keys[i]; + def(target, key, src[key]); } - - 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) -var aFunction$3 = _aFunction; - -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$3(resolve); - this.reject = aFunction$3(reject); } -var f$3 = function (C) { - return new PromiseCapability(C); -}; - -var _newPromiseCapability = { - f: f$3 -}; - -var _perform = function (exec) { - try { - return { e: false, v: exec() }; - } catch (e) { - return { e: true, v: e }; +/** + * Attempt to create an observer instance for a value, + * returns the new observer if successfully observed, + * or the existing observer if the value already has one. + */ +function observe (value, asRootData) { + if (!isObject(value)) { + return } -}; - -var newPromiseCapability$1 = _newPromiseCapability; + var ob; + if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) { + ob = value.__ob__; + } else if ( + observerState.shouldConvert && + !isServerRendering() && + (Array.isArray(value) || isPlainObject(value)) && + Object.isExtensible(value) && + !value._isVue + ) { + ob = new Observer(value); + } + if (asRootData && ob) { + ob.vmCount++; + } + return ob +} -var _promiseResolve = function (C, x) { - var promiseCapability = newPromiseCapability$1.f(C); - var resolve = promiseCapability.resolve; - resolve(x); - return promiseCapability.promise; -}; +/** + * Define a reactive property on an Object. + */ +function defineReactive$$1 ( + obj, + key, + val, + customSetter, + shallow +) { + var dep = new Dep(); -var redefine$3 = _redefine; -var _redefineAll = function (target, src, safe) { - for (var key in src) { redefine$3(target, key, src[key], safe); } - return target; -}; + var property = Object.getOwnPropertyDescriptor(obj, key); + if (property && property.configurable === false) { + return + } -var global$7 = _global; -var dP$3 = _objectDp; -var DESCRIPTORS = _descriptors; -var SPECIES$1 = _wks('species'); + // cater for pre-defined getter/setters + var getter = property && property.get; + var setter = property && property.set; -var _setSpecies = function (KEY) { - var C = global$7[KEY]; - if (DESCRIPTORS && C && !C[SPECIES$1]) { dP$3.f(C, SPECIES$1, { + var childOb = !shallow && observe(val); + Object.defineProperty(obj, key, { + enumerable: true, configurable: true, - get: function () { return this; } - }); } -}; - -var ITERATOR$4 = _wks('iterator'); -var SAFE_CLOSING = false; - -try { - var riter = [7][ITERATOR$4](); - riter['return'] = function () { SAFE_CLOSING = true; }; - // eslint-disable-next-line no-throw-literal - Array.from(riter, function () { throw 2; }); -} 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$4](); - iter.next = function () { return { done: safe = true }; }; - arr[ITERATOR$4] = function () { return iter; }; - exec(arr); - } catch (e) { /* empty */ } - return safe; -}; - -var LIBRARY$1 = _library; -var global$4 = _global; -var ctx$1 = _ctx; -var classof$1 = _classof; -var $export$3 = _export; -var isObject$3 = _isObject; -var aFunction$1 = _aFunction; -var anInstance = _anInstance; -var forOf = _forOf; -var speciesConstructor = _speciesConstructor; -var task = _task.set; -var microtask = _microtask(); -var newPromiseCapabilityModule = _newPromiseCapability; -var perform = _perform; -var promiseResolve = _promiseResolve; -var PROMISE = 'Promise'; -var TypeError$1 = global$4.TypeError; -var process$1 = global$4.process; -var $Promise = global$4[PROMISE]; -var isNode = classof$1(process$1) == 'process'; -var empty = function () { /* empty */ }; -var Internal; -var newGenericPromiseCapability; -var OwnPromiseCapability; -var Wrapper; -var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; - -var USE_NATIVE = !!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 sameConstructor = LIBRARY$1 ? function (a, b) { - // with library wrapper special case - return a === b || a === $Promise && b === Wrapper; -} : function (a, b) { - return a === b; -}; -var isThenable = function (it) { - var then; - return isObject$3(it) && typeof (then = it.then) == 'function' ? then : false; -}; -var notify$1 = 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$4, function () { - var value = promise._v; - var unhandled = isUnhandled(promise); - var result, handler, console; - if (unhandled) { - result = perform(function () { - if (isNode) { - process$1.emit('unhandledRejection', value, promise); - } else if (handler = global$4.onunhandledrejection) { - handler({ promise: promise, reason: value }); - } else if ((console = global$4.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) { - if (promise._h == 1) { return false; } - var chain = promise._a || promise._c; - var i = 0; - var reaction; - while (chain.length > i) { - reaction = chain[i++]; - if (reaction.fail || !isUnhandled(reaction.promise)) { return false; } - } return true; -}; -var onHandleUnhandled = function (promise) { - task.call(global$4, function () { - var handler; - if (isNode) { - process$1.emit('rejectionHandled', promise); - } else if (handler = global$4.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$1(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$1($resolve, wrapper, 1), ctx$1($reject, wrapper, 1)); - } catch (e) { - $reject.call(wrapper, e); - } - }); - } else { - promise._v = value; - promise._s = 1; - notify$1(promise, false); - } - } catch (e) { - $reject.call({ _w: promise, _d: false }, e); // wrap - } -}; - -// constructor polyfill -if (!USE_NATIVE) { - // 25.4.3.1 Promise(executor) - $Promise = function Promise(executor) { - anInstance(this, $Promise, PROMISE, '_h'); - aFunction$1(executor); - Internal.call(this); - try { - executor(ctx$1($resolve, this, 1), ctx$1($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$1.domain : undefined; - this._c.push(reaction); - if (this._a) { this._a.push(reaction); } - if (this._s) { notify$1(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$1($resolve, promise, 1); - this.reject = ctx$1($reject, promise, 1); - }; - newPromiseCapabilityModule.f = newPromiseCapability = function (C) { - return sameConstructor($Promise, C) - ? new OwnPromiseCapability(C) - : newGenericPromiseCapability(C); - }; -} - -$export$3($export$3.G + $export$3.W + $export$3.F * !USE_NATIVE, { Promise: $Promise }); -_setToStringTag($Promise, PROMISE); -_setSpecies(PROMISE); -Wrapper = _core[PROMISE]; - -// statics -$export$3($export$3.S + $export$3.F * !USE_NATIVE, 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$3($export$3.S + $export$3.F * (LIBRARY$1 || !USE_NATIVE), PROMISE, { - // 25.4.4.6 Promise.resolve(x) - resolve: function resolve(x) { - // instanceof instead of internal slot check because we should fix it without replacement native Promise core - if (x instanceof $Promise && sameConstructor(x.constructor, this)) { return x; } - return promiseResolve(this, x); - } -}); -$export$3($export$3.S + $export$3.F * !(USE_NATIVE && _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; - } -}); - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * @fileOverview - * This file will hack `console` methods by `WXEnvironment.logLevel`. - * So we can control how many and which messages will be sent by change the log level. - * Additionally in native platform the message content must be primitive values and - * using `nativeLog(...args, logLevelMark)` so we create a new `console` object in - * global add a format process for its methods. - */ - -var LEVELS = ['off', 'error', 'warn', 'info', 'log', 'debug']; -var levelMap = {}; - -var originalConsole = global.console; - -/** - * Hack console for native environment. - */ -function setNativeConsole () { - generateLevelMap(); - - /* istanbul ignore next */ - // mock console in native environment - if (global.WXEnvironment && global.WXEnvironment.platform !== 'Web') { - global.console = { - debug: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('debug')) { global.nativeLog.apply(global, format(args).concat( ['__DEBUG'] )); } - }, - log: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('log')) { global.nativeLog.apply(global, format(args).concat( ['__LOG'] )); } - }, - info: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('info')) { global.nativeLog.apply(global, format(args).concat( ['__INFO'] )); } - }, - warn: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('warn')) { global.nativeLog.apply(global, format(args).concat( ['__WARN'] )); } - }, - error: function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('error')) { global.nativeLog.apply(global, format(args).concat( ['__ERROR'] )); } - } - }; - } - - // Web or Node - else { - var debug = console.debug; - var log = console.log; - var info = console.info; - var warn = console.warn; - var error = console.error; - console.__ori__ = { debug: debug, log: log, info: info, warn: warn, error: error }; - console.debug = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('debug')) { console.__ori__.debug.apply(console, args); } - }; - console.log = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('log')) { console.__ori__.log.apply(console, args); } - }; - console.info = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('info')) { console.__ori__.info.apply(console, args); } - }; - console.warn = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('warn')) { console.__ori__.warn.apply(console, args); } - }; - console.error = function () { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - if (checkLevel('error')) { console.__ori__.error.apply(console, args); } - }; - } -} - -/** - * Reset hacked console to original. - */ -/* istanbul ignore next */ -function resetNativeConsole () { - levelMap = {}; - global.console = originalConsole; -} - -/** - * Generate map for which types of message will be sent in a certain message level - * as the order of LEVELS. - */ -function generateLevelMap () { - LEVELS.forEach(function (level) { - var levelIndex = LEVELS.indexOf(level); - levelMap[level] = {}; - LEVELS.forEach(function (type) { - var typeIndex = LEVELS.indexOf(type); - if (typeIndex <= levelIndex) { - levelMap[level][type] = true; - } - }); - }); -} - -/** - * Check if a certain type of message will be sent in current log level of env. - * @param {string} type - * @return {boolean} - */ -function checkLevel (type) { - var logLevel = (global.WXEnvironment && global.WXEnvironment.logLevel) || 'log'; - return levelMap[logLevel] && levelMap[logLevel][type] -} - -/** - * Convert all log arguments into primitive values. - * @param {array} args - * @return {array} - */ -/* istanbul ignore next */ -function format (args) { - return args.map(function (v) { - var type = Object.prototype.toString.call(v); - if (type.toLowerCase() === '[object object]') { - v = JSON.stringify(v); - } - else { - v = String(v); - } - return v - }) -} - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/** - * @fileOverview - * Polyfill `setTimeout` on Android V8 using native method - * `setTimeoutNative(callbackId, time)` and JS method - * `setTimeoutCallback(callbackId)`. - * This polyfill is only used in virtual-DOM diff & flush agorithm. Not - * accessed by JS Bundle code (The timer APIs polyfill for JS Bundle is in - * `html5/default/app/ctrl.js`). - */ - -var originalSetTimeout = global.setTimeout; -var setTimeoutNative = global.setTimeoutNative; - -/** - * Set up native timer - */ -/* istanbul ignore next */ -function setNativeTimer () { - if (typeof setTimeout === 'undefined' && - typeof setTimeoutNative === 'function') { - var timeoutMap = {}; - var timeoutId = 0; - - global.setTimeout = function (cb, time) { - timeoutMap[++timeoutId] = cb; - setTimeoutNative(timeoutId.toString(), time); - }; - - global.setTimeoutCallback = function (id) { - if (typeof timeoutMap[id] === 'function') { - timeoutMap[id](); - delete timeoutMap[id]; - } - }; - } -} - -/* istanbul ignore next */ -function resetNativeTimer () { - global.setTimeout = originalSetTimeout; - global.setTimeoutCallback = null; -} - -setNativeTimer(); - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/** - * Freeze the prototype of javascript build-in objects. - */ -/* istanbul ignore next */ -function freezePrototype$1 () { - Object.freeze(Object); - Object.freeze(Array); - - // Object.freeze(Object.prototype) - freezeObjectProto(); - Object.freeze(Array.prototype); - Object.freeze(String.prototype); - Object.freeze(Number.prototype); - Object.freeze(Boolean.prototype); - - // Object.freeze(Error.prototype) - freezeErrorProto(); - Object.freeze(Date.prototype); - Object.freeze(RegExp.prototype); -} - -function freezeObjectProto () { - var proto = Object.prototype; - var protoName = 'Object.prototype'; - freezeProtoProperty(proto, '__defineGetter__', protoName); - freezeProtoProperty(proto, '__defineSetter__', protoName); - freezeProtoProperty(proto, '__lookupGetter__', protoName); - freezeProtoProperty(proto, '__lookupSetter__', protoName); - freezeProtoProperty(proto, 'constructor', protoName); - freezeProtoProperty(proto, 'hasOwnProperty', protoName); - freezeProtoProperty(proto, 'isPrototypeOf', protoName); - freezeProtoProperty(proto, 'propertyIsEnumerable', protoName); - freezeProtoProperty(proto, 'toLocaleString', protoName); - freezeProtoProperty(proto, 'toString', protoName); - freezeProtoProperty(proto, 'valueOf', protoName); - Object.seal(proto); -} - -function freezeErrorProto () { - var proto = Error.prototype; - var protoName = 'Error.prototype'; - freezeProtoProperty(proto, 'name', protoName); - freezeProtoProperty(proto, 'message', protoName); - freezeProtoProperty(proto, 'toString', protoName); - freezeProtoProperty(proto, 'constructor', protoName); - Object.seal(proto); -} - -function freezeProtoProperty (proto, propertyName, protoName) { - if (!proto.hasOwnProperty(propertyName)) { - return - } - - var origin = proto[
<TRUNCATED>