babel-source 4.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/lib/babel.js +42478 -0
- data/lib/babel/external-helpers.js +253 -0
- data/lib/babel/polyfill.js +2454 -0
- data/lib/babel/source.rb +7 -0
- metadata +48 -0
@@ -0,0 +1,253 @@
|
|
1
|
+
(function (global) {
|
2
|
+
var babelHelpers = global.babelHelpers = {};
|
3
|
+
babelHelpers.inherits = function (subClass, superClass) {
|
4
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
5
|
+
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
|
6
|
+
}
|
7
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
8
|
+
constructor: {
|
9
|
+
value: subClass,
|
10
|
+
enumerable: false,
|
11
|
+
writable: true,
|
12
|
+
configurable: true
|
13
|
+
}
|
14
|
+
});
|
15
|
+
if (superClass) subClass.__proto__ = superClass;
|
16
|
+
};
|
17
|
+
|
18
|
+
babelHelpers.defaults = function (obj, defaults) {
|
19
|
+
var keys = Object.getOwnPropertyNames(defaults);
|
20
|
+
|
21
|
+
for (var i = 0; i < keys.length; i++) {
|
22
|
+
var key = keys[i];
|
23
|
+
var value = Object.getOwnPropertyDescriptor(defaults, key);
|
24
|
+
|
25
|
+
if (value && value.configurable && obj[key] === undefined) {
|
26
|
+
Object.defineProperty(obj, key, value);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
return obj;
|
31
|
+
};
|
32
|
+
|
33
|
+
babelHelpers.prototypeProperties = function (child, staticProps, instanceProps) {
|
34
|
+
if (staticProps) Object.defineProperties(child, staticProps);
|
35
|
+
if (instanceProps) Object.defineProperties(child.prototype, instanceProps);
|
36
|
+
};
|
37
|
+
|
38
|
+
babelHelpers.applyConstructor = function (Constructor, args) {
|
39
|
+
var instance = Object.create(Constructor.prototype);
|
40
|
+
|
41
|
+
var result = Constructor.apply(instance, args);
|
42
|
+
|
43
|
+
return result != null && (typeof result == "object" || typeof result == "function") ? result : instance;
|
44
|
+
};
|
45
|
+
|
46
|
+
babelHelpers.taggedTemplateLiteral = function (strings, raw) {
|
47
|
+
return Object.freeze(Object.defineProperties(strings, {
|
48
|
+
raw: {
|
49
|
+
value: Object.freeze(raw)
|
50
|
+
}
|
51
|
+
}));
|
52
|
+
};
|
53
|
+
|
54
|
+
babelHelpers.taggedTemplateLiteralLoose = function (strings, raw) {
|
55
|
+
strings.raw = raw;
|
56
|
+
return strings;
|
57
|
+
};
|
58
|
+
|
59
|
+
babelHelpers.interopRequire = function (obj) {
|
60
|
+
return obj && obj.__esModule ? obj.default : obj;
|
61
|
+
};
|
62
|
+
|
63
|
+
babelHelpers.toArray = function (arr) {
|
64
|
+
return Array.isArray(arr) ? arr : Array.from(arr);
|
65
|
+
};
|
66
|
+
|
67
|
+
babelHelpers.toConsumableArray = function (arr) {
|
68
|
+
if (Array.isArray(arr)) {
|
69
|
+
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
70
|
+
|
71
|
+
return arr2;
|
72
|
+
} else {
|
73
|
+
return Array.from(arr);
|
74
|
+
}
|
75
|
+
};
|
76
|
+
|
77
|
+
babelHelpers.slicedToArray = function (arr, i) {
|
78
|
+
if (Array.isArray(arr)) {
|
79
|
+
return arr;
|
80
|
+
} else if (Symbol.iterator in Object(arr)) {
|
81
|
+
var _arr = [];
|
82
|
+
|
83
|
+
for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
|
84
|
+
_arr.push(_step.value);
|
85
|
+
|
86
|
+
if (i && _arr.length === i) break;
|
87
|
+
}
|
88
|
+
|
89
|
+
return _arr;
|
90
|
+
} else {
|
91
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance");
|
92
|
+
}
|
93
|
+
};
|
94
|
+
|
95
|
+
babelHelpers.objectWithoutProperties = function (obj, keys) {
|
96
|
+
var target = {};
|
97
|
+
|
98
|
+
for (var i in obj) {
|
99
|
+
if (keys.indexOf(i) >= 0) continue;
|
100
|
+
if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
|
101
|
+
target[i] = obj[i];
|
102
|
+
}
|
103
|
+
|
104
|
+
return target;
|
105
|
+
};
|
106
|
+
|
107
|
+
babelHelpers.hasOwn = Object.prototype.hasOwnProperty;
|
108
|
+
babelHelpers.slice = Array.prototype.slice;
|
109
|
+
babelHelpers.bind = Function.prototype.bind;
|
110
|
+
babelHelpers.defineProperty = function (obj, key, value) {
|
111
|
+
return Object.defineProperty(obj, key, {
|
112
|
+
value: value,
|
113
|
+
enumerable: true,
|
114
|
+
configurable: true,
|
115
|
+
writable: true
|
116
|
+
});
|
117
|
+
};
|
118
|
+
|
119
|
+
babelHelpers.asyncToGenerator = function (fn) {
|
120
|
+
return function () {
|
121
|
+
var gen = fn.apply(this, arguments);
|
122
|
+
|
123
|
+
return new Promise(function (resolve, reject) {
|
124
|
+
var callNext = step.bind(null, "next");
|
125
|
+
|
126
|
+
var callThrow = step.bind(null, "throw");
|
127
|
+
|
128
|
+
function step(key, arg) {
|
129
|
+
try {
|
130
|
+
var info = gen[key](arg);
|
131
|
+
|
132
|
+
var value = info.value;
|
133
|
+
} catch (error) {
|
134
|
+
reject(error);
|
135
|
+
|
136
|
+
return;
|
137
|
+
}
|
138
|
+
if (info.done) {
|
139
|
+
resolve(value);
|
140
|
+
} else {
|
141
|
+
Promise.resolve(value).then(callNext, callThrow);
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
callNext();
|
146
|
+
});
|
147
|
+
};
|
148
|
+
};
|
149
|
+
|
150
|
+
babelHelpers.interopRequireWildcard = function (obj) {
|
151
|
+
return obj && obj.__esModule ? obj : {
|
152
|
+
default: obj
|
153
|
+
};
|
154
|
+
};
|
155
|
+
|
156
|
+
babelHelpers._typeof = function (obj) {
|
157
|
+
return obj && obj.constructor === Symbol ? "symbol" : typeof obj;
|
158
|
+
};
|
159
|
+
|
160
|
+
babelHelpers._extends = Object.assign || function (target) {
|
161
|
+
for (var i = 1; i < arguments.length; i++) {
|
162
|
+
var source = arguments[i];
|
163
|
+
for (var key in source) {
|
164
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
165
|
+
target[key] = source[key];
|
166
|
+
}
|
167
|
+
}
|
168
|
+
}
|
169
|
+
|
170
|
+
return target;
|
171
|
+
};
|
172
|
+
babelHelpers.get = function get(object, property, receiver) {
|
173
|
+
var desc = Object.getOwnPropertyDescriptor(object, property);
|
174
|
+
|
175
|
+
if (desc === undefined) {
|
176
|
+
var parent = Object.getPrototypeOf(object);
|
177
|
+
|
178
|
+
if (parent === null) {
|
179
|
+
return undefined;
|
180
|
+
} else {
|
181
|
+
return get(parent, property, receiver);
|
182
|
+
}
|
183
|
+
} else if ("value" in desc && desc.writable) {
|
184
|
+
return desc.value;
|
185
|
+
} else {
|
186
|
+
var getter = desc.get;
|
187
|
+
if (getter === undefined) {
|
188
|
+
return undefined;
|
189
|
+
}
|
190
|
+
return getter.call(receiver);
|
191
|
+
}
|
192
|
+
};
|
193
|
+
|
194
|
+
babelHelpers.set = function set(object, property, value, receiver) {
|
195
|
+
var desc = Object.getOwnPropertyDescriptor(object, property);
|
196
|
+
|
197
|
+
if (desc === undefined) {
|
198
|
+
var parent = Object.getPrototypeOf(object);
|
199
|
+
|
200
|
+
if (parent !== null) {
|
201
|
+
return set(parent, property, value, receiver);
|
202
|
+
}
|
203
|
+
} else if ("value" in desc && desc.writable) {
|
204
|
+
return desc.value = value;
|
205
|
+
} else {
|
206
|
+
var setter = desc.set;
|
207
|
+
if (setter !== undefined) {
|
208
|
+
return setter.call(receiver, value);
|
209
|
+
}
|
210
|
+
}
|
211
|
+
};
|
212
|
+
|
213
|
+
babelHelpers.classCallCheck = function (instance, Constructor) {
|
214
|
+
if (!(instance instanceof Constructor)) {
|
215
|
+
throw new TypeError("Cannot call a class as a function");
|
216
|
+
}
|
217
|
+
};
|
218
|
+
|
219
|
+
babelHelpers.objectDestructuringEmpty = function (obj) {
|
220
|
+
if (obj == null) throw new TypeError("Cannot destructure undefined");
|
221
|
+
};
|
222
|
+
|
223
|
+
babelHelpers.temporalUndefined = {};
|
224
|
+
babelHelpers.temporalAssertDefined = function (val, name, undef) {
|
225
|
+
if (val === undef) {
|
226
|
+
throw new ReferenceError(name + " is not defined - temporal dead zone");
|
227
|
+
}
|
228
|
+
return true;
|
229
|
+
};
|
230
|
+
|
231
|
+
babelHelpers.tailCall = (function () {
|
232
|
+
function Tail(func, args, context) {
|
233
|
+
this.func = func;
|
234
|
+
this.args = args;
|
235
|
+
this.context = context;
|
236
|
+
}
|
237
|
+
|
238
|
+
Tail.prototype._isTailDescriptor = true;
|
239
|
+
var isRunning = false;
|
240
|
+
|
241
|
+
return function (func, args, context) {
|
242
|
+
var result = new Tail(func, args, context);
|
243
|
+
if (!isRunning) {
|
244
|
+
isRunning = true;
|
245
|
+
do {
|
246
|
+
result = result.func.apply(result.context, result.args);
|
247
|
+
} while (result instanceof Tail || result && result._isTailDescriptor);
|
248
|
+
isRunning = false;
|
249
|
+
}
|
250
|
+
return result;
|
251
|
+
};
|
252
|
+
})();
|
253
|
+
})(typeof global === "undefined" ? self : global);
|
@@ -0,0 +1,2454 @@
|
|
1
|
+
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
2
|
+
(function (global){
|
3
|
+
"use strict";
|
4
|
+
|
5
|
+
if (global._babelPolyfill) {
|
6
|
+
throw new Error("only one instance of babel/polyfill is allowed");
|
7
|
+
}
|
8
|
+
global._babelPolyfill = true;
|
9
|
+
|
10
|
+
require("core-js/shim");
|
11
|
+
require("regenerator-babel/runtime");
|
12
|
+
|
13
|
+
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
14
|
+
},{"core-js/shim":2,"regenerator-babel/runtime":3}],2:[function(require,module,exports){
|
15
|
+
/**
|
16
|
+
* Core.js 0.5.4
|
17
|
+
* https://github.com/zloirock/core-js
|
18
|
+
* License: http://rock.mit-license.org
|
19
|
+
* © 2015 Denis Pushkarev
|
20
|
+
*/
|
21
|
+
!function(global, framework, undefined){
|
22
|
+
'use strict';
|
23
|
+
|
24
|
+
/******************************************************************************
|
25
|
+
* Module : common *
|
26
|
+
******************************************************************************/
|
27
|
+
|
28
|
+
// Shortcuts for [[Class]] & property names
|
29
|
+
var OBJECT = 'Object'
|
30
|
+
, FUNCTION = 'Function'
|
31
|
+
, ARRAY = 'Array'
|
32
|
+
, STRING = 'String'
|
33
|
+
, NUMBER = 'Number'
|
34
|
+
, REGEXP = 'RegExp'
|
35
|
+
, DATE = 'Date'
|
36
|
+
, MAP = 'Map'
|
37
|
+
, SET = 'Set'
|
38
|
+
, WEAKMAP = 'WeakMap'
|
39
|
+
, WEAKSET = 'WeakSet'
|
40
|
+
, SYMBOL = 'Symbol'
|
41
|
+
, PROMISE = 'Promise'
|
42
|
+
, MATH = 'Math'
|
43
|
+
, ARGUMENTS = 'Arguments'
|
44
|
+
, PROTOTYPE = 'prototype'
|
45
|
+
, CONSTRUCTOR = 'constructor'
|
46
|
+
, TO_STRING = 'toString'
|
47
|
+
, TO_STRING_TAG = TO_STRING + 'Tag'
|
48
|
+
, TO_LOCALE = 'toLocaleString'
|
49
|
+
, HAS_OWN = 'hasOwnProperty'
|
50
|
+
, FOR_EACH = 'forEach'
|
51
|
+
, ITERATOR = 'iterator'
|
52
|
+
, FF_ITERATOR = '@@' + ITERATOR
|
53
|
+
, PROCESS = 'process'
|
54
|
+
, CREATE_ELEMENT = 'createElement'
|
55
|
+
// Aliases global objects and prototypes
|
56
|
+
, Function = global[FUNCTION]
|
57
|
+
, Object = global[OBJECT]
|
58
|
+
, Array = global[ARRAY]
|
59
|
+
, String = global[STRING]
|
60
|
+
, Number = global[NUMBER]
|
61
|
+
, RegExp = global[REGEXP]
|
62
|
+
, Date = global[DATE]
|
63
|
+
, Map = global[MAP]
|
64
|
+
, Set = global[SET]
|
65
|
+
, WeakMap = global[WEAKMAP]
|
66
|
+
, WeakSet = global[WEAKSET]
|
67
|
+
, Symbol = global[SYMBOL]
|
68
|
+
, Math = global[MATH]
|
69
|
+
, TypeError = global.TypeError
|
70
|
+
, RangeError = global.RangeError
|
71
|
+
, setTimeout = global.setTimeout
|
72
|
+
, setImmediate = global.setImmediate
|
73
|
+
, clearImmediate = global.clearImmediate
|
74
|
+
, parseInt = global.parseInt
|
75
|
+
, isFinite = global.isFinite
|
76
|
+
, process = global[PROCESS]
|
77
|
+
, nextTick = process && process.nextTick
|
78
|
+
, document = global.document
|
79
|
+
, html = document && document.documentElement
|
80
|
+
, navigator = global.navigator
|
81
|
+
, define = global.define
|
82
|
+
, ArrayProto = Array[PROTOTYPE]
|
83
|
+
, ObjectProto = Object[PROTOTYPE]
|
84
|
+
, FunctionProto = Function[PROTOTYPE]
|
85
|
+
, Infinity = 1 / 0
|
86
|
+
, DOT = '.'
|
87
|
+
// Methods from https://github.com/DeveloperToolsWG/console-object/blob/master/api.md
|
88
|
+
, CONSOLE_METHODS = 'assert,clear,count,debug,dir,dirxml,error,exception,' +
|
89
|
+
'group,groupCollapsed,groupEnd,info,isIndependentlyComposed,log,' +
|
90
|
+
'markTimeline,profile,profileEnd,table,time,timeEnd,timeline,' +
|
91
|
+
'timelineEnd,timeStamp,trace,warn';
|
92
|
+
|
93
|
+
// http://jsperf.com/core-js-isobject
|
94
|
+
function isObject(it){
|
95
|
+
return it !== null && (typeof it == 'object' || typeof it == 'function');
|
96
|
+
}
|
97
|
+
function isFunction(it){
|
98
|
+
return typeof it == 'function';
|
99
|
+
}
|
100
|
+
// Native function?
|
101
|
+
var isNative = ctx(/./.test, /\[native code\]\s*\}\s*$/, 1);
|
102
|
+
|
103
|
+
// Object internal [[Class]] or toStringTag
|
104
|
+
// http://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring
|
105
|
+
var toString = ObjectProto[TO_STRING];
|
106
|
+
function setToStringTag(it, tag, stat){
|
107
|
+
if(it && !has(it = stat ? it : it[PROTOTYPE], SYMBOL_TAG))hidden(it, SYMBOL_TAG, tag);
|
108
|
+
}
|
109
|
+
function cof(it){
|
110
|
+
return toString.call(it).slice(8, -1);
|
111
|
+
}
|
112
|
+
function classof(it){
|
113
|
+
var O, T;
|
114
|
+
return it == undefined ? it === undefined ? 'Undefined' : 'Null'
|
115
|
+
: typeof (T = (O = Object(it))[SYMBOL_TAG]) == 'string' ? T : cof(O);
|
116
|
+
}
|
117
|
+
|
118
|
+
// Function
|
119
|
+
var call = FunctionProto.call
|
120
|
+
, apply = FunctionProto.apply
|
121
|
+
, REFERENCE_GET;
|
122
|
+
// Partial apply
|
123
|
+
function part(/* ...args */){
|
124
|
+
var fn = assertFunction(this)
|
125
|
+
, length = arguments.length
|
126
|
+
, args = Array(length)
|
127
|
+
, i = 0
|
128
|
+
, _ = path._
|
129
|
+
, holder = false;
|
130
|
+
while(length > i)if((args[i] = arguments[i++]) === _)holder = true;
|
131
|
+
return function(/* ...args */){
|
132
|
+
var that = this
|
133
|
+
, _length = arguments.length
|
134
|
+
, i = 0, j = 0, _args;
|
135
|
+
if(!holder && !_length)return invoke(fn, args, that);
|
136
|
+
_args = args.slice();
|
137
|
+
if(holder)for(;length > i; i++)if(_args[i] === _)_args[i] = arguments[j++];
|
138
|
+
while(_length > j)_args.push(arguments[j++]);
|
139
|
+
return invoke(fn, _args, that);
|
140
|
+
}
|
141
|
+
}
|
142
|
+
// Optional / simple context binding
|
143
|
+
function ctx(fn, that, length){
|
144
|
+
assertFunction(fn);
|
145
|
+
if(~length && that === undefined)return fn;
|
146
|
+
switch(length){
|
147
|
+
case 1: return function(a){
|
148
|
+
return fn.call(that, a);
|
149
|
+
}
|
150
|
+
case 2: return function(a, b){
|
151
|
+
return fn.call(that, a, b);
|
152
|
+
}
|
153
|
+
case 3: return function(a, b, c){
|
154
|
+
return fn.call(that, a, b, c);
|
155
|
+
}
|
156
|
+
} return function(/* ...args */){
|
157
|
+
return fn.apply(that, arguments);
|
158
|
+
}
|
159
|
+
}
|
160
|
+
// Fast apply
|
161
|
+
// http://jsperf.lnkit.com/fast-apply/5
|
162
|
+
function invoke(fn, args, that){
|
163
|
+
var un = that === undefined;
|
164
|
+
switch(args.length | 0){
|
165
|
+
case 0: return un ? fn()
|
166
|
+
: fn.call(that);
|
167
|
+
case 1: return un ? fn(args[0])
|
168
|
+
: fn.call(that, args[0]);
|
169
|
+
case 2: return un ? fn(args[0], args[1])
|
170
|
+
: fn.call(that, args[0], args[1]);
|
171
|
+
case 3: return un ? fn(args[0], args[1], args[2])
|
172
|
+
: fn.call(that, args[0], args[1], args[2]);
|
173
|
+
case 4: return un ? fn(args[0], args[1], args[2], args[3])
|
174
|
+
: fn.call(that, args[0], args[1], args[2], args[3]);
|
175
|
+
case 5: return un ? fn(args[0], args[1], args[2], args[3], args[4])
|
176
|
+
: fn.call(that, args[0], args[1], args[2], args[3], args[4]);
|
177
|
+
} return fn.apply(that, args);
|
178
|
+
}
|
179
|
+
function construct(target, argumentsList /*, newTarget*/){
|
180
|
+
var proto = assertFunction(arguments.length < 3 ? target : arguments[2])[PROTOTYPE]
|
181
|
+
, instance = create(isObject(proto) ? proto : ObjectProto)
|
182
|
+
, result = apply.call(target, instance, argumentsList);
|
183
|
+
return isObject(result) ? result : instance;
|
184
|
+
}
|
185
|
+
|
186
|
+
// Object:
|
187
|
+
var create = Object.create
|
188
|
+
, getPrototypeOf = Object.getPrototypeOf
|
189
|
+
, setPrototypeOf = Object.setPrototypeOf
|
190
|
+
, defineProperty = Object.defineProperty
|
191
|
+
, defineProperties = Object.defineProperties
|
192
|
+
, getOwnDescriptor = Object.getOwnPropertyDescriptor
|
193
|
+
, getKeys = Object.keys
|
194
|
+
, getNames = Object.getOwnPropertyNames
|
195
|
+
, getSymbols = Object.getOwnPropertySymbols
|
196
|
+
, isFrozen = Object.isFrozen
|
197
|
+
, has = ctx(call, ObjectProto[HAS_OWN], 2)
|
198
|
+
// Dummy, fix for not array-like ES3 string in es5 module
|
199
|
+
, ES5Object = Object
|
200
|
+
, Dict;
|
201
|
+
function toObject(it){
|
202
|
+
return ES5Object(assertDefined(it));
|
203
|
+
}
|
204
|
+
function returnIt(it){
|
205
|
+
return it;
|
206
|
+
}
|
207
|
+
function returnThis(){
|
208
|
+
return this;
|
209
|
+
}
|
210
|
+
function get(object, key){
|
211
|
+
if(has(object, key))return object[key];
|
212
|
+
}
|
213
|
+
function ownKeys(it){
|
214
|
+
assertObject(it);
|
215
|
+
return getSymbols ? getNames(it).concat(getSymbols(it)) : getNames(it);
|
216
|
+
}
|
217
|
+
// 19.1.2.1 Object.assign(target, source, ...)
|
218
|
+
var assign = Object.assign || function(target, source){
|
219
|
+
var T = Object(assertDefined(target))
|
220
|
+
, l = arguments.length
|
221
|
+
, i = 1;
|
222
|
+
while(l > i){
|
223
|
+
var S = ES5Object(arguments[i++])
|
224
|
+
, keys = getKeys(S)
|
225
|
+
, length = keys.length
|
226
|
+
, j = 0
|
227
|
+
, key;
|
228
|
+
while(length > j)T[key = keys[j++]] = S[key];
|
229
|
+
}
|
230
|
+
return T;
|
231
|
+
}
|
232
|
+
function keyOf(object, el){
|
233
|
+
var O = toObject(object)
|
234
|
+
, keys = getKeys(O)
|
235
|
+
, length = keys.length
|
236
|
+
, index = 0
|
237
|
+
, key;
|
238
|
+
while(length > index)if(O[key = keys[index++]] === el)return key;
|
239
|
+
}
|
240
|
+
|
241
|
+
// Array
|
242
|
+
// array('str1,str2,str3') => ['str1', 'str2', 'str3']
|
243
|
+
function array(it){
|
244
|
+
return String(it).split(',');
|
245
|
+
}
|
246
|
+
var push = ArrayProto.push
|
247
|
+
, unshift = ArrayProto.unshift
|
248
|
+
, slice = ArrayProto.slice
|
249
|
+
, splice = ArrayProto.splice
|
250
|
+
, indexOf = ArrayProto.indexOf
|
251
|
+
, forEach = ArrayProto[FOR_EACH];
|
252
|
+
/*
|
253
|
+
* 0 -> forEach
|
254
|
+
* 1 -> map
|
255
|
+
* 2 -> filter
|
256
|
+
* 3 -> some
|
257
|
+
* 4 -> every
|
258
|
+
* 5 -> find
|
259
|
+
* 6 -> findIndex
|
260
|
+
*/
|
261
|
+
function createArrayMethod(type){
|
262
|
+
var isMap = type == 1
|
263
|
+
, isFilter = type == 2
|
264
|
+
, isSome = type == 3
|
265
|
+
, isEvery = type == 4
|
266
|
+
, isFindIndex = type == 6
|
267
|
+
, noholes = type == 5 || isFindIndex;
|
268
|
+
return function(callbackfn/*, that = undefined */){
|
269
|
+
var O = Object(assertDefined(this))
|
270
|
+
, that = arguments[1]
|
271
|
+
, self = ES5Object(O)
|
272
|
+
, f = ctx(callbackfn, that, 3)
|
273
|
+
, length = toLength(self.length)
|
274
|
+
, index = 0
|
275
|
+
, result = isMap ? Array(length) : isFilter ? [] : undefined
|
276
|
+
, val, res;
|
277
|
+
for(;length > index; index++)if(noholes || index in self){
|
278
|
+
val = self[index];
|
279
|
+
res = f(val, index, O);
|
280
|
+
if(type){
|
281
|
+
if(isMap)result[index] = res; // map
|
282
|
+
else if(res)switch(type){
|
283
|
+
case 3: return true; // some
|
284
|
+
case 5: return val; // find
|
285
|
+
case 6: return index; // findIndex
|
286
|
+
case 2: result.push(val); // filter
|
287
|
+
} else if(isEvery)return false; // every
|
288
|
+
}
|
289
|
+
}
|
290
|
+
return isFindIndex ? -1 : isSome || isEvery ? isEvery : result;
|
291
|
+
}
|
292
|
+
}
|
293
|
+
function createArrayContains(isContains){
|
294
|
+
return function(el /*, fromIndex = 0 */){
|
295
|
+
var O = toObject(this)
|
296
|
+
, length = toLength(O.length)
|
297
|
+
, index = toIndex(arguments[1], length);
|
298
|
+
if(isContains && el != el){
|
299
|
+
for(;length > index; index++)if(sameNaN(O[index]))return isContains || index;
|
300
|
+
} else for(;length > index; index++)if(isContains || index in O){
|
301
|
+
if(O[index] === el)return isContains || index;
|
302
|
+
} return !isContains && -1;
|
303
|
+
}
|
304
|
+
}
|
305
|
+
function generic(A, B){
|
306
|
+
// strange IE quirks mode bug -> use typeof vs isFunction
|
307
|
+
return typeof A == 'function' ? A : B;
|
308
|
+
}
|
309
|
+
|
310
|
+
// Math
|
311
|
+
var MAX_SAFE_INTEGER = 0x1fffffffffffff // pow(2, 53) - 1 == 9007199254740991
|
312
|
+
, pow = Math.pow
|
313
|
+
, abs = Math.abs
|
314
|
+
, ceil = Math.ceil
|
315
|
+
, floor = Math.floor
|
316
|
+
, max = Math.max
|
317
|
+
, min = Math.min
|
318
|
+
, random = Math.random
|
319
|
+
, trunc = Math.trunc || function(it){
|
320
|
+
return (it > 0 ? floor : ceil)(it);
|
321
|
+
}
|
322
|
+
// 20.1.2.4 Number.isNaN(number)
|
323
|
+
function sameNaN(number){
|
324
|
+
return number != number;
|
325
|
+
}
|
326
|
+
// 7.1.4 ToInteger
|
327
|
+
function toInteger(it){
|
328
|
+
return isNaN(it) ? 0 : trunc(it);
|
329
|
+
}
|
330
|
+
// 7.1.15 ToLength
|
331
|
+
function toLength(it){
|
332
|
+
return it > 0 ? min(toInteger(it), MAX_SAFE_INTEGER) : 0;
|
333
|
+
}
|
334
|
+
function toIndex(index, length){
|
335
|
+
var index = toInteger(index);
|
336
|
+
return index < 0 ? max(index + length, 0) : min(index, length);
|
337
|
+
}
|
338
|
+
function lz(num){
|
339
|
+
return num > 9 ? num : '0' + num;
|
340
|
+
}
|
341
|
+
|
342
|
+
function createReplacer(regExp, replace, isStatic){
|
343
|
+
var replacer = isObject(replace) ? function(part){
|
344
|
+
return replace[part];
|
345
|
+
} : replace;
|
346
|
+
return function(it){
|
347
|
+
return String(isStatic ? it : this).replace(regExp, replacer);
|
348
|
+
}
|
349
|
+
}
|
350
|
+
function createPointAt(toString){
|
351
|
+
return function(pos){
|
352
|
+
var s = String(assertDefined(this))
|
353
|
+
, i = toInteger(pos)
|
354
|
+
, l = s.length
|
355
|
+
, a, b;
|
356
|
+
if(i < 0 || i >= l)return toString ? '' : undefined;
|
357
|
+
a = s.charCodeAt(i);
|
358
|
+
return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
|
359
|
+
? toString ? s.charAt(i) : a
|
360
|
+
: toString ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
|
361
|
+
}
|
362
|
+
}
|
363
|
+
|
364
|
+
// Assertion & errors
|
365
|
+
var REDUCE_ERROR = 'Reduce of empty object with no initial value';
|
366
|
+
function assert(condition, msg1, msg2){
|
367
|
+
if(!condition)throw TypeError(msg2 ? msg1 + msg2 : msg1);
|
368
|
+
}
|
369
|
+
function assertDefined(it){
|
370
|
+
if(it == undefined)throw TypeError('Function called on null or undefined');
|
371
|
+
return it;
|
372
|
+
}
|
373
|
+
function assertFunction(it){
|
374
|
+
assert(isFunction(it), it, ' is not a function!');
|
375
|
+
return it;
|
376
|
+
}
|
377
|
+
function assertObject(it){
|
378
|
+
assert(isObject(it), it, ' is not an object!');
|
379
|
+
return it;
|
380
|
+
}
|
381
|
+
function assertInstance(it, Constructor, name){
|
382
|
+
assert(it instanceof Constructor, name, ": use the 'new' operator!");
|
383
|
+
}
|
384
|
+
|
385
|
+
// Property descriptors & Symbol
|
386
|
+
function descriptor(bitmap, value){
|
387
|
+
return {
|
388
|
+
enumerable : !(bitmap & 1),
|
389
|
+
configurable: !(bitmap & 2),
|
390
|
+
writable : !(bitmap & 4),
|
391
|
+
value : value
|
392
|
+
}
|
393
|
+
}
|
394
|
+
function simpleSet(object, key, value){
|
395
|
+
object[key] = value;
|
396
|
+
return object;
|
397
|
+
}
|
398
|
+
function createDefiner(bitmap){
|
399
|
+
return DESC ? function(object, key, value){
|
400
|
+
return defineProperty(object, key, descriptor(bitmap, value));
|
401
|
+
} : simpleSet;
|
402
|
+
}
|
403
|
+
function uid(key){
|
404
|
+
return SYMBOL + '(' + key + ')_' + (++sid + random())[TO_STRING](36);
|
405
|
+
}
|
406
|
+
function getWellKnownSymbol(name, setter){
|
407
|
+
return (Symbol && Symbol[name]) || (setter ? Symbol : safeSymbol)(SYMBOL + DOT + name);
|
408
|
+
}
|
409
|
+
// The engine works fine with descriptors? Thank's IE8 for his funny defineProperty.
|
410
|
+
var DESC = !!function(){
|
411
|
+
try {
|
412
|
+
return defineProperty({}, 'a', {get: function(){ return 2 }}).a == 2;
|
413
|
+
} catch(e){}
|
414
|
+
}()
|
415
|
+
, sid = 0
|
416
|
+
, hidden = createDefiner(1)
|
417
|
+
, set = Symbol ? simpleSet : hidden
|
418
|
+
, safeSymbol = Symbol || uid;
|
419
|
+
function assignHidden(target, src){
|
420
|
+
for(var key in src)hidden(target, key, src[key]);
|
421
|
+
return target;
|
422
|
+
}
|
423
|
+
|
424
|
+
var SYMBOL_UNSCOPABLES = getWellKnownSymbol('unscopables')
|
425
|
+
, ArrayUnscopables = ArrayProto[SYMBOL_UNSCOPABLES] || {}
|
426
|
+
, SYMBOL_SPECIES = getWellKnownSymbol('species');
|
427
|
+
function setSpecies(C){
|
428
|
+
if(framework || !isNative(C))defineProperty(C, SYMBOL_SPECIES, {
|
429
|
+
configurable: true,
|
430
|
+
get: returnThis
|
431
|
+
});
|
432
|
+
}
|
433
|
+
|
434
|
+
// Iterators
|
435
|
+
var SYMBOL_ITERATOR = getWellKnownSymbol(ITERATOR)
|
436
|
+
, SYMBOL_TAG = getWellKnownSymbol(TO_STRING_TAG)
|
437
|
+
, SUPPORT_FF_ITER = FF_ITERATOR in ArrayProto
|
438
|
+
, ITER = safeSymbol('iter')
|
439
|
+
, KEY = 1
|
440
|
+
, VALUE = 2
|
441
|
+
, Iterators = {}
|
442
|
+
, IteratorPrototype = {}
|
443
|
+
, NATIVE_ITERATORS = SYMBOL_ITERATOR in ArrayProto
|
444
|
+
// Safari define byggy iterators w/o `next`
|
445
|
+
, BUGGY_ITERATORS = 'keys' in ArrayProto && !('next' in [].keys());
|
446
|
+
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
|
447
|
+
setIterator(IteratorPrototype, returnThis);
|
448
|
+
function setIterator(O, value){
|
449
|
+
hidden(O, SYMBOL_ITERATOR, value);
|
450
|
+
// Add iterator for FF iterator protocol
|
451
|
+
SUPPORT_FF_ITER && hidden(O, FF_ITERATOR, value);
|
452
|
+
}
|
453
|
+
function createIterator(Constructor, NAME, next, proto){
|
454
|
+
Constructor[PROTOTYPE] = create(proto || IteratorPrototype, {next: descriptor(1, next)});
|
455
|
+
setToStringTag(Constructor, NAME + ' Iterator');
|
456
|
+
}
|
457
|
+
function defineIterator(Constructor, NAME, value, DEFAULT){
|
458
|
+
var proto = Constructor[PROTOTYPE]
|
459
|
+
, iter = get(proto, SYMBOL_ITERATOR) || get(proto, FF_ITERATOR) || (DEFAULT && get(proto, DEFAULT)) || value;
|
460
|
+
if(framework){
|
461
|
+
// Define iterator
|
462
|
+
setIterator(proto, iter);
|
463
|
+
if(iter !== value){
|
464
|
+
var iterProto = getPrototypeOf(iter.call(new Constructor));
|
465
|
+
// Set @@toStringTag to native iterators
|
466
|
+
setToStringTag(iterProto, NAME + ' Iterator', true);
|
467
|
+
// FF fix
|
468
|
+
has(proto, FF_ITERATOR) && setIterator(iterProto, returnThis);
|
469
|
+
}
|
470
|
+
}
|
471
|
+
// Plug for library
|
472
|
+
Iterators[NAME] = iter;
|
473
|
+
// FF & v8 fix
|
474
|
+
Iterators[NAME + ' Iterator'] = returnThis;
|
475
|
+
return iter;
|
476
|
+
}
|
477
|
+
function defineStdIterators(Base, NAME, Constructor, next, DEFAULT, IS_SET){
|
478
|
+
function createIter(kind){
|
479
|
+
return function(){
|
480
|
+
return new Constructor(this, kind);
|
481
|
+
}
|
482
|
+
}
|
483
|
+
createIterator(Constructor, NAME, next);
|
484
|
+
var entries = createIter(KEY+VALUE)
|
485
|
+
, values = createIter(VALUE);
|
486
|
+
if(DEFAULT == VALUE)values = defineIterator(Base, NAME, values, 'values');
|
487
|
+
else entries = defineIterator(Base, NAME, entries, 'entries');
|
488
|
+
if(DEFAULT){
|
489
|
+
$define(PROTO + FORCED * BUGGY_ITERATORS, NAME, {
|
490
|
+
entries: entries,
|
491
|
+
keys: IS_SET ? values : createIter(KEY),
|
492
|
+
values: values
|
493
|
+
});
|
494
|
+
}
|
495
|
+
}
|
496
|
+
function iterResult(done, value){
|
497
|
+
return {value: value, done: !!done};
|
498
|
+
}
|
499
|
+
function isIterable(it){
|
500
|
+
var O = Object(it)
|
501
|
+
, Symbol = global[SYMBOL]
|
502
|
+
, hasExt = (Symbol && Symbol[ITERATOR] || FF_ITERATOR) in O;
|
503
|
+
return hasExt || SYMBOL_ITERATOR in O || has(Iterators, classof(O));
|
504
|
+
}
|
505
|
+
function getIterator(it){
|
506
|
+
var Symbol = global[SYMBOL]
|
507
|
+
, ext = it[Symbol && Symbol[ITERATOR] || FF_ITERATOR]
|
508
|
+
, getIter = ext || it[SYMBOL_ITERATOR] || Iterators[classof(it)];
|
509
|
+
return assertObject(getIter.call(it));
|
510
|
+
}
|
511
|
+
function stepCall(fn, value, entries){
|
512
|
+
return entries ? invoke(fn, value) : fn(value);
|
513
|
+
}
|
514
|
+
function forOf(iterable, entries, fn, that){
|
515
|
+
var iterator = getIterator(iterable)
|
516
|
+
, f = ctx(fn, that, entries ? 2 : 1)
|
517
|
+
, step;
|
518
|
+
while(!(step = iterator.next()).done)if(stepCall(f, step.value, entries) === false)return;
|
519
|
+
}
|
520
|
+
|
521
|
+
// core
|
522
|
+
var NODE = cof(process) == PROCESS
|
523
|
+
, core = {}
|
524
|
+
, path = framework ? global : core
|
525
|
+
, old = global.core
|
526
|
+
, exportGlobal
|
527
|
+
// type bitmap
|
528
|
+
, FORCED = 1
|
529
|
+
, GLOBAL = 2
|
530
|
+
, STATIC = 4
|
531
|
+
, PROTO = 8
|
532
|
+
, BIND = 16
|
533
|
+
, WRAP = 32
|
534
|
+
, SIMPLE = 64;
|
535
|
+
function $define(type, name, source){
|
536
|
+
var key, own, out, exp
|
537
|
+
, isGlobal = type & GLOBAL
|
538
|
+
, target = isGlobal ? global : (type & STATIC)
|
539
|
+
? global[name] : (global[name] || ObjectProto)[PROTOTYPE]
|
540
|
+
, exports = isGlobal ? core : core[name] || (core[name] = {});
|
541
|
+
if(isGlobal)source = name;
|
542
|
+
for(key in source){
|
543
|
+
// there is a similar native
|
544
|
+
own = !(type & FORCED) && target && key in target
|
545
|
+
&& (!isFunction(target[key]) || isNative(target[key]));
|
546
|
+
// export native or passed
|
547
|
+
out = (own ? target : source)[key];
|
548
|
+
// prevent global pollution for namespaces
|
549
|
+
if(!framework && isGlobal && !isFunction(target[key]))exp = source[key];
|
550
|
+
// bind timers to global for call from export context
|
551
|
+
else if(type & BIND && own)exp = ctx(out, global);
|
552
|
+
// wrap global constructors for prevent change them in library
|
553
|
+
else if(type & WRAP && !framework && target[key] == out){
|
554
|
+
exp = function(param){
|
555
|
+
return this instanceof out ? new out(param) : out(param);
|
556
|
+
}
|
557
|
+
exp[PROTOTYPE] = out[PROTOTYPE];
|
558
|
+
} else exp = type & PROTO && isFunction(out) ? ctx(call, out) : out;
|
559
|
+
// extend global
|
560
|
+
if(framework && target && !own){
|
561
|
+
if(isGlobal || type & SIMPLE)target[key] = out;
|
562
|
+
else delete target[key] && hidden(target, key, out);
|
563
|
+
}
|
564
|
+
// export
|
565
|
+
if(exports[key] != out)hidden(exports, key, exp);
|
566
|
+
}
|
567
|
+
}
|
568
|
+
// CommonJS export
|
569
|
+
if(typeof module != 'undefined' && module.exports)module.exports = core;
|
570
|
+
// RequireJS export
|
571
|
+
else if(isFunction(define) && define.amd)define(function(){return core});
|
572
|
+
// Export to global object
|
573
|
+
else exportGlobal = true;
|
574
|
+
if(exportGlobal || framework){
|
575
|
+
core.noConflict = function(){
|
576
|
+
global.core = old;
|
577
|
+
return core;
|
578
|
+
}
|
579
|
+
global.core = core;
|
580
|
+
}
|
581
|
+
|
582
|
+
/******************************************************************************
|
583
|
+
* Module : es6.symbol *
|
584
|
+
******************************************************************************/
|
585
|
+
|
586
|
+
// ECMAScript 6 symbols shim
|
587
|
+
!function(TAG, SymbolRegistry, AllSymbols, setter){
|
588
|
+
// 19.4.1.1 Symbol([description])
|
589
|
+
if(!isNative(Symbol)){
|
590
|
+
Symbol = function(description){
|
591
|
+
assert(!(this instanceof Symbol), SYMBOL + ' is not a ' + CONSTRUCTOR);
|
592
|
+
var tag = uid(description)
|
593
|
+
, sym = set(create(Symbol[PROTOTYPE]), TAG, tag);
|
594
|
+
AllSymbols[tag] = sym;
|
595
|
+
DESC && setter && defineProperty(ObjectProto, tag, {
|
596
|
+
configurable: true,
|
597
|
+
set: function(value){
|
598
|
+
hidden(this, tag, value);
|
599
|
+
}
|
600
|
+
});
|
601
|
+
return sym;
|
602
|
+
}
|
603
|
+
hidden(Symbol[PROTOTYPE], TO_STRING, function(){
|
604
|
+
return this[TAG];
|
605
|
+
});
|
606
|
+
}
|
607
|
+
$define(GLOBAL + WRAP, {Symbol: Symbol});
|
608
|
+
|
609
|
+
var symbolStatics = {
|
610
|
+
// 19.4.2.1 Symbol.for(key)
|
611
|
+
'for': function(key){
|
612
|
+
return has(SymbolRegistry, key += '')
|
613
|
+
? SymbolRegistry[key]
|
614
|
+
: SymbolRegistry[key] = Symbol(key);
|
615
|
+
},
|
616
|
+
// 19.4.2.4 Symbol.iterator
|
617
|
+
iterator: SYMBOL_ITERATOR,
|
618
|
+
// 19.4.2.5 Symbol.keyFor(sym)
|
619
|
+
keyFor: part.call(keyOf, SymbolRegistry),
|
620
|
+
// 19.4.2.10 Symbol.species
|
621
|
+
species: SYMBOL_SPECIES,
|
622
|
+
// 19.4.2.13 Symbol.toStringTag
|
623
|
+
toStringTag: SYMBOL_TAG = getWellKnownSymbol(TO_STRING_TAG, true),
|
624
|
+
// 19.4.2.14 Symbol.unscopables
|
625
|
+
unscopables: SYMBOL_UNSCOPABLES,
|
626
|
+
pure: safeSymbol,
|
627
|
+
set: set,
|
628
|
+
useSetter: function(){setter = true},
|
629
|
+
useSimple: function(){setter = false}
|
630
|
+
};
|
631
|
+
// 19.4.2.2 Symbol.hasInstance
|
632
|
+
// 19.4.2.3 Symbol.isConcatSpreadable
|
633
|
+
// 19.4.2.6 Symbol.match
|
634
|
+
// 19.4.2.8 Symbol.replace
|
635
|
+
// 19.4.2.9 Symbol.search
|
636
|
+
// 19.4.2.11 Symbol.split
|
637
|
+
// 19.4.2.12 Symbol.toPrimitive
|
638
|
+
forEach.call(array('hasInstance,isConcatSpreadable,match,replace,search,split,toPrimitive'),
|
639
|
+
function(it){
|
640
|
+
symbolStatics[it] = getWellKnownSymbol(it);
|
641
|
+
}
|
642
|
+
);
|
643
|
+
$define(STATIC, SYMBOL, symbolStatics);
|
644
|
+
|
645
|
+
setToStringTag(Symbol, SYMBOL);
|
646
|
+
|
647
|
+
$define(STATIC + FORCED * !isNative(Symbol), OBJECT, {
|
648
|
+
// 19.1.2.7 Object.getOwnPropertyNames(O)
|
649
|
+
getOwnPropertyNames: function(it){
|
650
|
+
var names = getNames(toObject(it)), result = [], key, i = 0;
|
651
|
+
while(names.length > i)has(AllSymbols, key = names[i++]) || result.push(key);
|
652
|
+
return result;
|
653
|
+
},
|
654
|
+
// 19.1.2.8 Object.getOwnPropertySymbols(O)
|
655
|
+
getOwnPropertySymbols: function(it){
|
656
|
+
var names = getNames(toObject(it)), result = [], key, i = 0;
|
657
|
+
while(names.length > i)has(AllSymbols, key = names[i++]) && result.push(AllSymbols[key]);
|
658
|
+
return result;
|
659
|
+
}
|
660
|
+
});
|
661
|
+
}(safeSymbol('tag'), {}, {}, true);
|
662
|
+
|
663
|
+
/******************************************************************************
|
664
|
+
* Module : es6.object *
|
665
|
+
******************************************************************************/
|
666
|
+
|
667
|
+
!function(tmp){
|
668
|
+
var objectStatic = {
|
669
|
+
// 19.1.3.1 Object.assign(target, source)
|
670
|
+
assign: assign,
|
671
|
+
// 19.1.3.10 Object.is(value1, value2)
|
672
|
+
is: function(x, y){
|
673
|
+
return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
|
674
|
+
}
|
675
|
+
};
|
676
|
+
// 19.1.3.19 Object.setPrototypeOf(O, proto)
|
677
|
+
// Works with __proto__ only. Old v8 can't works with null proto objects.
|
678
|
+
'__proto__' in ObjectProto && function(buggy, set){
|
679
|
+
try {
|
680
|
+
set = ctx(call, getOwnDescriptor(ObjectProto, '__proto__').set, 2);
|
681
|
+
set({}, ArrayProto);
|
682
|
+
} catch(e){ buggy = true }
|
683
|
+
objectStatic.setPrototypeOf = setPrototypeOf = setPrototypeOf || function(O, proto){
|
684
|
+
assertObject(O);
|
685
|
+
assert(proto === null || isObject(proto), proto, ": can't set as prototype!");
|
686
|
+
if(buggy)O.__proto__ = proto;
|
687
|
+
else set(O, proto);
|
688
|
+
return O;
|
689
|
+
}
|
690
|
+
}();
|
691
|
+
$define(STATIC, OBJECT, objectStatic);
|
692
|
+
|
693
|
+
if(framework){
|
694
|
+
// 19.1.3.6 Object.prototype.toString()
|
695
|
+
tmp[SYMBOL_TAG] = DOT;
|
696
|
+
if(cof(tmp) != DOT)hidden(ObjectProto, TO_STRING, function(){
|
697
|
+
return '[object ' + classof(this) + ']';
|
698
|
+
});
|
699
|
+
}
|
700
|
+
|
701
|
+
// 20.2.1.9 Math[@@toStringTag]
|
702
|
+
setToStringTag(Math, MATH, true);
|
703
|
+
// 24.3.3 JSON[@@toStringTag]
|
704
|
+
setToStringTag(global.JSON, 'JSON', true);
|
705
|
+
}({});
|
706
|
+
|
707
|
+
/******************************************************************************
|
708
|
+
* Module : es6.object.statics-accept-primitives *
|
709
|
+
******************************************************************************/
|
710
|
+
|
711
|
+
!function(){
|
712
|
+
// Object static methods accept primitives
|
713
|
+
function wrapObjectMethod(key, MODE){
|
714
|
+
var fn = Object[key]
|
715
|
+
, exp = core[OBJECT][key]
|
716
|
+
, f = 0
|
717
|
+
, o = {};
|
718
|
+
if(!exp || isNative(exp)){
|
719
|
+
o[key] = MODE == 1 ? function(it){
|
720
|
+
return isObject(it) ? fn(it) : it;
|
721
|
+
} : MODE == 2 ? function(it){
|
722
|
+
return isObject(it) ? fn(it) : true;
|
723
|
+
} : MODE == 3 ? function(it){
|
724
|
+
return isObject(it) ? fn(it) : false;
|
725
|
+
} : MODE == 4 ? function(it, key){
|
726
|
+
return fn(toObject(it), key);
|
727
|
+
} : function(it){
|
728
|
+
return fn(toObject(it));
|
729
|
+
};
|
730
|
+
try { fn(DOT) }
|
731
|
+
catch(e){ f = 1 }
|
732
|
+
$define(STATIC + FORCED * f, OBJECT, o);
|
733
|
+
}
|
734
|
+
}
|
735
|
+
wrapObjectMethod('freeze', 1);
|
736
|
+
wrapObjectMethod('seal', 1);
|
737
|
+
wrapObjectMethod('preventExtensions', 1);
|
738
|
+
wrapObjectMethod('isFrozen', 2);
|
739
|
+
wrapObjectMethod('isSealed', 2);
|
740
|
+
wrapObjectMethod('isExtensible', 3);
|
741
|
+
wrapObjectMethod('getOwnPropertyDescriptor', 4);
|
742
|
+
wrapObjectMethod('getPrototypeOf');
|
743
|
+
wrapObjectMethod('keys');
|
744
|
+
wrapObjectMethod('getOwnPropertyNames');
|
745
|
+
}();
|
746
|
+
|
747
|
+
/******************************************************************************
|
748
|
+
* Module : es6.function *
|
749
|
+
******************************************************************************/
|
750
|
+
|
751
|
+
!function(NAME){
|
752
|
+
// 19.2.4.2 name
|
753
|
+
NAME in FunctionProto || defineProperty(FunctionProto, NAME, {
|
754
|
+
configurable: true,
|
755
|
+
get: function(){
|
756
|
+
var match = String(this).match(/^\s*function ([^ (]*)/)
|
757
|
+
, name = match ? match[1] : '';
|
758
|
+
has(this, NAME) || defineProperty(this, NAME, descriptor(5, name));
|
759
|
+
return name;
|
760
|
+
},
|
761
|
+
set: function(value){
|
762
|
+
has(this, NAME) || defineProperty(this, NAME, descriptor(0, value));
|
763
|
+
}
|
764
|
+
});
|
765
|
+
}('name');
|
766
|
+
|
767
|
+
/******************************************************************************
|
768
|
+
* Module : es6.number.constructor *
|
769
|
+
******************************************************************************/
|
770
|
+
|
771
|
+
Number('0o1') && Number('0b1') || function(_Number, NumberProto){
|
772
|
+
function toNumber(it){
|
773
|
+
if(isObject(it))it = toPrimitive(it);
|
774
|
+
if(typeof it == 'string' && it.length > 2 && it.charCodeAt(0) == 48){
|
775
|
+
var binary = false;
|
776
|
+
switch(it.charCodeAt(1)){
|
777
|
+
case 66 : case 98 : binary = true;
|
778
|
+
case 79 : case 111 : return parseInt(it.slice(2), binary ? 2 : 8);
|
779
|
+
}
|
780
|
+
} return +it;
|
781
|
+
}
|
782
|
+
function toPrimitive(it){
|
783
|
+
var fn, val;
|
784
|
+
if(isFunction(fn = it.valueOf) && !isObject(val = fn.call(it)))return val;
|
785
|
+
if(isFunction(fn = it[TO_STRING]) && !isObject(val = fn.call(it)))return val;
|
786
|
+
throw TypeError("Can't convert object to number");
|
787
|
+
}
|
788
|
+
Number = function Number(it){
|
789
|
+
return this instanceof Number ? new _Number(toNumber(it)) : toNumber(it);
|
790
|
+
}
|
791
|
+
forEach.call(DESC ? getNames(_Number)
|
792
|
+
: array('MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY'), function(key){
|
793
|
+
key in Number || defineProperty(Number, key, getOwnDescriptor(_Number, key));
|
794
|
+
});
|
795
|
+
Number[PROTOTYPE] = NumberProto;
|
796
|
+
NumberProto[CONSTRUCTOR] = Number;
|
797
|
+
hidden(global, NUMBER, Number);
|
798
|
+
}(Number, Number[PROTOTYPE]);
|
799
|
+
|
800
|
+
/******************************************************************************
|
801
|
+
* Module : es6.number *
|
802
|
+
******************************************************************************/
|
803
|
+
|
804
|
+
!function(isInteger){
|
805
|
+
$define(STATIC, NUMBER, {
|
806
|
+
// 20.1.2.1 Number.EPSILON
|
807
|
+
EPSILON: pow(2, -52),
|
808
|
+
// 20.1.2.2 Number.isFinite(number)
|
809
|
+
isFinite: function(it){
|
810
|
+
return typeof it == 'number' && isFinite(it);
|
811
|
+
},
|
812
|
+
// 20.1.2.3 Number.isInteger(number)
|
813
|
+
isInteger: isInteger,
|
814
|
+
// 20.1.2.4 Number.isNaN(number)
|
815
|
+
isNaN: sameNaN,
|
816
|
+
// 20.1.2.5 Number.isSafeInteger(number)
|
817
|
+
isSafeInteger: function(number){
|
818
|
+
return isInteger(number) && abs(number) <= MAX_SAFE_INTEGER;
|
819
|
+
},
|
820
|
+
// 20.1.2.6 Number.MAX_SAFE_INTEGER
|
821
|
+
MAX_SAFE_INTEGER: MAX_SAFE_INTEGER,
|
822
|
+
// 20.1.2.10 Number.MIN_SAFE_INTEGER
|
823
|
+
MIN_SAFE_INTEGER: -MAX_SAFE_INTEGER,
|
824
|
+
// 20.1.2.12 Number.parseFloat(string)
|
825
|
+
parseFloat: parseFloat,
|
826
|
+
// 20.1.2.13 Number.parseInt(string, radix)
|
827
|
+
parseInt: parseInt
|
828
|
+
});
|
829
|
+
// 20.1.2.3 Number.isInteger(number)
|
830
|
+
}(Number.isInteger || function(it){
|
831
|
+
return !isObject(it) && isFinite(it) && floor(it) === it;
|
832
|
+
});
|
833
|
+
|
834
|
+
/******************************************************************************
|
835
|
+
* Module : es6.math *
|
836
|
+
******************************************************************************/
|
837
|
+
|
838
|
+
// ECMAScript 6 shim
|
839
|
+
!function(){
|
840
|
+
// 20.2.2.28 Math.sign(x)
|
841
|
+
var E = Math.E
|
842
|
+
, exp = Math.exp
|
843
|
+
, log = Math.log
|
844
|
+
, sqrt = Math.sqrt
|
845
|
+
, sign = Math.sign || function(x){
|
846
|
+
return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
|
847
|
+
};
|
848
|
+
|
849
|
+
// 20.2.2.5 Math.asinh(x)
|
850
|
+
function asinh(x){
|
851
|
+
return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1));
|
852
|
+
}
|
853
|
+
// 20.2.2.14 Math.expm1(x)
|
854
|
+
function expm1(x){
|
855
|
+
return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : exp(x) - 1;
|
856
|
+
}
|
857
|
+
|
858
|
+
$define(STATIC, MATH, {
|
859
|
+
// 20.2.2.3 Math.acosh(x)
|
860
|
+
acosh: function(x){
|
861
|
+
return (x = +x) < 1 ? NaN : isFinite(x) ? log(x / E + sqrt(x + 1) * sqrt(x - 1) / E) + 1 : x;
|
862
|
+
},
|
863
|
+
// 20.2.2.5 Math.asinh(x)
|
864
|
+
asinh: asinh,
|
865
|
+
// 20.2.2.7 Math.atanh(x)
|
866
|
+
atanh: function(x){
|
867
|
+
return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2;
|
868
|
+
},
|
869
|
+
// 20.2.2.9 Math.cbrt(x)
|
870
|
+
cbrt: function(x){
|
871
|
+
return sign(x = +x) * pow(abs(x), 1 / 3);
|
872
|
+
},
|
873
|
+
// 20.2.2.11 Math.clz32(x)
|
874
|
+
clz32: function(x){
|
875
|
+
return (x >>>= 0) ? 32 - x[TO_STRING](2).length : 32;
|
876
|
+
},
|
877
|
+
// 20.2.2.12 Math.cosh(x)
|
878
|
+
cosh: function(x){
|
879
|
+
return (exp(x = +x) + exp(-x)) / 2;
|
880
|
+
},
|
881
|
+
// 20.2.2.14 Math.expm1(x)
|
882
|
+
expm1: expm1,
|
883
|
+
// 20.2.2.16 Math.fround(x)
|
884
|
+
// TODO: fallback for IE9-
|
885
|
+
fround: function(x){
|
886
|
+
return new Float32Array([x])[0];
|
887
|
+
},
|
888
|
+
// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
|
889
|
+
hypot: function(value1, value2){
|
890
|
+
var sum = 0
|
891
|
+
, len1 = arguments.length
|
892
|
+
, len2 = len1
|
893
|
+
, args = Array(len1)
|
894
|
+
, larg = -Infinity
|
895
|
+
, arg;
|
896
|
+
while(len1--){
|
897
|
+
arg = args[len1] = +arguments[len1];
|
898
|
+
if(arg == Infinity || arg == -Infinity)return Infinity;
|
899
|
+
if(arg > larg)larg = arg;
|
900
|
+
}
|
901
|
+
larg = arg || 1;
|
902
|
+
while(len2--)sum += pow(args[len2] / larg, 2);
|
903
|
+
return larg * sqrt(sum);
|
904
|
+
},
|
905
|
+
// 20.2.2.18 Math.imul(x, y)
|
906
|
+
imul: function(x, y){
|
907
|
+
var UInt16 = 0xffff
|
908
|
+
, xn = +x
|
909
|
+
, yn = +y
|
910
|
+
, xl = UInt16 & xn
|
911
|
+
, yl = UInt16 & yn;
|
912
|
+
return 0 | xl * yl + ((UInt16 & xn >>> 16) * yl + xl * (UInt16 & yn >>> 16) << 16 >>> 0);
|
913
|
+
},
|
914
|
+
// 20.2.2.20 Math.log1p(x)
|
915
|
+
log1p: function(x){
|
916
|
+
return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : log(1 + x);
|
917
|
+
},
|
918
|
+
// 20.2.2.21 Math.log10(x)
|
919
|
+
log10: function(x){
|
920
|
+
return log(x) / Math.LN10;
|
921
|
+
},
|
922
|
+
// 20.2.2.22 Math.log2(x)
|
923
|
+
log2: function(x){
|
924
|
+
return log(x) / Math.LN2;
|
925
|
+
},
|
926
|
+
// 20.2.2.28 Math.sign(x)
|
927
|
+
sign: sign,
|
928
|
+
// 20.2.2.30 Math.sinh(x)
|
929
|
+
sinh: function(x){
|
930
|
+
return (abs(x = +x) < 1) ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2);
|
931
|
+
},
|
932
|
+
// 20.2.2.33 Math.tanh(x)
|
933
|
+
tanh: function(x){
|
934
|
+
var a = expm1(x = +x)
|
935
|
+
, b = expm1(-x);
|
936
|
+
return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
|
937
|
+
},
|
938
|
+
// 20.2.2.34 Math.trunc(x)
|
939
|
+
trunc: trunc
|
940
|
+
});
|
941
|
+
}();
|
942
|
+
|
943
|
+
/******************************************************************************
|
944
|
+
* Module : es6.string *
|
945
|
+
******************************************************************************/
|
946
|
+
|
947
|
+
!function(fromCharCode){
|
948
|
+
function assertNotRegExp(it){
|
949
|
+
if(cof(it) == REGEXP)throw TypeError();
|
950
|
+
}
|
951
|
+
|
952
|
+
$define(STATIC, STRING, {
|
953
|
+
// 21.1.2.2 String.fromCodePoint(...codePoints)
|
954
|
+
fromCodePoint: function(x){
|
955
|
+
var res = []
|
956
|
+
, len = arguments.length
|
957
|
+
, i = 0
|
958
|
+
, code
|
959
|
+
while(len > i){
|
960
|
+
code = +arguments[i++];
|
961
|
+
if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
|
962
|
+
res.push(code < 0x10000
|
963
|
+
? fromCharCode(code)
|
964
|
+
: fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
|
965
|
+
);
|
966
|
+
} return res.join('');
|
967
|
+
},
|
968
|
+
// 21.1.2.4 String.raw(callSite, ...substitutions)
|
969
|
+
raw: function(callSite){
|
970
|
+
var raw = toObject(callSite.raw)
|
971
|
+
, len = toLength(raw.length)
|
972
|
+
, sln = arguments.length
|
973
|
+
, res = []
|
974
|
+
, i = 0;
|
975
|
+
while(len > i){
|
976
|
+
res.push(String(raw[i++]));
|
977
|
+
if(i < sln)res.push(String(arguments[i]));
|
978
|
+
} return res.join('');
|
979
|
+
}
|
980
|
+
});
|
981
|
+
|
982
|
+
$define(PROTO, STRING, {
|
983
|
+
// 21.1.3.3 String.prototype.codePointAt(pos)
|
984
|
+
codePointAt: createPointAt(false),
|
985
|
+
// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
|
986
|
+
endsWith: function(searchString /*, endPosition = @length */){
|
987
|
+
assertNotRegExp(searchString);
|
988
|
+
var that = String(assertDefined(this))
|
989
|
+
, endPosition = arguments[1]
|
990
|
+
, len = toLength(that.length)
|
991
|
+
, end = endPosition === undefined ? len : min(toLength(endPosition), len);
|
992
|
+
searchString += '';
|
993
|
+
return that.slice(end - searchString.length, end) === searchString;
|
994
|
+
},
|
995
|
+
// 21.1.3.7 String.prototype.includes(searchString, position = 0)
|
996
|
+
includes: function(searchString /*, position = 0 */){
|
997
|
+
assertNotRegExp(searchString);
|
998
|
+
return !!~String(assertDefined(this)).indexOf(searchString, arguments[1]);
|
999
|
+
},
|
1000
|
+
// 21.1.3.13 String.prototype.repeat(count)
|
1001
|
+
repeat: function(count){
|
1002
|
+
var str = String(assertDefined(this))
|
1003
|
+
, res = ''
|
1004
|
+
, n = toInteger(count);
|
1005
|
+
if(0 > n || n == Infinity)throw RangeError("Count can't be negative");
|
1006
|
+
for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
|
1007
|
+
return res;
|
1008
|
+
},
|
1009
|
+
// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
|
1010
|
+
startsWith: function(searchString /*, position = 0 */){
|
1011
|
+
assertNotRegExp(searchString);
|
1012
|
+
var that = String(assertDefined(this))
|
1013
|
+
, index = toLength(min(arguments[1], that.length));
|
1014
|
+
searchString += '';
|
1015
|
+
return that.slice(index, index + searchString.length) === searchString;
|
1016
|
+
}
|
1017
|
+
});
|
1018
|
+
}(String.fromCharCode);
|
1019
|
+
|
1020
|
+
/******************************************************************************
|
1021
|
+
* Module : es6.array *
|
1022
|
+
******************************************************************************/
|
1023
|
+
|
1024
|
+
!function(){
|
1025
|
+
$define(STATIC, ARRAY, {
|
1026
|
+
// 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
|
1027
|
+
from: function(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
|
1028
|
+
var O = Object(assertDefined(arrayLike))
|
1029
|
+
, mapfn = arguments[1]
|
1030
|
+
, mapping = mapfn !== undefined
|
1031
|
+
, f = mapping ? ctx(mapfn, arguments[2], 2) : undefined
|
1032
|
+
, index = 0
|
1033
|
+
, length, result, iter, step;
|
1034
|
+
if(isIterable(O))for(iter = getIterator(O), result = new (generic(this, Array)); !(step = iter.next()).done; index++){
|
1035
|
+
result[index] = mapping ? f(step.value, index) : step.value;
|
1036
|
+
} else for(result = new (generic(this, Array))(length = toLength(O.length)); length > index; index++){
|
1037
|
+
result[index] = mapping ? f(O[index], index) : O[index];
|
1038
|
+
}
|
1039
|
+
result.length = index;
|
1040
|
+
return result;
|
1041
|
+
},
|
1042
|
+
// 22.1.2.3 Array.of( ...items)
|
1043
|
+
of: function(/* ...args */){
|
1044
|
+
var index = 0
|
1045
|
+
, length = arguments.length
|
1046
|
+
, result = new (generic(this, Array))(length);
|
1047
|
+
while(length > index)result[index] = arguments[index++];
|
1048
|
+
result.length = length;
|
1049
|
+
return result;
|
1050
|
+
}
|
1051
|
+
});
|
1052
|
+
|
1053
|
+
$define(PROTO, ARRAY, {
|
1054
|
+
// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
|
1055
|
+
copyWithin: function(target /* = 0 */, start /* = 0, end = @length */){
|
1056
|
+
var O = Object(assertDefined(this))
|
1057
|
+
, len = toLength(O.length)
|
1058
|
+
, to = toIndex(target, len)
|
1059
|
+
, from = toIndex(start, len)
|
1060
|
+
, end = arguments[2]
|
1061
|
+
, fin = end === undefined ? len : toIndex(end, len)
|
1062
|
+
, count = min(fin - from, len - to)
|
1063
|
+
, inc = 1;
|
1064
|
+
if(from < to && to < from + count){
|
1065
|
+
inc = -1;
|
1066
|
+
from = from + count - 1;
|
1067
|
+
to = to + count - 1;
|
1068
|
+
}
|
1069
|
+
while(count-- > 0){
|
1070
|
+
if(from in O)O[to] = O[from];
|
1071
|
+
else delete O[to];
|
1072
|
+
to += inc;
|
1073
|
+
from += inc;
|
1074
|
+
} return O;
|
1075
|
+
},
|
1076
|
+
// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
|
1077
|
+
fill: function(value /*, start = 0, end = @length */){
|
1078
|
+
var O = Object(assertDefined(this))
|
1079
|
+
, length = toLength(O.length)
|
1080
|
+
, index = toIndex(arguments[1], length)
|
1081
|
+
, end = arguments[2]
|
1082
|
+
, endPos = end === undefined ? length : toIndex(end, length);
|
1083
|
+
while(endPos > index)O[index++] = value;
|
1084
|
+
return O;
|
1085
|
+
},
|
1086
|
+
// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
|
1087
|
+
find: createArrayMethod(5),
|
1088
|
+
// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
|
1089
|
+
findIndex: createArrayMethod(6)
|
1090
|
+
});
|
1091
|
+
|
1092
|
+
if(framework){
|
1093
|
+
// 22.1.3.31 Array.prototype[@@unscopables]
|
1094
|
+
forEach.call(array('find,findIndex,fill,copyWithin,entries,keys,values'), function(it){
|
1095
|
+
ArrayUnscopables[it] = true;
|
1096
|
+
});
|
1097
|
+
SYMBOL_UNSCOPABLES in ArrayProto || hidden(ArrayProto, SYMBOL_UNSCOPABLES, ArrayUnscopables);
|
1098
|
+
}
|
1099
|
+
|
1100
|
+
setSpecies(Array);
|
1101
|
+
}();
|
1102
|
+
|
1103
|
+
/******************************************************************************
|
1104
|
+
* Module : es6.iterators *
|
1105
|
+
******************************************************************************/
|
1106
|
+
|
1107
|
+
!function(at){
|
1108
|
+
// 22.1.3.4 Array.prototype.entries()
|
1109
|
+
// 22.1.3.13 Array.prototype.keys()
|
1110
|
+
// 22.1.3.29 Array.prototype.values()
|
1111
|
+
// 22.1.3.30 Array.prototype[@@iterator]()
|
1112
|
+
defineStdIterators(Array, ARRAY, function(iterated, kind){
|
1113
|
+
set(this, ITER, {o: toObject(iterated), i: 0, k: kind});
|
1114
|
+
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
|
1115
|
+
}, function(){
|
1116
|
+
var iter = this[ITER]
|
1117
|
+
, O = iter.o
|
1118
|
+
, kind = iter.k
|
1119
|
+
, index = iter.i++;
|
1120
|
+
if(!O || index >= O.length){
|
1121
|
+
iter.o = undefined;
|
1122
|
+
return iterResult(1);
|
1123
|
+
}
|
1124
|
+
if(kind == KEY) return iterResult(0, index);
|
1125
|
+
if(kind == VALUE)return iterResult(0, O[index]);
|
1126
|
+
return iterResult(0, [index, O[index]]);
|
1127
|
+
}, VALUE);
|
1128
|
+
|
1129
|
+
// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
|
1130
|
+
Iterators[ARGUMENTS] = Iterators[ARRAY];
|
1131
|
+
|
1132
|
+
// 21.1.3.27 String.prototype[@@iterator]()
|
1133
|
+
defineStdIterators(String, STRING, function(iterated){
|
1134
|
+
set(this, ITER, {o: String(iterated), i: 0});
|
1135
|
+
// 21.1.5.2.1 %StringIteratorPrototype%.next()
|
1136
|
+
}, function(){
|
1137
|
+
var iter = this[ITER]
|
1138
|
+
, O = iter.o
|
1139
|
+
, index = iter.i
|
1140
|
+
, point;
|
1141
|
+
if(index >= O.length)return iterResult(1);
|
1142
|
+
point = at.call(O, index);
|
1143
|
+
iter.i += point.length;
|
1144
|
+
return iterResult(0, point);
|
1145
|
+
});
|
1146
|
+
}(createPointAt(true));
|
1147
|
+
|
1148
|
+
/******************************************************************************
|
1149
|
+
* Module : es6.regexp *
|
1150
|
+
******************************************************************************/
|
1151
|
+
|
1152
|
+
!function(RegExpProto, _RegExp){
|
1153
|
+
function assertRegExpWrapper(fn){
|
1154
|
+
return function(){
|
1155
|
+
assert(cof(this) === REGEXP);
|
1156
|
+
return fn(this);
|
1157
|
+
}
|
1158
|
+
}
|
1159
|
+
|
1160
|
+
// RegExp allows a regex with flags as the pattern
|
1161
|
+
if(DESC && !function(){try{return RegExp(/a/g, 'i') == '/a/i'}catch(e){}}()){
|
1162
|
+
RegExp = function RegExp(pattern, flags){
|
1163
|
+
return new _RegExp(cof(pattern) == REGEXP && flags !== undefined
|
1164
|
+
? pattern.source : pattern, flags);
|
1165
|
+
}
|
1166
|
+
forEach.call(getNames(_RegExp), function(key){
|
1167
|
+
key in RegExp || defineProperty(RegExp, key, {
|
1168
|
+
configurable: true,
|
1169
|
+
get: function(){ return _RegExp[key] },
|
1170
|
+
set: function(it){ _RegExp[key] = it }
|
1171
|
+
});
|
1172
|
+
});
|
1173
|
+
RegExpProto[CONSTRUCTOR] = RegExp;
|
1174
|
+
RegExp[PROTOTYPE] = RegExpProto;
|
1175
|
+
hidden(global, REGEXP, RegExp);
|
1176
|
+
}
|
1177
|
+
|
1178
|
+
// 21.2.5.3 get RegExp.prototype.flags()
|
1179
|
+
if(/./g.flags != 'g')defineProperty(RegExpProto, 'flags', {
|
1180
|
+
configurable: true,
|
1181
|
+
get: assertRegExpWrapper(createReplacer(/^.*\/(\w*)$/, '$1', true))
|
1182
|
+
});
|
1183
|
+
|
1184
|
+
// 21.2.5.12 get RegExp.prototype.sticky()
|
1185
|
+
// 21.2.5.15 get RegExp.prototype.unicode()
|
1186
|
+
forEach.call(array('sticky,unicode'), function(key){
|
1187
|
+
key in /./ || defineProperty(RegExpProto, key, DESC ? {
|
1188
|
+
configurable: true,
|
1189
|
+
get: assertRegExpWrapper(function(){
|
1190
|
+
return false;
|
1191
|
+
})
|
1192
|
+
} : descriptor(5, false));
|
1193
|
+
});
|
1194
|
+
|
1195
|
+
setSpecies(RegExp);
|
1196
|
+
}(RegExp[PROTOTYPE], RegExp);
|
1197
|
+
|
1198
|
+
/******************************************************************************
|
1199
|
+
* Module : web.immediate *
|
1200
|
+
******************************************************************************/
|
1201
|
+
|
1202
|
+
// setImmediate shim
|
1203
|
+
// Node.js 0.9+ & IE10+ has setImmediate, else:
|
1204
|
+
isFunction(setImmediate) && isFunction(clearImmediate) || function(ONREADYSTATECHANGE){
|
1205
|
+
var postMessage = global.postMessage
|
1206
|
+
, addEventListener = global.addEventListener
|
1207
|
+
, MessageChannel = global.MessageChannel
|
1208
|
+
, counter = 0
|
1209
|
+
, queue = {}
|
1210
|
+
, defer, channel, port;
|
1211
|
+
setImmediate = function(fn){
|
1212
|
+
var args = [], i = 1;
|
1213
|
+
while(arguments.length > i)args.push(arguments[i++]);
|
1214
|
+
queue[++counter] = function(){
|
1215
|
+
invoke(isFunction(fn) ? fn : Function(fn), args);
|
1216
|
+
}
|
1217
|
+
defer(counter);
|
1218
|
+
return counter;
|
1219
|
+
}
|
1220
|
+
clearImmediate = function(id){
|
1221
|
+
delete queue[id];
|
1222
|
+
}
|
1223
|
+
function run(id){
|
1224
|
+
if(has(queue, id)){
|
1225
|
+
var fn = queue[id];
|
1226
|
+
delete queue[id];
|
1227
|
+
fn();
|
1228
|
+
}
|
1229
|
+
}
|
1230
|
+
function listner(event){
|
1231
|
+
run(event.data);
|
1232
|
+
}
|
1233
|
+
// Node.js 0.8-
|
1234
|
+
if(NODE){
|
1235
|
+
defer = function(id){
|
1236
|
+
nextTick(part.call(run, id));
|
1237
|
+
}
|
1238
|
+
// Modern browsers, skip implementation for WebWorkers
|
1239
|
+
// IE8 has postMessage, but it's sync & typeof its postMessage is object
|
1240
|
+
} else if(addEventListener && isFunction(postMessage) && !global.importScripts){
|
1241
|
+
defer = function(id){
|
1242
|
+
postMessage(id, '*');
|
1243
|
+
}
|
1244
|
+
addEventListener('message', listner, false);
|
1245
|
+
// WebWorkers
|
1246
|
+
} else if(isFunction(MessageChannel)){
|
1247
|
+
channel = new MessageChannel;
|
1248
|
+
port = channel.port2;
|
1249
|
+
channel.port1.onmessage = listner;
|
1250
|
+
defer = ctx(port.postMessage, port, 1);
|
1251
|
+
// IE8-
|
1252
|
+
} else if(document && ONREADYSTATECHANGE in document[CREATE_ELEMENT]('script')){
|
1253
|
+
defer = function(id){
|
1254
|
+
html.appendChild(document[CREATE_ELEMENT]('script'))[ONREADYSTATECHANGE] = function(){
|
1255
|
+
html.removeChild(this);
|
1256
|
+
run(id);
|
1257
|
+
}
|
1258
|
+
}
|
1259
|
+
// Rest old browsers
|
1260
|
+
} else {
|
1261
|
+
defer = function(id){
|
1262
|
+
setTimeout(run, 0, id);
|
1263
|
+
}
|
1264
|
+
}
|
1265
|
+
}('onreadystatechange');
|
1266
|
+
$define(GLOBAL + BIND, {
|
1267
|
+
setImmediate: setImmediate,
|
1268
|
+
clearImmediate: clearImmediate
|
1269
|
+
});
|
1270
|
+
|
1271
|
+
/******************************************************************************
|
1272
|
+
* Module : es6.promise *
|
1273
|
+
******************************************************************************/
|
1274
|
+
|
1275
|
+
// ES6 promises shim
|
1276
|
+
// Based on https://github.com/getify/native-promise-only/
|
1277
|
+
!function(Promise, test){
|
1278
|
+
isFunction(Promise) && isFunction(Promise.resolve)
|
1279
|
+
&& Promise.resolve(test = new Promise(function(){})) == test
|
1280
|
+
|| function(asap, DEF){
|
1281
|
+
function isThenable(o){
|
1282
|
+
var then;
|
1283
|
+
if(isObject(o))then = o.then;
|
1284
|
+
return isFunction(then) ? then : false;
|
1285
|
+
}
|
1286
|
+
function notify(def){
|
1287
|
+
var chain = def.chain;
|
1288
|
+
chain.length && asap(function(){
|
1289
|
+
var msg = def.msg
|
1290
|
+
, ok = def.state == 1
|
1291
|
+
, i = 0;
|
1292
|
+
while(chain.length > i)!function(react){
|
1293
|
+
var cb = ok ? react.ok : react.fail
|
1294
|
+
, ret, then;
|
1295
|
+
try {
|
1296
|
+
if(cb){
|
1297
|
+
ret = cb === true ? msg : cb(msg);
|
1298
|
+
if(ret === react.P){
|
1299
|
+
react.rej(TypeError(PROMISE + '-chain cycle'));
|
1300
|
+
} else if(then = isThenable(ret)){
|
1301
|
+
then.call(ret, react.res, react.rej);
|
1302
|
+
} else react.res(ret);
|
1303
|
+
} else react.rej(msg);
|
1304
|
+
} catch(err){
|
1305
|
+
react.rej(err);
|
1306
|
+
}
|
1307
|
+
}(chain[i++]);
|
1308
|
+
chain.length = 0;
|
1309
|
+
});
|
1310
|
+
}
|
1311
|
+
function resolve(msg){
|
1312
|
+
var def = this
|
1313
|
+
, then, wrapper;
|
1314
|
+
if(def.done)return;
|
1315
|
+
def.done = true;
|
1316
|
+
def = def.def || def; // unwrap
|
1317
|
+
try {
|
1318
|
+
if(then = isThenable(msg)){
|
1319
|
+
wrapper = {def: def, done: false}; // wrap
|
1320
|
+
then.call(msg, ctx(resolve, wrapper, 1), ctx(reject, wrapper, 1));
|
1321
|
+
} else {
|
1322
|
+
def.msg = msg;
|
1323
|
+
def.state = 1;
|
1324
|
+
notify(def);
|
1325
|
+
}
|
1326
|
+
} catch(err){
|
1327
|
+
reject.call(wrapper || {def: def, done: false}, err); // wrap
|
1328
|
+
}
|
1329
|
+
}
|
1330
|
+
function reject(msg){
|
1331
|
+
var def = this;
|
1332
|
+
if(def.done)return;
|
1333
|
+
def.done = true;
|
1334
|
+
def = def.def || def; // unwrap
|
1335
|
+
def.msg = msg;
|
1336
|
+
def.state = 2;
|
1337
|
+
notify(def);
|
1338
|
+
}
|
1339
|
+
function getConstructor(C){
|
1340
|
+
var S = assertObject(C)[SYMBOL_SPECIES];
|
1341
|
+
return S != undefined ? S : C;
|
1342
|
+
}
|
1343
|
+
// 25.4.3.1 Promise(executor)
|
1344
|
+
Promise = function(executor){
|
1345
|
+
assertFunction(executor);
|
1346
|
+
assertInstance(this, Promise, PROMISE);
|
1347
|
+
var def = {chain: [], state: 0, done: false, msg: undefined};
|
1348
|
+
hidden(this, DEF, def);
|
1349
|
+
try {
|
1350
|
+
executor(ctx(resolve, def, 1), ctx(reject, def, 1));
|
1351
|
+
} catch(err){
|
1352
|
+
reject.call(def, err);
|
1353
|
+
}
|
1354
|
+
}
|
1355
|
+
assignHidden(Promise[PROTOTYPE], {
|
1356
|
+
// 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
|
1357
|
+
then: function(onFulfilled, onRejected){
|
1358
|
+
var S = assertObject(assertObject(this)[CONSTRUCTOR])[SYMBOL_SPECIES];
|
1359
|
+
var react = {
|
1360
|
+
ok: isFunction(onFulfilled) ? onFulfilled : true,
|
1361
|
+
fail: isFunction(onRejected) ? onRejected : false
|
1362
|
+
} , P = react.P = new (S != undefined ? S : Promise)(function(resolve, reject){
|
1363
|
+
react.res = assertFunction(resolve);
|
1364
|
+
react.rej = assertFunction(reject);
|
1365
|
+
}), def = this[DEF];
|
1366
|
+
def.chain.push(react);
|
1367
|
+
def.state && notify(def);
|
1368
|
+
return P;
|
1369
|
+
},
|
1370
|
+
// 25.4.5.1 Promise.prototype.catch(onRejected)
|
1371
|
+
'catch': function(onRejected){
|
1372
|
+
return this.then(undefined, onRejected);
|
1373
|
+
}
|
1374
|
+
});
|
1375
|
+
assignHidden(Promise, {
|
1376
|
+
// 25.4.4.1 Promise.all(iterable)
|
1377
|
+
all: function(iterable){
|
1378
|
+
var Promise = getConstructor(this)
|
1379
|
+
, values = [];
|
1380
|
+
return new Promise(function(resolve, reject){
|
1381
|
+
forOf(iterable, false, push, values);
|
1382
|
+
var remaining = values.length
|
1383
|
+
, results = Array(remaining);
|
1384
|
+
if(remaining)forEach.call(values, function(promise, index){
|
1385
|
+
Promise.resolve(promise).then(function(value){
|
1386
|
+
results[index] = value;
|
1387
|
+
--remaining || resolve(results);
|
1388
|
+
}, reject);
|
1389
|
+
});
|
1390
|
+
else resolve(results);
|
1391
|
+
});
|
1392
|
+
},
|
1393
|
+
// 25.4.4.4 Promise.race(iterable)
|
1394
|
+
race: function(iterable){
|
1395
|
+
var Promise = getConstructor(this);
|
1396
|
+
return new Promise(function(resolve, reject){
|
1397
|
+
forOf(iterable, false, function(promise){
|
1398
|
+
Promise.resolve(promise).then(resolve, reject);
|
1399
|
+
});
|
1400
|
+
});
|
1401
|
+
},
|
1402
|
+
// 25.4.4.5 Promise.reject(r)
|
1403
|
+
reject: function(r){
|
1404
|
+
return new (getConstructor(this))(function(resolve, reject){
|
1405
|
+
reject(r);
|
1406
|
+
});
|
1407
|
+
},
|
1408
|
+
// 25.4.4.6 Promise.resolve(x)
|
1409
|
+
resolve: function(x){
|
1410
|
+
return isObject(x) && DEF in x && getPrototypeOf(x) === this[PROTOTYPE]
|
1411
|
+
? x : new (getConstructor(this))(function(resolve, reject){
|
1412
|
+
resolve(x);
|
1413
|
+
});
|
1414
|
+
}
|
1415
|
+
});
|
1416
|
+
}(nextTick || setImmediate, safeSymbol('def'));
|
1417
|
+
setToStringTag(Promise, PROMISE);
|
1418
|
+
setSpecies(Promise);
|
1419
|
+
$define(GLOBAL + FORCED * !isNative(Promise), {Promise: Promise});
|
1420
|
+
}(global[PROMISE]);
|
1421
|
+
|
1422
|
+
/******************************************************************************
|
1423
|
+
* Module : es6.collections *
|
1424
|
+
******************************************************************************/
|
1425
|
+
|
1426
|
+
// ECMAScript 6 collections shim
|
1427
|
+
!function(){
|
1428
|
+
var UID = safeSymbol('uid')
|
1429
|
+
, O1 = safeSymbol('O1')
|
1430
|
+
, WEAK = safeSymbol('weak')
|
1431
|
+
, LEAK = safeSymbol('leak')
|
1432
|
+
, LAST = safeSymbol('last')
|
1433
|
+
, FIRST = safeSymbol('first')
|
1434
|
+
, SIZE = DESC ? safeSymbol('size') : 'size'
|
1435
|
+
, uid = 0
|
1436
|
+
, tmp = {};
|
1437
|
+
|
1438
|
+
function getCollection(C, NAME, methods, commonMethods, isMap, isWeak){
|
1439
|
+
var ADDER = isMap ? 'set' : 'add'
|
1440
|
+
, proto = C && C[PROTOTYPE]
|
1441
|
+
, O = {};
|
1442
|
+
function initFromIterable(that, iterable){
|
1443
|
+
if(iterable != undefined)forOf(iterable, isMap, that[ADDER], that);
|
1444
|
+
return that;
|
1445
|
+
}
|
1446
|
+
function fixSVZ(key, chain){
|
1447
|
+
var method = proto[key];
|
1448
|
+
if(framework)proto[key] = function(a, b){
|
1449
|
+
var result = method.call(this, a === 0 ? 0 : a, b);
|
1450
|
+
return chain ? this : result;
|
1451
|
+
};
|
1452
|
+
}
|
1453
|
+
if(!isNative(C) || !(isWeak || (!BUGGY_ITERATORS && has(proto, FOR_EACH) && has(proto, 'entries')))){
|
1454
|
+
// create collection constructor
|
1455
|
+
C = isWeak
|
1456
|
+
? function(iterable){
|
1457
|
+
assertInstance(this, C, NAME);
|
1458
|
+
set(this, UID, uid++);
|
1459
|
+
initFromIterable(this, iterable);
|
1460
|
+
}
|
1461
|
+
: function(iterable){
|
1462
|
+
var that = this;
|
1463
|
+
assertInstance(that, C, NAME);
|
1464
|
+
set(that, O1, create(null));
|
1465
|
+
set(that, SIZE, 0);
|
1466
|
+
set(that, LAST, undefined);
|
1467
|
+
set(that, FIRST, undefined);
|
1468
|
+
initFromIterable(that, iterable);
|
1469
|
+
};
|
1470
|
+
assignHidden(assignHidden(C[PROTOTYPE], methods), commonMethods);
|
1471
|
+
isWeak || defineProperty(C[PROTOTYPE], 'size', {get: function(){
|
1472
|
+
return assertDefined(this[SIZE]);
|
1473
|
+
}});
|
1474
|
+
} else {
|
1475
|
+
var Native = C
|
1476
|
+
, inst = new C
|
1477
|
+
, chain = inst[ADDER](isWeak ? {} : -0, 1)
|
1478
|
+
, buggyZero;
|
1479
|
+
// wrap to init collections from iterable
|
1480
|
+
if(!NATIVE_ITERATORS || !C.length){
|
1481
|
+
C = function(iterable){
|
1482
|
+
assertInstance(this, C, NAME);
|
1483
|
+
return initFromIterable(new Native, iterable);
|
1484
|
+
}
|
1485
|
+
C[PROTOTYPE] = proto;
|
1486
|
+
if(framework)proto[CONSTRUCTOR] = C;
|
1487
|
+
}
|
1488
|
+
isWeak || inst[FOR_EACH](function(val, key){
|
1489
|
+
buggyZero = 1 / key === -Infinity;
|
1490
|
+
});
|
1491
|
+
// fix converting -0 key to +0
|
1492
|
+
if(buggyZero){
|
1493
|
+
fixSVZ('delete');
|
1494
|
+
fixSVZ('has');
|
1495
|
+
isMap && fixSVZ('get');
|
1496
|
+
}
|
1497
|
+
// + fix .add & .set for chaining
|
1498
|
+
if(buggyZero || chain !== inst)fixSVZ(ADDER, true);
|
1499
|
+
}
|
1500
|
+
setToStringTag(C, NAME);
|
1501
|
+
setSpecies(C);
|
1502
|
+
|
1503
|
+
O[NAME] = C;
|
1504
|
+
$define(GLOBAL + WRAP + FORCED * !isNative(C), O);
|
1505
|
+
|
1506
|
+
// add .keys, .values, .entries, [@@iterator]
|
1507
|
+
// 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
|
1508
|
+
isWeak || defineStdIterators(C, NAME, function(iterated, kind){
|
1509
|
+
set(this, ITER, {o: iterated, k: kind});
|
1510
|
+
}, function(){
|
1511
|
+
var iter = this[ITER]
|
1512
|
+
, kind = iter.k
|
1513
|
+
, entry = iter.l;
|
1514
|
+
// revert to the last existing entry
|
1515
|
+
while(entry && entry.r)entry = entry.p;
|
1516
|
+
// get next entry
|
1517
|
+
if(!iter.o || !(iter.l = entry = entry ? entry.n : iter.o[FIRST])){
|
1518
|
+
// or finish the iteration
|
1519
|
+
iter.o = undefined;
|
1520
|
+
return iterResult(1);
|
1521
|
+
}
|
1522
|
+
// return step by kind
|
1523
|
+
if(kind == KEY) return iterResult(0, entry.k);
|
1524
|
+
if(kind == VALUE)return iterResult(0, entry.v);
|
1525
|
+
return iterResult(0, [entry.k, entry.v]);
|
1526
|
+
}, isMap ? KEY+VALUE : VALUE, !isMap);
|
1527
|
+
|
1528
|
+
return C;
|
1529
|
+
}
|
1530
|
+
|
1531
|
+
function fastKey(it, create){
|
1532
|
+
// return primitive with prefix
|
1533
|
+
if(!isObject(it))return (typeof it == 'string' ? 'S' : 'P') + it;
|
1534
|
+
// can't set id to frozen object
|
1535
|
+
if(isFrozen(it))return 'F';
|
1536
|
+
if(!has(it, UID)){
|
1537
|
+
// not necessary to add id
|
1538
|
+
if(!create)return 'E';
|
1539
|
+
// add missing object id
|
1540
|
+
hidden(it, UID, ++uid);
|
1541
|
+
// return object id with prefix
|
1542
|
+
} return 'O' + it[UID];
|
1543
|
+
}
|
1544
|
+
function getEntry(that, key){
|
1545
|
+
// fast case
|
1546
|
+
var index = fastKey(key), entry;
|
1547
|
+
if(index != 'F')return that[O1][index];
|
1548
|
+
// frozen object case
|
1549
|
+
for(entry = that[FIRST]; entry; entry = entry.n){
|
1550
|
+
if(entry.k == key)return entry;
|
1551
|
+
}
|
1552
|
+
}
|
1553
|
+
function def(that, key, value){
|
1554
|
+
var entry = getEntry(that, key)
|
1555
|
+
, prev, index;
|
1556
|
+
// change existing entry
|
1557
|
+
if(entry)entry.v = value;
|
1558
|
+
// create new entry
|
1559
|
+
else {
|
1560
|
+
that[LAST] = entry = {
|
1561
|
+
i: index = fastKey(key, true), // <- index
|
1562
|
+
k: key, // <- key
|
1563
|
+
v: value, // <- value
|
1564
|
+
p: prev = that[LAST], // <- previous entry
|
1565
|
+
n: undefined, // <- next entry
|
1566
|
+
r: false // <- removed
|
1567
|
+
};
|
1568
|
+
if(!that[FIRST])that[FIRST] = entry;
|
1569
|
+
if(prev)prev.n = entry;
|
1570
|
+
that[SIZE]++;
|
1571
|
+
// add to index
|
1572
|
+
if(index != 'F')that[O1][index] = entry;
|
1573
|
+
} return that;
|
1574
|
+
}
|
1575
|
+
|
1576
|
+
var collectionMethods = {
|
1577
|
+
// 23.1.3.1 Map.prototype.clear()
|
1578
|
+
// 23.2.3.2 Set.prototype.clear()
|
1579
|
+
clear: function(){
|
1580
|
+
for(var that = this, data = that[O1], entry = that[FIRST]; entry; entry = entry.n){
|
1581
|
+
entry.r = true;
|
1582
|
+
if(entry.p)entry.p = entry.p.n = undefined;
|
1583
|
+
delete data[entry.i];
|
1584
|
+
}
|
1585
|
+
that[FIRST] = that[LAST] = undefined;
|
1586
|
+
that[SIZE] = 0;
|
1587
|
+
},
|
1588
|
+
// 23.1.3.3 Map.prototype.delete(key)
|
1589
|
+
// 23.2.3.4 Set.prototype.delete(value)
|
1590
|
+
'delete': function(key){
|
1591
|
+
var that = this
|
1592
|
+
, entry = getEntry(that, key);
|
1593
|
+
if(entry){
|
1594
|
+
var next = entry.n
|
1595
|
+
, prev = entry.p;
|
1596
|
+
delete that[O1][entry.i];
|
1597
|
+
entry.r = true;
|
1598
|
+
if(prev)prev.n = next;
|
1599
|
+
if(next)next.p = prev;
|
1600
|
+
if(that[FIRST] == entry)that[FIRST] = next;
|
1601
|
+
if(that[LAST] == entry)that[LAST] = prev;
|
1602
|
+
that[SIZE]--;
|
1603
|
+
} return !!entry;
|
1604
|
+
},
|
1605
|
+
// 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
|
1606
|
+
// 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
|
1607
|
+
forEach: function(callbackfn /*, that = undefined */){
|
1608
|
+
var f = ctx(callbackfn, arguments[1], 3)
|
1609
|
+
, entry;
|
1610
|
+
while(entry = entry ? entry.n : this[FIRST]){
|
1611
|
+
f(entry.v, entry.k, this);
|
1612
|
+
// revert to the last existing entry
|
1613
|
+
while(entry && entry.r)entry = entry.p;
|
1614
|
+
}
|
1615
|
+
},
|
1616
|
+
// 23.1.3.7 Map.prototype.has(key)
|
1617
|
+
// 23.2.3.7 Set.prototype.has(value)
|
1618
|
+
has: function(key){
|
1619
|
+
return !!getEntry(this, key);
|
1620
|
+
}
|
1621
|
+
}
|
1622
|
+
|
1623
|
+
// 23.1 Map Objects
|
1624
|
+
Map = getCollection(Map, MAP, {
|
1625
|
+
// 23.1.3.6 Map.prototype.get(key)
|
1626
|
+
get: function(key){
|
1627
|
+
var entry = getEntry(this, key);
|
1628
|
+
return entry && entry.v;
|
1629
|
+
},
|
1630
|
+
// 23.1.3.9 Map.prototype.set(key, value)
|
1631
|
+
set: function(key, value){
|
1632
|
+
return def(this, key === 0 ? 0 : key, value);
|
1633
|
+
}
|
1634
|
+
}, collectionMethods, true);
|
1635
|
+
|
1636
|
+
// 23.2 Set Objects
|
1637
|
+
Set = getCollection(Set, SET, {
|
1638
|
+
// 23.2.3.1 Set.prototype.add(value)
|
1639
|
+
add: function(value){
|
1640
|
+
return def(this, value = value === 0 ? 0 : value, value);
|
1641
|
+
}
|
1642
|
+
}, collectionMethods);
|
1643
|
+
|
1644
|
+
function defWeak(that, key, value){
|
1645
|
+
if(isFrozen(assertObject(key)))leakStore(that).set(key, value);
|
1646
|
+
else {
|
1647
|
+
has(key, WEAK) || hidden(key, WEAK, {});
|
1648
|
+
key[WEAK][that[UID]] = value;
|
1649
|
+
} return that;
|
1650
|
+
}
|
1651
|
+
function leakStore(that){
|
1652
|
+
return that[LEAK] || hidden(that, LEAK, new Map)[LEAK];
|
1653
|
+
}
|
1654
|
+
|
1655
|
+
var weakMethods = {
|
1656
|
+
// 23.3.3.2 WeakMap.prototype.delete(key)
|
1657
|
+
// 23.4.3.3 WeakSet.prototype.delete(value)
|
1658
|
+
'delete': function(key){
|
1659
|
+
if(!isObject(key))return false;
|
1660
|
+
if(isFrozen(key))return leakStore(this)['delete'](key);
|
1661
|
+
return has(key, WEAK) && has(key[WEAK], this[UID]) && delete key[WEAK][this[UID]];
|
1662
|
+
},
|
1663
|
+
// 23.3.3.4 WeakMap.prototype.has(key)
|
1664
|
+
// 23.4.3.4 WeakSet.prototype.has(value)
|
1665
|
+
has: function(key){
|
1666
|
+
if(!isObject(key))return false;
|
1667
|
+
if(isFrozen(key))return leakStore(this).has(key);
|
1668
|
+
return has(key, WEAK) && has(key[WEAK], this[UID]);
|
1669
|
+
}
|
1670
|
+
};
|
1671
|
+
|
1672
|
+
// 23.3 WeakMap Objects
|
1673
|
+
WeakMap = getCollection(WeakMap, WEAKMAP, {
|
1674
|
+
// 23.3.3.3 WeakMap.prototype.get(key)
|
1675
|
+
get: function(key){
|
1676
|
+
if(isObject(key)){
|
1677
|
+
if(isFrozen(key))return leakStore(this).get(key);
|
1678
|
+
if(has(key, WEAK))return key[WEAK][this[UID]];
|
1679
|
+
}
|
1680
|
+
},
|
1681
|
+
// 23.3.3.5 WeakMap.prototype.set(key, value)
|
1682
|
+
set: function(key, value){
|
1683
|
+
return defWeak(this, key, value);
|
1684
|
+
}
|
1685
|
+
}, weakMethods, true, true);
|
1686
|
+
|
1687
|
+
// IE11 WeakMap frozen keys fix
|
1688
|
+
if(framework && new WeakMap().set(Object.freeze(tmp), 7).get(tmp) != 7){
|
1689
|
+
forEach.call(array('delete,has,get,set'), function(key){
|
1690
|
+
var method = WeakMap[PROTOTYPE][key];
|
1691
|
+
WeakMap[PROTOTYPE][key] = function(a, b){
|
1692
|
+
// store frozen objects on leaky map
|
1693
|
+
if(isObject(a) && isFrozen(a)){
|
1694
|
+
var result = leakStore(this)[key](a, b);
|
1695
|
+
return key == 'set' ? this : result;
|
1696
|
+
// store all the rest on native weakmap
|
1697
|
+
} return method.call(this, a, b);
|
1698
|
+
};
|
1699
|
+
});
|
1700
|
+
}
|
1701
|
+
|
1702
|
+
// 23.4 WeakSet Objects
|
1703
|
+
WeakSet = getCollection(WeakSet, WEAKSET, {
|
1704
|
+
// 23.4.3.1 WeakSet.prototype.add(value)
|
1705
|
+
add: function(value){
|
1706
|
+
return defWeak(this, value, true);
|
1707
|
+
}
|
1708
|
+
}, weakMethods, false, true);
|
1709
|
+
}();
|
1710
|
+
|
1711
|
+
/******************************************************************************
|
1712
|
+
* Module : es6.reflect *
|
1713
|
+
******************************************************************************/
|
1714
|
+
|
1715
|
+
!function(){
|
1716
|
+
function Enumerate(iterated){
|
1717
|
+
var keys = [], key;
|
1718
|
+
for(key in iterated)keys.push(key);
|
1719
|
+
set(this, ITER, {o: iterated, a: keys, i: 0});
|
1720
|
+
}
|
1721
|
+
createIterator(Enumerate, OBJECT, function(){
|
1722
|
+
var iter = this[ITER]
|
1723
|
+
, keys = iter.a
|
1724
|
+
, key;
|
1725
|
+
do {
|
1726
|
+
if(iter.i >= keys.length)return iterResult(1);
|
1727
|
+
} while(!((key = keys[iter.i++]) in iter.o));
|
1728
|
+
return iterResult(0, key);
|
1729
|
+
});
|
1730
|
+
|
1731
|
+
function wrap(fn){
|
1732
|
+
return function(it){
|
1733
|
+
assertObject(it);
|
1734
|
+
try {
|
1735
|
+
return fn.apply(undefined, arguments), true;
|
1736
|
+
} catch(e){
|
1737
|
+
return false;
|
1738
|
+
}
|
1739
|
+
}
|
1740
|
+
}
|
1741
|
+
|
1742
|
+
function reflectGet(target, propertyKey/*, receiver*/){
|
1743
|
+
var receiver = arguments.length < 3 ? target : arguments[2]
|
1744
|
+
, desc = getOwnDescriptor(assertObject(target), propertyKey), proto;
|
1745
|
+
if(desc)return has(desc, 'value')
|
1746
|
+
? desc.value
|
1747
|
+
: desc.get === undefined
|
1748
|
+
? undefined
|
1749
|
+
: desc.get.call(receiver);
|
1750
|
+
return isObject(proto = getPrototypeOf(target))
|
1751
|
+
? reflectGet(proto, propertyKey, receiver)
|
1752
|
+
: undefined;
|
1753
|
+
}
|
1754
|
+
function reflectSet(target, propertyKey, V/*, receiver*/){
|
1755
|
+
var receiver = arguments.length < 4 ? target : arguments[3]
|
1756
|
+
, ownDesc = getOwnDescriptor(assertObject(target), propertyKey)
|
1757
|
+
, existingDescriptor, proto;
|
1758
|
+
if(!ownDesc){
|
1759
|
+
if(isObject(proto = getPrototypeOf(target))){
|
1760
|
+
return reflectSet(proto, propertyKey, V, receiver);
|
1761
|
+
}
|
1762
|
+
ownDesc = descriptor(0);
|
1763
|
+
}
|
1764
|
+
if(has(ownDesc, 'value')){
|
1765
|
+
if(ownDesc.writable === false || !isObject(receiver))return false;
|
1766
|
+
existingDescriptor = getOwnDescriptor(receiver, propertyKey) || descriptor(0);
|
1767
|
+
existingDescriptor.value = V;
|
1768
|
+
return defineProperty(receiver, propertyKey, existingDescriptor), true;
|
1769
|
+
}
|
1770
|
+
return ownDesc.set === undefined
|
1771
|
+
? false
|
1772
|
+
: (ownDesc.set.call(receiver, V), true);
|
1773
|
+
}
|
1774
|
+
var isExtensible = Object.isExtensible || returnIt;
|
1775
|
+
|
1776
|
+
var reflect = {
|
1777
|
+
// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
|
1778
|
+
apply: ctx(call, apply, 3),
|
1779
|
+
// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
|
1780
|
+
construct: construct,
|
1781
|
+
// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
|
1782
|
+
defineProperty: wrap(defineProperty),
|
1783
|
+
// 26.1.4 Reflect.deleteProperty(target, propertyKey)
|
1784
|
+
deleteProperty: function(target, propertyKey){
|
1785
|
+
var desc = getOwnDescriptor(assertObject(target), propertyKey);
|
1786
|
+
return desc && !desc.configurable ? false : delete target[propertyKey];
|
1787
|
+
},
|
1788
|
+
// 26.1.5 Reflect.enumerate(target)
|
1789
|
+
enumerate: function(target){
|
1790
|
+
return new Enumerate(assertObject(target));
|
1791
|
+
},
|
1792
|
+
// 26.1.6 Reflect.get(target, propertyKey [, receiver])
|
1793
|
+
get: reflectGet,
|
1794
|
+
// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
|
1795
|
+
getOwnPropertyDescriptor: function(target, propertyKey){
|
1796
|
+
return getOwnDescriptor(assertObject(target), propertyKey);
|
1797
|
+
},
|
1798
|
+
// 26.1.8 Reflect.getPrototypeOf(target)
|
1799
|
+
getPrototypeOf: function(target){
|
1800
|
+
return getPrototypeOf(assertObject(target));
|
1801
|
+
},
|
1802
|
+
// 26.1.9 Reflect.has(target, propertyKey)
|
1803
|
+
has: function(target, propertyKey){
|
1804
|
+
return propertyKey in target;
|
1805
|
+
},
|
1806
|
+
// 26.1.10 Reflect.isExtensible(target)
|
1807
|
+
isExtensible: function(target){
|
1808
|
+
return !!isExtensible(assertObject(target));
|
1809
|
+
},
|
1810
|
+
// 26.1.11 Reflect.ownKeys(target)
|
1811
|
+
ownKeys: ownKeys,
|
1812
|
+
// 26.1.12 Reflect.preventExtensions(target)
|
1813
|
+
preventExtensions: wrap(Object.preventExtensions || returnIt),
|
1814
|
+
// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
|
1815
|
+
set: reflectSet
|
1816
|
+
}
|
1817
|
+
// 26.1.14 Reflect.setPrototypeOf(target, proto)
|
1818
|
+
if(setPrototypeOf)reflect.setPrototypeOf = function(target, proto){
|
1819
|
+
return setPrototypeOf(assertObject(target), proto), true;
|
1820
|
+
};
|
1821
|
+
|
1822
|
+
$define(GLOBAL, {Reflect: {}});
|
1823
|
+
$define(STATIC, 'Reflect', reflect);
|
1824
|
+
}();
|
1825
|
+
|
1826
|
+
/******************************************************************************
|
1827
|
+
* Module : es7.proposals *
|
1828
|
+
******************************************************************************/
|
1829
|
+
|
1830
|
+
!function(){
|
1831
|
+
$define(PROTO, ARRAY, {
|
1832
|
+
// https://github.com/domenic/Array.prototype.includes
|
1833
|
+
includes: createArrayContains(true)
|
1834
|
+
});
|
1835
|
+
$define(PROTO, STRING, {
|
1836
|
+
// https://github.com/mathiasbynens/String.prototype.at
|
1837
|
+
at: createPointAt(true)
|
1838
|
+
});
|
1839
|
+
|
1840
|
+
function createObjectToArray(isEntries){
|
1841
|
+
return function(object){
|
1842
|
+
var O = toObject(object)
|
1843
|
+
, keys = getKeys(object)
|
1844
|
+
, length = keys.length
|
1845
|
+
, i = 0
|
1846
|
+
, result = Array(length)
|
1847
|
+
, key;
|
1848
|
+
if(isEntries)while(length > i)result[i] = [key = keys[i++], O[key]];
|
1849
|
+
else while(length > i)result[i] = O[keys[i++]];
|
1850
|
+
return result;
|
1851
|
+
}
|
1852
|
+
}
|
1853
|
+
$define(STATIC, OBJECT, {
|
1854
|
+
// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-04/apr-9.md#51-objectentries-objectvalues
|
1855
|
+
values: createObjectToArray(false),
|
1856
|
+
entries: createObjectToArray(true)
|
1857
|
+
});
|
1858
|
+
$define(STATIC, REGEXP, {
|
1859
|
+
// https://gist.github.com/kangax/9698100
|
1860
|
+
escape: createReplacer(/([\\\-[\]{}()*+?.,^$|])/g, '\\$1', true)
|
1861
|
+
});
|
1862
|
+
}();
|
1863
|
+
|
1864
|
+
/******************************************************************************
|
1865
|
+
* Module : es7.abstract-refs *
|
1866
|
+
******************************************************************************/
|
1867
|
+
|
1868
|
+
// https://github.com/zenparsing/es-abstract-refs
|
1869
|
+
!function(REFERENCE){
|
1870
|
+
REFERENCE_GET = getWellKnownSymbol(REFERENCE+'Get', true);
|
1871
|
+
var REFERENCE_SET = getWellKnownSymbol(REFERENCE+SET, true)
|
1872
|
+
, REFERENCE_DELETE = getWellKnownSymbol(REFERENCE+'Delete', true);
|
1873
|
+
|
1874
|
+
$define(STATIC, SYMBOL, {
|
1875
|
+
referenceGet: REFERENCE_GET,
|
1876
|
+
referenceSet: REFERENCE_SET,
|
1877
|
+
referenceDelete: REFERENCE_DELETE
|
1878
|
+
});
|
1879
|
+
|
1880
|
+
hidden(FunctionProto, REFERENCE_GET, returnThis);
|
1881
|
+
|
1882
|
+
function setMapMethods(Constructor){
|
1883
|
+
if(Constructor){
|
1884
|
+
var MapProto = Constructor[PROTOTYPE];
|
1885
|
+
hidden(MapProto, REFERENCE_GET, MapProto.get);
|
1886
|
+
hidden(MapProto, REFERENCE_SET, MapProto.set);
|
1887
|
+
hidden(MapProto, REFERENCE_DELETE, MapProto['delete']);
|
1888
|
+
}
|
1889
|
+
}
|
1890
|
+
setMapMethods(Map);
|
1891
|
+
setMapMethods(WeakMap);
|
1892
|
+
}('reference');
|
1893
|
+
|
1894
|
+
/******************************************************************************
|
1895
|
+
* Module : js.array.statics *
|
1896
|
+
******************************************************************************/
|
1897
|
+
|
1898
|
+
// JavaScript 1.6 / Strawman array statics shim
|
1899
|
+
!function(arrayStatics){
|
1900
|
+
function setArrayStatics(keys, length){
|
1901
|
+
forEach.call(array(keys), function(key){
|
1902
|
+
if(key in ArrayProto)arrayStatics[key] = ctx(call, ArrayProto[key], length);
|
1903
|
+
});
|
1904
|
+
}
|
1905
|
+
setArrayStatics('pop,reverse,shift,keys,values,entries', 1);
|
1906
|
+
setArrayStatics('indexOf,every,some,forEach,map,filter,find,findIndex,includes', 3);
|
1907
|
+
setArrayStatics('join,slice,concat,push,splice,unshift,sort,lastIndexOf,' +
|
1908
|
+
'reduce,reduceRight,copyWithin,fill,turn');
|
1909
|
+
$define(STATIC, ARRAY, arrayStatics);
|
1910
|
+
}({});
|
1911
|
+
|
1912
|
+
/******************************************************************************
|
1913
|
+
* Module : web.dom.itarable *
|
1914
|
+
******************************************************************************/
|
1915
|
+
|
1916
|
+
!function(NodeList){
|
1917
|
+
if(framework && NodeList && !(SYMBOL_ITERATOR in NodeList[PROTOTYPE])){
|
1918
|
+
hidden(NodeList[PROTOTYPE], SYMBOL_ITERATOR, Iterators[ARRAY]);
|
1919
|
+
}
|
1920
|
+
Iterators.NodeList = Iterators[ARRAY];
|
1921
|
+
}(global.NodeList);
|
1922
|
+
}(typeof self != 'undefined' && self.Math === Math ? self : Function('return this')(), true);
|
1923
|
+
},{}],3:[function(require,module,exports){
|
1924
|
+
(function (global){
|
1925
|
+
/**
|
1926
|
+
* Copyright (c) 2014, Facebook, Inc.
|
1927
|
+
* All rights reserved.
|
1928
|
+
*
|
1929
|
+
* This source code is licensed under the BSD-style license found in the
|
1930
|
+
* https://raw.github.com/facebook/regenerator/master/LICENSE file. An
|
1931
|
+
* additional grant of patent rights can be found in the PATENTS file in
|
1932
|
+
* the same directory.
|
1933
|
+
*/
|
1934
|
+
|
1935
|
+
!(function(global) {
|
1936
|
+
"use strict";
|
1937
|
+
|
1938
|
+
var hasOwn = Object.prototype.hasOwnProperty;
|
1939
|
+
var undefined; // More compressible than void 0.
|
1940
|
+
var iteratorSymbol =
|
1941
|
+
typeof Symbol === "function" && Symbol.iterator || "@@iterator";
|
1942
|
+
|
1943
|
+
var inModule = typeof module === "object";
|
1944
|
+
var runtime = global.regeneratorRuntime;
|
1945
|
+
if (runtime) {
|
1946
|
+
if (inModule) {
|
1947
|
+
// If regeneratorRuntime is defined globally and we're in a module,
|
1948
|
+
// make the exports object identical to regeneratorRuntime.
|
1949
|
+
module.exports = runtime;
|
1950
|
+
}
|
1951
|
+
// Don't bother evaluating the rest of this file if the runtime was
|
1952
|
+
// already defined globally.
|
1953
|
+
return;
|
1954
|
+
}
|
1955
|
+
|
1956
|
+
// Define the runtime globally (as expected by generated code) as either
|
1957
|
+
// module.exports (if we're in a module) or a new, empty object.
|
1958
|
+
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
|
1959
|
+
|
1960
|
+
function wrap(innerFn, outerFn, self, tryLocsList) {
|
1961
|
+
return new Generator(innerFn, outerFn, self || null, tryLocsList || []);
|
1962
|
+
}
|
1963
|
+
runtime.wrap = wrap;
|
1964
|
+
|
1965
|
+
// Try/catch helper to minimize deoptimizations. Returns a completion
|
1966
|
+
// record like context.tryEntries[i].completion. This interface could
|
1967
|
+
// have been (and was previously) designed to take a closure to be
|
1968
|
+
// invoked without arguments, but in all the cases we care about we
|
1969
|
+
// already have an existing method we want to call, so there's no need
|
1970
|
+
// to create a new function object. We can even get away with assuming
|
1971
|
+
// the method takes exactly one argument, since that happens to be true
|
1972
|
+
// in every case, so we don't have to touch the arguments object. The
|
1973
|
+
// only additional allocation required is the completion record, which
|
1974
|
+
// has a stable shape and so hopefully should be cheap to allocate.
|
1975
|
+
function tryCatch(fn, obj, arg) {
|
1976
|
+
try {
|
1977
|
+
return { type: "normal", arg: fn.call(obj, arg) };
|
1978
|
+
} catch (err) {
|
1979
|
+
return { type: "throw", arg: err };
|
1980
|
+
}
|
1981
|
+
}
|
1982
|
+
|
1983
|
+
var GenStateSuspendedStart = "suspendedStart";
|
1984
|
+
var GenStateSuspendedYield = "suspendedYield";
|
1985
|
+
var GenStateExecuting = "executing";
|
1986
|
+
var GenStateCompleted = "completed";
|
1987
|
+
|
1988
|
+
// Returning this object from the innerFn has the same effect as
|
1989
|
+
// breaking out of the dispatch switch statement.
|
1990
|
+
var ContinueSentinel = {};
|
1991
|
+
|
1992
|
+
// Dummy constructor functions that we use as the .constructor and
|
1993
|
+
// .constructor.prototype properties for functions that return Generator
|
1994
|
+
// objects. For full spec compliance, you may wish to configure your
|
1995
|
+
// minifier not to mangle the names of these two functions.
|
1996
|
+
function GeneratorFunction() {}
|
1997
|
+
function GeneratorFunctionPrototype() {}
|
1998
|
+
|
1999
|
+
var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;
|
2000
|
+
GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
|
2001
|
+
GeneratorFunctionPrototype.constructor = GeneratorFunction;
|
2002
|
+
GeneratorFunction.displayName = "GeneratorFunction";
|
2003
|
+
|
2004
|
+
runtime.isGeneratorFunction = function(genFun) {
|
2005
|
+
var ctor = typeof genFun === "function" && genFun.constructor;
|
2006
|
+
return ctor
|
2007
|
+
? ctor === GeneratorFunction ||
|
2008
|
+
// For the native GeneratorFunction constructor, the best we can
|
2009
|
+
// do is to check its .name property.
|
2010
|
+
(ctor.displayName || ctor.name) === "GeneratorFunction"
|
2011
|
+
: false;
|
2012
|
+
};
|
2013
|
+
|
2014
|
+
runtime.mark = function(genFun) {
|
2015
|
+
genFun.__proto__ = GeneratorFunctionPrototype;
|
2016
|
+
genFun.prototype = Object.create(Gp);
|
2017
|
+
return genFun;
|
2018
|
+
};
|
2019
|
+
|
2020
|
+
runtime.async = function(innerFn, outerFn, self, tryLocsList) {
|
2021
|
+
return new Promise(function(resolve, reject) {
|
2022
|
+
var generator = wrap(innerFn, outerFn, self, tryLocsList);
|
2023
|
+
var callNext = step.bind(generator.next);
|
2024
|
+
var callThrow = step.bind(generator["throw"]);
|
2025
|
+
|
2026
|
+
function step(arg) {
|
2027
|
+
var record = tryCatch(this, null, arg);
|
2028
|
+
if (record.type === "throw") {
|
2029
|
+
reject(record.arg);
|
2030
|
+
return;
|
2031
|
+
}
|
2032
|
+
|
2033
|
+
var info = record.arg;
|
2034
|
+
if (info.done) {
|
2035
|
+
resolve(info.value);
|
2036
|
+
} else {
|
2037
|
+
Promise.resolve(info.value).then(callNext, callThrow);
|
2038
|
+
}
|
2039
|
+
}
|
2040
|
+
|
2041
|
+
callNext();
|
2042
|
+
});
|
2043
|
+
};
|
2044
|
+
|
2045
|
+
function Generator(innerFn, outerFn, self, tryLocsList) {
|
2046
|
+
var generator = outerFn ? Object.create(outerFn.prototype) : this;
|
2047
|
+
var context = new Context(tryLocsList);
|
2048
|
+
var state = GenStateSuspendedStart;
|
2049
|
+
|
2050
|
+
function invoke(method, arg) {
|
2051
|
+
if (state === GenStateExecuting) {
|
2052
|
+
throw new Error("Generator is already running");
|
2053
|
+
}
|
2054
|
+
|
2055
|
+
if (state === GenStateCompleted) {
|
2056
|
+
// Be forgiving, per 25.3.3.3.3 of the spec:
|
2057
|
+
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
|
2058
|
+
return doneResult();
|
2059
|
+
}
|
2060
|
+
|
2061
|
+
while (true) {
|
2062
|
+
var delegate = context.delegate;
|
2063
|
+
if (delegate) {
|
2064
|
+
var record = tryCatch(
|
2065
|
+
delegate.iterator[method],
|
2066
|
+
delegate.iterator,
|
2067
|
+
arg
|
2068
|
+
);
|
2069
|
+
|
2070
|
+
if (record.type === "throw") {
|
2071
|
+
context.delegate = null;
|
2072
|
+
|
2073
|
+
// Like returning generator.throw(uncaught), but without the
|
2074
|
+
// overhead of an extra function call.
|
2075
|
+
method = "throw";
|
2076
|
+
arg = record.arg;
|
2077
|
+
|
2078
|
+
continue;
|
2079
|
+
}
|
2080
|
+
|
2081
|
+
// Delegate generator ran and handled its own exceptions so
|
2082
|
+
// regardless of what the method was, we continue as if it is
|
2083
|
+
// "next" with an undefined arg.
|
2084
|
+
method = "next";
|
2085
|
+
arg = undefined;
|
2086
|
+
|
2087
|
+
var info = record.arg;
|
2088
|
+
if (info.done) {
|
2089
|
+
context[delegate.resultName] = info.value;
|
2090
|
+
context.next = delegate.nextLoc;
|
2091
|
+
} else {
|
2092
|
+
state = GenStateSuspendedYield;
|
2093
|
+
return info;
|
2094
|
+
}
|
2095
|
+
|
2096
|
+
context.delegate = null;
|
2097
|
+
}
|
2098
|
+
|
2099
|
+
if (method === "next") {
|
2100
|
+
if (state === GenStateSuspendedStart &&
|
2101
|
+
typeof arg !== "undefined") {
|
2102
|
+
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
|
2103
|
+
throw new TypeError(
|
2104
|
+
"attempt to send " + JSON.stringify(arg) + " to newborn generator"
|
2105
|
+
);
|
2106
|
+
}
|
2107
|
+
|
2108
|
+
if (state === GenStateSuspendedYield) {
|
2109
|
+
context.sent = arg;
|
2110
|
+
} else {
|
2111
|
+
delete context.sent;
|
2112
|
+
}
|
2113
|
+
|
2114
|
+
} else if (method === "throw") {
|
2115
|
+
if (state === GenStateSuspendedStart) {
|
2116
|
+
state = GenStateCompleted;
|
2117
|
+
throw arg;
|
2118
|
+
}
|
2119
|
+
|
2120
|
+
if (context.dispatchException(arg)) {
|
2121
|
+
// If the dispatched exception was caught by a catch block,
|
2122
|
+
// then let that catch block handle the exception normally.
|
2123
|
+
method = "next";
|
2124
|
+
arg = undefined;
|
2125
|
+
}
|
2126
|
+
|
2127
|
+
} else if (method === "return") {
|
2128
|
+
context.abrupt("return", arg);
|
2129
|
+
}
|
2130
|
+
|
2131
|
+
state = GenStateExecuting;
|
2132
|
+
|
2133
|
+
var record = tryCatch(innerFn, self, context);
|
2134
|
+
if (record.type === "normal") {
|
2135
|
+
// If an exception is thrown from innerFn, we leave state ===
|
2136
|
+
// GenStateExecuting and loop back for another invocation.
|
2137
|
+
state = context.done
|
2138
|
+
? GenStateCompleted
|
2139
|
+
: GenStateSuspendedYield;
|
2140
|
+
|
2141
|
+
var info = {
|
2142
|
+
value: record.arg,
|
2143
|
+
done: context.done
|
2144
|
+
};
|
2145
|
+
|
2146
|
+
if (record.arg === ContinueSentinel) {
|
2147
|
+
if (context.delegate && method === "next") {
|
2148
|
+
// Deliberately forget the last sent value so that we don't
|
2149
|
+
// accidentally pass it on to the delegate.
|
2150
|
+
arg = undefined;
|
2151
|
+
}
|
2152
|
+
} else {
|
2153
|
+
return info;
|
2154
|
+
}
|
2155
|
+
|
2156
|
+
} else if (record.type === "throw") {
|
2157
|
+
state = GenStateCompleted;
|
2158
|
+
|
2159
|
+
if (method === "next") {
|
2160
|
+
context.dispatchException(record.arg);
|
2161
|
+
} else {
|
2162
|
+
arg = record.arg;
|
2163
|
+
}
|
2164
|
+
}
|
2165
|
+
}
|
2166
|
+
}
|
2167
|
+
|
2168
|
+
generator.next = invoke.bind(generator, "next");
|
2169
|
+
generator["throw"] = invoke.bind(generator, "throw");
|
2170
|
+
generator["return"] = invoke.bind(generator, "return");
|
2171
|
+
|
2172
|
+
return generator;
|
2173
|
+
}
|
2174
|
+
|
2175
|
+
Gp[iteratorSymbol] = function() {
|
2176
|
+
return this;
|
2177
|
+
};
|
2178
|
+
|
2179
|
+
Gp.toString = function() {
|
2180
|
+
return "[object Generator]";
|
2181
|
+
};
|
2182
|
+
|
2183
|
+
function pushTryEntry(locs) {
|
2184
|
+
var entry = { tryLoc: locs[0] };
|
2185
|
+
|
2186
|
+
if (1 in locs) {
|
2187
|
+
entry.catchLoc = locs[1];
|
2188
|
+
}
|
2189
|
+
|
2190
|
+
if (2 in locs) {
|
2191
|
+
entry.finallyLoc = locs[2];
|
2192
|
+
entry.afterLoc = locs[3];
|
2193
|
+
}
|
2194
|
+
|
2195
|
+
this.tryEntries.push(entry);
|
2196
|
+
}
|
2197
|
+
|
2198
|
+
function resetTryEntry(entry) {
|
2199
|
+
var record = entry.completion || {};
|
2200
|
+
record.type = "normal";
|
2201
|
+
delete record.arg;
|
2202
|
+
entry.completion = record;
|
2203
|
+
}
|
2204
|
+
|
2205
|
+
function Context(tryLocsList) {
|
2206
|
+
// The root entry object (effectively a try statement without a catch
|
2207
|
+
// or a finally block) gives us a place to store values thrown from
|
2208
|
+
// locations where there is no enclosing try statement.
|
2209
|
+
this.tryEntries = [{ tryLoc: "root" }];
|
2210
|
+
tryLocsList.forEach(pushTryEntry, this);
|
2211
|
+
this.reset();
|
2212
|
+
}
|
2213
|
+
|
2214
|
+
runtime.keys = function(object) {
|
2215
|
+
var keys = [];
|
2216
|
+
for (var key in object) {
|
2217
|
+
keys.push(key);
|
2218
|
+
}
|
2219
|
+
keys.reverse();
|
2220
|
+
|
2221
|
+
// Rather than returning an object with a next method, we keep
|
2222
|
+
// things simple and return the next function itself.
|
2223
|
+
return function next() {
|
2224
|
+
while (keys.length) {
|
2225
|
+
var key = keys.pop();
|
2226
|
+
if (key in object) {
|
2227
|
+
next.value = key;
|
2228
|
+
next.done = false;
|
2229
|
+
return next;
|
2230
|
+
}
|
2231
|
+
}
|
2232
|
+
|
2233
|
+
// To avoid creating an additional object, we just hang the .value
|
2234
|
+
// and .done properties off the next function object itself. This
|
2235
|
+
// also ensures that the minifier will not anonymize the function.
|
2236
|
+
next.done = true;
|
2237
|
+
return next;
|
2238
|
+
};
|
2239
|
+
};
|
2240
|
+
|
2241
|
+
function values(iterable) {
|
2242
|
+
if (iterable) {
|
2243
|
+
var iteratorMethod = iterable[iteratorSymbol];
|
2244
|
+
if (iteratorMethod) {
|
2245
|
+
return iteratorMethod.call(iterable);
|
2246
|
+
}
|
2247
|
+
|
2248
|
+
if (typeof iterable.next === "function") {
|
2249
|
+
return iterable;
|
2250
|
+
}
|
2251
|
+
|
2252
|
+
if (!isNaN(iterable.length)) {
|
2253
|
+
var i = -1, next = function next() {
|
2254
|
+
while (++i < iterable.length) {
|
2255
|
+
if (hasOwn.call(iterable, i)) {
|
2256
|
+
next.value = iterable[i];
|
2257
|
+
next.done = false;
|
2258
|
+
return next;
|
2259
|
+
}
|
2260
|
+
}
|
2261
|
+
|
2262
|
+
next.value = undefined;
|
2263
|
+
next.done = true;
|
2264
|
+
|
2265
|
+
return next;
|
2266
|
+
};
|
2267
|
+
|
2268
|
+
return next.next = next;
|
2269
|
+
}
|
2270
|
+
}
|
2271
|
+
|
2272
|
+
// Return an iterator with no values.
|
2273
|
+
return { next: doneResult };
|
2274
|
+
}
|
2275
|
+
runtime.values = values;
|
2276
|
+
|
2277
|
+
function doneResult() {
|
2278
|
+
return { value: undefined, done: true };
|
2279
|
+
}
|
2280
|
+
|
2281
|
+
Context.prototype = {
|
2282
|
+
constructor: Context,
|
2283
|
+
|
2284
|
+
reset: function() {
|
2285
|
+
this.prev = 0;
|
2286
|
+
this.next = 0;
|
2287
|
+
this.sent = undefined;
|
2288
|
+
this.done = false;
|
2289
|
+
this.delegate = null;
|
2290
|
+
|
2291
|
+
this.tryEntries.forEach(resetTryEntry);
|
2292
|
+
|
2293
|
+
// Pre-initialize at least 20 temporary variables to enable hidden
|
2294
|
+
// class optimizations for simple generators.
|
2295
|
+
for (var tempIndex = 0, tempName;
|
2296
|
+
hasOwn.call(this, tempName = "t" + tempIndex) || tempIndex < 20;
|
2297
|
+
++tempIndex) {
|
2298
|
+
this[tempName] = null;
|
2299
|
+
}
|
2300
|
+
},
|
2301
|
+
|
2302
|
+
stop: function() {
|
2303
|
+
this.done = true;
|
2304
|
+
|
2305
|
+
var rootEntry = this.tryEntries[0];
|
2306
|
+
var rootRecord = rootEntry.completion;
|
2307
|
+
if (rootRecord.type === "throw") {
|
2308
|
+
throw rootRecord.arg;
|
2309
|
+
}
|
2310
|
+
|
2311
|
+
return this.rval;
|
2312
|
+
},
|
2313
|
+
|
2314
|
+
dispatchException: function(exception) {
|
2315
|
+
if (this.done) {
|
2316
|
+
throw exception;
|
2317
|
+
}
|
2318
|
+
|
2319
|
+
var context = this;
|
2320
|
+
function handle(loc, caught) {
|
2321
|
+
record.type = "throw";
|
2322
|
+
record.arg = exception;
|
2323
|
+
context.next = loc;
|
2324
|
+
return !!caught;
|
2325
|
+
}
|
2326
|
+
|
2327
|
+
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
2328
|
+
var entry = this.tryEntries[i];
|
2329
|
+
var record = entry.completion;
|
2330
|
+
|
2331
|
+
if (entry.tryLoc === "root") {
|
2332
|
+
// Exception thrown outside of any try block that could handle
|
2333
|
+
// it, so set the completion value of the entire function to
|
2334
|
+
// throw the exception.
|
2335
|
+
return handle("end");
|
2336
|
+
}
|
2337
|
+
|
2338
|
+
if (entry.tryLoc <= this.prev) {
|
2339
|
+
var hasCatch = hasOwn.call(entry, "catchLoc");
|
2340
|
+
var hasFinally = hasOwn.call(entry, "finallyLoc");
|
2341
|
+
|
2342
|
+
if (hasCatch && hasFinally) {
|
2343
|
+
if (this.prev < entry.catchLoc) {
|
2344
|
+
return handle(entry.catchLoc, true);
|
2345
|
+
} else if (this.prev < entry.finallyLoc) {
|
2346
|
+
return handle(entry.finallyLoc);
|
2347
|
+
}
|
2348
|
+
|
2349
|
+
} else if (hasCatch) {
|
2350
|
+
if (this.prev < entry.catchLoc) {
|
2351
|
+
return handle(entry.catchLoc, true);
|
2352
|
+
}
|
2353
|
+
|
2354
|
+
} else if (hasFinally) {
|
2355
|
+
if (this.prev < entry.finallyLoc) {
|
2356
|
+
return handle(entry.finallyLoc);
|
2357
|
+
}
|
2358
|
+
|
2359
|
+
} else {
|
2360
|
+
throw new Error("try statement without catch or finally");
|
2361
|
+
}
|
2362
|
+
}
|
2363
|
+
}
|
2364
|
+
},
|
2365
|
+
|
2366
|
+
_findFinallyEntry: function(finallyLoc) {
|
2367
|
+
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
2368
|
+
var entry = this.tryEntries[i];
|
2369
|
+
if (entry.tryLoc <= this.prev &&
|
2370
|
+
hasOwn.call(entry, "finallyLoc") && (
|
2371
|
+
entry.finallyLoc === finallyLoc ||
|
2372
|
+
this.prev < entry.finallyLoc)) {
|
2373
|
+
return entry;
|
2374
|
+
}
|
2375
|
+
}
|
2376
|
+
},
|
2377
|
+
|
2378
|
+
abrupt: function(type, arg) {
|
2379
|
+
var entry = this._findFinallyEntry();
|
2380
|
+
var record = entry ? entry.completion : {};
|
2381
|
+
|
2382
|
+
record.type = type;
|
2383
|
+
record.arg = arg;
|
2384
|
+
|
2385
|
+
if (entry) {
|
2386
|
+
this.next = entry.finallyLoc;
|
2387
|
+
} else {
|
2388
|
+
this.complete(record);
|
2389
|
+
}
|
2390
|
+
|
2391
|
+
return ContinueSentinel;
|
2392
|
+
},
|
2393
|
+
|
2394
|
+
complete: function(record, afterLoc) {
|
2395
|
+
if (record.type === "throw") {
|
2396
|
+
throw record.arg;
|
2397
|
+
}
|
2398
|
+
|
2399
|
+
if (record.type === "break" ||
|
2400
|
+
record.type === "continue") {
|
2401
|
+
this.next = record.arg;
|
2402
|
+
} else if (record.type === "return") {
|
2403
|
+
this.rval = record.arg;
|
2404
|
+
this.next = "end";
|
2405
|
+
} else if (record.type === "normal" && afterLoc) {
|
2406
|
+
this.next = afterLoc;
|
2407
|
+
}
|
2408
|
+
|
2409
|
+
return ContinueSentinel;
|
2410
|
+
},
|
2411
|
+
|
2412
|
+
finish: function(finallyLoc) {
|
2413
|
+
var entry = this._findFinallyEntry(finallyLoc);
|
2414
|
+
return this.complete(entry.completion, entry.afterLoc);
|
2415
|
+
},
|
2416
|
+
|
2417
|
+
"catch": function(tryLoc) {
|
2418
|
+
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
2419
|
+
var entry = this.tryEntries[i];
|
2420
|
+
if (entry.tryLoc === tryLoc) {
|
2421
|
+
var record = entry.completion;
|
2422
|
+
if (record.type === "throw") {
|
2423
|
+
var thrown = record.arg;
|
2424
|
+
resetTryEntry(entry);
|
2425
|
+
}
|
2426
|
+
return thrown;
|
2427
|
+
}
|
2428
|
+
}
|
2429
|
+
|
2430
|
+
// The context.catch method must only be called with a location
|
2431
|
+
// argument that corresponds to a known catch block.
|
2432
|
+
throw new Error("illegal catch attempt");
|
2433
|
+
},
|
2434
|
+
|
2435
|
+
delegateYield: function(iterable, resultName, nextLoc) {
|
2436
|
+
this.delegate = {
|
2437
|
+
iterator: values(iterable),
|
2438
|
+
resultName: resultName,
|
2439
|
+
nextLoc: nextLoc
|
2440
|
+
};
|
2441
|
+
|
2442
|
+
return ContinueSentinel;
|
2443
|
+
}
|
2444
|
+
};
|
2445
|
+
})(
|
2446
|
+
// Among the various tricks for obtaining a reference to the global
|
2447
|
+
// object, this seems to be the most reliable technique that does not
|
2448
|
+
// use indirect eval (which violates Content Security Policy).
|
2449
|
+
typeof global === "object" ? global :
|
2450
|
+
typeof window === "object" ? window : this
|
2451
|
+
);
|
2452
|
+
|
2453
|
+
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
2454
|
+
},{}]},{},[1]);
|