mirror of
				https://github.com/telekom-security/tpotce.git
				synced 2025-10-26 02:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			972 lines
		
	
	
	
		
			32 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			972 lines
		
	
	
	
		
			32 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| /*!
 | |
|  * @overview es6-promise - a tiny implementation of Promises/A+.
 | |
|  * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
 | |
|  * @license   Licensed under MIT license
 | |
|  *            See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE
 | |
|  * @version   2.3.0
 | |
|  */
 | |
| 
 | |
| (function() {
 | |
|     "use strict";
 | |
|     function lib$es6$promise$utils$$objectOrFunction(x) {
 | |
|       return typeof x === 'function' || (typeof x === 'object' && x !== null);
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$utils$$isFunction(x) {
 | |
|       return typeof x === 'function';
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$utils$$isMaybeThenable(x) {
 | |
|       return typeof x === 'object' && x !== null;
 | |
|     }
 | |
| 
 | |
|     var lib$es6$promise$utils$$_isArray;
 | |
|     if (!Array.isArray) {
 | |
|       lib$es6$promise$utils$$_isArray = function (x) {
 | |
|         return Object.prototype.toString.call(x) === '[object Array]';
 | |
|       };
 | |
|     } else {
 | |
|       lib$es6$promise$utils$$_isArray = Array.isArray;
 | |
|     }
 | |
| 
 | |
|     var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;
 | |
|     var lib$es6$promise$asap$$len = 0;
 | |
|     var lib$es6$promise$asap$$toString = {}.toString;
 | |
|     var lib$es6$promise$asap$$vertxNext;
 | |
|     var lib$es6$promise$asap$$customSchedulerFn;
 | |
| 
 | |
|     var lib$es6$promise$asap$$asap = function asap(callback, arg) {
 | |
|       lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;
 | |
|       lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;
 | |
|       lib$es6$promise$asap$$len += 2;
 | |
|       if (lib$es6$promise$asap$$len === 2) {
 | |
|         // If len is 2, that means that we need to schedule an async flush.
 | |
|         // If additional callbacks are queued before the queue is flushed, they
 | |
|         // will be processed by this flush that we are scheduling.
 | |
|         if (lib$es6$promise$asap$$customSchedulerFn) {
 | |
|           lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);
 | |
|         } else {
 | |
|           lib$es6$promise$asap$$scheduleFlush();
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$asap$$setScheduler(scheduleFn) {
 | |
|       lib$es6$promise$asap$$customSchedulerFn = scheduleFn;
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$asap$$setAsap(asapFn) {
 | |
|       lib$es6$promise$asap$$asap = asapFn;
 | |
|     }
 | |
| 
 | |
|     var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;
 | |
|     var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};
 | |
|     var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;
 | |
|     var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
 | |
| 
 | |
|     // test for web worker but not in IE10
 | |
|     var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&
 | |
|       typeof importScripts !== 'undefined' &&
 | |
|       typeof MessageChannel !== 'undefined';
 | |
| 
 | |
|     // node
 | |
|     function lib$es6$promise$asap$$useNextTick() {
 | |
|       var nextTick = process.nextTick;
 | |
|       // node version 0.10.x displays a deprecation warning when nextTick is used recursively
 | |
|       // setImmediate should be used instead instead
 | |
|       var version = process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/);
 | |
|       if (Array.isArray(version) && version[1] === '0' && version[2] === '10') {
 | |
|         nextTick = setImmediate;
 | |
|       }
 | |
|       return function() {
 | |
|         nextTick(lib$es6$promise$asap$$flush);
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     // vertx
 | |
|     function lib$es6$promise$asap$$useVertxTimer() {
 | |
|       return function() {
 | |
|         lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$asap$$useMutationObserver() {
 | |
|       var iterations = 0;
 | |
|       var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);
 | |
|       var node = document.createTextNode('');
 | |
|       observer.observe(node, { characterData: true });
 | |
| 
 | |
|       return function() {
 | |
|         node.data = (iterations = ++iterations % 2);
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     // web worker
 | |
|     function lib$es6$promise$asap$$useMessageChannel() {
 | |
|       var channel = new MessageChannel();
 | |
|       channel.port1.onmessage = lib$es6$promise$asap$$flush;
 | |
|       return function () {
 | |
|         channel.port2.postMessage(0);
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$asap$$useSetTimeout() {
 | |
|       return function() {
 | |
|         setTimeout(lib$es6$promise$asap$$flush, 1);
 | |
|       };
 | |
|     }
 | |
| 
 | |
|     var lib$es6$promise$asap$$queue = new Array(1000);
 | |
|     function lib$es6$promise$asap$$flush() {
 | |
|       for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {
 | |
|         var callback = lib$es6$promise$asap$$queue[i];
 | |
|         var arg = lib$es6$promise$asap$$queue[i+1];
 | |
| 
 | |
|         callback(arg);
 | |
| 
 | |
|         lib$es6$promise$asap$$queue[i] = undefined;
 | |
|         lib$es6$promise$asap$$queue[i+1] = undefined;
 | |
|       }
 | |
| 
 | |
|       lib$es6$promise$asap$$len = 0;
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$asap$$attemptVertex() {
 | |
|       try {
 | |
|         var r = require;
 | |
|         var vertx = r('vertx');
 | |
|         lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;
 | |
|         return lib$es6$promise$asap$$useVertxTimer();
 | |
|       } catch(e) {
 | |
|         return lib$es6$promise$asap$$useSetTimeout();
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     var lib$es6$promise$asap$$scheduleFlush;
 | |
|     // Decide what async method to use to triggering processing of queued callbacks:
 | |
|     if (lib$es6$promise$asap$$isNode) {
 | |
|       lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();
 | |
|     } else if (lib$es6$promise$asap$$BrowserMutationObserver) {
 | |
|       lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();
 | |
|     } else if (lib$es6$promise$asap$$isWorker) {
 | |
|       lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();
 | |
|     } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {
 | |
|       lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertex();
 | |
|     } else {
 | |
|       lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$noop() {}
 | |
| 
 | |
|     var lib$es6$promise$$internal$$PENDING   = void 0;
 | |
|     var lib$es6$promise$$internal$$FULFILLED = 1;
 | |
|     var lib$es6$promise$$internal$$REJECTED  = 2;
 | |
| 
 | |
|     var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();
 | |
| 
 | |
|     function lib$es6$promise$$internal$$selfFullfillment() {
 | |
|       return new TypeError("You cannot resolve a promise with itself");
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$cannotReturnOwn() {
 | |
|       return new TypeError('A promises callback cannot return that same promise.');
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$getThen(promise) {
 | |
|       try {
 | |
|         return promise.then;
 | |
|       } catch(error) {
 | |
|         lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;
 | |
|         return lib$es6$promise$$internal$$GET_THEN_ERROR;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {
 | |
|       try {
 | |
|         then.call(value, fulfillmentHandler, rejectionHandler);
 | |
|       } catch(e) {
 | |
|         return e;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {
 | |
|        lib$es6$promise$asap$$asap(function(promise) {
 | |
|         var sealed = false;
 | |
|         var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {
 | |
|           if (sealed) { return; }
 | |
|           sealed = true;
 | |
|           if (thenable !== value) {
 | |
|             lib$es6$promise$$internal$$resolve(promise, value);
 | |
|           } else {
 | |
|             lib$es6$promise$$internal$$fulfill(promise, value);
 | |
|           }
 | |
|         }, function(reason) {
 | |
|           if (sealed) { return; }
 | |
|           sealed = true;
 | |
| 
 | |
|           lib$es6$promise$$internal$$reject(promise, reason);
 | |
|         }, 'Settle: ' + (promise._label || ' unknown promise'));
 | |
| 
 | |
|         if (!sealed && error) {
 | |
|           sealed = true;
 | |
|           lib$es6$promise$$internal$$reject(promise, error);
 | |
|         }
 | |
|       }, promise);
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {
 | |
|       if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {
 | |
|         lib$es6$promise$$internal$$fulfill(promise, thenable._result);
 | |
|       } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {
 | |
|         lib$es6$promise$$internal$$reject(promise, thenable._result);
 | |
|       } else {
 | |
|         lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {
 | |
|           lib$es6$promise$$internal$$resolve(promise, value);
 | |
|         }, function(reason) {
 | |
|           lib$es6$promise$$internal$$reject(promise, reason);
 | |
|         });
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable) {
 | |
|       if (maybeThenable.constructor === promise.constructor) {
 | |
|         lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);
 | |
|       } else {
 | |
|         var then = lib$es6$promise$$internal$$getThen(maybeThenable);
 | |
| 
 | |
|         if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {
 | |
|           lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);
 | |
|         } else if (then === undefined) {
 | |
|           lib$es6$promise$$internal$$fulfill(promise, maybeThenable);
 | |
|         } else if (lib$es6$promise$utils$$isFunction(then)) {
 | |
|           lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);
 | |
|         } else {
 | |
|           lib$es6$promise$$internal$$fulfill(promise, maybeThenable);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$resolve(promise, value) {
 | |
|       if (promise === value) {
 | |
|         lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFullfillment());
 | |
|       } else if (lib$es6$promise$utils$$objectOrFunction(value)) {
 | |
|         lib$es6$promise$$internal$$handleMaybeThenable(promise, value);
 | |
|       } else {
 | |
|         lib$es6$promise$$internal$$fulfill(promise, value);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$publishRejection(promise) {
 | |
|       if (promise._onerror) {
 | |
|         promise._onerror(promise._result);
 | |
|       }
 | |
| 
 | |
|       lib$es6$promise$$internal$$publish(promise);
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$fulfill(promise, value) {
 | |
|       if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }
 | |
| 
 | |
|       promise._result = value;
 | |
|       promise._state = lib$es6$promise$$internal$$FULFILLED;
 | |
| 
 | |
|       if (promise._subscribers.length !== 0) {
 | |
|         lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$reject(promise, reason) {
 | |
|       if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }
 | |
|       promise._state = lib$es6$promise$$internal$$REJECTED;
 | |
|       promise._result = reason;
 | |
| 
 | |
|       lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {
 | |
|       var subscribers = parent._subscribers;
 | |
|       var length = subscribers.length;
 | |
| 
 | |
|       parent._onerror = null;
 | |
| 
 | |
|       subscribers[length] = child;
 | |
|       subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;
 | |
|       subscribers[length + lib$es6$promise$$internal$$REJECTED]  = onRejection;
 | |
| 
 | |
|       if (length === 0 && parent._state) {
 | |
|         lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$publish(promise) {
 | |
|       var subscribers = promise._subscribers;
 | |
|       var settled = promise._state;
 | |
| 
 | |
|       if (subscribers.length === 0) { return; }
 | |
| 
 | |
|       var child, callback, detail = promise._result;
 | |
| 
 | |
|       for (var i = 0; i < subscribers.length; i += 3) {
 | |
|         child = subscribers[i];
 | |
|         callback = subscribers[i + settled];
 | |
| 
 | |
|         if (child) {
 | |
|           lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);
 | |
|         } else {
 | |
|           callback(detail);
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       promise._subscribers.length = 0;
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$ErrorObject() {
 | |
|       this.error = null;
 | |
|     }
 | |
| 
 | |
|     var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();
 | |
| 
 | |
|     function lib$es6$promise$$internal$$tryCatch(callback, detail) {
 | |
|       try {
 | |
|         return callback(detail);
 | |
|       } catch(e) {
 | |
|         lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;
 | |
|         return lib$es6$promise$$internal$$TRY_CATCH_ERROR;
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {
 | |
|       var hasCallback = lib$es6$promise$utils$$isFunction(callback),
 | |
|           value, error, succeeded, failed;
 | |
| 
 | |
|       if (hasCallback) {
 | |
|         value = lib$es6$promise$$internal$$tryCatch(callback, detail);
 | |
| 
 | |
|         if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {
 | |
|           failed = true;
 | |
|           error = value.error;
 | |
|           value = null;
 | |
|         } else {
 | |
|           succeeded = true;
 | |
|         }
 | |
| 
 | |
|         if (promise === value) {
 | |
|           lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());
 | |
|           return;
 | |
|         }
 | |
| 
 | |
|       } else {
 | |
|         value = detail;
 | |
|         succeeded = true;
 | |
|       }
 | |
| 
 | |
|       if (promise._state !== lib$es6$promise$$internal$$PENDING) {
 | |
|         // noop
 | |
|       } else if (hasCallback && succeeded) {
 | |
|         lib$es6$promise$$internal$$resolve(promise, value);
 | |
|       } else if (failed) {
 | |
|         lib$es6$promise$$internal$$reject(promise, error);
 | |
|       } else if (settled === lib$es6$promise$$internal$$FULFILLED) {
 | |
|         lib$es6$promise$$internal$$fulfill(promise, value);
 | |
|       } else if (settled === lib$es6$promise$$internal$$REJECTED) {
 | |
|         lib$es6$promise$$internal$$reject(promise, value);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$$internal$$initializePromise(promise, resolver) {
 | |
|       try {
 | |
|         resolver(function resolvePromise(value){
 | |
|           lib$es6$promise$$internal$$resolve(promise, value);
 | |
|         }, function rejectPromise(reason) {
 | |
|           lib$es6$promise$$internal$$reject(promise, reason);
 | |
|         });
 | |
|       } catch(e) {
 | |
|         lib$es6$promise$$internal$$reject(promise, e);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {
 | |
|       var enumerator = this;
 | |
| 
 | |
|       enumerator._instanceConstructor = Constructor;
 | |
|       enumerator.promise = new Constructor(lib$es6$promise$$internal$$noop);
 | |
| 
 | |
|       if (enumerator._validateInput(input)) {
 | |
|         enumerator._input     = input;
 | |
|         enumerator.length     = input.length;
 | |
|         enumerator._remaining = input.length;
 | |
| 
 | |
|         enumerator._init();
 | |
| 
 | |
|         if (enumerator.length === 0) {
 | |
|           lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);
 | |
|         } else {
 | |
|           enumerator.length = enumerator.length || 0;
 | |
|           enumerator._enumerate();
 | |
|           if (enumerator._remaining === 0) {
 | |
|             lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);
 | |
|           }
 | |
|         }
 | |
|       } else {
 | |
|         lib$es6$promise$$internal$$reject(enumerator.promise, enumerator._validationError());
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     lib$es6$promise$enumerator$$Enumerator.prototype._validateInput = function(input) {
 | |
|       return lib$es6$promise$utils$$isArray(input);
 | |
|     };
 | |
| 
 | |
|     lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {
 | |
|       return new Error('Array Methods must be provided an Array');
 | |
|     };
 | |
| 
 | |
|     lib$es6$promise$enumerator$$Enumerator.prototype._init = function() {
 | |
|       this._result = new Array(this.length);
 | |
|     };
 | |
| 
 | |
|     var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;
 | |
| 
 | |
|     lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {
 | |
|       var enumerator = this;
 | |
| 
 | |
|       var length  = enumerator.length;
 | |
|       var promise = enumerator.promise;
 | |
|       var input   = enumerator._input;
 | |
| 
 | |
|       for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {
 | |
|         enumerator._eachEntry(input[i], i);
 | |
|       }
 | |
|     };
 | |
| 
 | |
|     lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {
 | |
|       var enumerator = this;
 | |
|       var c = enumerator._instanceConstructor;
 | |
| 
 | |
|       if (lib$es6$promise$utils$$isMaybeThenable(entry)) {
 | |
|         if (entry.constructor === c && entry._state !== lib$es6$promise$$internal$$PENDING) {
 | |
|           entry._onerror = null;
 | |
|           enumerator._settledAt(entry._state, i, entry._result);
 | |
|         } else {
 | |
|           enumerator._willSettleAt(c.resolve(entry), i);
 | |
|         }
 | |
|       } else {
 | |
|         enumerator._remaining--;
 | |
|         enumerator._result[i] = entry;
 | |
|       }
 | |
|     };
 | |
| 
 | |
|     lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {
 | |
|       var enumerator = this;
 | |
|       var promise = enumerator.promise;
 | |
| 
 | |
|       if (promise._state === lib$es6$promise$$internal$$PENDING) {
 | |
|         enumerator._remaining--;
 | |
| 
 | |
|         if (state === lib$es6$promise$$internal$$REJECTED) {
 | |
|           lib$es6$promise$$internal$$reject(promise, value);
 | |
|         } else {
 | |
|           enumerator._result[i] = value;
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       if (enumerator._remaining === 0) {
 | |
|         lib$es6$promise$$internal$$fulfill(promise, enumerator._result);
 | |
|       }
 | |
|     };
 | |
| 
 | |
|     lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {
 | |
|       var enumerator = this;
 | |
| 
 | |
|       lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {
 | |
|         enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);
 | |
|       }, function(reason) {
 | |
|         enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);
 | |
|       });
 | |
|     };
 | |
|     function lib$es6$promise$promise$all$$all(entries) {
 | |
|       return new lib$es6$promise$enumerator$$default(this, entries).promise;
 | |
|     }
 | |
|     var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;
 | |
|     function lib$es6$promise$promise$race$$race(entries) {
 | |
|       /*jshint validthis:true */
 | |
|       var Constructor = this;
 | |
| 
 | |
|       var promise = new Constructor(lib$es6$promise$$internal$$noop);
 | |
| 
 | |
|       if (!lib$es6$promise$utils$$isArray(entries)) {
 | |
|         lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));
 | |
|         return promise;
 | |
|       }
 | |
| 
 | |
|       var length = entries.length;
 | |
| 
 | |
|       function onFulfillment(value) {
 | |
|         lib$es6$promise$$internal$$resolve(promise, value);
 | |
|       }
 | |
| 
 | |
|       function onRejection(reason) {
 | |
|         lib$es6$promise$$internal$$reject(promise, reason);
 | |
|       }
 | |
| 
 | |
|       for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {
 | |
|         lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);
 | |
|       }
 | |
| 
 | |
|       return promise;
 | |
|     }
 | |
|     var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;
 | |
|     function lib$es6$promise$promise$resolve$$resolve(object) {
 | |
|       /*jshint validthis:true */
 | |
|       var Constructor = this;
 | |
| 
 | |
|       if (object && typeof object === 'object' && object.constructor === Constructor) {
 | |
|         return object;
 | |
|       }
 | |
| 
 | |
|       var promise = new Constructor(lib$es6$promise$$internal$$noop);
 | |
|       lib$es6$promise$$internal$$resolve(promise, object);
 | |
|       return promise;
 | |
|     }
 | |
|     var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;
 | |
|     function lib$es6$promise$promise$reject$$reject(reason) {
 | |
|       /*jshint validthis:true */
 | |
|       var Constructor = this;
 | |
|       var promise = new Constructor(lib$es6$promise$$internal$$noop);
 | |
|       lib$es6$promise$$internal$$reject(promise, reason);
 | |
|       return promise;
 | |
|     }
 | |
|     var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;
 | |
| 
 | |
|     var lib$es6$promise$promise$$counter = 0;
 | |
| 
 | |
|     function lib$es6$promise$promise$$needsResolver() {
 | |
|       throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
 | |
|     }
 | |
| 
 | |
|     function lib$es6$promise$promise$$needsNew() {
 | |
|       throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
 | |
|     }
 | |
| 
 | |
|     var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;
 | |
|     /**
 | |
|       Promise objects represent the eventual result of an asynchronous operation. The
 | |
|       primary way of interacting with a promise is through its `then` method, which
 | |
|       registers callbacks to receive either a promise's eventual value or the reason
 | |
|       why the promise cannot be fulfilled.
 | |
| 
 | |
|       Terminology
 | |
|       -----------
 | |
| 
 | |
|       - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
 | |
|       - `thenable` is an object or function that defines a `then` method.
 | |
|       - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
 | |
|       - `exception` is a value that is thrown using the throw statement.
 | |
|       - `reason` is a value that indicates why a promise was rejected.
 | |
|       - `settled` the final resting state of a promise, fulfilled or rejected.
 | |
| 
 | |
|       A promise can be in one of three states: pending, fulfilled, or rejected.
 | |
| 
 | |
|       Promises that are fulfilled have a fulfillment value and are in the fulfilled
 | |
|       state.  Promises that are rejected have a rejection reason and are in the
 | |
|       rejected state.  A fulfillment value is never a thenable.
 | |
| 
 | |
|       Promises can also be said to *resolve* a value.  If this value is also a
 | |
|       promise, then the original promise's settled state will match the value's
 | |
|       settled state.  So a promise that *resolves* a promise that rejects will
 | |
|       itself reject, and a promise that *resolves* a promise that fulfills will
 | |
|       itself fulfill.
 | |
| 
 | |
| 
 | |
|       Basic Usage:
 | |
|       ------------
 | |
| 
 | |
|       ```js
 | |
|       var promise = new Promise(function(resolve, reject) {
 | |
|         // on success
 | |
|         resolve(value);
 | |
| 
 | |
|         // on failure
 | |
|         reject(reason);
 | |
|       });
 | |
| 
 | |
|       promise.then(function(value) {
 | |
|         // on fulfillment
 | |
|       }, function(reason) {
 | |
|         // on rejection
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Advanced Usage:
 | |
|       ---------------
 | |
| 
 | |
|       Promises shine when abstracting away asynchronous interactions such as
 | |
|       `XMLHttpRequest`s.
 | |
| 
 | |
|       ```js
 | |
|       function getJSON(url) {
 | |
|         return new Promise(function(resolve, reject){
 | |
|           var xhr = new XMLHttpRequest();
 | |
| 
 | |
|           xhr.open('GET', url);
 | |
|           xhr.onreadystatechange = handler;
 | |
|           xhr.responseType = 'json';
 | |
|           xhr.setRequestHeader('Accept', 'application/json');
 | |
|           xhr.send();
 | |
| 
 | |
|           function handler() {
 | |
|             if (this.readyState === this.DONE) {
 | |
|               if (this.status === 200) {
 | |
|                 resolve(this.response);
 | |
|               } else {
 | |
|                 reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
 | |
|               }
 | |
|             }
 | |
|           };
 | |
|         });
 | |
|       }
 | |
| 
 | |
|       getJSON('/posts.json').then(function(json) {
 | |
|         // on fulfillment
 | |
|       }, function(reason) {
 | |
|         // on rejection
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Unlike callbacks, promises are great composable primitives.
 | |
| 
 | |
|       ```js
 | |
|       Promise.all([
 | |
|         getJSON('/posts'),
 | |
|         getJSON('/comments')
 | |
|       ]).then(function(values){
 | |
|         values[0] // => postsJSON
 | |
|         values[1] // => commentsJSON
 | |
| 
 | |
|         return values;
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       @class Promise
 | |
|       @param {function} resolver
 | |
|       Useful for tooling.
 | |
|       @constructor
 | |
|     */
 | |
|     function lib$es6$promise$promise$$Promise(resolver) {
 | |
|       this._id = lib$es6$promise$promise$$counter++;
 | |
|       this._state = undefined;
 | |
|       this._result = undefined;
 | |
|       this._subscribers = [];
 | |
| 
 | |
|       if (lib$es6$promise$$internal$$noop !== resolver) {
 | |
|         if (!lib$es6$promise$utils$$isFunction(resolver)) {
 | |
|           lib$es6$promise$promise$$needsResolver();
 | |
|         }
 | |
| 
 | |
|         if (!(this instanceof lib$es6$promise$promise$$Promise)) {
 | |
|           lib$es6$promise$promise$$needsNew();
 | |
|         }
 | |
| 
 | |
|         lib$es6$promise$$internal$$initializePromise(this, resolver);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;
 | |
|     lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;
 | |
|     lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;
 | |
|     lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;
 | |
|     lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;
 | |
|     lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;
 | |
|     lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;
 | |
| 
 | |
|     lib$es6$promise$promise$$Promise.prototype = {
 | |
|       constructor: lib$es6$promise$promise$$Promise,
 | |
| 
 | |
|     /**
 | |
|       The primary way of interacting with a promise is through its `then` method,
 | |
|       which registers callbacks to receive either a promise's eventual value or the
 | |
|       reason why the promise cannot be fulfilled.
 | |
| 
 | |
|       ```js
 | |
|       findUser().then(function(user){
 | |
|         // user is available
 | |
|       }, function(reason){
 | |
|         // user is unavailable, and you are given the reason why
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Chaining
 | |
|       --------
 | |
| 
 | |
|       The return value of `then` is itself a promise.  This second, 'downstream'
 | |
|       promise is resolved with the return value of the first promise's fulfillment
 | |
|       or rejection handler, or rejected if the handler throws an exception.
 | |
| 
 | |
|       ```js
 | |
|       findUser().then(function (user) {
 | |
|         return user.name;
 | |
|       }, function (reason) {
 | |
|         return 'default name';
 | |
|       }).then(function (userName) {
 | |
|         // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
 | |
|         // will be `'default name'`
 | |
|       });
 | |
| 
 | |
|       findUser().then(function (user) {
 | |
|         throw new Error('Found user, but still unhappy');
 | |
|       }, function (reason) {
 | |
|         throw new Error('`findUser` rejected and we're unhappy');
 | |
|       }).then(function (value) {
 | |
|         // never reached
 | |
|       }, function (reason) {
 | |
|         // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
 | |
|         // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
 | |
|       });
 | |
|       ```
 | |
|       If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
 | |
| 
 | |
|       ```js
 | |
|       findUser().then(function (user) {
 | |
|         throw new PedagogicalException('Upstream error');
 | |
|       }).then(function (value) {
 | |
|         // never reached
 | |
|       }).then(function (value) {
 | |
|         // never reached
 | |
|       }, function (reason) {
 | |
|         // The `PedgagocialException` is propagated all the way down to here
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Assimilation
 | |
|       ------------
 | |
| 
 | |
|       Sometimes the value you want to propagate to a downstream promise can only be
 | |
|       retrieved asynchronously. This can be achieved by returning a promise in the
 | |
|       fulfillment or rejection handler. The downstream promise will then be pending
 | |
|       until the returned promise is settled. This is called *assimilation*.
 | |
| 
 | |
|       ```js
 | |
|       findUser().then(function (user) {
 | |
|         return findCommentsByAuthor(user);
 | |
|       }).then(function (comments) {
 | |
|         // The user's comments are now available
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       If the assimliated promise rejects, then the downstream promise will also reject.
 | |
| 
 | |
|       ```js
 | |
|       findUser().then(function (user) {
 | |
|         return findCommentsByAuthor(user);
 | |
|       }).then(function (comments) {
 | |
|         // If `findCommentsByAuthor` fulfills, we'll have the value here
 | |
|       }, function (reason) {
 | |
|         // If `findCommentsByAuthor` rejects, we'll have the reason here
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Simple Example
 | |
|       --------------
 | |
| 
 | |
|       Synchronous Example
 | |
| 
 | |
|       ```javascript
 | |
|       var result;
 | |
| 
 | |
|       try {
 | |
|         result = findResult();
 | |
|         // success
 | |
|       } catch(reason) {
 | |
|         // failure
 | |
|       }
 | |
|       ```
 | |
| 
 | |
|       Errback Example
 | |
| 
 | |
|       ```js
 | |
|       findResult(function(result, err){
 | |
|         if (err) {
 | |
|           // failure
 | |
|         } else {
 | |
|           // success
 | |
|         }
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Promise Example;
 | |
| 
 | |
|       ```javascript
 | |
|       findResult().then(function(result){
 | |
|         // success
 | |
|       }, function(reason){
 | |
|         // failure
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Advanced Example
 | |
|       --------------
 | |
| 
 | |
|       Synchronous Example
 | |
| 
 | |
|       ```javascript
 | |
|       var author, books;
 | |
| 
 | |
|       try {
 | |
|         author = findAuthor();
 | |
|         books  = findBooksByAuthor(author);
 | |
|         // success
 | |
|       } catch(reason) {
 | |
|         // failure
 | |
|       }
 | |
|       ```
 | |
| 
 | |
|       Errback Example
 | |
| 
 | |
|       ```js
 | |
| 
 | |
|       function foundBooks(books) {
 | |
| 
 | |
|       }
 | |
| 
 | |
|       function failure(reason) {
 | |
| 
 | |
|       }
 | |
| 
 | |
|       findAuthor(function(author, err){
 | |
|         if (err) {
 | |
|           failure(err);
 | |
|           // failure
 | |
|         } else {
 | |
|           try {
 | |
|             findBoooksByAuthor(author, function(books, err) {
 | |
|               if (err) {
 | |
|                 failure(err);
 | |
|               } else {
 | |
|                 try {
 | |
|                   foundBooks(books);
 | |
|                 } catch(reason) {
 | |
|                   failure(reason);
 | |
|                 }
 | |
|               }
 | |
|             });
 | |
|           } catch(error) {
 | |
|             failure(err);
 | |
|           }
 | |
|           // success
 | |
|         }
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       Promise Example;
 | |
| 
 | |
|       ```javascript
 | |
|       findAuthor().
 | |
|         then(findBooksByAuthor).
 | |
|         then(function(books){
 | |
|           // found books
 | |
|       }).catch(function(reason){
 | |
|         // something went wrong
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       @method then
 | |
|       @param {Function} onFulfilled
 | |
|       @param {Function} onRejected
 | |
|       Useful for tooling.
 | |
|       @return {Promise}
 | |
|     */
 | |
|       then: function(onFulfillment, onRejection) {
 | |
|         var parent = this;
 | |
|         var state = parent._state;
 | |
| 
 | |
|         if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {
 | |
|           return this;
 | |
|         }
 | |
| 
 | |
|         var child = new this.constructor(lib$es6$promise$$internal$$noop);
 | |
|         var result = parent._result;
 | |
| 
 | |
|         if (state) {
 | |
|           var callback = arguments[state - 1];
 | |
|           lib$es6$promise$asap$$asap(function(){
 | |
|             lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);
 | |
|           });
 | |
|         } else {
 | |
|           lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);
 | |
|         }
 | |
| 
 | |
|         return child;
 | |
|       },
 | |
| 
 | |
|     /**
 | |
|       `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
 | |
|       as the catch block of a try/catch statement.
 | |
| 
 | |
|       ```js
 | |
|       function findAuthor(){
 | |
|         throw new Error('couldn't find that author');
 | |
|       }
 | |
| 
 | |
|       // synchronous
 | |
|       try {
 | |
|         findAuthor();
 | |
|       } catch(reason) {
 | |
|         // something went wrong
 | |
|       }
 | |
| 
 | |
|       // async with promises
 | |
|       findAuthor().catch(function(reason){
 | |
|         // something went wrong
 | |
|       });
 | |
|       ```
 | |
| 
 | |
|       @method catch
 | |
|       @param {Function} onRejection
 | |
|       Useful for tooling.
 | |
|       @return {Promise}
 | |
|     */
 | |
|       'catch': function(onRejection) {
 | |
|         return this.then(null, onRejection);
 | |
|       }
 | |
|     };
 | |
|     function lib$es6$promise$polyfill$$polyfill() {
 | |
|       var local;
 | |
| 
 | |
|       if (typeof global !== 'undefined') {
 | |
|           local = global;
 | |
|       } else if (typeof self !== 'undefined') {
 | |
|           local = self;
 | |
|       } else {
 | |
|           try {
 | |
|               local = Function('return this')();
 | |
|           } catch (e) {
 | |
|               throw new Error('polyfill failed because global object is unavailable in this environment');
 | |
|           }
 | |
|       }
 | |
| 
 | |
|       var P = local.Promise;
 | |
| 
 | |
|       if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {
 | |
|         return;
 | |
|       }
 | |
| 
 | |
|       local.Promise = lib$es6$promise$promise$$default;
 | |
|     }
 | |
|     var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;
 | |
| 
 | |
|     var lib$es6$promise$umd$$ES6Promise = {
 | |
|       'Promise': lib$es6$promise$promise$$default,
 | |
|       'polyfill': lib$es6$promise$polyfill$$default
 | |
|     };
 | |
| 
 | |
|     /* global define:true module:true window: true */
 | |
|     if (typeof define === 'function' && define['amd']) {
 | |
|       define(function() { return lib$es6$promise$umd$$ES6Promise; });
 | |
|     } else if (typeof module !== 'undefined' && module['exports']) {
 | |
|       module['exports'] = lib$es6$promise$umd$$ES6Promise;
 | |
|     } else if (typeof this !== 'undefined') {
 | |
|       this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;
 | |
|     }
 | |
| 
 | |
|     lib$es6$promise$polyfill$$default();
 | |
| }).call(this);
 | |
| 
 | 
