1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.try = exports.attempt = exports.TimeoutError = exports.promisifyAll = exports.promisify = exports.finally = exports.fromEvents = exports.fromEvent = exports.fromCallback = exports.forOwn = exports.forIterable = exports.forIn = exports.forEach = exports.forArray = exports.makeAsyncIterator = exports.defer = exports.cancellable = exports.cancelable = exports.CancelToken = exports.Cancel = exports.nodeify = exports.wrapApply = exports.wrapCall = exports.isPromise = undefined;
|
7 |
|
8 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
9 |
|
10 | exports.all = all;
|
11 | exports.asCallback = asCallback;
|
12 | exports.catchPlus = catchPlus;
|
13 | exports.delay = delay;
|
14 | exports.disposer = disposer;
|
15 | exports.using = using;
|
16 | exports.ignoreErrors = ignoreErrors;
|
17 | exports.join = join;
|
18 | exports.lastly = lastly;
|
19 | exports.reflect = reflect;
|
20 | exports.settle = settle;
|
21 | exports.some = some;
|
22 | exports.tap = tap;
|
23 | exports.timeout = timeout;
|
24 | exports.unpromisify = unpromisify;
|
25 |
|
26 | var _makeError = require('make-error');
|
27 |
|
28 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
29 |
|
30 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
31 |
|
32 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
33 |
|
34 |
|
35 |
|
36 | if (typeof Promise !== 'function' || typeof Promise.reject !== 'function' || typeof Promise.resolve !== 'function') {
|
37 | throw new Error('a standard Promise implementation is required (https://github.com/JsCommunity/promise-toolbox#usage)');
|
38 | }
|
39 |
|
40 |
|
41 |
|
42 | var _endsWith = function _endsWith(str, suffix) {
|
43 | var pos = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : str.length;
|
44 |
|
45 | pos -= suffix.length;
|
46 | return pos >= 0 && str.indexOf(suffix, pos) === pos;
|
47 | };
|
48 |
|
49 | var _isArray = Array.isArray || function (value) {
|
50 | return value instanceof Array;
|
51 | };
|
52 |
|
53 | var _isLength = function _isLength(value) {
|
54 | return typeof value === 'number' && value >= 0 && value < Infinity && Math.floor(value) === value;
|
55 | };
|
56 |
|
57 | var _isArrayLike = function _isArrayLike(value) {
|
58 | return value && typeof value !== 'function' && _isLength(value.length);
|
59 | };
|
60 |
|
61 | var _iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator || '@@iterator';
|
62 |
|
63 | var _isIterable = function _isIterable(value) {
|
64 | return value && typeof value[_iteratorSymbol] === 'function';
|
65 | };
|
66 |
|
67 | var _once = function _once(fn) {
|
68 | var result = void 0;
|
69 | return function () {
|
70 | if (fn) {
|
71 | result = fn.apply(this, arguments);
|
72 | fn = null;
|
73 | }
|
74 | return result;
|
75 | };
|
76 | };
|
77 |
|
78 | var _noop = function _noop() {};
|
79 |
|
80 |
|
81 |
|
82 | var _forArray = function _forArray(array, iteratee) {
|
83 | var length = array.length;
|
84 |
|
85 | for (var i = 0; i < length; ++i) {
|
86 | iteratee(array[i], i, array);
|
87 | }
|
88 | };
|
89 |
|
90 | var _forIn = function _forIn(object, iteratee) {
|
91 | for (var key in object) {
|
92 | iteratee(object[key], key, object);
|
93 | }
|
94 | };
|
95 |
|
96 | var _forIterable = function _forIterable(iterable, iteratee) {
|
97 | var iterator = iterable[Symbol.iterator]();
|
98 |
|
99 | var current = void 0;
|
100 | while (!(current = iterator.next()).done) {
|
101 | iteratee(current.value, null, iterable);
|
102 | }
|
103 | };
|
104 |
|
105 | var hasOwnProperty = Object.prototype.hasOwnProperty;
|
106 |
|
107 | var _forOwn = function _forOwn(object, iteratee) {
|
108 | for (var key in object) {
|
109 | if (hasOwnProperty.call(object, key)) {
|
110 | iteratee(object[key], key, object);
|
111 | }
|
112 | }
|
113 | };
|
114 |
|
115 | var _forEach = function _forEach(collection, iteratee) {
|
116 | return _isArray(collection) ? _forArray(collection, iteratee) : _isIterable(collection) ? _forIterable(collection, iteratee) : _isArrayLike(collection) ? _forArray(collection, iteratee) : _forOwn(collection, iteratee);
|
117 | };
|
118 |
|
119 | var _map = function _map(collection, iteratee) {
|
120 | var result = _isArrayLike(collection) ? new Array(collection.length) : {};
|
121 |
|
122 |
|
123 | if (iteratee) {
|
124 | _forEach(collection, function (item, key) {
|
125 | result[key] = iteratee(item, key, collection);
|
126 | });
|
127 | }
|
128 |
|
129 | return result;
|
130 | };
|
131 |
|
132 |
|
133 |
|
134 | var isPromise = exports.isPromise = function isPromise(value) {
|
135 | return value != null && typeof value.then === 'function';
|
136 | };
|
137 |
|
138 |
|
139 |
|
140 | var _makeAsyncIterator = function _makeAsyncIterator(iterator) {
|
141 | return function (promises, cb) {
|
142 | var mainPromise = Promise.resolve();
|
143 |
|
144 | iterator(promises, function (promise, key) {
|
145 | mainPromise = isPromise(promise) ? mainPromise.then(function () {
|
146 | return promise.then(function (value) {
|
147 | return cb(value, key, promises);
|
148 | });
|
149 | }) : mainPromise.then(function () {
|
150 | return cb(promise, key, promises);
|
151 | });
|
152 | });
|
153 |
|
154 | return mainPromise;
|
155 | };
|
156 | };
|
157 |
|
158 | var _wrap = function _wrap(value) {
|
159 | return isPromise(value) ? value : Promise.resolve(value);
|
160 | };
|
161 |
|
162 | var wrapCall = exports.wrapCall = function wrapCall(fn, arg, thisArg) {
|
163 | try {
|
164 | return _wrap(fn.call(thisArg, arg));
|
165 | } catch (error) {
|
166 | return Promise.reject(error);
|
167 | }
|
168 | };
|
169 |
|
170 | var wrapApply = exports.wrapApply = function wrapApply(fn, args, thisArg) {
|
171 | try {
|
172 | return _wrap(fn.apply(thisArg, args));
|
173 | } catch (error) {
|
174 | return Promise.reject(error);
|
175 | }
|
176 | };
|
177 |
|
178 |
|
179 |
|
180 | var _all = function _all(promises, mapFn) {
|
181 | return new Promise(function (resolve, reject) {
|
182 |
|
183 | var result = _map(promises, mapFn);
|
184 |
|
185 | var count = 1;
|
186 | var onFulfillment0 = function onFulfillment0() {
|
187 | if (--count === 0) {
|
188 | var tmp = result;
|
189 | result = null;
|
190 | resolve(tmp);
|
191 | }
|
192 | };
|
193 |
|
194 | var onFulfillment = function onFulfillment(value, key) {
|
195 | if (!result) {
|
196 | return;
|
197 | }
|
198 |
|
199 | result[key] = value;
|
200 | onFulfillment0();
|
201 | };
|
202 |
|
203 | var onRejection = function onRejection(reason) {
|
204 | if (!result) {
|
205 | return;
|
206 | }
|
207 |
|
208 | result = null;
|
209 | reject(reason);
|
210 | };
|
211 |
|
212 | _forEach(mapFn ? result : promises, function (promise, key) {
|
213 | ++count;
|
214 |
|
215 | if (isPromise(promise)) {
|
216 | promise.then(function (value) {
|
217 | return onFulfillment(value, key);
|
218 | }, onRejection);
|
219 | } else {
|
220 | onFulfillment(promise, key);
|
221 | }
|
222 | });
|
223 | onFulfillment0();
|
224 | });
|
225 | };
|
226 |
|
227 |
|
228 |
|
229 |
|
230 |
|
231 |
|
232 |
|
233 |
|
234 |
|
235 | function all(mapFn) {
|
236 | return _wrap(this).then(function (promises) {
|
237 | return _all(promises, mapFn);
|
238 | });
|
239 | }
|
240 |
|
241 |
|
242 |
|
243 |
|
244 | function asCallback(cb) {
|
245 |
|
246 | if (cb) {
|
247 | this.then(function (value) {
|
248 | return cb(null, value);
|
249 | }, function (error) {
|
250 | return cb(error);
|
251 | }).then(null, _noop);
|
252 | }
|
253 |
|
254 | return this;
|
255 | }
|
256 |
|
257 | exports.nodeify = asCallback;
|
258 |
|
259 |
|
260 |
|
261 | var Cancel = exports.Cancel = function () {
|
262 | function Cancel() {
|
263 | var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'this action has been canceled';
|
264 |
|
265 | _classCallCheck(this, Cancel);
|
266 |
|
267 | Object.defineProperty(this, 'message', {
|
268 | enumerable: true,
|
269 | value: message
|
270 | });
|
271 | }
|
272 |
|
273 | _createClass(Cancel, [{
|
274 | key: 'toString',
|
275 | value: function toString() {
|
276 | return `Cancel: ${this.message}`;
|
277 | }
|
278 | }]);
|
279 |
|
280 | return Cancel;
|
281 | }();
|
282 |
|
283 | var _cancelTokenTag = 'CancelToken';
|
284 | var _toStringTagSymbol = typeof Symbol === 'function' && Symbol.toStringTag || '@@toStringTag';
|
285 |
|
286 |
|
287 |
|
288 |
|
289 | var CancelToken = exports.CancelToken = function () {
|
290 | _createClass(CancelToken, null, [{
|
291 | key: 'isCancelToken',
|
292 | value: function isCancelToken(value) {
|
293 | return value != null && typeof value[_toStringTagSymbol] === 'function' && value[_toStringTagSymbol]() === _cancelTokenTag;
|
294 | }
|
295 |
|
296 |
|
297 |
|
298 | }, {
|
299 | key: 'source',
|
300 | value: function source() {
|
301 | var cancel = void 0;
|
302 | var token = new CancelToken(function (cancel_) {
|
303 | cancel = cancel_;
|
304 | });
|
305 | return { cancel, token };
|
306 | }
|
307 | }, {
|
308 | key: 'race',
|
309 | value: function race(tokens, _executor) {
|
310 | return new CancelToken(function (cancel) {
|
311 | _forEach(tokens, function (token) {
|
312 | var reason = token.reason;
|
313 |
|
314 | if (reason !== undefined) {
|
315 | cancel(reason);
|
316 | return false;
|
317 | }
|
318 |
|
319 | (token._listeners || (token._listeners = [])).push(cancel);
|
320 | });
|
321 | if (_executor !== undefined) {
|
322 | _executor(cancel);
|
323 | }
|
324 | });
|
325 | }
|
326 | }]);
|
327 |
|
328 | function CancelToken(executor) {
|
329 | var _this = this;
|
330 |
|
331 | _classCallCheck(this, CancelToken);
|
332 |
|
333 | this._listeners = null;
|
334 | this._promise = null;
|
335 | this._reason = undefined;
|
336 | this._resolve = null;
|
337 |
|
338 | var _cancelOnce = function cancelOnce(message) {
|
339 | _cancelOnce = _noop;
|
340 |
|
341 | var reason = _this._reason = message instanceof Cancel ? message : new Cancel(message);
|
342 |
|
343 | var resolve = _this._resolve;
|
344 | if (resolve !== null) {
|
345 | _this._resolve = null;
|
346 | resolve(reason);
|
347 | }
|
348 |
|
349 |
|
350 | var listeners = _this._listeners;
|
351 | if (listeners !== null) {
|
352 | _this._listeners = null;
|
353 | _forArray(listeners, function (listener) {
|
354 | return void listener(reason);
|
355 | });
|
356 | }
|
357 | };
|
358 | var cancel = function cancel(message) {
|
359 | return _cancelOnce(message);
|
360 | };
|
361 | executor(cancel);
|
362 | }
|
363 |
|
364 | _createClass(CancelToken, [{
|
365 | key: 'fork',
|
366 | value: function fork(executor) {
|
367 | if (executor !== undefined) {
|
368 | return CancelToken.race([this], executor);
|
369 | }
|
370 |
|
371 | var cancel = void 0;
|
372 | var token = CancelToken.race([this], function (c) {
|
373 | cancel = c;
|
374 | });
|
375 | return { cancel, token };
|
376 | }
|
377 | }, {
|
378 | key: 'throwIfRequested',
|
379 | value: function throwIfRequested() {
|
380 | var reason = this._reason;
|
381 | if (reason !== undefined) {
|
382 | throw reason;
|
383 | }
|
384 | }
|
385 | }, {
|
386 | key: _toStringTagSymbol,
|
387 | value: function value() {
|
388 | return _cancelTokenTag;
|
389 | }
|
390 | }, {
|
391 | key: 'promise',
|
392 | get: function get() {
|
393 | var _this2 = this;
|
394 |
|
395 | var promise = this._promise;
|
396 | if (promise === null) {
|
397 | var reason = this._reason;
|
398 | promise = this._promise = reason !== undefined ? Promise.resolve(reason) : new Promise(function (resolve) {
|
399 | _this2._resolve = resolve;
|
400 | });
|
401 | }
|
402 | return promise;
|
403 | }
|
404 | }, {
|
405 | key: 'reason',
|
406 | get: function get() {
|
407 | return this._reason;
|
408 | }
|
409 | }, {
|
410 | key: 'requested',
|
411 | get: function get() {
|
412 | return this._reason !== undefined;
|
413 | }
|
414 | }]);
|
415 |
|
416 | return CancelToken;
|
417 | }();
|
418 |
|
419 |
|
420 |
|
421 |
|
422 |
|
423 |
|
424 |
|
425 |
|
426 |
|
427 |
|
428 |
|
429 |
|
430 |
|
431 |
|
432 |
|
433 |
|
434 |
|
435 |
|
436 |
|
437 |
|
438 |
|
439 | var cancelable = exports.cancelable = function cancelable(target, name, descriptor) {
|
440 | var fn = descriptor !== undefined ? descriptor.value : target;
|
441 |
|
442 | function cancelableWrapper() {
|
443 | var length = arguments.length;
|
444 |
|
445 | if (length !== 0 && CancelToken.isCancelToken(arguments[0])) {
|
446 | return fn.apply(this, arguments);
|
447 | }
|
448 |
|
449 | var _CancelToken$source = CancelToken.source(),
|
450 | cancel = _CancelToken$source.cancel,
|
451 | token = _CancelToken$source.token;
|
452 |
|
453 | var args = new Array(length + 1);
|
454 | args[0] = token;
|
455 | for (var i = 0; i < length; ++i) {
|
456 | args[i + 1] = arguments[i];
|
457 | }
|
458 |
|
459 | var promise = fn.apply(this, args);
|
460 | promise.cancel = cancel;
|
461 |
|
462 | return promise;
|
463 | }
|
464 |
|
465 | if (descriptor !== undefined) {
|
466 | descriptor.value = cancelableWrapper;
|
467 | return descriptor;
|
468 | }
|
469 |
|
470 | return cancelableWrapper;
|
471 | };
|
472 | exports.cancellable = cancelable;
|
473 |
|
474 |
|
475 |
|
476 | var _isProgrammerError = function _isProgrammerError(reason) {
|
477 | return reason instanceof ReferenceError || reason instanceof SyntaxError || reason instanceof TypeError;
|
478 | };
|
479 |
|
480 | var _matchError = function _matchError(predicate, error) {
|
481 | if (typeof predicate === 'function') {
|
482 | return predicate === Error || predicate.prototype instanceof Error ? error instanceof predicate : predicate(error);
|
483 | }
|
484 |
|
485 | if (error != null && typeof predicate === 'object') {
|
486 | for (var key in predicate) {
|
487 | if (hasOwnProperty.call(predicate, key) && error[key] !== predicate[key]) {
|
488 | return false;
|
489 | }
|
490 | }
|
491 | return true;
|
492 | }
|
493 | };
|
494 |
|
495 |
|
496 |
|
497 |
|
498 |
|
499 |
|
500 | function catchPlus() {
|
501 | var _this3 = this;
|
502 |
|
503 | var n = arguments.length - 1;
|
504 |
|
505 | var cb = void 0;
|
506 | if (n < 0 || typeof (cb = arguments[n]) !== 'function') {
|
507 | return this;
|
508 | }
|
509 |
|
510 | var predicates = void 0;
|
511 | if (n !== 0) {
|
512 | predicates = new Array(n);
|
513 | for (var i = 0; i < n; ++i) {
|
514 | predicates[i] = arguments[i];
|
515 | }
|
516 | }
|
517 |
|
518 | return _wrap(this).then(null, function (reason) {
|
519 | if (predicates !== undefined) {
|
520 | for (var _i = 0; _i < n; ++_i) {
|
521 | if (_matchError(predicates[_i], reason)) {
|
522 | return cb(reason);
|
523 | }
|
524 | }
|
525 | } else if (!_isProgrammerError(reason)) {
|
526 | return cb(reason);
|
527 | }
|
528 |
|
529 |
|
530 | return _this3;
|
531 | });
|
532 | }
|
533 |
|
534 |
|
535 |
|
536 |
|
537 | var defer = exports.defer = function defer() {
|
538 | var resolve = void 0,
|
539 | reject = void 0;
|
540 | var promise = new Promise(function (resolve_, reject_) {
|
541 |
|
542 | resolve = resolve_;
|
543 | reject = reject_;
|
544 | });
|
545 |
|
546 | return {
|
547 | promise,
|
548 | reject,
|
549 | resolve
|
550 | };
|
551 | };
|
552 |
|
553 |
|
554 |
|
555 |
|
556 | function delay(ms) {
|
557 | var _this4 = this;
|
558 |
|
559 | return isPromise(this) ? this.then(function (value) {
|
560 | return new Promise(function (resolve) {
|
561 | setTimeout(function () {
|
562 | return resolve(value);
|
563 | }, ms);
|
564 | });
|
565 | }) : new Promise(function (resolve) {
|
566 | setTimeout(function () {
|
567 | return resolve(_this4);
|
568 | }, ms);
|
569 | });
|
570 | }
|
571 |
|
572 |
|
573 |
|
574 | function Resource(promise, disposer) {
|
575 | this.d = disposer;
|
576 | this.p = promise;
|
577 | }
|
578 |
|
579 |
|
580 | function disposer(disposer) {
|
581 | return new Resource(this, disposer);
|
582 | }
|
583 |
|
584 |
|
585 | function using() {
|
586 | var _this5 = this;
|
587 |
|
588 | var nResources = arguments.length - 1;
|
589 |
|
590 | if (nResources < 1) {
|
591 | throw new TypeError('using expects at least 2 arguments');
|
592 | }
|
593 |
|
594 | var handler = arguments[nResources];
|
595 |
|
596 | var resources = arguments[0];
|
597 | var spread = nResources > 1 || !_isArray(resources);
|
598 | if (spread) {
|
599 | resources = new Array(nResources);
|
600 | for (var i = 0; i < nResources; ++i) {
|
601 | resources[i] = arguments[i];
|
602 | }
|
603 | } else {
|
604 | nResources = resources.length;
|
605 | }
|
606 |
|
607 | var dispose = _once(function (fn, value) {
|
608 | var leftToProcess = nResources;
|
609 |
|
610 | var onSettle = function onSettle() {
|
611 | if (--leftToProcess === 0) {
|
612 | fn(value);
|
613 | }
|
614 | };
|
615 |
|
616 |
|
617 | var onFailure = function onFailure(reason) {
|
618 | setTimeout(function () {
|
619 | throw reason;
|
620 | }, 0);
|
621 | };
|
622 |
|
623 | _forArray(resources, function (resource) {
|
624 | var d = void 0;
|
625 | if (resource != null && typeof (d = resource.d) === 'function') {
|
626 | resource.p.then(function (value) {
|
627 | return wrapCall(d, value).then(onSettle, onFailure);
|
628 | }, onSettle);
|
629 |
|
630 | resource.p = resource.d = null;
|
631 | } else {
|
632 | --leftToProcess;
|
633 | }
|
634 | });
|
635 | });
|
636 |
|
637 | return new Promise(function (resolve, reject) {
|
638 | var values = new Array(nResources);
|
639 | var leftToProcess = nResources;
|
640 |
|
641 | var _onProviderFailure_ = function onProviderFailure_(reason) {
|
642 | _onProviderFailure_ = onProviderSettle;
|
643 | onSettle = function onSettle() {
|
644 | return dispose(reject, reason);
|
645 | };
|
646 |
|
647 | onProviderSettle();
|
648 | };
|
649 | var onProviderFailure = function onProviderFailure(reason) {
|
650 | return _onProviderFailure_(reason);
|
651 | };
|
652 |
|
653 | var onProviderSettle = function onProviderSettle() {
|
654 | if (--leftToProcess === 0) {
|
655 | onSettle();
|
656 | }
|
657 | };
|
658 |
|
659 | var onSettle = function onSettle() {
|
660 | return (spread ? wrapApply : wrapCall)(handler, values, _this5).then(function (value) {
|
661 | return dispose(resolve, value);
|
662 | }, function (reason) {
|
663 | return dispose(reject, reason);
|
664 | });
|
665 | };
|
666 |
|
667 | _forArray(resources, function (resource, i) {
|
668 | var p = resource instanceof Resource ? resource.p : resource;
|
669 | if (p === null) {
|
670 | onProviderFailure(new TypeError('resource has already been disposed of'));
|
671 | return;
|
672 | }
|
673 |
|
674 | p.then(function (value) {
|
675 | values[i] = value;
|
676 |
|
677 | onProviderSettle();
|
678 | }, onProviderFailure);
|
679 | });
|
680 | });
|
681 | }
|
682 |
|
683 |
|
684 |
|
685 | var makeAsyncIterator = exports.makeAsyncIterator = function makeAsyncIterator(iterator) {
|
686 | var asyncIterator = _makeAsyncIterator(iterator);
|
687 |
|
688 | return function (cb) {
|
689 | return _wrap(this).then(function (promises) {
|
690 | return asyncIterator(promises, cb);
|
691 | }).then(_noop);
|
692 | };
|
693 | };
|
694 |
|
695 | var forArray = exports.forArray = makeAsyncIterator(_forArray);
|
696 | var forEach = exports.forEach = makeAsyncIterator(_forEach);
|
697 | var forIn = exports.forIn = makeAsyncIterator(_forIn);
|
698 | var forIterable = exports.forIterable = makeAsyncIterator(_forIterable);
|
699 | var forOwn = exports.forOwn = makeAsyncIterator(_forOwn);
|
700 |
|
701 |
|
702 |
|
703 |
|
704 |
|
705 |
|
706 |
|
707 |
|
708 |
|
709 | var fromCallback = exports.fromCallback = function fromCallback(fn) {
|
710 | return new Promise(function (resolve, reject) {
|
711 | fn(function (error, result) {
|
712 | return error ? reject(error) : resolve(result);
|
713 | });
|
714 | });
|
715 | };
|
716 |
|
717 |
|
718 |
|
719 | var _ignoreErrorsCb = function _ignoreErrorsCb(error) {
|
720 | if (_isProgrammerError(error)) {
|
721 | throw error;
|
722 | }
|
723 | };
|
724 |
|
725 | function ignoreErrors() {
|
726 | if (!isPromise(this)) {
|
727 | return this;
|
728 | }
|
729 |
|
730 | return this.then(null, _ignoreErrorsCb);
|
731 | }
|
732 |
|
733 |
|
734 |
|
735 | var _makeEventAdder = function _makeEventAdder($cancelToken, emitter, arrayArg) {
|
736 | var add = emitter.addEventListener || emitter.addListener || emitter.on;
|
737 | if (add === undefined) {
|
738 | throw new Error('cannot register event listener');
|
739 | }
|
740 |
|
741 | var remove = emitter.removeEventListener || emitter.removeListener || emitter.off;
|
742 |
|
743 | var eventsAndListeners = [];
|
744 |
|
745 | var clean = _noop;
|
746 | if (remove !== undefined) {
|
747 | clean = _once(function () {
|
748 | for (var i = 0, n = eventsAndListeners.length; i < n; i += 2) {
|
749 | remove.call(emitter, eventsAndListeners[i], eventsAndListeners[i + 1]);
|
750 | }
|
751 | });
|
752 | $cancelToken.promise.then(clean);
|
753 | }
|
754 |
|
755 | return arrayArg ? function (event, cb) {
|
756 | function listener() {
|
757 | clean();
|
758 | var length = arguments.length;
|
759 |
|
760 | var args = new Array(length);
|
761 | for (var i = 0; i < length; ++i) {
|
762 | args[i] = arguments[i];
|
763 | }
|
764 | args.event = event;
|
765 | cb(args);
|
766 | }
|
767 | eventsAndListeners.push(event, listener);
|
768 | add.call(emitter, event, listener);
|
769 | } : function (event, cb) {
|
770 | var listener = function listener(arg) {
|
771 | clean();
|
772 | cb(arg);
|
773 | };
|
774 | eventsAndListeners.push(event, listener);
|
775 | add.call(emitter, event, listener);
|
776 | };
|
777 | };
|
778 |
|
779 | var fromEvent = exports.fromEvent = cancelable(function ($cancelToken, emitter, event) {
|
780 | var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
781 | return new Promise(function (resolve, reject) {
|
782 | var add = _makeEventAdder($cancelToken, emitter, opts.array);
|
783 | add(event, resolve);
|
784 | if (!opts.ignoreErrors) {
|
785 | var _opts$error = opts.error,
|
786 | error = _opts$error === undefined ? 'error' : _opts$error;
|
787 |
|
788 | if (error !== event) {
|
789 | add(error, reject);
|
790 | }
|
791 | }
|
792 | });
|
793 | });
|
794 |
|
795 | var fromEvents = exports.fromEvents = cancelable(function ($cancelToken, emitter, successEvents) {
|
796 | var errorEvents = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ['error'];
|
797 | return new Promise(function (resolve, reject) {
|
798 | var add = _makeEventAdder($cancelToken, emitter, true);
|
799 | _forArray(successEvents, function (event) {
|
800 | return add(event, resolve);
|
801 | });
|
802 | _forArray(errorEvents, function (event) {
|
803 | return add(event, reject);
|
804 | });
|
805 | });
|
806 | });
|
807 |
|
808 |
|
809 |
|
810 |
|
811 | function join() {
|
812 | var n = arguments.length - 1;
|
813 | var cb = arguments[n];
|
814 |
|
815 | var promises = void 0;
|
816 | if (n === 0) {
|
817 | return new Promise(function (resolve) {
|
818 | return resolve(cb());
|
819 | });
|
820 | } else if (n !== 1) {
|
821 | promises = new Array(n);
|
822 | for (var i = 0; i < n; ++i) {
|
823 | promises[i] = arguments[i];
|
824 | }
|
825 | } else if (!_isArrayLike(promises = arguments[0])) {
|
826 | return _wrap(promises).then(function (value) {
|
827 | return cb(value);
|
828 | });
|
829 | }
|
830 |
|
831 | return _all(promises).then(function (args) {
|
832 | return cb.apply(null, args);
|
833 | });
|
834 | }
|
835 |
|
836 |
|
837 |
|
838 |
|
839 |
|
840 |
|
841 | function lastly(cb) {
|
842 | var _this6 = this;
|
843 |
|
844 | return _wrap(this).then(function (value) {
|
845 | return _wrap(cb()).then(function () {
|
846 | return _this6;
|
847 | });
|
848 | }, function (reason) {
|
849 | return _wrap(cb()).then(function () {
|
850 | return _this6;
|
851 | });
|
852 | });
|
853 | }
|
854 | exports.finally = lastly;
|
855 |
|
856 |
|
857 |
|
858 | var _setFunctionNameAndLength = function () {
|
859 | var _defineProperties = Object.defineProperties;
|
860 |
|
861 | try {
|
862 | var f = _defineProperties(function () {}, {
|
863 | length: { value: 2 },
|
864 | name: { value: 'foo' }
|
865 | });
|
866 |
|
867 | if (f.length === 2 && f.name === 'foo') {
|
868 | return function (fn, name, length) {
|
869 | return _defineProperties(fn, {
|
870 | length: {
|
871 | configurable: true,
|
872 | value: length
|
873 | },
|
874 | name: {
|
875 | configurable: true,
|
876 | value: name
|
877 | }
|
878 | });
|
879 | };
|
880 | }
|
881 | } catch (_) {}
|
882 |
|
883 | return function (fn) {
|
884 | return fn;
|
885 | };
|
886 | }();
|
887 |
|
888 |
|
889 | var promisify = exports.promisify = function promisify(fn, context) {
|
890 | return _setFunctionNameAndLength(function () {
|
891 | var _this7 = this;
|
892 |
|
893 | var length = arguments.length;
|
894 |
|
895 | var args = new Array(length + 1);
|
896 | for (var i = 0; i < length; ++i) {
|
897 | args[i] = arguments[i];
|
898 | }
|
899 |
|
900 | return new Promise(function (resolve, reject) {
|
901 | args[length] = function (error, result) {
|
902 | return error ? reject(error) : resolve(result);
|
903 | };
|
904 |
|
905 | fn.apply(context || _this7, args);
|
906 | });
|
907 | }, fn.name, fn.length && fn.length - 1);
|
908 | };
|
909 |
|
910 | var _DEFAULT_PALL_MAPPER = function _DEFAULT_PALL_MAPPER(name) {
|
911 | return !(_endsWith(name, 'Sync') || _endsWith(name, 'Async')) && name;
|
912 | };
|
913 |
|
914 |
|
915 | var promisifyAll = exports.promisifyAll = function promisifyAll(obj) {
|
916 | var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
917 | _ref$mapper = _ref.mapper,
|
918 | mapper = _ref$mapper === undefined ? _DEFAULT_PALL_MAPPER : _ref$mapper,
|
919 | _ref$target = _ref.target,
|
920 | target = _ref$target === undefined ? {} : _ref$target,
|
921 | _ref$context = _ref.context,
|
922 | context = _ref$context === undefined ? obj : _ref$context;
|
923 |
|
924 | _forIn(obj, function (value, name) {
|
925 | var newName = void 0;
|
926 | if (typeof value === 'function' && (newName = mapper(name, value, obj))) {
|
927 | target[newName] = promisify(value, context);
|
928 | }
|
929 | });
|
930 |
|
931 | return target;
|
932 | };
|
933 |
|
934 |
|
935 |
|
936 | var FN_FALSE = function FN_FALSE() {
|
937 | return false;
|
938 | };
|
939 | var FN_TRUE = function FN_TRUE() {
|
940 | return true;
|
941 | };
|
942 |
|
943 | var _reflectResolution = function (__proto__) {
|
944 | return function (_value) {
|
945 | return {
|
946 | __proto__: __proto__,
|
947 | value: function value() {
|
948 | return _value;
|
949 | }
|
950 | };
|
951 | };
|
952 | }({
|
953 | isFulfilled: FN_TRUE,
|
954 | isPending: FN_FALSE,
|
955 | isRejected: FN_FALSE,
|
956 | isResolved: FN_TRUE,
|
957 | reason: function reason() {
|
958 | throw new Error('no reason, the promise has resolved');
|
959 | }
|
960 | });
|
961 |
|
962 | var _reflectRejection = function (__proto__) {
|
963 | return function (_reason) {
|
964 | return {
|
965 | __proto__: __proto__,
|
966 | reason: function reason() {
|
967 | return _reason;
|
968 | }
|
969 | };
|
970 | };
|
971 | }({
|
972 | isFulfilled: FN_FALSE,
|
973 | isPending: FN_FALSE,
|
974 | isRejected: FN_TRUE,
|
975 | isResolved: FN_FALSE,
|
976 | value: function value() {
|
977 | throw new Error('no value, the promise has rejected');
|
978 | }
|
979 | });
|
980 |
|
981 |
|
982 |
|
983 |
|
984 |
|
985 |
|
986 |
|
987 | function reflect() {
|
988 | return _wrap(this).then(_reflectResolution, _reflectRejection);
|
989 | }
|
990 |
|
991 |
|
992 |
|
993 |
|
994 |
|
995 |
|
996 |
|
997 |
|
998 |
|
999 |
|
1000 |
|
1001 | function settle() {
|
1002 | return all.call(this, function (x) {
|
1003 | return reflect.call(x);
|
1004 | });
|
1005 | }
|
1006 |
|
1007 |
|
1008 |
|
1009 | var _some = function _some(promises, count) {
|
1010 | return new Promise(function (resolve, reject) {
|
1011 | var values = [];
|
1012 | var errors = [];
|
1013 |
|
1014 | var onFulfillment = function onFulfillment(value) {
|
1015 | if (!values) {
|
1016 | return;
|
1017 | }
|
1018 |
|
1019 | values.push(value);
|
1020 | if (--count === 0) {
|
1021 | resolve(values);
|
1022 | values = errors = null;
|
1023 | }
|
1024 | };
|
1025 |
|
1026 | var acceptableErrors = -count;
|
1027 | var onRejection = function onRejection(reason) {
|
1028 | if (!values) {
|
1029 | return;
|
1030 | }
|
1031 |
|
1032 | errors.push(reason);
|
1033 | if (--acceptableErrors === 0) {
|
1034 | reject(errors);
|
1035 | values = errors = null;
|
1036 | }
|
1037 | };
|
1038 |
|
1039 | _forEach(promises, function (promise) {
|
1040 | ++acceptableErrors;
|
1041 | _wrap(promise).then(onFulfillment, onRejection);
|
1042 | });
|
1043 | });
|
1044 | };
|
1045 |
|
1046 |
|
1047 | function some(count) {
|
1048 | return _wrap(this).then(function (promises) {
|
1049 | return _some(promises, count);
|
1050 | });
|
1051 | }
|
1052 |
|
1053 |
|
1054 |
|
1055 | function tap(onResolved, onRejected) {
|
1056 | var _this8 = this;
|
1057 |
|
1058 | var forward = function forward() {
|
1059 | return _this8;
|
1060 | };
|
1061 |
|
1062 | return _wrap(this).then(onResolved && function (value) {
|
1063 | return _wrap(onResolved(value)).then(forward);
|
1064 | }, onRejected && function (reason) {
|
1065 | return _wrap(onRejected(reason)).then(forward);
|
1066 | });
|
1067 | }
|
1068 |
|
1069 |
|
1070 |
|
1071 | var TimeoutError = exports.TimeoutError = function (_BaseError) {
|
1072 | _inherits(TimeoutError, _BaseError);
|
1073 |
|
1074 | function TimeoutError() {
|
1075 | _classCallCheck(this, TimeoutError);
|
1076 |
|
1077 | return _possibleConstructorReturn(this, (TimeoutError.__proto__ || Object.getPrototypeOf(TimeoutError)).call(this, 'operation timed out'));
|
1078 | }
|
1079 |
|
1080 | return TimeoutError;
|
1081 | }(_makeError.BaseError);
|
1082 |
|
1083 |
|
1084 |
|
1085 |
|
1086 | function timeout(ms, cb) {
|
1087 | var _this10 = this;
|
1088 |
|
1089 | return new Promise(function (resolve, reject) {
|
1090 | var handle = setTimeout(function () {
|
1091 | handle = null;
|
1092 |
|
1093 | if (typeof _this10.cancel === 'function') {
|
1094 | _this10.cancel();
|
1095 | }
|
1096 |
|
1097 | if (cb) {
|
1098 | try {
|
1099 | resolve(cb());
|
1100 | } catch (error) {
|
1101 | reject(error);
|
1102 | }
|
1103 | } else {
|
1104 | reject(new TimeoutError());
|
1105 | }
|
1106 | }, ms);
|
1107 |
|
1108 | _wrap(_this10).then(function (value) {
|
1109 | handle !== null && clearTimeout(handle);
|
1110 | resolve(value);
|
1111 | }, function (reason) {
|
1112 | handle !== null && clearTimeout(handle);
|
1113 | reject(reason);
|
1114 | });
|
1115 | });
|
1116 | }
|
1117 |
|
1118 |
|
1119 |
|
1120 | var attempt = exports.attempt = function attempt(fn) {
|
1121 | return new Promise(function (resolve) {
|
1122 | return resolve(fn());
|
1123 | });
|
1124 | };
|
1125 | exports.try = attempt;
|
1126 |
|
1127 |
|
1128 |
|
1129 |
|
1130 |
|
1131 | function unpromisify() {
|
1132 | var fn = this;
|
1133 | return _setFunctionNameAndLength(function () {
|
1134 | var n = arguments.length - 1;
|
1135 | var cb = void 0;
|
1136 | if (n < 0 || typeof (cb = arguments[n]) !== 'function') {
|
1137 | throw new Error('missing callback');
|
1138 | }
|
1139 |
|
1140 | var args = new Array(n);
|
1141 | for (var i = 0; i < n; ++i) {
|
1142 | args[i] = arguments[i];
|
1143 | }
|
1144 |
|
1145 | wrapApply(fn, args, this).then(function (result) {
|
1146 | return cb(null, result);
|
1147 | }, function (reason) {
|
1148 | return cb(reason);
|
1149 | });
|
1150 | }, fn.name, fn.length + 1);
|
1151 | }
|
1152 |
|
\ | No newline at end of file |