sprockets-es6 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/sprockets/es6.rb +4 -23
- metadata +25 -14
- data/lib/sprockets/es6/6to5.js +0 -30722
- data/lib/sprockets/es6/6to5/polyfill.js +0 -3271
- data/lib/sprockets/es6/6to5/runtime.js +0 -34
@@ -1,3271 +0,0 @@
|
|
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
|
-
if (typeof Symbol === "undefined") {
|
3
|
-
require("es6-symbol/implement");
|
4
|
-
}
|
5
|
-
|
6
|
-
require("es6-shim");
|
7
|
-
require("regenerator-6to5/runtime");
|
8
|
-
|
9
|
-
},{"es6-shim":3,"es6-symbol/implement":4,"regenerator-6to5/runtime":27}],2:[function(require,module,exports){
|
10
|
-
// shim for using process in browser
|
11
|
-
|
12
|
-
var process = module.exports = {};
|
13
|
-
|
14
|
-
process.nextTick = (function () {
|
15
|
-
var canSetImmediate = typeof window !== 'undefined'
|
16
|
-
&& window.setImmediate;
|
17
|
-
var canMutationObserver = typeof window !== 'undefined'
|
18
|
-
&& window.MutationObserver;
|
19
|
-
var canPost = typeof window !== 'undefined'
|
20
|
-
&& window.postMessage && window.addEventListener
|
21
|
-
;
|
22
|
-
|
23
|
-
if (canSetImmediate) {
|
24
|
-
return function (f) { return window.setImmediate(f) };
|
25
|
-
}
|
26
|
-
|
27
|
-
var queue = [];
|
28
|
-
|
29
|
-
if (canMutationObserver) {
|
30
|
-
var hiddenDiv = document.createElement("div");
|
31
|
-
var observer = new MutationObserver(function () {
|
32
|
-
var queueList = queue.slice();
|
33
|
-
queue.length = 0;
|
34
|
-
queueList.forEach(function (fn) {
|
35
|
-
fn();
|
36
|
-
});
|
37
|
-
});
|
38
|
-
|
39
|
-
observer.observe(hiddenDiv, { attributes: true });
|
40
|
-
|
41
|
-
return function nextTick(fn) {
|
42
|
-
if (!queue.length) {
|
43
|
-
hiddenDiv.setAttribute('yes', 'no');
|
44
|
-
}
|
45
|
-
queue.push(fn);
|
46
|
-
};
|
47
|
-
}
|
48
|
-
|
49
|
-
if (canPost) {
|
50
|
-
window.addEventListener('message', function (ev) {
|
51
|
-
var source = ev.source;
|
52
|
-
if ((source === window || source === null) && ev.data === 'process-tick') {
|
53
|
-
ev.stopPropagation();
|
54
|
-
if (queue.length > 0) {
|
55
|
-
var fn = queue.shift();
|
56
|
-
fn();
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}, true);
|
60
|
-
|
61
|
-
return function nextTick(fn) {
|
62
|
-
queue.push(fn);
|
63
|
-
window.postMessage('process-tick', '*');
|
64
|
-
};
|
65
|
-
}
|
66
|
-
|
67
|
-
return function nextTick(fn) {
|
68
|
-
setTimeout(fn, 0);
|
69
|
-
};
|
70
|
-
})();
|
71
|
-
|
72
|
-
process.title = 'browser';
|
73
|
-
process.browser = true;
|
74
|
-
process.env = {};
|
75
|
-
process.argv = [];
|
76
|
-
|
77
|
-
function noop() {}
|
78
|
-
|
79
|
-
process.on = noop;
|
80
|
-
process.addListener = noop;
|
81
|
-
process.once = noop;
|
82
|
-
process.off = noop;
|
83
|
-
process.removeListener = noop;
|
84
|
-
process.removeAllListeners = noop;
|
85
|
-
process.emit = noop;
|
86
|
-
|
87
|
-
process.binding = function (name) {
|
88
|
-
throw new Error('process.binding is not supported');
|
89
|
-
};
|
90
|
-
|
91
|
-
// TODO(shtylman)
|
92
|
-
process.cwd = function () { return '/' };
|
93
|
-
process.chdir = function (dir) {
|
94
|
-
throw new Error('process.chdir is not supported');
|
95
|
-
};
|
96
|
-
|
97
|
-
},{}],3:[function(require,module,exports){
|
98
|
-
(function (process){
|
99
|
-
/*!
|
100
|
-
* https://github.com/paulmillr/es6-shim
|
101
|
-
* @license es6-shim Copyright 2013-2014 by Paul Miller (http://paulmillr.com)
|
102
|
-
* and contributors, MIT License
|
103
|
-
* es6-shim: v0.20.2
|
104
|
-
* see https://github.com/paulmillr/es6-shim/blob/master/LICENSE
|
105
|
-
* Details and documentation:
|
106
|
-
* https://github.com/paulmillr/es6-shim/
|
107
|
-
*/
|
108
|
-
|
109
|
-
// UMD (Universal Module Definition)
|
110
|
-
// see https://github.com/umdjs/umd/blob/master/returnExports.js
|
111
|
-
(function (root, factory) {
|
112
|
-
if (typeof define === 'function' && define.amd) {
|
113
|
-
// AMD. Register as an anonymous module.
|
114
|
-
define(factory);
|
115
|
-
} else if (typeof exports === 'object') {
|
116
|
-
// Node. Does not work with strict CommonJS, but
|
117
|
-
// only CommonJS-like enviroments that support module.exports,
|
118
|
-
// like Node.
|
119
|
-
module.exports = factory();
|
120
|
-
} else {
|
121
|
-
// Browser globals (root is window)
|
122
|
-
root.returnExports = factory();
|
123
|
-
}
|
124
|
-
}(this, function () {
|
125
|
-
'use strict';
|
126
|
-
|
127
|
-
var isCallableWithoutNew = function (func) {
|
128
|
-
try { func(); }
|
129
|
-
catch (e) { return false; }
|
130
|
-
return true;
|
131
|
-
};
|
132
|
-
|
133
|
-
var supportsSubclassing = function (C, f) {
|
134
|
-
/* jshint proto:true */
|
135
|
-
try {
|
136
|
-
var Sub = function () { C.apply(this, arguments); };
|
137
|
-
if (!Sub.__proto__) { return false; /* skip test on IE < 11 */ }
|
138
|
-
Object.setPrototypeOf(Sub, C);
|
139
|
-
Sub.prototype = Object.create(C.prototype, {
|
140
|
-
constructor: { value: C }
|
141
|
-
});
|
142
|
-
return f(Sub);
|
143
|
-
} catch (e) {
|
144
|
-
return false;
|
145
|
-
}
|
146
|
-
};
|
147
|
-
|
148
|
-
var arePropertyDescriptorsSupported = function () {
|
149
|
-
try {
|
150
|
-
Object.defineProperty({}, 'x', {});
|
151
|
-
return true;
|
152
|
-
} catch (e) { /* this is IE 8. */
|
153
|
-
return false;
|
154
|
-
}
|
155
|
-
};
|
156
|
-
|
157
|
-
var startsWithRejectsRegex = function () {
|
158
|
-
var rejectsRegex = false;
|
159
|
-
if (String.prototype.startsWith) {
|
160
|
-
try {
|
161
|
-
'/a/'.startsWith(/a/);
|
162
|
-
} catch (e) { /* this is spec compliant */
|
163
|
-
rejectsRegex = true;
|
164
|
-
}
|
165
|
-
}
|
166
|
-
return rejectsRegex;
|
167
|
-
};
|
168
|
-
|
169
|
-
/*jshint evil: true */
|
170
|
-
var getGlobal = new Function('return this;');
|
171
|
-
/*jshint evil: false */
|
172
|
-
|
173
|
-
var globals = getGlobal();
|
174
|
-
var global_isFinite = globals.isFinite;
|
175
|
-
var supportsDescriptors = !!Object.defineProperty && arePropertyDescriptorsSupported();
|
176
|
-
var startsWithIsCompliant = startsWithRejectsRegex();
|
177
|
-
var _slice = Array.prototype.slice;
|
178
|
-
var _indexOf = String.prototype.indexOf;
|
179
|
-
var _toString = Object.prototype.toString;
|
180
|
-
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
181
|
-
var ArrayIterator; // make our implementation private
|
182
|
-
|
183
|
-
var defineProperty = function (object, name, value, force) {
|
184
|
-
if (!force && name in object) { return; }
|
185
|
-
if (supportsDescriptors) {
|
186
|
-
Object.defineProperty(object, name, {
|
187
|
-
configurable: true,
|
188
|
-
enumerable: false,
|
189
|
-
writable: true,
|
190
|
-
value: value
|
191
|
-
});
|
192
|
-
} else {
|
193
|
-
object[name] = value;
|
194
|
-
}
|
195
|
-
};
|
196
|
-
|
197
|
-
// Define configurable, writable and non-enumerable props
|
198
|
-
// if they don’t exist.
|
199
|
-
var defineProperties = function (object, map) {
|
200
|
-
Object.keys(map).forEach(function (name) {
|
201
|
-
var method = map[name];
|
202
|
-
defineProperty(object, name, method, false);
|
203
|
-
});
|
204
|
-
};
|
205
|
-
|
206
|
-
// Simple shim for Object.create on ES3 browsers
|
207
|
-
// (unlike real shim, no attempt to support `prototype === null`)
|
208
|
-
var create = Object.create || function (prototype, properties) {
|
209
|
-
function Type() {}
|
210
|
-
Type.prototype = prototype;
|
211
|
-
var object = new Type();
|
212
|
-
if (typeof properties !== 'undefined') {
|
213
|
-
defineProperties(object, properties);
|
214
|
-
}
|
215
|
-
return object;
|
216
|
-
};
|
217
|
-
|
218
|
-
// This is a private name in the es6 spec, equal to '[Symbol.iterator]'
|
219
|
-
// we're going to use an arbitrary _-prefixed name to make our shims
|
220
|
-
// work properly with each other, even though we don't have full Iterator
|
221
|
-
// support. That is, `Array.from(map.keys())` will work, but we don't
|
222
|
-
// pretend to export a "real" Iterator interface.
|
223
|
-
var $iterator$ = (typeof Symbol === 'function' && Symbol.iterator) ||
|
224
|
-
'_es6shim_iterator_';
|
225
|
-
// Firefox ships a partial implementation using the name @@iterator.
|
226
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=907077#c14
|
227
|
-
// So use that name if we detect it.
|
228
|
-
if (globals.Set && typeof new globals.Set()['@@iterator'] === 'function') {
|
229
|
-
$iterator$ = '@@iterator';
|
230
|
-
}
|
231
|
-
var addIterator = function (prototype, impl) {
|
232
|
-
if (!impl) { impl = function iterator() { return this; }; }
|
233
|
-
var o = {};
|
234
|
-
o[$iterator$] = impl;
|
235
|
-
defineProperties(prototype, o);
|
236
|
-
/* jshint notypeof: true */
|
237
|
-
if (!prototype[$iterator$] && typeof $iterator$ === 'symbol') {
|
238
|
-
// implementations are buggy when $iterator$ is a Symbol
|
239
|
-
prototype[$iterator$] = impl;
|
240
|
-
}
|
241
|
-
};
|
242
|
-
|
243
|
-
// taken directly from https://github.com/ljharb/is-arguments/blob/master/index.js
|
244
|
-
// can be replaced with require('is-arguments') if we ever use a build process instead
|
245
|
-
var isArguments = function isArguments(value) {
|
246
|
-
var str = _toString.call(value);
|
247
|
-
var result = str === '[object Arguments]';
|
248
|
-
if (!result) {
|
249
|
-
result = str !== '[object Array]' &&
|
250
|
-
value !== null &&
|
251
|
-
typeof value === 'object' &&
|
252
|
-
typeof value.length === 'number' &&
|
253
|
-
value.length >= 0 &&
|
254
|
-
_toString.call(value.callee) === '[object Function]';
|
255
|
-
}
|
256
|
-
return result;
|
257
|
-
};
|
258
|
-
|
259
|
-
var emulateES6construct = function (o) {
|
260
|
-
if (!ES.TypeIsObject(o)) { throw new TypeError('bad object'); }
|
261
|
-
// es5 approximation to es6 subclass semantics: in es6, 'new Foo'
|
262
|
-
// would invoke Foo.@@create to allocation/initialize the new object.
|
263
|
-
// In es5 we just get the plain object. So if we detect an
|
264
|
-
// uninitialized object, invoke o.constructor.@@create
|
265
|
-
if (!o._es6construct) {
|
266
|
-
if (o.constructor && ES.IsCallable(o.constructor['@@create'])) {
|
267
|
-
o = o.constructor['@@create'](o);
|
268
|
-
}
|
269
|
-
defineProperties(o, { _es6construct: true });
|
270
|
-
}
|
271
|
-
return o;
|
272
|
-
};
|
273
|
-
|
274
|
-
var ES = {
|
275
|
-
CheckObjectCoercible: function (x, optMessage) {
|
276
|
-
/* jshint eqnull:true */
|
277
|
-
if (x == null) {
|
278
|
-
throw new TypeError(optMessage || 'Cannot call method on ' + x);
|
279
|
-
}
|
280
|
-
return x;
|
281
|
-
},
|
282
|
-
|
283
|
-
TypeIsObject: function (x) {
|
284
|
-
/* jshint eqnull:true */
|
285
|
-
// this is expensive when it returns false; use this function
|
286
|
-
// when you expect it to return true in the common case.
|
287
|
-
return x != null && Object(x) === x;
|
288
|
-
},
|
289
|
-
|
290
|
-
ToObject: function (o, optMessage) {
|
291
|
-
return Object(ES.CheckObjectCoercible(o, optMessage));
|
292
|
-
},
|
293
|
-
|
294
|
-
IsCallable: function (x) {
|
295
|
-
return typeof x === 'function' &&
|
296
|
-
// some versions of IE say that typeof /abc/ === 'function'
|
297
|
-
_toString.call(x) === '[object Function]';
|
298
|
-
},
|
299
|
-
|
300
|
-
ToInt32: function (x) {
|
301
|
-
return x >> 0;
|
302
|
-
},
|
303
|
-
|
304
|
-
ToUint32: function (x) {
|
305
|
-
return x >>> 0;
|
306
|
-
},
|
307
|
-
|
308
|
-
ToInteger: function (value) {
|
309
|
-
var number = +value;
|
310
|
-
if (Number.isNaN(number)) { return 0; }
|
311
|
-
if (number === 0 || !Number.isFinite(number)) { return number; }
|
312
|
-
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));
|
313
|
-
},
|
314
|
-
|
315
|
-
ToLength: function (value) {
|
316
|
-
var len = ES.ToInteger(value);
|
317
|
-
if (len <= 0) { return 0; } // includes converting -0 to +0
|
318
|
-
if (len > Number.MAX_SAFE_INTEGER) { return Number.MAX_SAFE_INTEGER; }
|
319
|
-
return len;
|
320
|
-
},
|
321
|
-
|
322
|
-
SameValue: function (a, b) {
|
323
|
-
if (a === b) {
|
324
|
-
// 0 === -0, but they are not identical.
|
325
|
-
if (a === 0) { return 1 / a === 1 / b; }
|
326
|
-
return true;
|
327
|
-
}
|
328
|
-
return Number.isNaN(a) && Number.isNaN(b);
|
329
|
-
},
|
330
|
-
|
331
|
-
SameValueZero: function (a, b) {
|
332
|
-
// same as SameValue except for SameValueZero(+0, -0) == true
|
333
|
-
return (a === b) || (Number.isNaN(a) && Number.isNaN(b));
|
334
|
-
},
|
335
|
-
|
336
|
-
IsIterable: function (o) {
|
337
|
-
return ES.TypeIsObject(o) &&
|
338
|
-
(typeof o[$iterator$] !== 'undefined' || isArguments(o));
|
339
|
-
},
|
340
|
-
|
341
|
-
GetIterator: function (o) {
|
342
|
-
if (isArguments(o)) {
|
343
|
-
// special case support for `arguments`
|
344
|
-
return new ArrayIterator(o, 'value');
|
345
|
-
}
|
346
|
-
var it = o[$iterator$]();
|
347
|
-
if (!ES.TypeIsObject(it)) {
|
348
|
-
throw new TypeError('bad iterator');
|
349
|
-
}
|
350
|
-
return it;
|
351
|
-
},
|
352
|
-
|
353
|
-
IteratorNext: function (it) {
|
354
|
-
var result = arguments.length > 1 ? it.next(arguments[1]) : it.next();
|
355
|
-
if (!ES.TypeIsObject(result)) {
|
356
|
-
throw new TypeError('bad iterator');
|
357
|
-
}
|
358
|
-
return result;
|
359
|
-
},
|
360
|
-
|
361
|
-
Construct: function (C, args) {
|
362
|
-
// CreateFromConstructor
|
363
|
-
var obj;
|
364
|
-
if (ES.IsCallable(C['@@create'])) {
|
365
|
-
obj = C['@@create']();
|
366
|
-
} else {
|
367
|
-
// OrdinaryCreateFromConstructor
|
368
|
-
obj = create(C.prototype || null);
|
369
|
-
}
|
370
|
-
// Mark that we've used the es6 construct path
|
371
|
-
// (see emulateES6construct)
|
372
|
-
defineProperties(obj, { _es6construct: true });
|
373
|
-
// Call the constructor.
|
374
|
-
var result = C.apply(obj, args);
|
375
|
-
return ES.TypeIsObject(result) ? result : obj;
|
376
|
-
}
|
377
|
-
};
|
378
|
-
|
379
|
-
var numberConversion = (function () {
|
380
|
-
// from https://github.com/inexorabletash/polyfill/blob/master/typedarray.js#L176-L266
|
381
|
-
// with permission and license, per https://twitter.com/inexorabletash/status/372206509540659200
|
382
|
-
|
383
|
-
function roundToEven(n) {
|
384
|
-
var w = Math.floor(n), f = n - w;
|
385
|
-
if (f < 0.5) {
|
386
|
-
return w;
|
387
|
-
}
|
388
|
-
if (f > 0.5) {
|
389
|
-
return w + 1;
|
390
|
-
}
|
391
|
-
return w % 2 ? w + 1 : w;
|
392
|
-
}
|
393
|
-
|
394
|
-
function packIEEE754(v, ebits, fbits) {
|
395
|
-
var bias = (1 << (ebits - 1)) - 1,
|
396
|
-
s, e, f, ln,
|
397
|
-
i, bits, str, bytes;
|
398
|
-
|
399
|
-
// Compute sign, exponent, fraction
|
400
|
-
if (v !== v) {
|
401
|
-
// NaN
|
402
|
-
// http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping
|
403
|
-
e = (1 << ebits) - 1;
|
404
|
-
f = Math.pow(2, fbits - 1);
|
405
|
-
s = 0;
|
406
|
-
} else if (v === Infinity || v === -Infinity) {
|
407
|
-
e = (1 << ebits) - 1;
|
408
|
-
f = 0;
|
409
|
-
s = (v < 0) ? 1 : 0;
|
410
|
-
} else if (v === 0) {
|
411
|
-
e = 0;
|
412
|
-
f = 0;
|
413
|
-
s = (1 / v === -Infinity) ? 1 : 0;
|
414
|
-
} else {
|
415
|
-
s = v < 0;
|
416
|
-
v = Math.abs(v);
|
417
|
-
|
418
|
-
if (v >= Math.pow(2, 1 - bias)) {
|
419
|
-
e = Math.min(Math.floor(Math.log(v) / Math.LN2), 1023);
|
420
|
-
f = roundToEven(v / Math.pow(2, e) * Math.pow(2, fbits));
|
421
|
-
if (f / Math.pow(2, fbits) >= 2) {
|
422
|
-
e = e + 1;
|
423
|
-
f = 1;
|
424
|
-
}
|
425
|
-
if (e > bias) {
|
426
|
-
// Overflow
|
427
|
-
e = (1 << ebits) - 1;
|
428
|
-
f = 0;
|
429
|
-
} else {
|
430
|
-
// Normal
|
431
|
-
e = e + bias;
|
432
|
-
f = f - Math.pow(2, fbits);
|
433
|
-
}
|
434
|
-
} else {
|
435
|
-
// Subnormal
|
436
|
-
e = 0;
|
437
|
-
f = roundToEven(v / Math.pow(2, 1 - bias - fbits));
|
438
|
-
}
|
439
|
-
}
|
440
|
-
|
441
|
-
// Pack sign, exponent, fraction
|
442
|
-
bits = [];
|
443
|
-
for (i = fbits; i; i -= 1) {
|
444
|
-
bits.push(f % 2 ? 1 : 0);
|
445
|
-
f = Math.floor(f / 2);
|
446
|
-
}
|
447
|
-
for (i = ebits; i; i -= 1) {
|
448
|
-
bits.push(e % 2 ? 1 : 0);
|
449
|
-
e = Math.floor(e / 2);
|
450
|
-
}
|
451
|
-
bits.push(s ? 1 : 0);
|
452
|
-
bits.reverse();
|
453
|
-
str = bits.join('');
|
454
|
-
|
455
|
-
// Bits to bytes
|
456
|
-
bytes = [];
|
457
|
-
while (str.length) {
|
458
|
-
bytes.push(parseInt(str.slice(0, 8), 2));
|
459
|
-
str = str.slice(8);
|
460
|
-
}
|
461
|
-
return bytes;
|
462
|
-
}
|
463
|
-
|
464
|
-
function unpackIEEE754(bytes, ebits, fbits) {
|
465
|
-
// Bytes to bits
|
466
|
-
var bits = [], i, j, b, str,
|
467
|
-
bias, s, e, f;
|
468
|
-
|
469
|
-
for (i = bytes.length; i; i -= 1) {
|
470
|
-
b = bytes[i - 1];
|
471
|
-
for (j = 8; j; j -= 1) {
|
472
|
-
bits.push(b % 2 ? 1 : 0);
|
473
|
-
b = b >> 1;
|
474
|
-
}
|
475
|
-
}
|
476
|
-
bits.reverse();
|
477
|
-
str = bits.join('');
|
478
|
-
|
479
|
-
// Unpack sign, exponent, fraction
|
480
|
-
bias = (1 << (ebits - 1)) - 1;
|
481
|
-
s = parseInt(str.slice(0, 1), 2) ? -1 : 1;
|
482
|
-
e = parseInt(str.slice(1, 1 + ebits), 2);
|
483
|
-
f = parseInt(str.slice(1 + ebits), 2);
|
484
|
-
|
485
|
-
// Produce number
|
486
|
-
if (e === (1 << ebits) - 1) {
|
487
|
-
return f !== 0 ? NaN : s * Infinity;
|
488
|
-
} else if (e > 0) {
|
489
|
-
// Normalized
|
490
|
-
return s * Math.pow(2, e - bias) * (1 + f / Math.pow(2, fbits));
|
491
|
-
} else if (f !== 0) {
|
492
|
-
// Denormalized
|
493
|
-
return s * Math.pow(2, -(bias - 1)) * (f / Math.pow(2, fbits));
|
494
|
-
} else {
|
495
|
-
return s < 0 ? -0 : 0;
|
496
|
-
}
|
497
|
-
}
|
498
|
-
|
499
|
-
function unpackFloat64(b) { return unpackIEEE754(b, 11, 52); }
|
500
|
-
function packFloat64(v) { return packIEEE754(v, 11, 52); }
|
501
|
-
function unpackFloat32(b) { return unpackIEEE754(b, 8, 23); }
|
502
|
-
function packFloat32(v) { return packIEEE754(v, 8, 23); }
|
503
|
-
|
504
|
-
var conversions = {
|
505
|
-
toFloat32: function (num) { return unpackFloat32(packFloat32(num)); }
|
506
|
-
};
|
507
|
-
if (typeof Float32Array !== 'undefined') {
|
508
|
-
var float32array = new Float32Array(1);
|
509
|
-
conversions.toFloat32 = function (num) {
|
510
|
-
float32array[0] = num;
|
511
|
-
return float32array[0];
|
512
|
-
};
|
513
|
-
}
|
514
|
-
return conversions;
|
515
|
-
}());
|
516
|
-
|
517
|
-
defineProperties(String, {
|
518
|
-
fromCodePoint: function (_) { // length = 1
|
519
|
-
var points = _slice.call(arguments, 0, arguments.length);
|
520
|
-
var result = [];
|
521
|
-
var next;
|
522
|
-
for (var i = 0, length = points.length; i < length; i++) {
|
523
|
-
next = Number(points[i]);
|
524
|
-
if (!ES.SameValue(next, ES.ToInteger(next)) ||
|
525
|
-
next < 0 || next > 0x10FFFF) {
|
526
|
-
throw new RangeError('Invalid code point ' + next);
|
527
|
-
}
|
528
|
-
|
529
|
-
if (next < 0x10000) {
|
530
|
-
result.push(String.fromCharCode(next));
|
531
|
-
} else {
|
532
|
-
next -= 0x10000;
|
533
|
-
result.push(String.fromCharCode((next >> 10) + 0xD800));
|
534
|
-
result.push(String.fromCharCode((next % 0x400) + 0xDC00));
|
535
|
-
}
|
536
|
-
}
|
537
|
-
return result.join('');
|
538
|
-
},
|
539
|
-
|
540
|
-
raw: function (callSite) { // raw.length===1
|
541
|
-
var substitutions = _slice.call(arguments, 1, arguments.length);
|
542
|
-
var cooked = ES.ToObject(callSite, 'bad callSite');
|
543
|
-
var rawValue = cooked.raw;
|
544
|
-
var raw = ES.ToObject(rawValue, 'bad raw value');
|
545
|
-
var len = Object.keys(raw).length;
|
546
|
-
var literalsegments = ES.ToLength(len);
|
547
|
-
if (literalsegments === 0) {
|
548
|
-
return '';
|
549
|
-
}
|
550
|
-
|
551
|
-
var stringElements = [];
|
552
|
-
var nextIndex = 0;
|
553
|
-
var nextKey, next, nextSeg, nextSub;
|
554
|
-
while (nextIndex < literalsegments) {
|
555
|
-
nextKey = String(nextIndex);
|
556
|
-
next = raw[nextKey];
|
557
|
-
nextSeg = String(next);
|
558
|
-
stringElements.push(nextSeg);
|
559
|
-
if (nextIndex + 1 >= literalsegments) {
|
560
|
-
break;
|
561
|
-
}
|
562
|
-
next = substitutions[nextKey];
|
563
|
-
if (typeof next === 'undefined') {
|
564
|
-
break;
|
565
|
-
}
|
566
|
-
nextSub = String(next);
|
567
|
-
stringElements.push(nextSub);
|
568
|
-
nextIndex++;
|
569
|
-
}
|
570
|
-
return stringElements.join('');
|
571
|
-
}
|
572
|
-
});
|
573
|
-
|
574
|
-
// Firefox 31 reports this function's length as 0
|
575
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1062484
|
576
|
-
if (String.fromCodePoint.length !== 1) {
|
577
|
-
var originalFromCodePoint = String.fromCodePoint;
|
578
|
-
defineProperty(String, 'fromCodePoint', function (_) { return originalFromCodePoint.apply(this, arguments); }, true);
|
579
|
-
}
|
580
|
-
|
581
|
-
var StringShims = {
|
582
|
-
// Fast repeat, uses the `Exponentiation by squaring` algorithm.
|
583
|
-
// Perf: http://jsperf.com/string-repeat2/2
|
584
|
-
repeat: (function () {
|
585
|
-
var repeat = function (s, times) {
|
586
|
-
if (times < 1) { return ''; }
|
587
|
-
if (times % 2) { return repeat(s, times - 1) + s; }
|
588
|
-
var half = repeat(s, times / 2);
|
589
|
-
return half + half;
|
590
|
-
};
|
591
|
-
|
592
|
-
return function (times) {
|
593
|
-
var thisStr = String(ES.CheckObjectCoercible(this));
|
594
|
-
times = ES.ToInteger(times);
|
595
|
-
if (times < 0 || times === Infinity) {
|
596
|
-
throw new RangeError('Invalid String#repeat value');
|
597
|
-
}
|
598
|
-
return repeat(thisStr, times);
|
599
|
-
};
|
600
|
-
})(),
|
601
|
-
|
602
|
-
startsWith: function (searchStr) {
|
603
|
-
var thisStr = String(ES.CheckObjectCoercible(this));
|
604
|
-
if (_toString.call(searchStr) === '[object RegExp]') {
|
605
|
-
throw new TypeError('Cannot call method "startsWith" with a regex');
|
606
|
-
}
|
607
|
-
searchStr = String(searchStr);
|
608
|
-
var startArg = arguments.length > 1 ? arguments[1] : void 0;
|
609
|
-
var start = Math.max(ES.ToInteger(startArg), 0);
|
610
|
-
return thisStr.slice(start, start + searchStr.length) === searchStr;
|
611
|
-
},
|
612
|
-
|
613
|
-
endsWith: function (searchStr) {
|
614
|
-
var thisStr = String(ES.CheckObjectCoercible(this));
|
615
|
-
if (_toString.call(searchStr) === '[object RegExp]') {
|
616
|
-
throw new TypeError('Cannot call method "endsWith" with a regex');
|
617
|
-
}
|
618
|
-
searchStr = String(searchStr);
|
619
|
-
var thisLen = thisStr.length;
|
620
|
-
var posArg = arguments.length > 1 ? arguments[1] : void 0;
|
621
|
-
var pos = typeof posArg === 'undefined' ? thisLen : ES.ToInteger(posArg);
|
622
|
-
var end = Math.min(Math.max(pos, 0), thisLen);
|
623
|
-
return thisStr.slice(end - searchStr.length, end) === searchStr;
|
624
|
-
},
|
625
|
-
|
626
|
-
contains: function (searchString) {
|
627
|
-
var position = arguments.length > 1 ? arguments[1] : void 0;
|
628
|
-
// Somehow this trick makes method 100% compat with the spec.
|
629
|
-
return _indexOf.call(this, searchString, position) !== -1;
|
630
|
-
},
|
631
|
-
|
632
|
-
codePointAt: function (pos) {
|
633
|
-
var thisStr = String(ES.CheckObjectCoercible(this));
|
634
|
-
var position = ES.ToInteger(pos);
|
635
|
-
var length = thisStr.length;
|
636
|
-
if (position < 0 || position >= length) { return; }
|
637
|
-
var first = thisStr.charCodeAt(position);
|
638
|
-
var isEnd = (position + 1 === length);
|
639
|
-
if (first < 0xD800 || first > 0xDBFF || isEnd) { return first; }
|
640
|
-
var second = thisStr.charCodeAt(position + 1);
|
641
|
-
if (second < 0xDC00 || second > 0xDFFF) { return first; }
|
642
|
-
return ((first - 0xD800) * 1024) + (second - 0xDC00) + 0x10000;
|
643
|
-
}
|
644
|
-
};
|
645
|
-
defineProperties(String.prototype, StringShims);
|
646
|
-
|
647
|
-
var hasStringTrimBug = '\u0085'.trim().length !== 1;
|
648
|
-
if (hasStringTrimBug) {
|
649
|
-
var originalStringTrim = String.prototype.trim;
|
650
|
-
delete String.prototype.trim;
|
651
|
-
// whitespace from: http://es5.github.io/#x15.5.4.20
|
652
|
-
// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324
|
653
|
-
var ws = [
|
654
|
-
'\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003',
|
655
|
-
'\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028',
|
656
|
-
'\u2029\uFEFF'
|
657
|
-
].join('');
|
658
|
-
var trimRegexp = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');
|
659
|
-
defineProperties(String.prototype, {
|
660
|
-
trim: function () {
|
661
|
-
if (typeof this === 'undefined' || this === null) {
|
662
|
-
throw new TypeError("can't convert " + this + ' to object');
|
663
|
-
}
|
664
|
-
return String(this).replace(trimRegexp, '');
|
665
|
-
}
|
666
|
-
});
|
667
|
-
}
|
668
|
-
|
669
|
-
// see https://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype-@@iterator
|
670
|
-
var StringIterator = function (s) {
|
671
|
-
this._s = String(ES.CheckObjectCoercible(s));
|
672
|
-
this._i = 0;
|
673
|
-
};
|
674
|
-
StringIterator.prototype.next = function () {
|
675
|
-
var s = this._s, i = this._i;
|
676
|
-
if (typeof s === 'undefined' || i >= s.length) {
|
677
|
-
this._s = void 0;
|
678
|
-
return { value: void 0, done: true };
|
679
|
-
}
|
680
|
-
var first = s.charCodeAt(i), second, len;
|
681
|
-
if (first < 0xD800 || first > 0xDBFF || (i + 1) == s.length) {
|
682
|
-
len = 1;
|
683
|
-
} else {
|
684
|
-
second = s.charCodeAt(i + 1);
|
685
|
-
len = (second < 0xDC00 || second > 0xDFFF) ? 1 : 2;
|
686
|
-
}
|
687
|
-
this._i = i + len;
|
688
|
-
return { value: s.substr(i, len), done: false };
|
689
|
-
};
|
690
|
-
addIterator(StringIterator.prototype);
|
691
|
-
addIterator(String.prototype, function () {
|
692
|
-
return new StringIterator(this);
|
693
|
-
});
|
694
|
-
|
695
|
-
if (!startsWithIsCompliant) {
|
696
|
-
// Firefox has a noncompliant startsWith implementation
|
697
|
-
String.prototype.startsWith = StringShims.startsWith;
|
698
|
-
String.prototype.endsWith = StringShims.endsWith;
|
699
|
-
}
|
700
|
-
|
701
|
-
var ArrayShims = {
|
702
|
-
from: function (iterable) {
|
703
|
-
var mapFn = arguments.length > 1 ? arguments[1] : void 0;
|
704
|
-
|
705
|
-
var list = ES.ToObject(iterable, 'bad iterable');
|
706
|
-
if (typeof mapFn !== 'undefined' && !ES.IsCallable(mapFn)) {
|
707
|
-
throw new TypeError('Array.from: when provided, the second argument must be a function');
|
708
|
-
}
|
709
|
-
|
710
|
-
var hasThisArg = arguments.length > 2;
|
711
|
-
var thisArg = hasThisArg ? arguments[2] : void 0;
|
712
|
-
|
713
|
-
var usingIterator = ES.IsIterable(list);
|
714
|
-
// does the spec really mean that Arrays should use ArrayIterator?
|
715
|
-
// https://bugs.ecmascript.org/show_bug.cgi?id=2416
|
716
|
-
//if (Array.isArray(list)) { usingIterator=false; }
|
717
|
-
|
718
|
-
var length;
|
719
|
-
var result, i, value;
|
720
|
-
if (usingIterator) {
|
721
|
-
i = 0;
|
722
|
-
result = ES.IsCallable(this) ? Object(new this()) : [];
|
723
|
-
var it = usingIterator ? ES.GetIterator(list) : null;
|
724
|
-
var iterationValue;
|
725
|
-
|
726
|
-
do {
|
727
|
-
iterationValue = ES.IteratorNext(it);
|
728
|
-
if (!iterationValue.done) {
|
729
|
-
value = iterationValue.value;
|
730
|
-
if (mapFn) {
|
731
|
-
result[i] = hasThisArg ? mapFn.call(thisArg, value, i) : mapFn(value, i);
|
732
|
-
} else {
|
733
|
-
result[i] = value;
|
734
|
-
}
|
735
|
-
i += 1;
|
736
|
-
}
|
737
|
-
} while (!iterationValue.done);
|
738
|
-
length = i;
|
739
|
-
} else {
|
740
|
-
length = ES.ToLength(list.length);
|
741
|
-
result = ES.IsCallable(this) ? Object(new this(length)) : new Array(length);
|
742
|
-
for (i = 0; i < length; ++i) {
|
743
|
-
value = list[i];
|
744
|
-
if (mapFn) {
|
745
|
-
result[i] = hasThisArg ? mapFn.call(thisArg, value, i) : mapFn(value, i);
|
746
|
-
} else {
|
747
|
-
result[i] = value;
|
748
|
-
}
|
749
|
-
}
|
750
|
-
}
|
751
|
-
|
752
|
-
result.length = length;
|
753
|
-
return result;
|
754
|
-
},
|
755
|
-
|
756
|
-
of: function () {
|
757
|
-
return Array.from(arguments);
|
758
|
-
}
|
759
|
-
};
|
760
|
-
defineProperties(Array, ArrayShims);
|
761
|
-
|
762
|
-
var arrayFromSwallowsNegativeLengths = function () {
|
763
|
-
try {
|
764
|
-
return Array.from({ length: -1 }).length === 0;
|
765
|
-
} catch (e) {
|
766
|
-
return false;
|
767
|
-
}
|
768
|
-
};
|
769
|
-
// Fixes a Firefox bug in v32
|
770
|
-
// https://bugzilla.mozilla.org/show_bug.cgi?id=1063993
|
771
|
-
if (!arrayFromSwallowsNegativeLengths()) {
|
772
|
-
defineProperty(Array, 'from', ArrayShims.from, true);
|
773
|
-
}
|
774
|
-
|
775
|
-
// Our ArrayIterator is private; see
|
776
|
-
// https://github.com/paulmillr/es6-shim/issues/252
|
777
|
-
ArrayIterator = function (array, kind) {
|
778
|
-
this.i = 0;
|
779
|
-
this.array = array;
|
780
|
-
this.kind = kind;
|
781
|
-
};
|
782
|
-
|
783
|
-
defineProperties(ArrayIterator.prototype, {
|
784
|
-
next: function () {
|
785
|
-
var i = this.i, array = this.array;
|
786
|
-
if (!(this instanceof ArrayIterator)) {
|
787
|
-
throw new TypeError('Not an ArrayIterator');
|
788
|
-
}
|
789
|
-
if (typeof array !== 'undefined') {
|
790
|
-
var len = ES.ToLength(array.length);
|
791
|
-
for (; i < len; i++) {
|
792
|
-
var kind = this.kind;
|
793
|
-
var retval;
|
794
|
-
if (kind === 'key') {
|
795
|
-
retval = i;
|
796
|
-
} else if (kind === 'value') {
|
797
|
-
retval = array[i];
|
798
|
-
} else if (kind === 'entry') {
|
799
|
-
retval = [i, array[i]];
|
800
|
-
}
|
801
|
-
this.i = i + 1;
|
802
|
-
return { value: retval, done: false };
|
803
|
-
}
|
804
|
-
}
|
805
|
-
this.array = void 0;
|
806
|
-
return { value: void 0, done: true };
|
807
|
-
}
|
808
|
-
});
|
809
|
-
addIterator(ArrayIterator.prototype);
|
810
|
-
|
811
|
-
var ArrayPrototypeShims = {
|
812
|
-
copyWithin: function (target, start) {
|
813
|
-
var end = arguments[2]; // copyWithin.length must be 2
|
814
|
-
var o = ES.ToObject(this);
|
815
|
-
var len = ES.ToLength(o.length);
|
816
|
-
target = ES.ToInteger(target);
|
817
|
-
start = ES.ToInteger(start);
|
818
|
-
var to = target < 0 ? Math.max(len + target, 0) : Math.min(target, len);
|
819
|
-
var from = start < 0 ? Math.max(len + start, 0) : Math.min(start, len);
|
820
|
-
end = typeof end === 'undefined' ? len : ES.ToInteger(end);
|
821
|
-
var fin = end < 0 ? Math.max(len + end, 0) : Math.min(end, len);
|
822
|
-
var count = Math.min(fin - from, len - to);
|
823
|
-
var direction = 1;
|
824
|
-
if (from < to && to < (from + count)) {
|
825
|
-
direction = -1;
|
826
|
-
from += count - 1;
|
827
|
-
to += count - 1;
|
828
|
-
}
|
829
|
-
while (count > 0) {
|
830
|
-
if (_hasOwnProperty.call(o, from)) {
|
831
|
-
o[to] = o[from];
|
832
|
-
} else {
|
833
|
-
delete o[from];
|
834
|
-
}
|
835
|
-
from += direction;
|
836
|
-
to += direction;
|
837
|
-
count -= 1;
|
838
|
-
}
|
839
|
-
return o;
|
840
|
-
},
|
841
|
-
|
842
|
-
fill: function (value) {
|
843
|
-
var start = arguments.length > 1 ? arguments[1] : void 0;
|
844
|
-
var end = arguments.length > 2 ? arguments[2] : void 0;
|
845
|
-
var O = ES.ToObject(this);
|
846
|
-
var len = ES.ToLength(O.length);
|
847
|
-
start = ES.ToInteger(typeof start === 'undefined' ? 0 : start);
|
848
|
-
end = ES.ToInteger(typeof end === 'undefined' ? len : end);
|
849
|
-
|
850
|
-
var relativeStart = start < 0 ? Math.max(len + start, 0) : Math.min(start, len);
|
851
|
-
var relativeEnd = end < 0 ? len + end : end;
|
852
|
-
|
853
|
-
for (var i = relativeStart; i < len && i < relativeEnd; ++i) {
|
854
|
-
O[i] = value;
|
855
|
-
}
|
856
|
-
return O;
|
857
|
-
},
|
858
|
-
|
859
|
-
find: function find(predicate) {
|
860
|
-
var list = ES.ToObject(this);
|
861
|
-
var length = ES.ToLength(list.length);
|
862
|
-
if (!ES.IsCallable(predicate)) {
|
863
|
-
throw new TypeError('Array#find: predicate must be a function');
|
864
|
-
}
|
865
|
-
var thisArg = arguments[1];
|
866
|
-
for (var i = 0, value; i < length; i++) {
|
867
|
-
value = list[i];
|
868
|
-
if (predicate.call(thisArg, value, i, list)) { return value; }
|
869
|
-
}
|
870
|
-
return;
|
871
|
-
},
|
872
|
-
|
873
|
-
findIndex: function findIndex(predicate) {
|
874
|
-
var list = ES.ToObject(this);
|
875
|
-
var length = ES.ToLength(list.length);
|
876
|
-
if (!ES.IsCallable(predicate)) {
|
877
|
-
throw new TypeError('Array#findIndex: predicate must be a function');
|
878
|
-
}
|
879
|
-
var thisArg = arguments[1];
|
880
|
-
for (var i = 0; i < length; i++) {
|
881
|
-
if (predicate.call(thisArg, list[i], i, list)) { return i; }
|
882
|
-
}
|
883
|
-
return -1;
|
884
|
-
},
|
885
|
-
|
886
|
-
keys: function () {
|
887
|
-
return new ArrayIterator(this, 'key');
|
888
|
-
},
|
889
|
-
|
890
|
-
values: function () {
|
891
|
-
return new ArrayIterator(this, 'value');
|
892
|
-
},
|
893
|
-
|
894
|
-
entries: function () {
|
895
|
-
return new ArrayIterator(this, 'entry');
|
896
|
-
}
|
897
|
-
};
|
898
|
-
// Safari 7.1 defines Array#keys and Array#entries natively,
|
899
|
-
// but the resulting ArrayIterator objects don't have a "next" method.
|
900
|
-
if (Array.prototype.keys && !ES.IsCallable([1].keys().next)) {
|
901
|
-
delete Array.prototype.keys;
|
902
|
-
}
|
903
|
-
if (Array.prototype.entries && !ES.IsCallable([1].entries().next)) {
|
904
|
-
delete Array.prototype.entries;
|
905
|
-
}
|
906
|
-
defineProperties(Array.prototype, ArrayPrototypeShims);
|
907
|
-
|
908
|
-
addIterator(Array.prototype, function () { return this.values(); });
|
909
|
-
// Chrome defines keys/values/entries on Array, but doesn't give us
|
910
|
-
// any way to identify its iterator. So add our own shimmed field.
|
911
|
-
if (Object.getPrototypeOf) {
|
912
|
-
addIterator(Object.getPrototypeOf([].values()));
|
913
|
-
}
|
914
|
-
|
915
|
-
var maxSafeInteger = Math.pow(2, 53) - 1;
|
916
|
-
defineProperties(Number, {
|
917
|
-
MAX_SAFE_INTEGER: maxSafeInteger,
|
918
|
-
MIN_SAFE_INTEGER: -maxSafeInteger,
|
919
|
-
EPSILON: 2.220446049250313e-16,
|
920
|
-
|
921
|
-
parseInt: globals.parseInt,
|
922
|
-
parseFloat: globals.parseFloat,
|
923
|
-
|
924
|
-
isFinite: function (value) {
|
925
|
-
return typeof value === 'number' && global_isFinite(value);
|
926
|
-
},
|
927
|
-
|
928
|
-
isInteger: function (value) {
|
929
|
-
return Number.isFinite(value) &&
|
930
|
-
ES.ToInteger(value) === value;
|
931
|
-
},
|
932
|
-
|
933
|
-
isSafeInteger: function (value) {
|
934
|
-
return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
|
935
|
-
},
|
936
|
-
|
937
|
-
isNaN: function (value) {
|
938
|
-
// NaN !== NaN, but they are identical.
|
939
|
-
// NaNs are the only non-reflexive value, i.e., if x !== x,
|
940
|
-
// then x is NaN.
|
941
|
-
// isNaN is broken: it converts its argument to number, so
|
942
|
-
// isNaN('foo') => true
|
943
|
-
return value !== value;
|
944
|
-
}
|
945
|
-
|
946
|
-
});
|
947
|
-
|
948
|
-
// Work around bugs in Array#find and Array#findIndex -- early
|
949
|
-
// implementations skipped holes in sparse arrays. (Note that the
|
950
|
-
// implementations of find/findIndex indirectly use shimmed
|
951
|
-
// methods of Number, so this test has to happen down here.)
|
952
|
-
if (![, 1].find(function (item, idx) { return idx === 0; })) {
|
953
|
-
defineProperty(Array.prototype, 'find', ArrayPrototypeShims.find, true);
|
954
|
-
}
|
955
|
-
if ([, 1].findIndex(function (item, idx) { return idx === 0; }) !== 0) {
|
956
|
-
defineProperty(Array.prototype, 'findIndex', ArrayPrototypeShims.findIndex, true);
|
957
|
-
}
|
958
|
-
|
959
|
-
if (supportsDescriptors) {
|
960
|
-
defineProperties(Object, {
|
961
|
-
getPropertyDescriptor: function (subject, name) {
|
962
|
-
var pd = Object.getOwnPropertyDescriptor(subject, name);
|
963
|
-
var proto = Object.getPrototypeOf(subject);
|
964
|
-
while (typeof pd === 'undefined' && proto !== null) {
|
965
|
-
pd = Object.getOwnPropertyDescriptor(proto, name);
|
966
|
-
proto = Object.getPrototypeOf(proto);
|
967
|
-
}
|
968
|
-
return pd;
|
969
|
-
},
|
970
|
-
|
971
|
-
getPropertyNames: function (subject) {
|
972
|
-
var result = Object.getOwnPropertyNames(subject);
|
973
|
-
var proto = Object.getPrototypeOf(subject);
|
974
|
-
|
975
|
-
var addProperty = function (property) {
|
976
|
-
if (result.indexOf(property) === -1) {
|
977
|
-
result.push(property);
|
978
|
-
}
|
979
|
-
};
|
980
|
-
|
981
|
-
while (proto !== null) {
|
982
|
-
Object.getOwnPropertyNames(proto).forEach(addProperty);
|
983
|
-
proto = Object.getPrototypeOf(proto);
|
984
|
-
}
|
985
|
-
return result;
|
986
|
-
}
|
987
|
-
});
|
988
|
-
|
989
|
-
defineProperties(Object, {
|
990
|
-
// 19.1.3.1
|
991
|
-
assign: function (target, source) {
|
992
|
-
if (!ES.TypeIsObject(target)) {
|
993
|
-
throw new TypeError('target must be an object');
|
994
|
-
}
|
995
|
-
return Array.prototype.reduce.call(arguments, function (target, source) {
|
996
|
-
return Object.keys(Object(source)).reduce(function (target, key) {
|
997
|
-
target[key] = source[key];
|
998
|
-
return target;
|
999
|
-
}, target);
|
1000
|
-
});
|
1001
|
-
},
|
1002
|
-
|
1003
|
-
is: function (a, b) {
|
1004
|
-
return ES.SameValue(a, b);
|
1005
|
-
},
|
1006
|
-
|
1007
|
-
// 19.1.3.9
|
1008
|
-
// shim from https://gist.github.com/WebReflection/5593554
|
1009
|
-
setPrototypeOf: (function (Object, magic) {
|
1010
|
-
var set;
|
1011
|
-
|
1012
|
-
var checkArgs = function (O, proto) {
|
1013
|
-
if (!ES.TypeIsObject(O)) {
|
1014
|
-
throw new TypeError('cannot set prototype on a non-object');
|
1015
|
-
}
|
1016
|
-
if (!(proto === null || ES.TypeIsObject(proto))) {
|
1017
|
-
throw new TypeError('can only set prototype to an object or null' + proto);
|
1018
|
-
}
|
1019
|
-
};
|
1020
|
-
|
1021
|
-
var setPrototypeOf = function (O, proto) {
|
1022
|
-
checkArgs(O, proto);
|
1023
|
-
set.call(O, proto);
|
1024
|
-
return O;
|
1025
|
-
};
|
1026
|
-
|
1027
|
-
try {
|
1028
|
-
// this works already in Firefox and Safari
|
1029
|
-
set = Object.getOwnPropertyDescriptor(Object.prototype, magic).set;
|
1030
|
-
set.call({}, null);
|
1031
|
-
} catch (e) {
|
1032
|
-
if (Object.prototype !== {}[magic]) {
|
1033
|
-
// IE < 11 cannot be shimmed
|
1034
|
-
return;
|
1035
|
-
}
|
1036
|
-
// probably Chrome or some old Mobile stock browser
|
1037
|
-
set = function (proto) {
|
1038
|
-
this[magic] = proto;
|
1039
|
-
};
|
1040
|
-
// please note that this will **not** work
|
1041
|
-
// in those browsers that do not inherit
|
1042
|
-
// __proto__ by mistake from Object.prototype
|
1043
|
-
// in these cases we should probably throw an error
|
1044
|
-
// or at least be informed about the issue
|
1045
|
-
setPrototypeOf.polyfill = setPrototypeOf(
|
1046
|
-
setPrototypeOf({}, null),
|
1047
|
-
Object.prototype
|
1048
|
-
) instanceof Object;
|
1049
|
-
// setPrototypeOf.polyfill === true means it works as meant
|
1050
|
-
// setPrototypeOf.polyfill === false means it's not 100% reliable
|
1051
|
-
// setPrototypeOf.polyfill === undefined
|
1052
|
-
// or
|
1053
|
-
// setPrototypeOf.polyfill == null means it's not a polyfill
|
1054
|
-
// which means it works as expected
|
1055
|
-
// we can even delete Object.prototype.__proto__;
|
1056
|
-
}
|
1057
|
-
return setPrototypeOf;
|
1058
|
-
})(Object, '__proto__')
|
1059
|
-
});
|
1060
|
-
}
|
1061
|
-
|
1062
|
-
// Workaround bug in Opera 12 where setPrototypeOf(x, null) doesn't work,
|
1063
|
-
// but Object.create(null) does.
|
1064
|
-
if (Object.setPrototypeOf && Object.getPrototypeOf &&
|
1065
|
-
Object.getPrototypeOf(Object.setPrototypeOf({}, null)) !== null &&
|
1066
|
-
Object.getPrototypeOf(Object.create(null)) === null) {
|
1067
|
-
(function () {
|
1068
|
-
var FAKENULL = Object.create(null);
|
1069
|
-
var gpo = Object.getPrototypeOf, spo = Object.setPrototypeOf;
|
1070
|
-
Object.getPrototypeOf = function (o) {
|
1071
|
-
var result = gpo(o);
|
1072
|
-
return result === FAKENULL ? null : result;
|
1073
|
-
};
|
1074
|
-
Object.setPrototypeOf = function (o, p) {
|
1075
|
-
if (p === null) { p = FAKENULL; }
|
1076
|
-
return spo(o, p);
|
1077
|
-
};
|
1078
|
-
Object.setPrototypeOf.polyfill = false;
|
1079
|
-
})();
|
1080
|
-
}
|
1081
|
-
|
1082
|
-
try {
|
1083
|
-
Object.keys('foo');
|
1084
|
-
} catch (e) {
|
1085
|
-
var originalObjectKeys = Object.keys;
|
1086
|
-
Object.keys = function (obj) {
|
1087
|
-
return originalObjectKeys(ES.ToObject(obj));
|
1088
|
-
};
|
1089
|
-
}
|
1090
|
-
|
1091
|
-
var MathShims = {
|
1092
|
-
acosh: function (value) {
|
1093
|
-
value = Number(value);
|
1094
|
-
if (Number.isNaN(value) || value < 1) { return NaN; }
|
1095
|
-
if (value === 1) { return 0; }
|
1096
|
-
if (value === Infinity) { return value; }
|
1097
|
-
return Math.log(value + Math.sqrt(value * value - 1));
|
1098
|
-
},
|
1099
|
-
|
1100
|
-
asinh: function (value) {
|
1101
|
-
value = Number(value);
|
1102
|
-
if (value === 0 || !global_isFinite(value)) {
|
1103
|
-
return value;
|
1104
|
-
}
|
1105
|
-
return value < 0 ? -Math.asinh(-value) : Math.log(value + Math.sqrt(value * value + 1));
|
1106
|
-
},
|
1107
|
-
|
1108
|
-
atanh: function (value) {
|
1109
|
-
value = Number(value);
|
1110
|
-
if (Number.isNaN(value) || value < -1 || value > 1) {
|
1111
|
-
return NaN;
|
1112
|
-
}
|
1113
|
-
if (value === -1) { return -Infinity; }
|
1114
|
-
if (value === 1) { return Infinity; }
|
1115
|
-
if (value === 0) { return value; }
|
1116
|
-
return 0.5 * Math.log((1 + value) / (1 - value));
|
1117
|
-
},
|
1118
|
-
|
1119
|
-
cbrt: function (value) {
|
1120
|
-
value = Number(value);
|
1121
|
-
if (value === 0) { return value; }
|
1122
|
-
var negate = value < 0, result;
|
1123
|
-
if (negate) { value = -value; }
|
1124
|
-
result = Math.pow(value, 1 / 3);
|
1125
|
-
return negate ? -result : result;
|
1126
|
-
},
|
1127
|
-
|
1128
|
-
clz32: function (value) {
|
1129
|
-
// See https://bugs.ecmascript.org/show_bug.cgi?id=2465
|
1130
|
-
value = Number(value);
|
1131
|
-
var number = ES.ToUint32(value);
|
1132
|
-
if (number === 0) {
|
1133
|
-
return 32;
|
1134
|
-
}
|
1135
|
-
return 32 - (number).toString(2).length;
|
1136
|
-
},
|
1137
|
-
|
1138
|
-
cosh: function (value) {
|
1139
|
-
value = Number(value);
|
1140
|
-
if (value === 0) { return 1; } // +0 or -0
|
1141
|
-
if (Number.isNaN(value)) { return NaN; }
|
1142
|
-
if (!global_isFinite(value)) { return Infinity; }
|
1143
|
-
if (value < 0) { value = -value; }
|
1144
|
-
if (value > 21) { return Math.exp(value) / 2; }
|
1145
|
-
return (Math.exp(value) + Math.exp(-value)) / 2;
|
1146
|
-
},
|
1147
|
-
|
1148
|
-
expm1: function (value) {
|
1149
|
-
value = Number(value);
|
1150
|
-
if (value === -Infinity) { return -1; }
|
1151
|
-
if (!global_isFinite(value) || value === 0) { return value; }
|
1152
|
-
return Math.exp(value) - 1;
|
1153
|
-
},
|
1154
|
-
|
1155
|
-
hypot: function (x, y) {
|
1156
|
-
var anyNaN = false;
|
1157
|
-
var allZero = true;
|
1158
|
-
var anyInfinity = false;
|
1159
|
-
var numbers = [];
|
1160
|
-
Array.prototype.every.call(arguments, function (arg) {
|
1161
|
-
var num = Number(arg);
|
1162
|
-
if (Number.isNaN(num)) {
|
1163
|
-
anyNaN = true;
|
1164
|
-
} else if (num === Infinity || num === -Infinity) {
|
1165
|
-
anyInfinity = true;
|
1166
|
-
} else if (num !== 0) {
|
1167
|
-
allZero = false;
|
1168
|
-
}
|
1169
|
-
if (anyInfinity) {
|
1170
|
-
return false;
|
1171
|
-
} else if (!anyNaN) {
|
1172
|
-
numbers.push(Math.abs(num));
|
1173
|
-
}
|
1174
|
-
return true;
|
1175
|
-
});
|
1176
|
-
if (anyInfinity) { return Infinity; }
|
1177
|
-
if (anyNaN) { return NaN; }
|
1178
|
-
if (allZero) { return 0; }
|
1179
|
-
|
1180
|
-
numbers.sort(function (a, b) { return b - a; });
|
1181
|
-
var largest = numbers[0];
|
1182
|
-
var divided = numbers.map(function (number) { return number / largest; });
|
1183
|
-
var sum = divided.reduce(function (sum, number) { return sum += number * number; }, 0);
|
1184
|
-
return largest * Math.sqrt(sum);
|
1185
|
-
},
|
1186
|
-
|
1187
|
-
log2: function (value) {
|
1188
|
-
return Math.log(value) * Math.LOG2E;
|
1189
|
-
},
|
1190
|
-
|
1191
|
-
log10: function (value) {
|
1192
|
-
return Math.log(value) * Math.LOG10E;
|
1193
|
-
},
|
1194
|
-
|
1195
|
-
log1p: function (value) {
|
1196
|
-
value = Number(value);
|
1197
|
-
if (value < -1 || Number.isNaN(value)) { return NaN; }
|
1198
|
-
if (value === 0 || value === Infinity) { return value; }
|
1199
|
-
if (value === -1) { return -Infinity; }
|
1200
|
-
var result = 0;
|
1201
|
-
var n = 50;
|
1202
|
-
|
1203
|
-
if (value < 0 || value > 1) { return Math.log(1 + value); }
|
1204
|
-
for (var i = 1; i < n; i++) {
|
1205
|
-
if ((i % 2) === 0) {
|
1206
|
-
result -= Math.pow(value, i) / i;
|
1207
|
-
} else {
|
1208
|
-
result += Math.pow(value, i) / i;
|
1209
|
-
}
|
1210
|
-
}
|
1211
|
-
|
1212
|
-
return result;
|
1213
|
-
},
|
1214
|
-
|
1215
|
-
sign: function (value) {
|
1216
|
-
var number = +value;
|
1217
|
-
if (number === 0) { return number; }
|
1218
|
-
if (Number.isNaN(number)) { return number; }
|
1219
|
-
return number < 0 ? -1 : 1;
|
1220
|
-
},
|
1221
|
-
|
1222
|
-
sinh: function (value) {
|
1223
|
-
value = Number(value);
|
1224
|
-
if (!global_isFinite(value) || value === 0) { return value; }
|
1225
|
-
return (Math.exp(value) - Math.exp(-value)) / 2;
|
1226
|
-
},
|
1227
|
-
|
1228
|
-
tanh: function (value) {
|
1229
|
-
value = Number(value);
|
1230
|
-
if (Number.isNaN(value) || value === 0) { return value; }
|
1231
|
-
if (value === Infinity) { return 1; }
|
1232
|
-
if (value === -Infinity) { return -1; }
|
1233
|
-
return (Math.exp(value) - Math.exp(-value)) / (Math.exp(value) + Math.exp(-value));
|
1234
|
-
},
|
1235
|
-
|
1236
|
-
trunc: function (value) {
|
1237
|
-
var number = Number(value);
|
1238
|
-
return number < 0 ? -Math.floor(-number) : Math.floor(number);
|
1239
|
-
},
|
1240
|
-
|
1241
|
-
imul: function (x, y) {
|
1242
|
-
// taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul
|
1243
|
-
x = ES.ToUint32(x);
|
1244
|
-
y = ES.ToUint32(y);
|
1245
|
-
var ah = (x >>> 16) & 0xffff;
|
1246
|
-
var al = x & 0xffff;
|
1247
|
-
var bh = (y >>> 16) & 0xffff;
|
1248
|
-
var bl = y & 0xffff;
|
1249
|
-
// the shift by 0 fixes the sign on the high part
|
1250
|
-
// the final |0 converts the unsigned value into a signed value
|
1251
|
-
return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0);
|
1252
|
-
},
|
1253
|
-
|
1254
|
-
fround: function (x) {
|
1255
|
-
if (x === 0 || x === Infinity || x === -Infinity || Number.isNaN(x)) {
|
1256
|
-
return x;
|
1257
|
-
}
|
1258
|
-
var num = Number(x);
|
1259
|
-
return numberConversion.toFloat32(num);
|
1260
|
-
}
|
1261
|
-
};
|
1262
|
-
defineProperties(Math, MathShims);
|
1263
|
-
|
1264
|
-
if (Math.imul(0xffffffff, 5) !== -5) {
|
1265
|
-
// Safari 6.1, at least, reports "0" for this value
|
1266
|
-
Math.imul = MathShims.imul;
|
1267
|
-
}
|
1268
|
-
|
1269
|
-
// Promises
|
1270
|
-
// Simplest possible implementation; use a 3rd-party library if you
|
1271
|
-
// want the best possible speed and/or long stack traces.
|
1272
|
-
var PromiseShim = (function () {
|
1273
|
-
|
1274
|
-
var Promise, Promise$prototype;
|
1275
|
-
|
1276
|
-
ES.IsPromise = function (promise) {
|
1277
|
-
if (!ES.TypeIsObject(promise)) {
|
1278
|
-
return false;
|
1279
|
-
}
|
1280
|
-
if (!promise._promiseConstructor) {
|
1281
|
-
// _promiseConstructor is a bit more unique than _status, so we'll
|
1282
|
-
// check that instead of the [[PromiseStatus]] internal field.
|
1283
|
-
return false;
|
1284
|
-
}
|
1285
|
-
if (typeof promise._status === 'undefined') {
|
1286
|
-
return false; // uninitialized
|
1287
|
-
}
|
1288
|
-
return true;
|
1289
|
-
};
|
1290
|
-
|
1291
|
-
// "PromiseCapability" in the spec is what most promise implementations
|
1292
|
-
// call a "deferred".
|
1293
|
-
var PromiseCapability = function (C) {
|
1294
|
-
if (!ES.IsCallable(C)) {
|
1295
|
-
throw new TypeError('bad promise constructor');
|
1296
|
-
}
|
1297
|
-
var capability = this;
|
1298
|
-
var resolver = function (resolve, reject) {
|
1299
|
-
capability.resolve = resolve;
|
1300
|
-
capability.reject = reject;
|
1301
|
-
};
|
1302
|
-
capability.promise = ES.Construct(C, [resolver]);
|
1303
|
-
// see https://bugs.ecmascript.org/show_bug.cgi?id=2478
|
1304
|
-
if (!capability.promise._es6construct) {
|
1305
|
-
throw new TypeError('bad promise constructor');
|
1306
|
-
}
|
1307
|
-
if (!(ES.IsCallable(capability.resolve) &&
|
1308
|
-
ES.IsCallable(capability.reject))) {
|
1309
|
-
throw new TypeError('bad promise constructor');
|
1310
|
-
}
|
1311
|
-
};
|
1312
|
-
|
1313
|
-
// find an appropriate setImmediate-alike
|
1314
|
-
var setTimeout = globals.setTimeout;
|
1315
|
-
var makeZeroTimeout;
|
1316
|
-
if (typeof window !== 'undefined' && ES.IsCallable(window.postMessage)) {
|
1317
|
-
makeZeroTimeout = function () {
|
1318
|
-
// from http://dbaron.org/log/20100309-faster-timeouts
|
1319
|
-
var timeouts = [];
|
1320
|
-
var messageName = 'zero-timeout-message';
|
1321
|
-
var setZeroTimeout = function (fn) {
|
1322
|
-
timeouts.push(fn);
|
1323
|
-
window.postMessage(messageName, '*');
|
1324
|
-
};
|
1325
|
-
var handleMessage = function (event) {
|
1326
|
-
if (event.source == window && event.data == messageName) {
|
1327
|
-
event.stopPropagation();
|
1328
|
-
if (timeouts.length === 0) { return; }
|
1329
|
-
var fn = timeouts.shift();
|
1330
|
-
fn();
|
1331
|
-
}
|
1332
|
-
};
|
1333
|
-
window.addEventListener('message', handleMessage, true);
|
1334
|
-
return setZeroTimeout;
|
1335
|
-
};
|
1336
|
-
}
|
1337
|
-
var makePromiseAsap = function () {
|
1338
|
-
// An efficient task-scheduler based on a pre-existing Promise
|
1339
|
-
// implementation, which we can use even if we override the
|
1340
|
-
// global Promise below (in order to workaround bugs)
|
1341
|
-
// https://github.com/Raynos/observ-hash/issues/2#issuecomment-35857671
|
1342
|
-
var P = globals.Promise;
|
1343
|
-
return P && P.resolve && function (task) {
|
1344
|
-
return P.resolve().then(task);
|
1345
|
-
};
|
1346
|
-
};
|
1347
|
-
var enqueue = ES.IsCallable(globals.setImmediate) ?
|
1348
|
-
globals.setImmediate.bind(globals) :
|
1349
|
-
typeof process === 'object' && process.nextTick ? process.nextTick :
|
1350
|
-
makePromiseAsap() ||
|
1351
|
-
(ES.IsCallable(makeZeroTimeout) ? makeZeroTimeout() :
|
1352
|
-
function (task) { setTimeout(task, 0); }); // fallback
|
1353
|
-
|
1354
|
-
var triggerPromiseReactions = function (reactions, x) {
|
1355
|
-
reactions.forEach(function (reaction) {
|
1356
|
-
enqueue(function () {
|
1357
|
-
// PromiseReactionTask
|
1358
|
-
var handler = reaction.handler;
|
1359
|
-
var capability = reaction.capability;
|
1360
|
-
var resolve = capability.resolve;
|
1361
|
-
var reject = capability.reject;
|
1362
|
-
try {
|
1363
|
-
var result = handler(x);
|
1364
|
-
if (result === capability.promise) {
|
1365
|
-
throw new TypeError('self resolution');
|
1366
|
-
}
|
1367
|
-
var updateResult =
|
1368
|
-
updatePromiseFromPotentialThenable(result, capability);
|
1369
|
-
if (!updateResult) {
|
1370
|
-
resolve(result);
|
1371
|
-
}
|
1372
|
-
} catch (e) {
|
1373
|
-
reject(e);
|
1374
|
-
}
|
1375
|
-
});
|
1376
|
-
});
|
1377
|
-
};
|
1378
|
-
|
1379
|
-
var updatePromiseFromPotentialThenable = function (x, capability) {
|
1380
|
-
if (!ES.TypeIsObject(x)) {
|
1381
|
-
return false;
|
1382
|
-
}
|
1383
|
-
var resolve = capability.resolve;
|
1384
|
-
var reject = capability.reject;
|
1385
|
-
try {
|
1386
|
-
var then = x.then; // only one invocation of accessor
|
1387
|
-
if (!ES.IsCallable(then)) { return false; }
|
1388
|
-
then.call(x, resolve, reject);
|
1389
|
-
} catch (e) {
|
1390
|
-
reject(e);
|
1391
|
-
}
|
1392
|
-
return true;
|
1393
|
-
};
|
1394
|
-
|
1395
|
-
var promiseResolutionHandler = function (promise, onFulfilled, onRejected) {
|
1396
|
-
return function (x) {
|
1397
|
-
if (x === promise) {
|
1398
|
-
return onRejected(new TypeError('self resolution'));
|
1399
|
-
}
|
1400
|
-
var C = promise._promiseConstructor;
|
1401
|
-
var capability = new PromiseCapability(C);
|
1402
|
-
var updateResult = updatePromiseFromPotentialThenable(x, capability);
|
1403
|
-
if (updateResult) {
|
1404
|
-
return capability.promise.then(onFulfilled, onRejected);
|
1405
|
-
} else {
|
1406
|
-
return onFulfilled(x);
|
1407
|
-
}
|
1408
|
-
};
|
1409
|
-
};
|
1410
|
-
|
1411
|
-
Promise = function (resolver) {
|
1412
|
-
var promise = this;
|
1413
|
-
promise = emulateES6construct(promise);
|
1414
|
-
if (!promise._promiseConstructor) {
|
1415
|
-
// we use _promiseConstructor as a stand-in for the internal
|
1416
|
-
// [[PromiseStatus]] field; it's a little more unique.
|
1417
|
-
throw new TypeError('bad promise');
|
1418
|
-
}
|
1419
|
-
if (typeof promise._status !== 'undefined') {
|
1420
|
-
throw new TypeError('promise already initialized');
|
1421
|
-
}
|
1422
|
-
// see https://bugs.ecmascript.org/show_bug.cgi?id=2482
|
1423
|
-
if (!ES.IsCallable(resolver)) {
|
1424
|
-
throw new TypeError('not a valid resolver');
|
1425
|
-
}
|
1426
|
-
promise._status = 'unresolved';
|
1427
|
-
promise._resolveReactions = [];
|
1428
|
-
promise._rejectReactions = [];
|
1429
|
-
|
1430
|
-
var resolve = function (resolution) {
|
1431
|
-
if (promise._status !== 'unresolved') { return; }
|
1432
|
-
var reactions = promise._resolveReactions;
|
1433
|
-
promise._result = resolution;
|
1434
|
-
promise._resolveReactions = void 0;
|
1435
|
-
promise._rejectReactions = void 0;
|
1436
|
-
promise._status = 'has-resolution';
|
1437
|
-
triggerPromiseReactions(reactions, resolution);
|
1438
|
-
};
|
1439
|
-
var reject = function (reason) {
|
1440
|
-
if (promise._status !== 'unresolved') { return; }
|
1441
|
-
var reactions = promise._rejectReactions;
|
1442
|
-
promise._result = reason;
|
1443
|
-
promise._resolveReactions = void 0;
|
1444
|
-
promise._rejectReactions = void 0;
|
1445
|
-
promise._status = 'has-rejection';
|
1446
|
-
triggerPromiseReactions(reactions, reason);
|
1447
|
-
};
|
1448
|
-
try {
|
1449
|
-
resolver(resolve, reject);
|
1450
|
-
} catch (e) {
|
1451
|
-
reject(e);
|
1452
|
-
}
|
1453
|
-
return promise;
|
1454
|
-
};
|
1455
|
-
Promise$prototype = Promise.prototype;
|
1456
|
-
defineProperties(Promise, {
|
1457
|
-
'@@create': function (obj) {
|
1458
|
-
var constructor = this;
|
1459
|
-
// AllocatePromise
|
1460
|
-
// The `obj` parameter is a hack we use for es5
|
1461
|
-
// compatibility.
|
1462
|
-
var prototype = constructor.prototype || Promise$prototype;
|
1463
|
-
obj = obj || create(prototype);
|
1464
|
-
defineProperties(obj, {
|
1465
|
-
_status: void 0,
|
1466
|
-
_result: void 0,
|
1467
|
-
_resolveReactions: void 0,
|
1468
|
-
_rejectReactions: void 0,
|
1469
|
-
_promiseConstructor: void 0
|
1470
|
-
});
|
1471
|
-
obj._promiseConstructor = constructor;
|
1472
|
-
return obj;
|
1473
|
-
}
|
1474
|
-
});
|
1475
|
-
|
1476
|
-
var _promiseAllResolver = function (index, values, capability, remaining) {
|
1477
|
-
var done = false;
|
1478
|
-
return function (x) {
|
1479
|
-
if (done) { return; } // protect against being called multiple times
|
1480
|
-
done = true;
|
1481
|
-
values[index] = x;
|
1482
|
-
if ((--remaining.count) === 0) {
|
1483
|
-
var resolve = capability.resolve;
|
1484
|
-
resolve(values); // call w/ this===undefined
|
1485
|
-
}
|
1486
|
-
};
|
1487
|
-
};
|
1488
|
-
|
1489
|
-
Promise.all = function (iterable) {
|
1490
|
-
var C = this;
|
1491
|
-
var capability = new PromiseCapability(C);
|
1492
|
-
var resolve = capability.resolve;
|
1493
|
-
var reject = capability.reject;
|
1494
|
-
try {
|
1495
|
-
if (!ES.IsIterable(iterable)) {
|
1496
|
-
throw new TypeError('bad iterable');
|
1497
|
-
}
|
1498
|
-
var it = ES.GetIterator(iterable);
|
1499
|
-
var values = [], remaining = { count: 1 };
|
1500
|
-
for (var index = 0; ; index++) {
|
1501
|
-
var next = ES.IteratorNext(it);
|
1502
|
-
if (next.done) {
|
1503
|
-
break;
|
1504
|
-
}
|
1505
|
-
var nextPromise = C.resolve(next.value);
|
1506
|
-
var resolveElement = _promiseAllResolver(
|
1507
|
-
index, values, capability, remaining
|
1508
|
-
);
|
1509
|
-
remaining.count++;
|
1510
|
-
nextPromise.then(resolveElement, capability.reject);
|
1511
|
-
}
|
1512
|
-
if ((--remaining.count) === 0) {
|
1513
|
-
resolve(values); // call w/ this===undefined
|
1514
|
-
}
|
1515
|
-
} catch (e) {
|
1516
|
-
reject(e);
|
1517
|
-
}
|
1518
|
-
return capability.promise;
|
1519
|
-
};
|
1520
|
-
|
1521
|
-
Promise.race = function (iterable) {
|
1522
|
-
var C = this;
|
1523
|
-
var capability = new PromiseCapability(C);
|
1524
|
-
var resolve = capability.resolve;
|
1525
|
-
var reject = capability.reject;
|
1526
|
-
try {
|
1527
|
-
if (!ES.IsIterable(iterable)) {
|
1528
|
-
throw new TypeError('bad iterable');
|
1529
|
-
}
|
1530
|
-
var it = ES.GetIterator(iterable);
|
1531
|
-
while (true) {
|
1532
|
-
var next = ES.IteratorNext(it);
|
1533
|
-
if (next.done) {
|
1534
|
-
// If iterable has no items, resulting promise will never
|
1535
|
-
// resolve; see:
|
1536
|
-
// https://github.com/domenic/promises-unwrapping/issues/75
|
1537
|
-
// https://bugs.ecmascript.org/show_bug.cgi?id=2515
|
1538
|
-
break;
|
1539
|
-
}
|
1540
|
-
var nextPromise = C.resolve(next.value);
|
1541
|
-
nextPromise.then(resolve, reject);
|
1542
|
-
}
|
1543
|
-
} catch (e) {
|
1544
|
-
reject(e);
|
1545
|
-
}
|
1546
|
-
return capability.promise;
|
1547
|
-
};
|
1548
|
-
|
1549
|
-
Promise.reject = function (reason) {
|
1550
|
-
var C = this;
|
1551
|
-
var capability = new PromiseCapability(C);
|
1552
|
-
var reject = capability.reject;
|
1553
|
-
reject(reason); // call with this===undefined
|
1554
|
-
return capability.promise;
|
1555
|
-
};
|
1556
|
-
|
1557
|
-
Promise.resolve = function (v) {
|
1558
|
-
var C = this;
|
1559
|
-
if (ES.IsPromise(v)) {
|
1560
|
-
var constructor = v._promiseConstructor;
|
1561
|
-
if (constructor === C) { return v; }
|
1562
|
-
}
|
1563
|
-
var capability = new PromiseCapability(C);
|
1564
|
-
var resolve = capability.resolve;
|
1565
|
-
resolve(v); // call with this===undefined
|
1566
|
-
return capability.promise;
|
1567
|
-
};
|
1568
|
-
|
1569
|
-
Promise.prototype['catch'] = function (onRejected) {
|
1570
|
-
return this.then(void 0, onRejected);
|
1571
|
-
};
|
1572
|
-
|
1573
|
-
Promise.prototype.then = function (onFulfilled, onRejected) {
|
1574
|
-
var promise = this;
|
1575
|
-
if (!ES.IsPromise(promise)) { throw new TypeError('not a promise'); }
|
1576
|
-
// this.constructor not this._promiseConstructor; see
|
1577
|
-
// https://bugs.ecmascript.org/show_bug.cgi?id=2513
|
1578
|
-
var C = this.constructor;
|
1579
|
-
var capability = new PromiseCapability(C);
|
1580
|
-
if (!ES.IsCallable(onRejected)) {
|
1581
|
-
onRejected = function (e) { throw e; };
|
1582
|
-
}
|
1583
|
-
if (!ES.IsCallable(onFulfilled)) {
|
1584
|
-
onFulfilled = function (x) { return x; };
|
1585
|
-
}
|
1586
|
-
var resolutionHandler =
|
1587
|
-
promiseResolutionHandler(promise, onFulfilled, onRejected);
|
1588
|
-
var resolveReaction =
|
1589
|
-
{ capability: capability, handler: resolutionHandler };
|
1590
|
-
var rejectReaction =
|
1591
|
-
{ capability: capability, handler: onRejected };
|
1592
|
-
switch (promise._status) {
|
1593
|
-
case 'unresolved':
|
1594
|
-
promise._resolveReactions.push(resolveReaction);
|
1595
|
-
promise._rejectReactions.push(rejectReaction);
|
1596
|
-
break;
|
1597
|
-
case 'has-resolution':
|
1598
|
-
triggerPromiseReactions([resolveReaction], promise._result);
|
1599
|
-
break;
|
1600
|
-
case 'has-rejection':
|
1601
|
-
triggerPromiseReactions([rejectReaction], promise._result);
|
1602
|
-
break;
|
1603
|
-
default:
|
1604
|
-
throw new TypeError('unexpected');
|
1605
|
-
}
|
1606
|
-
return capability.promise;
|
1607
|
-
};
|
1608
|
-
|
1609
|
-
return Promise;
|
1610
|
-
})();
|
1611
|
-
// export the Promise constructor.
|
1612
|
-
defineProperties(globals, { Promise: PromiseShim });
|
1613
|
-
// In Chrome 33 (and thereabouts) Promise is defined, but the
|
1614
|
-
// implementation is buggy in a number of ways. Let's check subclassing
|
1615
|
-
// support to see if we have a buggy implementation.
|
1616
|
-
var promiseSupportsSubclassing = supportsSubclassing(globals.Promise, function (S) {
|
1617
|
-
return S.resolve(42) instanceof S;
|
1618
|
-
});
|
1619
|
-
var promiseIgnoresNonFunctionThenCallbacks = (function () {
|
1620
|
-
try {
|
1621
|
-
globals.Promise.reject(42).then(null, 5).then(null, function () {});
|
1622
|
-
return true;
|
1623
|
-
} catch (ex) {
|
1624
|
-
return false;
|
1625
|
-
}
|
1626
|
-
}());
|
1627
|
-
var promiseRequiresObjectContext = (function () {
|
1628
|
-
try { Promise.call(3, function () {}); } catch (e) { return true; }
|
1629
|
-
return false;
|
1630
|
-
}());
|
1631
|
-
if (!promiseSupportsSubclassing || !promiseIgnoresNonFunctionThenCallbacks || !promiseRequiresObjectContext) {
|
1632
|
-
globals.Promise = PromiseShim;
|
1633
|
-
}
|
1634
|
-
|
1635
|
-
// Map and Set require a true ES5 environment
|
1636
|
-
// Their fast path also requires that the environment preserve
|
1637
|
-
// property insertion order, which is not guaranteed by the spec.
|
1638
|
-
var testOrder = function (a) {
|
1639
|
-
var b = Object.keys(a.reduce(function (o, k) {
|
1640
|
-
o[k] = true;
|
1641
|
-
return o;
|
1642
|
-
}, {}));
|
1643
|
-
return a.join(':') === b.join(':');
|
1644
|
-
};
|
1645
|
-
var preservesInsertionOrder = testOrder(['z', 'a', 'bb']);
|
1646
|
-
// some engines (eg, Chrome) only preserve insertion order for string keys
|
1647
|
-
var preservesNumericInsertionOrder = testOrder(['z', 1, 'a', '3', 2]);
|
1648
|
-
|
1649
|
-
if (supportsDescriptors) {
|
1650
|
-
|
1651
|
-
var fastkey = function fastkey(key) {
|
1652
|
-
if (!preservesInsertionOrder) {
|
1653
|
-
return null;
|
1654
|
-
}
|
1655
|
-
var type = typeof key;
|
1656
|
-
if (type === 'string') {
|
1657
|
-
return '$' + key;
|
1658
|
-
} else if (type === 'number') {
|
1659
|
-
// note that -0 will get coerced to "0" when used as a property key
|
1660
|
-
if (!preservesNumericInsertionOrder) {
|
1661
|
-
return 'n' + key;
|
1662
|
-
}
|
1663
|
-
return key;
|
1664
|
-
}
|
1665
|
-
return null;
|
1666
|
-
};
|
1667
|
-
|
1668
|
-
var emptyObject = function emptyObject() {
|
1669
|
-
// accomodate some older not-quite-ES5 browsers
|
1670
|
-
return Object.create ? Object.create(null) : {};
|
1671
|
-
};
|
1672
|
-
|
1673
|
-
var collectionShims = {
|
1674
|
-
Map: (function () {
|
1675
|
-
|
1676
|
-
var empty = {};
|
1677
|
-
|
1678
|
-
function MapEntry(key, value) {
|
1679
|
-
this.key = key;
|
1680
|
-
this.value = value;
|
1681
|
-
this.next = null;
|
1682
|
-
this.prev = null;
|
1683
|
-
}
|
1684
|
-
|
1685
|
-
MapEntry.prototype.isRemoved = function () {
|
1686
|
-
return this.key === empty;
|
1687
|
-
};
|
1688
|
-
|
1689
|
-
function MapIterator(map, kind) {
|
1690
|
-
this.head = map._head;
|
1691
|
-
this.i = this.head;
|
1692
|
-
this.kind = kind;
|
1693
|
-
}
|
1694
|
-
|
1695
|
-
MapIterator.prototype = {
|
1696
|
-
next: function () {
|
1697
|
-
var i = this.i, kind = this.kind, head = this.head, result;
|
1698
|
-
if (typeof this.i === 'undefined') {
|
1699
|
-
return { value: void 0, done: true };
|
1700
|
-
}
|
1701
|
-
while (i.isRemoved() && i !== head) {
|
1702
|
-
// back up off of removed entries
|
1703
|
-
i = i.prev;
|
1704
|
-
}
|
1705
|
-
// advance to next unreturned element.
|
1706
|
-
while (i.next !== head) {
|
1707
|
-
i = i.next;
|
1708
|
-
if (!i.isRemoved()) {
|
1709
|
-
if (kind === 'key') {
|
1710
|
-
result = i.key;
|
1711
|
-
} else if (kind === 'value') {
|
1712
|
-
result = i.value;
|
1713
|
-
} else {
|
1714
|
-
result = [i.key, i.value];
|
1715
|
-
}
|
1716
|
-
this.i = i;
|
1717
|
-
return { value: result, done: false };
|
1718
|
-
}
|
1719
|
-
}
|
1720
|
-
// once the iterator is done, it is done forever.
|
1721
|
-
this.i = void 0;
|
1722
|
-
return { value: void 0, done: true };
|
1723
|
-
}
|
1724
|
-
};
|
1725
|
-
addIterator(MapIterator.prototype);
|
1726
|
-
|
1727
|
-
function Map(iterable) {
|
1728
|
-
var map = this;
|
1729
|
-
map = emulateES6construct(map);
|
1730
|
-
if (!map._es6map) {
|
1731
|
-
throw new TypeError('bad map');
|
1732
|
-
}
|
1733
|
-
|
1734
|
-
var head = new MapEntry(null, null);
|
1735
|
-
// circular doubly-linked list.
|
1736
|
-
head.next = head.prev = head;
|
1737
|
-
|
1738
|
-
defineProperties(map, {
|
1739
|
-
_head: head,
|
1740
|
-
_storage: emptyObject(),
|
1741
|
-
_size: 0
|
1742
|
-
});
|
1743
|
-
|
1744
|
-
// Optionally initialize map from iterable
|
1745
|
-
if (typeof iterable !== 'undefined' && iterable !== null) {
|
1746
|
-
var it = ES.GetIterator(iterable);
|
1747
|
-
var adder = map.set;
|
1748
|
-
if (!ES.IsCallable(adder)) { throw new TypeError('bad map'); }
|
1749
|
-
while (true) {
|
1750
|
-
var next = ES.IteratorNext(it);
|
1751
|
-
if (next.done) { break; }
|
1752
|
-
var nextItem = next.value;
|
1753
|
-
if (!ES.TypeIsObject(nextItem)) {
|
1754
|
-
throw new TypeError('expected iterable of pairs');
|
1755
|
-
}
|
1756
|
-
adder.call(map, nextItem[0], nextItem[1]);
|
1757
|
-
}
|
1758
|
-
}
|
1759
|
-
return map;
|
1760
|
-
}
|
1761
|
-
var Map$prototype = Map.prototype;
|
1762
|
-
defineProperties(Map, {
|
1763
|
-
'@@create': function (obj) {
|
1764
|
-
var constructor = this;
|
1765
|
-
var prototype = constructor.prototype || Map$prototype;
|
1766
|
-
obj = obj || create(prototype);
|
1767
|
-
defineProperties(obj, { _es6map: true });
|
1768
|
-
return obj;
|
1769
|
-
}
|
1770
|
-
});
|
1771
|
-
|
1772
|
-
Object.defineProperty(Map.prototype, 'size', {
|
1773
|
-
configurable: true,
|
1774
|
-
enumerable: false,
|
1775
|
-
get: function () {
|
1776
|
-
if (typeof this._size === 'undefined') {
|
1777
|
-
throw new TypeError('size method called on incompatible Map');
|
1778
|
-
}
|
1779
|
-
return this._size;
|
1780
|
-
}
|
1781
|
-
});
|
1782
|
-
|
1783
|
-
defineProperties(Map.prototype, {
|
1784
|
-
get: function (key) {
|
1785
|
-
var fkey = fastkey(key);
|
1786
|
-
if (fkey !== null) {
|
1787
|
-
// fast O(1) path
|
1788
|
-
var entry = this._storage[fkey];
|
1789
|
-
if (entry) {
|
1790
|
-
return entry.value;
|
1791
|
-
} else {
|
1792
|
-
return;
|
1793
|
-
}
|
1794
|
-
}
|
1795
|
-
var head = this._head, i = head;
|
1796
|
-
while ((i = i.next) !== head) {
|
1797
|
-
if (ES.SameValueZero(i.key, key)) {
|
1798
|
-
return i.value;
|
1799
|
-
}
|
1800
|
-
}
|
1801
|
-
return;
|
1802
|
-
},
|
1803
|
-
|
1804
|
-
has: function (key) {
|
1805
|
-
var fkey = fastkey(key);
|
1806
|
-
if (fkey !== null) {
|
1807
|
-
// fast O(1) path
|
1808
|
-
return typeof this._storage[fkey] !== 'undefined';
|
1809
|
-
}
|
1810
|
-
var head = this._head, i = head;
|
1811
|
-
while ((i = i.next) !== head) {
|
1812
|
-
if (ES.SameValueZero(i.key, key)) {
|
1813
|
-
return true;
|
1814
|
-
}
|
1815
|
-
}
|
1816
|
-
return false;
|
1817
|
-
},
|
1818
|
-
|
1819
|
-
set: function (key, value) {
|
1820
|
-
var head = this._head, i = head, entry;
|
1821
|
-
var fkey = fastkey(key);
|
1822
|
-
if (fkey !== null) {
|
1823
|
-
// fast O(1) path
|
1824
|
-
if (typeof this._storage[fkey] !== 'undefined') {
|
1825
|
-
this._storage[fkey].value = value;
|
1826
|
-
return;
|
1827
|
-
} else {
|
1828
|
-
entry = this._storage[fkey] = new MapEntry(key, value);
|
1829
|
-
i = head.prev;
|
1830
|
-
// fall through
|
1831
|
-
}
|
1832
|
-
}
|
1833
|
-
while ((i = i.next) !== head) {
|
1834
|
-
if (ES.SameValueZero(i.key, key)) {
|
1835
|
-
i.value = value;
|
1836
|
-
return;
|
1837
|
-
}
|
1838
|
-
}
|
1839
|
-
entry = entry || new MapEntry(key, value);
|
1840
|
-
if (ES.SameValue(-0, key)) {
|
1841
|
-
entry.key = +0; // coerce -0 to +0 in entry
|
1842
|
-
}
|
1843
|
-
entry.next = this._head;
|
1844
|
-
entry.prev = this._head.prev;
|
1845
|
-
entry.prev.next = entry;
|
1846
|
-
entry.next.prev = entry;
|
1847
|
-
this._size += 1;
|
1848
|
-
return this;
|
1849
|
-
},
|
1850
|
-
|
1851
|
-
'delete': function (key) {
|
1852
|
-
var head = this._head, i = head;
|
1853
|
-
var fkey = fastkey(key);
|
1854
|
-
if (fkey !== null) {
|
1855
|
-
// fast O(1) path
|
1856
|
-
if (typeof this._storage[fkey] === 'undefined') {
|
1857
|
-
return false;
|
1858
|
-
}
|
1859
|
-
i = this._storage[fkey].prev;
|
1860
|
-
delete this._storage[fkey];
|
1861
|
-
// fall through
|
1862
|
-
}
|
1863
|
-
while ((i = i.next) !== head) {
|
1864
|
-
if (ES.SameValueZero(i.key, key)) {
|
1865
|
-
i.key = i.value = empty;
|
1866
|
-
i.prev.next = i.next;
|
1867
|
-
i.next.prev = i.prev;
|
1868
|
-
this._size -= 1;
|
1869
|
-
return true;
|
1870
|
-
}
|
1871
|
-
}
|
1872
|
-
return false;
|
1873
|
-
},
|
1874
|
-
|
1875
|
-
clear: function () {
|
1876
|
-
this._size = 0;
|
1877
|
-
this._storage = emptyObject();
|
1878
|
-
var head = this._head, i = head, p = i.next;
|
1879
|
-
while ((i = p) !== head) {
|
1880
|
-
i.key = i.value = empty;
|
1881
|
-
p = i.next;
|
1882
|
-
i.next = i.prev = head;
|
1883
|
-
}
|
1884
|
-
head.next = head.prev = head;
|
1885
|
-
},
|
1886
|
-
|
1887
|
-
keys: function () {
|
1888
|
-
return new MapIterator(this, 'key');
|
1889
|
-
},
|
1890
|
-
|
1891
|
-
values: function () {
|
1892
|
-
return new MapIterator(this, 'value');
|
1893
|
-
},
|
1894
|
-
|
1895
|
-
entries: function () {
|
1896
|
-
return new MapIterator(this, 'key+value');
|
1897
|
-
},
|
1898
|
-
|
1899
|
-
forEach: function (callback) {
|
1900
|
-
var context = arguments.length > 1 ? arguments[1] : null;
|
1901
|
-
var it = this.entries();
|
1902
|
-
for (var entry = it.next(); !entry.done; entry = it.next()) {
|
1903
|
-
callback.call(context, entry.value[1], entry.value[0], this);
|
1904
|
-
}
|
1905
|
-
}
|
1906
|
-
});
|
1907
|
-
addIterator(Map.prototype, function () { return this.entries(); });
|
1908
|
-
|
1909
|
-
return Map;
|
1910
|
-
})(),
|
1911
|
-
|
1912
|
-
Set: (function () {
|
1913
|
-
// Creating a Map is expensive. To speed up the common case of
|
1914
|
-
// Sets containing only string or numeric keys, we use an object
|
1915
|
-
// as backing storage and lazily create a full Map only when
|
1916
|
-
// required.
|
1917
|
-
var SetShim = function Set(iterable) {
|
1918
|
-
var set = this;
|
1919
|
-
set = emulateES6construct(set);
|
1920
|
-
if (!set._es6set) {
|
1921
|
-
throw new TypeError('bad set');
|
1922
|
-
}
|
1923
|
-
|
1924
|
-
defineProperties(set, {
|
1925
|
-
'[[SetData]]': null,
|
1926
|
-
_storage: emptyObject()
|
1927
|
-
});
|
1928
|
-
|
1929
|
-
// Optionally initialize map from iterable
|
1930
|
-
if (typeof iterable !== 'undefined' && iterable !== null) {
|
1931
|
-
var it = ES.GetIterator(iterable);
|
1932
|
-
var adder = set.add;
|
1933
|
-
if (!ES.IsCallable(adder)) { throw new TypeError('bad set'); }
|
1934
|
-
while (true) {
|
1935
|
-
var next = ES.IteratorNext(it);
|
1936
|
-
if (next.done) { break; }
|
1937
|
-
var nextItem = next.value;
|
1938
|
-
adder.call(set, nextItem);
|
1939
|
-
}
|
1940
|
-
}
|
1941
|
-
return set;
|
1942
|
-
};
|
1943
|
-
var Set$prototype = SetShim.prototype;
|
1944
|
-
defineProperties(SetShim, {
|
1945
|
-
'@@create': function (obj) {
|
1946
|
-
var constructor = this;
|
1947
|
-
var prototype = constructor.prototype || Set$prototype;
|
1948
|
-
obj = obj || create(prototype);
|
1949
|
-
defineProperties(obj, { _es6set: true });
|
1950
|
-
return obj;
|
1951
|
-
}
|
1952
|
-
});
|
1953
|
-
|
1954
|
-
// Switch from the object backing storage to a full Map.
|
1955
|
-
var ensureMap = function ensureMap(set) {
|
1956
|
-
if (!set['[[SetData]]']) {
|
1957
|
-
var m = set['[[SetData]]'] = new collectionShims.Map();
|
1958
|
-
Object.keys(set._storage).forEach(function (k) {
|
1959
|
-
// fast check for leading '$'
|
1960
|
-
if (k.charCodeAt(0) === 36) {
|
1961
|
-
k = k.slice(1);
|
1962
|
-
} else if (k.charAt(0) === 'n') {
|
1963
|
-
k = +k.slice(1);
|
1964
|
-
} else {
|
1965
|
-
k = +k;
|
1966
|
-
}
|
1967
|
-
m.set(k, k);
|
1968
|
-
});
|
1969
|
-
set._storage = null; // free old backing storage
|
1970
|
-
}
|
1971
|
-
};
|
1972
|
-
|
1973
|
-
Object.defineProperty(SetShim.prototype, 'size', {
|
1974
|
-
configurable: true,
|
1975
|
-
enumerable: false,
|
1976
|
-
get: function () {
|
1977
|
-
if (typeof this._storage === 'undefined') {
|
1978
|
-
// https://github.com/paulmillr/es6-shim/issues/176
|
1979
|
-
throw new TypeError('size method called on incompatible Set');
|
1980
|
-
}
|
1981
|
-
ensureMap(this);
|
1982
|
-
return this['[[SetData]]'].size;
|
1983
|
-
}
|
1984
|
-
});
|
1985
|
-
|
1986
|
-
defineProperties(SetShim.prototype, {
|
1987
|
-
has: function (key) {
|
1988
|
-
var fkey;
|
1989
|
-
if (this._storage && (fkey = fastkey(key)) !== null) {
|
1990
|
-
return !!this._storage[fkey];
|
1991
|
-
}
|
1992
|
-
ensureMap(this);
|
1993
|
-
return this['[[SetData]]'].has(key);
|
1994
|
-
},
|
1995
|
-
|
1996
|
-
add: function (key) {
|
1997
|
-
var fkey;
|
1998
|
-
if (this._storage && (fkey = fastkey(key)) !== null) {
|
1999
|
-
this._storage[fkey] = true;
|
2000
|
-
return;
|
2001
|
-
}
|
2002
|
-
ensureMap(this);
|
2003
|
-
this['[[SetData]]'].set(key, key);
|
2004
|
-
return this;
|
2005
|
-
},
|
2006
|
-
|
2007
|
-
'delete': function (key) {
|
2008
|
-
var fkey;
|
2009
|
-
if (this._storage && (fkey = fastkey(key)) !== null) {
|
2010
|
-
var hasFKey = _hasOwnProperty.call(this._storage, fkey);
|
2011
|
-
return (delete this._storage[fkey]) && hasFKey;
|
2012
|
-
}
|
2013
|
-
ensureMap(this);
|
2014
|
-
return this['[[SetData]]']['delete'](key);
|
2015
|
-
},
|
2016
|
-
|
2017
|
-
clear: function () {
|
2018
|
-
if (this._storage) {
|
2019
|
-
this._storage = emptyObject();
|
2020
|
-
return;
|
2021
|
-
}
|
2022
|
-
return this['[[SetData]]'].clear();
|
2023
|
-
},
|
2024
|
-
|
2025
|
-
keys: function () {
|
2026
|
-
ensureMap(this);
|
2027
|
-
return this['[[SetData]]'].keys();
|
2028
|
-
},
|
2029
|
-
|
2030
|
-
values: function () {
|
2031
|
-
ensureMap(this);
|
2032
|
-
return this['[[SetData]]'].values();
|
2033
|
-
},
|
2034
|
-
|
2035
|
-
entries: function () {
|
2036
|
-
ensureMap(this);
|
2037
|
-
return this['[[SetData]]'].entries();
|
2038
|
-
},
|
2039
|
-
|
2040
|
-
forEach: function (callback) {
|
2041
|
-
var context = arguments.length > 1 ? arguments[1] : null;
|
2042
|
-
var entireSet = this;
|
2043
|
-
ensureMap(this);
|
2044
|
-
this['[[SetData]]'].forEach(function (value, key) {
|
2045
|
-
callback.call(context, key, key, entireSet);
|
2046
|
-
});
|
2047
|
-
}
|
2048
|
-
});
|
2049
|
-
addIterator(SetShim.prototype, function () { return this.values(); });
|
2050
|
-
|
2051
|
-
return SetShim;
|
2052
|
-
})()
|
2053
|
-
};
|
2054
|
-
defineProperties(globals, collectionShims);
|
2055
|
-
|
2056
|
-
if (globals.Map || globals.Set) {
|
2057
|
-
/*
|
2058
|
-
- In Firefox < 23, Map#size is a function.
|
2059
|
-
- In all current Firefox, Set#entries/keys/values & Map#clear do not exist
|
2060
|
-
- https://bugzilla.mozilla.org/show_bug.cgi?id=869996
|
2061
|
-
- In Firefox 24, Map and Set do not implement forEach
|
2062
|
-
- In Firefox 25 at least, Map and Set are callable without "new"
|
2063
|
-
*/
|
2064
|
-
if (
|
2065
|
-
typeof globals.Map.prototype.clear !== 'function' ||
|
2066
|
-
new globals.Set().size !== 0 ||
|
2067
|
-
new globals.Map().size !== 0 ||
|
2068
|
-
typeof globals.Map.prototype.keys !== 'function' ||
|
2069
|
-
typeof globals.Set.prototype.keys !== 'function' ||
|
2070
|
-
typeof globals.Map.prototype.forEach !== 'function' ||
|
2071
|
-
typeof globals.Set.prototype.forEach !== 'function' ||
|
2072
|
-
isCallableWithoutNew(globals.Map) ||
|
2073
|
-
isCallableWithoutNew(globals.Set) ||
|
2074
|
-
!supportsSubclassing(globals.Map, function (M) {
|
2075
|
-
var m = new M([]);
|
2076
|
-
// Firefox 32 is ok with the instantiating the subclass but will
|
2077
|
-
// throw when the map is used.
|
2078
|
-
m.set(42, 42);
|
2079
|
-
return m instanceof M;
|
2080
|
-
})
|
2081
|
-
) {
|
2082
|
-
globals.Map = collectionShims.Map;
|
2083
|
-
globals.Set = collectionShims.Set;
|
2084
|
-
}
|
2085
|
-
}
|
2086
|
-
// Shim incomplete iterator implementations.
|
2087
|
-
addIterator(Object.getPrototypeOf((new globals.Map()).keys()));
|
2088
|
-
addIterator(Object.getPrototypeOf((new globals.Set()).keys()));
|
2089
|
-
}
|
2090
|
-
|
2091
|
-
return globals;
|
2092
|
-
}));
|
2093
|
-
|
2094
|
-
|
2095
|
-
}).call(this,require('_process'))
|
2096
|
-
},{"_process":2}],4:[function(require,module,exports){
|
2097
|
-
'use strict';
|
2098
|
-
|
2099
|
-
if (!require('./is-implemented')()) {
|
2100
|
-
Object.defineProperty(require('es5-ext/global'), 'Symbol',
|
2101
|
-
{ value: require('./polyfill'), configurable: true, enumerable: false,
|
2102
|
-
writable: true });
|
2103
|
-
}
|
2104
|
-
|
2105
|
-
},{"./is-implemented":5,"./polyfill":20,"es5-ext/global":7}],5:[function(require,module,exports){
|
2106
|
-
'use strict';
|
2107
|
-
|
2108
|
-
module.exports = function () {
|
2109
|
-
var symbol;
|
2110
|
-
if (typeof Symbol !== 'function') return false;
|
2111
|
-
symbol = Symbol('test symbol');
|
2112
|
-
try { String(symbol); } catch (e) { return false; }
|
2113
|
-
if (typeof Symbol.iterator === 'symbol') return true;
|
2114
|
-
|
2115
|
-
// Return 'true' for polyfills
|
2116
|
-
if (typeof Symbol.isConcatSpreadable !== 'object') return false;
|
2117
|
-
if (typeof Symbol.isRegExp !== 'object') return false;
|
2118
|
-
if (typeof Symbol.iterator !== 'object') return false;
|
2119
|
-
if (typeof Symbol.toPrimitive !== 'object') return false;
|
2120
|
-
if (typeof Symbol.toStringTag !== 'object') return false;
|
2121
|
-
if (typeof Symbol.unscopables !== 'object') return false;
|
2122
|
-
|
2123
|
-
return true;
|
2124
|
-
};
|
2125
|
-
|
2126
|
-
},{}],6:[function(require,module,exports){
|
2127
|
-
'use strict';
|
2128
|
-
|
2129
|
-
var assign = require('es5-ext/object/assign')
|
2130
|
-
, normalizeOpts = require('es5-ext/object/normalize-options')
|
2131
|
-
, isCallable = require('es5-ext/object/is-callable')
|
2132
|
-
, contains = require('es5-ext/string/#/contains')
|
2133
|
-
|
2134
|
-
, d;
|
2135
|
-
|
2136
|
-
d = module.exports = function (dscr, value/*, options*/) {
|
2137
|
-
var c, e, w, options, desc;
|
2138
|
-
if ((arguments.length < 2) || (typeof dscr !== 'string')) {
|
2139
|
-
options = value;
|
2140
|
-
value = dscr;
|
2141
|
-
dscr = null;
|
2142
|
-
} else {
|
2143
|
-
options = arguments[2];
|
2144
|
-
}
|
2145
|
-
if (dscr == null) {
|
2146
|
-
c = w = true;
|
2147
|
-
e = false;
|
2148
|
-
} else {
|
2149
|
-
c = contains.call(dscr, 'c');
|
2150
|
-
e = contains.call(dscr, 'e');
|
2151
|
-
w = contains.call(dscr, 'w');
|
2152
|
-
}
|
2153
|
-
|
2154
|
-
desc = { value: value, configurable: c, enumerable: e, writable: w };
|
2155
|
-
return !options ? desc : assign(normalizeOpts(options), desc);
|
2156
|
-
};
|
2157
|
-
|
2158
|
-
d.gs = function (dscr, get, set/*, options*/) {
|
2159
|
-
var c, e, options, desc;
|
2160
|
-
if (typeof dscr !== 'string') {
|
2161
|
-
options = set;
|
2162
|
-
set = get;
|
2163
|
-
get = dscr;
|
2164
|
-
dscr = null;
|
2165
|
-
} else {
|
2166
|
-
options = arguments[3];
|
2167
|
-
}
|
2168
|
-
if (get == null) {
|
2169
|
-
get = undefined;
|
2170
|
-
} else if (!isCallable(get)) {
|
2171
|
-
options = get;
|
2172
|
-
get = set = undefined;
|
2173
|
-
} else if (set == null) {
|
2174
|
-
set = undefined;
|
2175
|
-
} else if (!isCallable(set)) {
|
2176
|
-
options = set;
|
2177
|
-
set = undefined;
|
2178
|
-
}
|
2179
|
-
if (dscr == null) {
|
2180
|
-
c = true;
|
2181
|
-
e = false;
|
2182
|
-
} else {
|
2183
|
-
c = contains.call(dscr, 'c');
|
2184
|
-
e = contains.call(dscr, 'e');
|
2185
|
-
}
|
2186
|
-
|
2187
|
-
desc = { get: get, set: set, configurable: c, enumerable: e };
|
2188
|
-
return !options ? desc : assign(normalizeOpts(options), desc);
|
2189
|
-
};
|
2190
|
-
|
2191
|
-
},{"es5-ext/object/assign":8,"es5-ext/object/is-callable":11,"es5-ext/object/normalize-options":15,"es5-ext/string/#/contains":17}],7:[function(require,module,exports){
|
2192
|
-
'use strict';
|
2193
|
-
|
2194
|
-
module.exports = new Function("return this")();
|
2195
|
-
|
2196
|
-
},{}],8:[function(require,module,exports){
|
2197
|
-
'use strict';
|
2198
|
-
|
2199
|
-
module.exports = require('./is-implemented')()
|
2200
|
-
? Object.assign
|
2201
|
-
: require('./shim');
|
2202
|
-
|
2203
|
-
},{"./is-implemented":9,"./shim":10}],9:[function(require,module,exports){
|
2204
|
-
'use strict';
|
2205
|
-
|
2206
|
-
module.exports = function () {
|
2207
|
-
var assign = Object.assign, obj;
|
2208
|
-
if (typeof assign !== 'function') return false;
|
2209
|
-
obj = { foo: 'raz' };
|
2210
|
-
assign(obj, { bar: 'dwa' }, { trzy: 'trzy' });
|
2211
|
-
return (obj.foo + obj.bar + obj.trzy) === 'razdwatrzy';
|
2212
|
-
};
|
2213
|
-
|
2214
|
-
},{}],10:[function(require,module,exports){
|
2215
|
-
'use strict';
|
2216
|
-
|
2217
|
-
var keys = require('../keys')
|
2218
|
-
, value = require('../valid-value')
|
2219
|
-
|
2220
|
-
, max = Math.max;
|
2221
|
-
|
2222
|
-
module.exports = function (dest, src/*, …srcn*/) {
|
2223
|
-
var error, i, l = max(arguments.length, 2), assign;
|
2224
|
-
dest = Object(value(dest));
|
2225
|
-
assign = function (key) {
|
2226
|
-
try { dest[key] = src[key]; } catch (e) {
|
2227
|
-
if (!error) error = e;
|
2228
|
-
}
|
2229
|
-
};
|
2230
|
-
for (i = 1; i < l; ++i) {
|
2231
|
-
src = arguments[i];
|
2232
|
-
keys(src).forEach(assign);
|
2233
|
-
}
|
2234
|
-
if (error !== undefined) throw error;
|
2235
|
-
return dest;
|
2236
|
-
};
|
2237
|
-
|
2238
|
-
},{"../keys":12,"../valid-value":16}],11:[function(require,module,exports){
|
2239
|
-
// Deprecated
|
2240
|
-
|
2241
|
-
'use strict';
|
2242
|
-
|
2243
|
-
module.exports = function (obj) { return typeof obj === 'function'; };
|
2244
|
-
|
2245
|
-
},{}],12:[function(require,module,exports){
|
2246
|
-
'use strict';
|
2247
|
-
|
2248
|
-
module.exports = require('./is-implemented')()
|
2249
|
-
? Object.keys
|
2250
|
-
: require('./shim');
|
2251
|
-
|
2252
|
-
},{"./is-implemented":13,"./shim":14}],13:[function(require,module,exports){
|
2253
|
-
'use strict';
|
2254
|
-
|
2255
|
-
module.exports = function () {
|
2256
|
-
try {
|
2257
|
-
Object.keys('primitive');
|
2258
|
-
return true;
|
2259
|
-
} catch (e) { return false; }
|
2260
|
-
};
|
2261
|
-
|
2262
|
-
},{}],14:[function(require,module,exports){
|
2263
|
-
'use strict';
|
2264
|
-
|
2265
|
-
var keys = Object.keys;
|
2266
|
-
|
2267
|
-
module.exports = function (object) {
|
2268
|
-
return keys(object == null ? object : Object(object));
|
2269
|
-
};
|
2270
|
-
|
2271
|
-
},{}],15:[function(require,module,exports){
|
2272
|
-
'use strict';
|
2273
|
-
|
2274
|
-
var assign = require('./assign')
|
2275
|
-
|
2276
|
-
, forEach = Array.prototype.forEach
|
2277
|
-
, create = Object.create, getPrototypeOf = Object.getPrototypeOf
|
2278
|
-
|
2279
|
-
, process;
|
2280
|
-
|
2281
|
-
process = function (src, obj) {
|
2282
|
-
var proto = getPrototypeOf(src);
|
2283
|
-
return assign(proto ? process(proto, obj) : obj, src);
|
2284
|
-
};
|
2285
|
-
|
2286
|
-
module.exports = function (options/*, …options*/) {
|
2287
|
-
var result = create(null);
|
2288
|
-
forEach.call(arguments, function (options) {
|
2289
|
-
if (options == null) return;
|
2290
|
-
process(Object(options), result);
|
2291
|
-
});
|
2292
|
-
return result;
|
2293
|
-
};
|
2294
|
-
|
2295
|
-
},{"./assign":8}],16:[function(require,module,exports){
|
2296
|
-
'use strict';
|
2297
|
-
|
2298
|
-
module.exports = function (value) {
|
2299
|
-
if (value == null) throw new TypeError("Cannot use null or undefined");
|
2300
|
-
return value;
|
2301
|
-
};
|
2302
|
-
|
2303
|
-
},{}],17:[function(require,module,exports){
|
2304
|
-
'use strict';
|
2305
|
-
|
2306
|
-
module.exports = require('./is-implemented')()
|
2307
|
-
? String.prototype.contains
|
2308
|
-
: require('./shim');
|
2309
|
-
|
2310
|
-
},{"./is-implemented":18,"./shim":19}],18:[function(require,module,exports){
|
2311
|
-
'use strict';
|
2312
|
-
|
2313
|
-
var str = 'razdwatrzy';
|
2314
|
-
|
2315
|
-
module.exports = function () {
|
2316
|
-
if (typeof str.contains !== 'function') return false;
|
2317
|
-
return ((str.contains('dwa') === true) && (str.contains('foo') === false));
|
2318
|
-
};
|
2319
|
-
|
2320
|
-
},{}],19:[function(require,module,exports){
|
2321
|
-
'use strict';
|
2322
|
-
|
2323
|
-
var indexOf = String.prototype.indexOf;
|
2324
|
-
|
2325
|
-
module.exports = function (searchString/*, position*/) {
|
2326
|
-
return indexOf.call(this, searchString, arguments[1]) > -1;
|
2327
|
-
};
|
2328
|
-
|
2329
|
-
},{}],20:[function(require,module,exports){
|
2330
|
-
'use strict';
|
2331
|
-
|
2332
|
-
var d = require('d')
|
2333
|
-
|
2334
|
-
, create = Object.create, defineProperties = Object.defineProperties
|
2335
|
-
, generateName, Symbol;
|
2336
|
-
|
2337
|
-
generateName = (function () {
|
2338
|
-
var created = create(null);
|
2339
|
-
return function (desc) {
|
2340
|
-
var postfix = 0;
|
2341
|
-
while (created[desc + (postfix || '')]) ++postfix;
|
2342
|
-
desc += (postfix || '');
|
2343
|
-
created[desc] = true;
|
2344
|
-
return '@@' + desc;
|
2345
|
-
};
|
2346
|
-
}());
|
2347
|
-
|
2348
|
-
module.exports = Symbol = function (description) {
|
2349
|
-
var symbol;
|
2350
|
-
if (this instanceof Symbol) {
|
2351
|
-
throw new TypeError('TypeError: Symbol is not a constructor');
|
2352
|
-
}
|
2353
|
-
symbol = create(Symbol.prototype);
|
2354
|
-
description = (description === undefined ? '' : String(description));
|
2355
|
-
return defineProperties(symbol, {
|
2356
|
-
__description__: d('', description),
|
2357
|
-
__name__: d('', generateName(description))
|
2358
|
-
});
|
2359
|
-
};
|
2360
|
-
|
2361
|
-
Object.defineProperties(Symbol, {
|
2362
|
-
create: d('', Symbol('create')),
|
2363
|
-
hasInstance: d('', Symbol('hasInstance')),
|
2364
|
-
isConcatSpreadable: d('', Symbol('isConcatSpreadable')),
|
2365
|
-
isRegExp: d('', Symbol('isRegExp')),
|
2366
|
-
iterator: d('', Symbol('iterator')),
|
2367
|
-
toPrimitive: d('', Symbol('toPrimitive')),
|
2368
|
-
toStringTag: d('', Symbol('toStringTag')),
|
2369
|
-
unscopables: d('', Symbol('unscopables'))
|
2370
|
-
});
|
2371
|
-
|
2372
|
-
defineProperties(Symbol.prototype, {
|
2373
|
-
properToString: d(function () {
|
2374
|
-
return 'Symbol (' + this.__description__ + ')';
|
2375
|
-
}),
|
2376
|
-
toString: d('', function () { return this.__name__; })
|
2377
|
-
});
|
2378
|
-
Object.defineProperty(Symbol.prototype, Symbol.toPrimitive, d('',
|
2379
|
-
function (hint) {
|
2380
|
-
throw new TypeError("Conversion of symbol objects is not allowed");
|
2381
|
-
}));
|
2382
|
-
Object.defineProperty(Symbol.prototype, Symbol.toStringTag, d('c', 'Symbol'));
|
2383
|
-
|
2384
|
-
},{"d":6}],21:[function(require,module,exports){
|
2385
|
-
'use strict';
|
2386
|
-
|
2387
|
-
module.exports = require('./lib/core.js')
|
2388
|
-
require('./lib/done.js')
|
2389
|
-
require('./lib/es6-extensions.js')
|
2390
|
-
require('./lib/node-extensions.js')
|
2391
|
-
},{"./lib/core.js":22,"./lib/done.js":23,"./lib/es6-extensions.js":24,"./lib/node-extensions.js":25}],22:[function(require,module,exports){
|
2392
|
-
'use strict';
|
2393
|
-
|
2394
|
-
var asap = require('asap')
|
2395
|
-
|
2396
|
-
module.exports = Promise;
|
2397
|
-
function Promise(fn) {
|
2398
|
-
if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new')
|
2399
|
-
if (typeof fn !== 'function') throw new TypeError('not a function')
|
2400
|
-
var state = null
|
2401
|
-
var value = null
|
2402
|
-
var deferreds = []
|
2403
|
-
var self = this
|
2404
|
-
|
2405
|
-
this.then = function(onFulfilled, onRejected) {
|
2406
|
-
return new self.constructor(function(resolve, reject) {
|
2407
|
-
handle(new Handler(onFulfilled, onRejected, resolve, reject))
|
2408
|
-
})
|
2409
|
-
}
|
2410
|
-
|
2411
|
-
function handle(deferred) {
|
2412
|
-
if (state === null) {
|
2413
|
-
deferreds.push(deferred)
|
2414
|
-
return
|
2415
|
-
}
|
2416
|
-
asap(function() {
|
2417
|
-
var cb = state ? deferred.onFulfilled : deferred.onRejected
|
2418
|
-
if (cb === null) {
|
2419
|
-
(state ? deferred.resolve : deferred.reject)(value)
|
2420
|
-
return
|
2421
|
-
}
|
2422
|
-
var ret
|
2423
|
-
try {
|
2424
|
-
ret = cb(value)
|
2425
|
-
}
|
2426
|
-
catch (e) {
|
2427
|
-
deferred.reject(e)
|
2428
|
-
return
|
2429
|
-
}
|
2430
|
-
deferred.resolve(ret)
|
2431
|
-
})
|
2432
|
-
}
|
2433
|
-
|
2434
|
-
function resolve(newValue) {
|
2435
|
-
try { //Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
|
2436
|
-
if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.')
|
2437
|
-
if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
|
2438
|
-
var then = newValue.then
|
2439
|
-
if (typeof then === 'function') {
|
2440
|
-
doResolve(then.bind(newValue), resolve, reject)
|
2441
|
-
return
|
2442
|
-
}
|
2443
|
-
}
|
2444
|
-
state = true
|
2445
|
-
value = newValue
|
2446
|
-
finale()
|
2447
|
-
} catch (e) { reject(e) }
|
2448
|
-
}
|
2449
|
-
|
2450
|
-
function reject(newValue) {
|
2451
|
-
state = false
|
2452
|
-
value = newValue
|
2453
|
-
finale()
|
2454
|
-
}
|
2455
|
-
|
2456
|
-
function finale() {
|
2457
|
-
for (var i = 0, len = deferreds.length; i < len; i++)
|
2458
|
-
handle(deferreds[i])
|
2459
|
-
deferreds = null
|
2460
|
-
}
|
2461
|
-
|
2462
|
-
doResolve(fn, resolve, reject)
|
2463
|
-
}
|
2464
|
-
|
2465
|
-
|
2466
|
-
function Handler(onFulfilled, onRejected, resolve, reject){
|
2467
|
-
this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null
|
2468
|
-
this.onRejected = typeof onRejected === 'function' ? onRejected : null
|
2469
|
-
this.resolve = resolve
|
2470
|
-
this.reject = reject
|
2471
|
-
}
|
2472
|
-
|
2473
|
-
/**
|
2474
|
-
* Take a potentially misbehaving resolver function and make sure
|
2475
|
-
* onFulfilled and onRejected are only called once.
|
2476
|
-
*
|
2477
|
-
* Makes no guarantees about asynchrony.
|
2478
|
-
*/
|
2479
|
-
function doResolve(fn, onFulfilled, onRejected) {
|
2480
|
-
var done = false;
|
2481
|
-
try {
|
2482
|
-
fn(function (value) {
|
2483
|
-
if (done) return
|
2484
|
-
done = true
|
2485
|
-
onFulfilled(value)
|
2486
|
-
}, function (reason) {
|
2487
|
-
if (done) return
|
2488
|
-
done = true
|
2489
|
-
onRejected(reason)
|
2490
|
-
})
|
2491
|
-
} catch (ex) {
|
2492
|
-
if (done) return
|
2493
|
-
done = true
|
2494
|
-
onRejected(ex)
|
2495
|
-
}
|
2496
|
-
}
|
2497
|
-
|
2498
|
-
},{"asap":26}],23:[function(require,module,exports){
|
2499
|
-
'use strict';
|
2500
|
-
|
2501
|
-
var Promise = require('./core.js')
|
2502
|
-
var asap = require('asap')
|
2503
|
-
|
2504
|
-
module.exports = Promise
|
2505
|
-
Promise.prototype.done = function (onFulfilled, onRejected) {
|
2506
|
-
var self = arguments.length ? this.then.apply(this, arguments) : this
|
2507
|
-
self.then(null, function (err) {
|
2508
|
-
asap(function () {
|
2509
|
-
throw err
|
2510
|
-
})
|
2511
|
-
})
|
2512
|
-
}
|
2513
|
-
},{"./core.js":22,"asap":26}],24:[function(require,module,exports){
|
2514
|
-
'use strict';
|
2515
|
-
|
2516
|
-
//This file contains the ES6 extensions to the core Promises/A+ API
|
2517
|
-
|
2518
|
-
var Promise = require('./core.js')
|
2519
|
-
var asap = require('asap')
|
2520
|
-
|
2521
|
-
module.exports = Promise
|
2522
|
-
|
2523
|
-
/* Static Functions */
|
2524
|
-
|
2525
|
-
function ValuePromise(value) {
|
2526
|
-
this.then = function (onFulfilled) {
|
2527
|
-
if (typeof onFulfilled !== 'function') return this
|
2528
|
-
return new Promise(function (resolve, reject) {
|
2529
|
-
asap(function () {
|
2530
|
-
try {
|
2531
|
-
resolve(onFulfilled(value))
|
2532
|
-
} catch (ex) {
|
2533
|
-
reject(ex);
|
2534
|
-
}
|
2535
|
-
})
|
2536
|
-
})
|
2537
|
-
}
|
2538
|
-
}
|
2539
|
-
ValuePromise.prototype = Promise.prototype
|
2540
|
-
|
2541
|
-
var TRUE = new ValuePromise(true)
|
2542
|
-
var FALSE = new ValuePromise(false)
|
2543
|
-
var NULL = new ValuePromise(null)
|
2544
|
-
var UNDEFINED = new ValuePromise(undefined)
|
2545
|
-
var ZERO = new ValuePromise(0)
|
2546
|
-
var EMPTYSTRING = new ValuePromise('')
|
2547
|
-
|
2548
|
-
Promise.resolve = function (value) {
|
2549
|
-
if (value instanceof Promise) return value
|
2550
|
-
|
2551
|
-
if (value === null) return NULL
|
2552
|
-
if (value === undefined) return UNDEFINED
|
2553
|
-
if (value === true) return TRUE
|
2554
|
-
if (value === false) return FALSE
|
2555
|
-
if (value === 0) return ZERO
|
2556
|
-
if (value === '') return EMPTYSTRING
|
2557
|
-
|
2558
|
-
if (typeof value === 'object' || typeof value === 'function') {
|
2559
|
-
try {
|
2560
|
-
var then = value.then
|
2561
|
-
if (typeof then === 'function') {
|
2562
|
-
return new Promise(then.bind(value))
|
2563
|
-
}
|
2564
|
-
} catch (ex) {
|
2565
|
-
return new Promise(function (resolve, reject) {
|
2566
|
-
reject(ex)
|
2567
|
-
})
|
2568
|
-
}
|
2569
|
-
}
|
2570
|
-
|
2571
|
-
return new ValuePromise(value)
|
2572
|
-
}
|
2573
|
-
|
2574
|
-
Promise.all = function (arr) {
|
2575
|
-
var args = Array.prototype.slice.call(arr)
|
2576
|
-
|
2577
|
-
return new Promise(function (resolve, reject) {
|
2578
|
-
if (args.length === 0) return resolve([])
|
2579
|
-
var remaining = args.length
|
2580
|
-
function res(i, val) {
|
2581
|
-
try {
|
2582
|
-
if (val && (typeof val === 'object' || typeof val === 'function')) {
|
2583
|
-
var then = val.then
|
2584
|
-
if (typeof then === 'function') {
|
2585
|
-
then.call(val, function (val) { res(i, val) }, reject)
|
2586
|
-
return
|
2587
|
-
}
|
2588
|
-
}
|
2589
|
-
args[i] = val
|
2590
|
-
if (--remaining === 0) {
|
2591
|
-
resolve(args);
|
2592
|
-
}
|
2593
|
-
} catch (ex) {
|
2594
|
-
reject(ex)
|
2595
|
-
}
|
2596
|
-
}
|
2597
|
-
for (var i = 0; i < args.length; i++) {
|
2598
|
-
res(i, args[i])
|
2599
|
-
}
|
2600
|
-
})
|
2601
|
-
}
|
2602
|
-
|
2603
|
-
Promise.reject = function (value) {
|
2604
|
-
return new Promise(function (resolve, reject) {
|
2605
|
-
reject(value);
|
2606
|
-
});
|
2607
|
-
}
|
2608
|
-
|
2609
|
-
Promise.race = function (values) {
|
2610
|
-
return new Promise(function (resolve, reject) {
|
2611
|
-
values.forEach(function(value){
|
2612
|
-
Promise.resolve(value).then(resolve, reject);
|
2613
|
-
})
|
2614
|
-
});
|
2615
|
-
}
|
2616
|
-
|
2617
|
-
/* Prototype Methods */
|
2618
|
-
|
2619
|
-
Promise.prototype['catch'] = function (onRejected) {
|
2620
|
-
return this.then(null, onRejected);
|
2621
|
-
}
|
2622
|
-
|
2623
|
-
},{"./core.js":22,"asap":26}],25:[function(require,module,exports){
|
2624
|
-
'use strict';
|
2625
|
-
|
2626
|
-
//This file contains then/promise specific extensions that are only useful for node.js interop
|
2627
|
-
|
2628
|
-
var Promise = require('./core.js')
|
2629
|
-
var asap = require('asap')
|
2630
|
-
|
2631
|
-
module.exports = Promise
|
2632
|
-
|
2633
|
-
/* Static Functions */
|
2634
|
-
|
2635
|
-
Promise.denodeify = function (fn, argumentCount) {
|
2636
|
-
argumentCount = argumentCount || Infinity
|
2637
|
-
return function () {
|
2638
|
-
var self = this
|
2639
|
-
var args = Array.prototype.slice.call(arguments)
|
2640
|
-
return new Promise(function (resolve, reject) {
|
2641
|
-
while (args.length && args.length > argumentCount) {
|
2642
|
-
args.pop()
|
2643
|
-
}
|
2644
|
-
args.push(function (err, res) {
|
2645
|
-
if (err) reject(err)
|
2646
|
-
else resolve(res)
|
2647
|
-
})
|
2648
|
-
fn.apply(self, args)
|
2649
|
-
})
|
2650
|
-
}
|
2651
|
-
}
|
2652
|
-
Promise.nodeify = function (fn) {
|
2653
|
-
return function () {
|
2654
|
-
var args = Array.prototype.slice.call(arguments)
|
2655
|
-
var callback = typeof args[args.length - 1] === 'function' ? args.pop() : null
|
2656
|
-
var ctx = this
|
2657
|
-
try {
|
2658
|
-
return fn.apply(this, arguments).nodeify(callback, ctx)
|
2659
|
-
} catch (ex) {
|
2660
|
-
if (callback === null || typeof callback == 'undefined') {
|
2661
|
-
return new Promise(function (resolve, reject) { reject(ex) })
|
2662
|
-
} else {
|
2663
|
-
asap(function () {
|
2664
|
-
callback.call(ctx, ex)
|
2665
|
-
})
|
2666
|
-
}
|
2667
|
-
}
|
2668
|
-
}
|
2669
|
-
}
|
2670
|
-
|
2671
|
-
Promise.prototype.nodeify = function (callback, ctx) {
|
2672
|
-
if (typeof callback != 'function') return this
|
2673
|
-
|
2674
|
-
this.then(function (value) {
|
2675
|
-
asap(function () {
|
2676
|
-
callback.call(ctx, null, value)
|
2677
|
-
})
|
2678
|
-
}, function (err) {
|
2679
|
-
asap(function () {
|
2680
|
-
callback.call(ctx, err)
|
2681
|
-
})
|
2682
|
-
})
|
2683
|
-
}
|
2684
|
-
|
2685
|
-
},{"./core.js":22,"asap":26}],26:[function(require,module,exports){
|
2686
|
-
(function (process){
|
2687
|
-
|
2688
|
-
// Use the fastest possible means to execute a task in a future turn
|
2689
|
-
// of the event loop.
|
2690
|
-
|
2691
|
-
// linked list of tasks (single, with head node)
|
2692
|
-
var head = {task: void 0, next: null};
|
2693
|
-
var tail = head;
|
2694
|
-
var flushing = false;
|
2695
|
-
var requestFlush = void 0;
|
2696
|
-
var isNodeJS = false;
|
2697
|
-
|
2698
|
-
function flush() {
|
2699
|
-
/* jshint loopfunc: true */
|
2700
|
-
|
2701
|
-
while (head.next) {
|
2702
|
-
head = head.next;
|
2703
|
-
var task = head.task;
|
2704
|
-
head.task = void 0;
|
2705
|
-
var domain = head.domain;
|
2706
|
-
|
2707
|
-
if (domain) {
|
2708
|
-
head.domain = void 0;
|
2709
|
-
domain.enter();
|
2710
|
-
}
|
2711
|
-
|
2712
|
-
try {
|
2713
|
-
task();
|
2714
|
-
|
2715
|
-
} catch (e) {
|
2716
|
-
if (isNodeJS) {
|
2717
|
-
// In node, uncaught exceptions are considered fatal errors.
|
2718
|
-
// Re-throw them synchronously to interrupt flushing!
|
2719
|
-
|
2720
|
-
// Ensure continuation if the uncaught exception is suppressed
|
2721
|
-
// listening "uncaughtException" events (as domains does).
|
2722
|
-
// Continue in next event to avoid tick recursion.
|
2723
|
-
if (domain) {
|
2724
|
-
domain.exit();
|
2725
|
-
}
|
2726
|
-
setTimeout(flush, 0);
|
2727
|
-
if (domain) {
|
2728
|
-
domain.enter();
|
2729
|
-
}
|
2730
|
-
|
2731
|
-
throw e;
|
2732
|
-
|
2733
|
-
} else {
|
2734
|
-
// In browsers, uncaught exceptions are not fatal.
|
2735
|
-
// Re-throw them asynchronously to avoid slow-downs.
|
2736
|
-
setTimeout(function() {
|
2737
|
-
throw e;
|
2738
|
-
}, 0);
|
2739
|
-
}
|
2740
|
-
}
|
2741
|
-
|
2742
|
-
if (domain) {
|
2743
|
-
domain.exit();
|
2744
|
-
}
|
2745
|
-
}
|
2746
|
-
|
2747
|
-
flushing = false;
|
2748
|
-
}
|
2749
|
-
|
2750
|
-
if (typeof process !== "undefined" && process.nextTick) {
|
2751
|
-
// Node.js before 0.9. Note that some fake-Node environments, like the
|
2752
|
-
// Mocha test runner, introduce a `process` global without a `nextTick`.
|
2753
|
-
isNodeJS = true;
|
2754
|
-
|
2755
|
-
requestFlush = function () {
|
2756
|
-
process.nextTick(flush);
|
2757
|
-
};
|
2758
|
-
|
2759
|
-
} else if (typeof setImmediate === "function") {
|
2760
|
-
// In IE10, Node.js 0.9+, or https://github.com/NobleJS/setImmediate
|
2761
|
-
if (typeof window !== "undefined") {
|
2762
|
-
requestFlush = setImmediate.bind(window, flush);
|
2763
|
-
} else {
|
2764
|
-
requestFlush = function () {
|
2765
|
-
setImmediate(flush);
|
2766
|
-
};
|
2767
|
-
}
|
2768
|
-
|
2769
|
-
} else if (typeof MessageChannel !== "undefined") {
|
2770
|
-
// modern browsers
|
2771
|
-
// http://www.nonblocking.io/2011/06/windownexttick.html
|
2772
|
-
var channel = new MessageChannel();
|
2773
|
-
channel.port1.onmessage = flush;
|
2774
|
-
requestFlush = function () {
|
2775
|
-
channel.port2.postMessage(0);
|
2776
|
-
};
|
2777
|
-
|
2778
|
-
} else {
|
2779
|
-
// old browsers
|
2780
|
-
requestFlush = function () {
|
2781
|
-
setTimeout(flush, 0);
|
2782
|
-
};
|
2783
|
-
}
|
2784
|
-
|
2785
|
-
function asap(task) {
|
2786
|
-
tail = tail.next = {
|
2787
|
-
task: task,
|
2788
|
-
domain: isNodeJS && process.domain,
|
2789
|
-
next: null
|
2790
|
-
};
|
2791
|
-
|
2792
|
-
if (!flushing) {
|
2793
|
-
flushing = true;
|
2794
|
-
requestFlush();
|
2795
|
-
}
|
2796
|
-
};
|
2797
|
-
|
2798
|
-
module.exports = asap;
|
2799
|
-
|
2800
|
-
|
2801
|
-
}).call(this,require('_process'))
|
2802
|
-
},{"_process":2}],27:[function(require,module,exports){
|
2803
|
-
/**
|
2804
|
-
* Copyright (c) 2014, Facebook, Inc.
|
2805
|
-
* All rights reserved.
|
2806
|
-
*
|
2807
|
-
* This source code is licensed under the BSD-style license found in the
|
2808
|
-
* https://raw.github.com/facebook/regenerator/master/LICENSE file. An
|
2809
|
-
* additional grant of patent rights can be found in the PATENTS file in
|
2810
|
-
* the same directory.
|
2811
|
-
*/
|
2812
|
-
|
2813
|
-
!(function() {
|
2814
|
-
var hasOwn = Object.prototype.hasOwnProperty;
|
2815
|
-
var undefined; // More compressible than void 0.
|
2816
|
-
var iteratorSymbol =
|
2817
|
-
typeof Symbol === "function" && Symbol.iterator || "@@iterator";
|
2818
|
-
|
2819
|
-
// Make a reasonable attempt to provide a Promise polyfill.
|
2820
|
-
if (typeof Promise === "undefined") try {
|
2821
|
-
Promise = require("promise");
|
2822
|
-
} catch (ignored) {}
|
2823
|
-
|
2824
|
-
if (typeof regeneratorRuntime === "object") {
|
2825
|
-
return;
|
2826
|
-
}
|
2827
|
-
|
2828
|
-
var runtime = regeneratorRuntime =
|
2829
|
-
typeof exports === "undefined" ? {} : exports;
|
2830
|
-
|
2831
|
-
function wrap(innerFn, outerFn, self, tryList) {
|
2832
|
-
return new Generator(innerFn, outerFn, self || null, tryList || []);
|
2833
|
-
}
|
2834
|
-
runtime.wrap = wrap;
|
2835
|
-
|
2836
|
-
var GenStateSuspendedStart = "suspendedStart";
|
2837
|
-
var GenStateSuspendedYield = "suspendedYield";
|
2838
|
-
var GenStateExecuting = "executing";
|
2839
|
-
var GenStateCompleted = "completed";
|
2840
|
-
|
2841
|
-
// Returning this object from the innerFn has the same effect as
|
2842
|
-
// breaking out of the dispatch switch statement.
|
2843
|
-
var ContinueSentinel = {};
|
2844
|
-
|
2845
|
-
// Dummy constructor that we use as the .constructor property for
|
2846
|
-
// functions that return Generator objects.
|
2847
|
-
var GF = function GeneratorFunction() {};
|
2848
|
-
var GFp = function GeneratorFunctionPrototype() {};
|
2849
|
-
var Gp = GFp.prototype = Generator.prototype;
|
2850
|
-
(GFp.constructor = GF).prototype =
|
2851
|
-
Gp.constructor = GFp;
|
2852
|
-
|
2853
|
-
// Ensure isGeneratorFunction works when Function#name not supported.
|
2854
|
-
var GFName = "GeneratorFunction";
|
2855
|
-
if (GF.name !== GFName) GF.name = GFName;
|
2856
|
-
if (GF.name !== GFName) throw new Error(GFName + " renamed?");
|
2857
|
-
|
2858
|
-
runtime.isGeneratorFunction = function(genFun) {
|
2859
|
-
var ctor = genFun && genFun.constructor;
|
2860
|
-
return ctor ? GF.name === ctor.name : false;
|
2861
|
-
};
|
2862
|
-
|
2863
|
-
runtime.mark = function(genFun) {
|
2864
|
-
genFun.__proto__ = GFp;
|
2865
|
-
genFun.prototype = Object.create(Gp);
|
2866
|
-
return genFun;
|
2867
|
-
};
|
2868
|
-
|
2869
|
-
runtime.async = function(innerFn, outerFn, self, tryList) {
|
2870
|
-
return new Promise(function(resolve, reject) {
|
2871
|
-
var generator = wrap(innerFn, outerFn, self, tryList);
|
2872
|
-
var callNext = step.bind(generator.next);
|
2873
|
-
var callThrow = step.bind(generator["throw"]);
|
2874
|
-
|
2875
|
-
function step(arg) {
|
2876
|
-
try {
|
2877
|
-
var info = this(arg);
|
2878
|
-
var value = info.value;
|
2879
|
-
} catch (error) {
|
2880
|
-
return reject(error);
|
2881
|
-
}
|
2882
|
-
|
2883
|
-
if (info.done) {
|
2884
|
-
resolve(value);
|
2885
|
-
} else {
|
2886
|
-
Promise.resolve(value).then(callNext, callThrow);
|
2887
|
-
}
|
2888
|
-
}
|
2889
|
-
|
2890
|
-
callNext();
|
2891
|
-
});
|
2892
|
-
};
|
2893
|
-
|
2894
|
-
function Generator(innerFn, outerFn, self, tryList) {
|
2895
|
-
var generator = outerFn ? Object.create(outerFn.prototype) : this;
|
2896
|
-
var context = new Context(tryList);
|
2897
|
-
var state = GenStateSuspendedStart;
|
2898
|
-
|
2899
|
-
function invoke(method, arg) {
|
2900
|
-
if (state === GenStateExecuting) {
|
2901
|
-
throw new Error("Generator is already running");
|
2902
|
-
}
|
2903
|
-
|
2904
|
-
if (state === GenStateCompleted) {
|
2905
|
-
throw new Error("Generator has already finished");
|
2906
|
-
}
|
2907
|
-
|
2908
|
-
while (true) {
|
2909
|
-
var delegate = context.delegate;
|
2910
|
-
if (delegate) {
|
2911
|
-
try {
|
2912
|
-
var info = delegate.iterator[method](arg);
|
2913
|
-
|
2914
|
-
// Delegate generator ran and handled its own exceptions so
|
2915
|
-
// regardless of what the method was, we continue as if it is
|
2916
|
-
// "next" with an undefined arg.
|
2917
|
-
method = "next";
|
2918
|
-
arg = undefined;
|
2919
|
-
|
2920
|
-
} catch (uncaught) {
|
2921
|
-
context.delegate = null;
|
2922
|
-
|
2923
|
-
// Like returning generator.throw(uncaught), but without the
|
2924
|
-
// overhead of an extra function call.
|
2925
|
-
method = "throw";
|
2926
|
-
arg = uncaught;
|
2927
|
-
|
2928
|
-
continue;
|
2929
|
-
}
|
2930
|
-
|
2931
|
-
if (info.done) {
|
2932
|
-
context[delegate.resultName] = info.value;
|
2933
|
-
context.next = delegate.nextLoc;
|
2934
|
-
} else {
|
2935
|
-
state = GenStateSuspendedYield;
|
2936
|
-
return info;
|
2937
|
-
}
|
2938
|
-
|
2939
|
-
context.delegate = null;
|
2940
|
-
}
|
2941
|
-
|
2942
|
-
if (method === "next") {
|
2943
|
-
if (state === GenStateSuspendedStart &&
|
2944
|
-
typeof arg !== "undefined") {
|
2945
|
-
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
|
2946
|
-
throw new TypeError(
|
2947
|
-
"attempt to send " + JSON.stringify(arg) + " to newborn generator"
|
2948
|
-
);
|
2949
|
-
}
|
2950
|
-
|
2951
|
-
if (state === GenStateSuspendedYield) {
|
2952
|
-
context.sent = arg;
|
2953
|
-
} else {
|
2954
|
-
delete context.sent;
|
2955
|
-
}
|
2956
|
-
|
2957
|
-
} else if (method === "throw") {
|
2958
|
-
if (state === GenStateSuspendedStart) {
|
2959
|
-
state = GenStateCompleted;
|
2960
|
-
throw arg;
|
2961
|
-
}
|
2962
|
-
|
2963
|
-
if (context.dispatchException(arg)) {
|
2964
|
-
// If the dispatched exception was caught by a catch block,
|
2965
|
-
// then let that catch block handle the exception normally.
|
2966
|
-
method = "next";
|
2967
|
-
arg = undefined;
|
2968
|
-
}
|
2969
|
-
|
2970
|
-
} else if (method === "return") {
|
2971
|
-
context.abrupt("return", arg);
|
2972
|
-
}
|
2973
|
-
|
2974
|
-
state = GenStateExecuting;
|
2975
|
-
|
2976
|
-
try {
|
2977
|
-
var value = innerFn.call(self, context);
|
2978
|
-
|
2979
|
-
// If an exception is thrown from innerFn, we leave state ===
|
2980
|
-
// GenStateExecuting and loop back for another invocation.
|
2981
|
-
state = context.done
|
2982
|
-
? GenStateCompleted
|
2983
|
-
: GenStateSuspendedYield;
|
2984
|
-
|
2985
|
-
var info = {
|
2986
|
-
value: value,
|
2987
|
-
done: context.done
|
2988
|
-
};
|
2989
|
-
|
2990
|
-
if (value === ContinueSentinel) {
|
2991
|
-
if (context.delegate && method === "next") {
|
2992
|
-
// Deliberately forget the last sent value so that we don't
|
2993
|
-
// accidentally pass it on to the delegate.
|
2994
|
-
arg = undefined;
|
2995
|
-
}
|
2996
|
-
} else {
|
2997
|
-
return info;
|
2998
|
-
}
|
2999
|
-
|
3000
|
-
} catch (thrown) {
|
3001
|
-
state = GenStateCompleted;
|
3002
|
-
|
3003
|
-
if (method === "next") {
|
3004
|
-
context.dispatchException(thrown);
|
3005
|
-
} else {
|
3006
|
-
arg = thrown;
|
3007
|
-
}
|
3008
|
-
}
|
3009
|
-
}
|
3010
|
-
}
|
3011
|
-
|
3012
|
-
generator.next = invoke.bind(generator, "next");
|
3013
|
-
generator["throw"] = invoke.bind(generator, "throw");
|
3014
|
-
generator["return"] = invoke.bind(generator, "return");
|
3015
|
-
|
3016
|
-
return generator;
|
3017
|
-
}
|
3018
|
-
|
3019
|
-
Gp[iteratorSymbol] = function() {
|
3020
|
-
return this;
|
3021
|
-
};
|
3022
|
-
|
3023
|
-
Gp.toString = function() {
|
3024
|
-
return "[object Generator]";
|
3025
|
-
};
|
3026
|
-
|
3027
|
-
function pushTryEntry(triple) {
|
3028
|
-
var entry = { tryLoc: triple[0] };
|
3029
|
-
|
3030
|
-
if (1 in triple) {
|
3031
|
-
entry.catchLoc = triple[1];
|
3032
|
-
}
|
3033
|
-
|
3034
|
-
if (2 in triple) {
|
3035
|
-
entry.finallyLoc = triple[2];
|
3036
|
-
}
|
3037
|
-
|
3038
|
-
this.tryEntries.push(entry);
|
3039
|
-
}
|
3040
|
-
|
3041
|
-
function resetTryEntry(entry, i) {
|
3042
|
-
var record = entry.completion || {};
|
3043
|
-
record.type = i === 0 ? "normal" : "return";
|
3044
|
-
delete record.arg;
|
3045
|
-
entry.completion = record;
|
3046
|
-
}
|
3047
|
-
|
3048
|
-
function Context(tryList) {
|
3049
|
-
// The root entry object (effectively a try statement without a catch
|
3050
|
-
// or a finally block) gives us a place to store values thrown from
|
3051
|
-
// locations where there is no enclosing try statement.
|
3052
|
-
this.tryEntries = [{ tryLoc: "root" }];
|
3053
|
-
tryList.forEach(pushTryEntry, this);
|
3054
|
-
this.reset();
|
3055
|
-
}
|
3056
|
-
|
3057
|
-
runtime.keys = function(object) {
|
3058
|
-
var keys = [];
|
3059
|
-
for (var key in object) {
|
3060
|
-
keys.push(key);
|
3061
|
-
}
|
3062
|
-
keys.reverse();
|
3063
|
-
|
3064
|
-
// Rather than returning an object with a next method, we keep
|
3065
|
-
// things simple and return the next function itself.
|
3066
|
-
return function next() {
|
3067
|
-
while (keys.length) {
|
3068
|
-
var key = keys.pop();
|
3069
|
-
if (key in object) {
|
3070
|
-
next.value = key;
|
3071
|
-
next.done = false;
|
3072
|
-
return next;
|
3073
|
-
}
|
3074
|
-
}
|
3075
|
-
|
3076
|
-
// To avoid creating an additional object, we just hang the .value
|
3077
|
-
// and .done properties off the next function object itself. This
|
3078
|
-
// also ensures that the minifier will not anonymize the function.
|
3079
|
-
next.done = true;
|
3080
|
-
return next;
|
3081
|
-
};
|
3082
|
-
};
|
3083
|
-
|
3084
|
-
function values(iterable) {
|
3085
|
-
var iterator = iterable;
|
3086
|
-
if (iteratorSymbol in iterable) {
|
3087
|
-
iterator = iterable[iteratorSymbol]();
|
3088
|
-
} else if (!isNaN(iterable.length)) {
|
3089
|
-
var i = -1;
|
3090
|
-
iterator = function next() {
|
3091
|
-
while (++i < iterable.length) {
|
3092
|
-
if (i in iterable) {
|
3093
|
-
next.value = iterable[i];
|
3094
|
-
next.done = false;
|
3095
|
-
return next;
|
3096
|
-
}
|
3097
|
-
};
|
3098
|
-
next.done = true;
|
3099
|
-
return next;
|
3100
|
-
};
|
3101
|
-
iterator.next = iterator;
|
3102
|
-
}
|
3103
|
-
return iterator;
|
3104
|
-
}
|
3105
|
-
runtime.values = values;
|
3106
|
-
|
3107
|
-
Context.prototype = {
|
3108
|
-
constructor: Context,
|
3109
|
-
|
3110
|
-
reset: function() {
|
3111
|
-
this.prev = 0;
|
3112
|
-
this.next = 0;
|
3113
|
-
this.sent = undefined;
|
3114
|
-
this.done = false;
|
3115
|
-
this.delegate = null;
|
3116
|
-
|
3117
|
-
this.tryEntries.forEach(resetTryEntry);
|
3118
|
-
|
3119
|
-
// Pre-initialize at least 20 temporary variables to enable hidden
|
3120
|
-
// class optimizations for simple generators.
|
3121
|
-
for (var tempIndex = 0, tempName;
|
3122
|
-
hasOwn.call(this, tempName = "t" + tempIndex) || tempIndex < 20;
|
3123
|
-
++tempIndex) {
|
3124
|
-
this[tempName] = null;
|
3125
|
-
}
|
3126
|
-
},
|
3127
|
-
|
3128
|
-
stop: function() {
|
3129
|
-
this.done = true;
|
3130
|
-
|
3131
|
-
var rootEntry = this.tryEntries[0];
|
3132
|
-
var rootRecord = rootEntry.completion;
|
3133
|
-
if (rootRecord.type === "throw") {
|
3134
|
-
throw rootRecord.arg;
|
3135
|
-
}
|
3136
|
-
|
3137
|
-
return this.rval;
|
3138
|
-
},
|
3139
|
-
|
3140
|
-
dispatchException: function(exception) {
|
3141
|
-
if (this.done) {
|
3142
|
-
throw exception;
|
3143
|
-
}
|
3144
|
-
|
3145
|
-
var context = this;
|
3146
|
-
function handle(loc, caught) {
|
3147
|
-
record.type = "throw";
|
3148
|
-
record.arg = exception;
|
3149
|
-
context.next = loc;
|
3150
|
-
return !!caught;
|
3151
|
-
}
|
3152
|
-
|
3153
|
-
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
3154
|
-
var entry = this.tryEntries[i];
|
3155
|
-
var record = entry.completion;
|
3156
|
-
|
3157
|
-
if (entry.tryLoc === "root") {
|
3158
|
-
// Exception thrown outside of any try block that could handle
|
3159
|
-
// it, so set the completion value of the entire function to
|
3160
|
-
// throw the exception.
|
3161
|
-
return handle("end");
|
3162
|
-
}
|
3163
|
-
|
3164
|
-
if (entry.tryLoc <= this.prev) {
|
3165
|
-
var hasCatch = hasOwn.call(entry, "catchLoc");
|
3166
|
-
var hasFinally = hasOwn.call(entry, "finallyLoc");
|
3167
|
-
|
3168
|
-
if (hasCatch && hasFinally) {
|
3169
|
-
if (this.prev < entry.catchLoc) {
|
3170
|
-
return handle(entry.catchLoc, true);
|
3171
|
-
} else if (this.prev < entry.finallyLoc) {
|
3172
|
-
return handle(entry.finallyLoc);
|
3173
|
-
}
|
3174
|
-
|
3175
|
-
} else if (hasCatch) {
|
3176
|
-
if (this.prev < entry.catchLoc) {
|
3177
|
-
return handle(entry.catchLoc, true);
|
3178
|
-
}
|
3179
|
-
|
3180
|
-
} else if (hasFinally) {
|
3181
|
-
if (this.prev < entry.finallyLoc) {
|
3182
|
-
return handle(entry.finallyLoc);
|
3183
|
-
}
|
3184
|
-
|
3185
|
-
} else {
|
3186
|
-
throw new Error("try statement without catch or finally");
|
3187
|
-
}
|
3188
|
-
}
|
3189
|
-
}
|
3190
|
-
},
|
3191
|
-
|
3192
|
-
_findFinallyEntry: function(finallyLoc) {
|
3193
|
-
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
3194
|
-
var entry = this.tryEntries[i];
|
3195
|
-
if (entry.tryLoc <= this.prev &&
|
3196
|
-
hasOwn.call(entry, "finallyLoc") && (
|
3197
|
-
entry.finallyLoc === finallyLoc ||
|
3198
|
-
this.prev < entry.finallyLoc)) {
|
3199
|
-
return entry;
|
3200
|
-
}
|
3201
|
-
}
|
3202
|
-
},
|
3203
|
-
|
3204
|
-
abrupt: function(type, arg) {
|
3205
|
-
var entry = this._findFinallyEntry();
|
3206
|
-
var record = entry ? entry.completion : {};
|
3207
|
-
|
3208
|
-
record.type = type;
|
3209
|
-
record.arg = arg;
|
3210
|
-
|
3211
|
-
if (entry) {
|
3212
|
-
this.next = entry.finallyLoc;
|
3213
|
-
} else {
|
3214
|
-
this.complete(record);
|
3215
|
-
}
|
3216
|
-
|
3217
|
-
return ContinueSentinel;
|
3218
|
-
},
|
3219
|
-
|
3220
|
-
complete: function(record) {
|
3221
|
-
if (record.type === "throw") {
|
3222
|
-
throw record.arg;
|
3223
|
-
}
|
3224
|
-
|
3225
|
-
if (record.type === "break" ||
|
3226
|
-
record.type === "continue") {
|
3227
|
-
this.next = record.arg;
|
3228
|
-
} else if (record.type === "return") {
|
3229
|
-
this.rval = record.arg;
|
3230
|
-
this.next = "end";
|
3231
|
-
}
|
3232
|
-
|
3233
|
-
return ContinueSentinel;
|
3234
|
-
},
|
3235
|
-
|
3236
|
-
finish: function(finallyLoc) {
|
3237
|
-
var entry = this._findFinallyEntry(finallyLoc);
|
3238
|
-
return this.complete(entry.completion);
|
3239
|
-
},
|
3240
|
-
|
3241
|
-
"catch": function(tryLoc) {
|
3242
|
-
for (var i = this.tryEntries.length - 1; i >= 0; --i) {
|
3243
|
-
var entry = this.tryEntries[i];
|
3244
|
-
if (entry.tryLoc === tryLoc) {
|
3245
|
-
var record = entry.completion;
|
3246
|
-
if (record.type === "throw") {
|
3247
|
-
var thrown = record.arg;
|
3248
|
-
resetTryEntry(entry, i);
|
3249
|
-
}
|
3250
|
-
return thrown;
|
3251
|
-
}
|
3252
|
-
}
|
3253
|
-
|
3254
|
-
// The context.catch method must only be called with a location
|
3255
|
-
// argument that corresponds to a known catch block.
|
3256
|
-
throw new Error("illegal catch attempt");
|
3257
|
-
},
|
3258
|
-
|
3259
|
-
delegateYield: function(iterable, resultName, nextLoc) {
|
3260
|
-
this.delegate = {
|
3261
|
-
iterator: values(iterable),
|
3262
|
-
resultName: resultName,
|
3263
|
-
nextLoc: nextLoc
|
3264
|
-
};
|
3265
|
-
|
3266
|
-
return ContinueSentinel;
|
3267
|
-
}
|
3268
|
-
};
|
3269
|
-
})();
|
3270
|
-
|
3271
|
-
},{"promise":21}]},{},[1]);
|