diff --git a/ajax/libs/bluebird/1.2.2/bluebird.js b/ajax/libs/bluebird/1.2.2/bluebird.js new file mode 100755 index 000000000..05b8ca32f --- /dev/null +++ b/ajax/libs/bluebird/1.2.2/bluebird.js @@ -0,0 +1,5060 @@ +/** + * bluebird build version 1.2.2 + * Features enabled: core, timers, race, any, call_get, filter, generators, map, nodeify, promisify, props, reduce, settle, some, progress, cancel +*/ +/** + * @preserve Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.Promise=e():"undefined"!=typeof global?global.Promise=e():"undefined"!=typeof self&&(self.Promise=e())}(function(){var define,module,exports;return (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);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, Promise$_CreatePromiseArray, PromiseArray) { + +var SomePromiseArray = require("./some_promise_array.js")(PromiseArray); +function Promise$_Any(promises, useBound) { + var ret = Promise$_CreatePromiseArray( + promises, + SomePromiseArray, + useBound === true && promises._isBound() + ? promises._boundTo + : void 0 + ); + var promise = ret.promise(); + if (promise.isRejected()) { + return promise; + } + ret.setHowMany(1); + ret.setUnwrap(); + ret.init(); + return promise; +} + +Promise.any = function Promise$Any(promises) { + return Promise$_Any(promises, false); +}; + +Promise.prototype.any = function Promise$any() { + return Promise$_Any(this, true); +}; + +}; + +},{"./some_promise_array.js":33}],2:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var schedule = require("./schedule.js"); +var Queue = require("./queue.js"); +var errorObj = require("./util.js").errorObj; +var tryCatch1 = require("./util.js").tryCatch1; +var process = require("./global.js").process; + +function Async() { + this._isTickUsed = false; + this._length = 0; + this._lateBuffer = new Queue(); + this._functionBuffer = new Queue(25000 * 3); + var self = this; + this.consumeFunctionBuffer = function Async$consumeFunctionBuffer() { + self._consumeFunctionBuffer(); + }; +} + +Async.prototype.haveItemsQueued = function Async$haveItemsQueued() { + return this._length > 0; +}; + +Async.prototype.invokeLater = function Async$invokeLater(fn, receiver, arg) { + if (process !== void 0 && + process.domain != null && + !fn.domain) { + fn = process.domain.bind(fn); + } + this._lateBuffer.push(fn, receiver, arg); + this._queueTick(); +}; + +Async.prototype.invoke = function Async$invoke(fn, receiver, arg) { + if (process !== void 0 && + process.domain != null && + !fn.domain) { + fn = process.domain.bind(fn); + } + var functionBuffer = this._functionBuffer; + functionBuffer.push(fn, receiver, arg); + this._length = functionBuffer.length(); + this._queueTick(); +}; + +Async.prototype._consumeFunctionBuffer = +function Async$_consumeFunctionBuffer() { + var functionBuffer = this._functionBuffer; + while(functionBuffer.length() > 0) { + var fn = functionBuffer.shift(); + var receiver = functionBuffer.shift(); + var arg = functionBuffer.shift(); + fn.call(receiver, arg); + } + this._reset(); + this._consumeLateBuffer(); +}; + +Async.prototype._consumeLateBuffer = function Async$_consumeLateBuffer() { + var buffer = this._lateBuffer; + while(buffer.length() > 0) { + var fn = buffer.shift(); + var receiver = buffer.shift(); + var arg = buffer.shift(); + var res = tryCatch1(fn, receiver, arg); + if (res === errorObj) { + this._queueTick(); + if (fn.domain != null) { + fn.domain.emit("error", res.e); + } + else { + throw res.e; + } + } + } +}; + +Async.prototype._queueTick = function Async$_queue() { + if (!this._isTickUsed) { + schedule(this.consumeFunctionBuffer); + this._isTickUsed = true; + } +}; + +Async.prototype._reset = function Async$_reset() { + this._isTickUsed = false; + this._length = 0; +}; + +module.exports = new Async(); + +},{"./global.js":15,"./queue.js":26,"./schedule.js":29,"./util.js":37}],3:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var Promise = require("./promise.js")(); +module.exports = Promise; +},{"./promise.js":19}],4:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise) { +Promise.prototype.call = function Promise$call(propertyName) { + var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];} + + return this._then(function(obj) { + return obj[propertyName].apply(obj, args); + }, + void 0, + void 0, + void 0, + void 0 + ); +}; + +function Promise$getter(obj) { + var prop = typeof this === "string" + ? this + : ("" + this); + return obj[prop]; +} +Promise.prototype.get = function Promise$get(propertyName) { + return this._then( + Promise$getter, + void 0, + void 0, + propertyName, + void 0 + ); +}; +}; + +},{}],5:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, INTERNAL) { +var errors = require("./errors.js"); +var async = require("./async.js"); +var CancellationError = errors.CancellationError; + +Promise.prototype._cancel = function Promise$_cancel() { + if (!this.isCancellable()) return this; + var parent; + var promiseToReject = this; + while ((parent = promiseToReject._cancellationParent) !== void 0 && + parent.isCancellable()) { + promiseToReject = parent; + } + var err = new CancellationError(); + promiseToReject._attachExtraTrace(err); + promiseToReject._rejectUnchecked(err); +}; + +Promise.prototype.cancel = function Promise$cancel() { + if (!this.isCancellable()) return this; + async.invokeLater(this._cancel, this, void 0); + return this; +}; + +Promise.prototype.cancellable = function Promise$cancellable() { + if (this._cancellable()) return this; + this._setCancellable(); + this._cancellationParent = void 0; + return this; +}; + +Promise.prototype.uncancellable = function Promise$uncancellable() { + var ret = new Promise(INTERNAL); + ret._setTrace(this); + ret._follow(this); + ret._unsetCancellable(); + if (this._isBound()) ret._setBoundTo(this._boundTo); + return ret; +}; + +Promise.prototype.fork = +function Promise$fork(didFulfill, didReject, didProgress) { + var ret = this._then(didFulfill, didReject, didProgress, + void 0, void 0); + + ret._setCancellable(); + ret._cancellationParent = void 0; + return ret; +}; +}; + +},{"./async.js":2,"./errors.js":9}],6:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function() { +var inherits = require("./util.js").inherits; +var defineProperty = require("./es5.js").defineProperty; + +var rignore = new RegExp( + "\\b(?:[a-zA-Z0-9.]+\\$_\\w+|" + + "tryCatch(?:1|2|Apply)|new \\w*PromiseArray|" + + "\\w*PromiseArray\\.\\w*PromiseArray|" + + "setTimeout|CatchFilter\\$_\\w+|makeNodePromisified|processImmediate|" + + "process._tickCallback|nextTick|Async\\$\\w+)\\b" +); + +var rtraceline = null; +var formatStack = null; + +function formatNonError(obj) { + var str; + if (typeof obj === "function") { + str = "[function " + + (obj.name || "anonymous") + + "]"; + } + else { + str = obj.toString(); + var ruselessToString = /\[object [a-zA-Z0-9$_]+\]/; + if (ruselessToString.test(str)) { + try { + var newStr = JSON.stringify(obj); + str = newStr; + } + catch(e) { + + } + } + if (str.length === 0) { + str = "(empty array)"; + } + } + return ("(<" + snip(str) + ">, no stack trace)"); +} + +function snip(str) { + var maxChars = 41; + if (str.length < maxChars) { + return str; + } + return str.substr(0, maxChars - 3) + "..."; +} + +function CapturedTrace(ignoreUntil, isTopLevel) { + this.captureStackTrace(CapturedTrace, isTopLevel); + +} +inherits(CapturedTrace, Error); + +CapturedTrace.prototype.captureStackTrace = +function CapturedTrace$captureStackTrace(ignoreUntil, isTopLevel) { + captureStackTrace(this, ignoreUntil, isTopLevel); +}; + +CapturedTrace.possiblyUnhandledRejection = +function CapturedTrace$PossiblyUnhandledRejection(reason) { + if (typeof console === "object") { + var message; + if (typeof reason === "object" || typeof reason === "function") { + var stack = reason.stack; + message = "Possibly unhandled " + formatStack(stack, reason); + } + else { + message = "Possibly unhandled " + String(reason); + } + if (typeof console.error === "function" || + typeof console.error === "object") { + console.error(message); + } + else if (typeof console.log === "function" || + typeof console.log === "object") { + console.log(message); + } + } +}; + +CapturedTrace.combine = function CapturedTrace$Combine(current, prev) { + var curLast = current.length - 1; + for (var i = prev.length - 1; i >= 0; --i) { + var line = prev[i]; + if (current[curLast] === line) { + current.pop(); + curLast--; + } + else { + break; + } + } + + current.push("From previous event:"); + var lines = current.concat(prev); + + var ret = []; + + for (var i = 0, len = lines.length; i < len; ++i) { + + if ((rignore.test(lines[i]) || + (i > 0 && !rtraceline.test(lines[i])) && + lines[i] !== "From previous event:") + ) { + continue; + } + ret.push(lines[i]); + } + return ret; +}; + +CapturedTrace.isSupported = function CapturedTrace$IsSupported() { + return typeof captureStackTrace === "function"; +}; + +var captureStackTrace = (function stackDetection() { + if (typeof Error.stackTraceLimit === "number" && + typeof Error.captureStackTrace === "function") { + rtraceline = /^\s*at\s*/; + formatStack = function(stack, error) { + if (typeof stack === "string") return stack; + + if (error.name !== void 0 && + error.message !== void 0) { + return error.name + ". " + error.message; + } + return formatNonError(error); + + + }; + var captureStackTrace = Error.captureStackTrace; + return function CapturedTrace$_captureStackTrace( + receiver, ignoreUntil) { + captureStackTrace(receiver, ignoreUntil); + }; + } + var err = new Error(); + + if (typeof err.stack === "string" && + typeof "".startsWith === "function" && + (err.stack.startsWith("stackDetection@")) && + stackDetection.name === "stackDetection") { + + defineProperty(Error, "stackTraceLimit", { + writable: true, + enumerable: false, + configurable: false, + value: 25 + }); + rtraceline = /@/; + var rline = /[@\n]/; + + formatStack = function(stack, error) { + if (typeof stack === "string") { + return (error.name + ". " + error.message + "\n" + stack); + } + + if (error.name !== void 0 && + error.message !== void 0) { + return error.name + ". " + error.message; + } + return formatNonError(error); + }; + + return function captureStackTrace(o) { + var stack = new Error().stack; + var split = stack.split(rline); + var len = split.length; + var ret = ""; + for (var i = 0; i < len; i += 2) { + ret += split[i]; + ret += "@"; + ret += split[i + 1]; + ret += "\n"; + } + o.stack = ret; + }; + } + else { + formatStack = function(stack, error) { + if (typeof stack === "string") return stack; + + if ((typeof error === "object" || + typeof error === "function") && + error.name !== void 0 && + error.message !== void 0) { + return error.name + ". " + error.message; + } + return formatNonError(error); + }; + + return null; + } +})(); + +return CapturedTrace; +}; + +},{"./es5.js":11,"./util.js":37}],7:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(NEXT_FILTER) { +var util = require("./util.js"); +var errors = require("./errors.js"); +var tryCatch1 = util.tryCatch1; +var errorObj = util.errorObj; +var keys = require("./es5.js").keys; +var TypeError = errors.TypeError; + +function CatchFilter(instances, callback, promise) { + this._instances = instances; + this._callback = callback; + this._promise = promise; +} + +function CatchFilter$_safePredicate(predicate, e) { + var safeObject = {}; + var retfilter = tryCatch1(predicate, safeObject, e); + + if (retfilter === errorObj) return retfilter; + + var safeKeys = keys(safeObject); + if (safeKeys.length) { + errorObj.e = new TypeError( + "Catch filter must inherit from Error " + + "or be a simple predicate function"); + return errorObj; + } + return retfilter; +} + +CatchFilter.prototype.doFilter = function CatchFilter$_doFilter(e) { + var cb = this._callback; + var promise = this._promise; + var boundTo = promise._isBound() ? promise._boundTo : void 0; + for (var i = 0, len = this._instances.length; i < len; ++i) { + var item = this._instances[i]; + var itemIsErrorType = item === Error || + (item != null && item.prototype instanceof Error); + + if (itemIsErrorType && e instanceof item) { + var ret = tryCatch1(cb, boundTo, e); + if (ret === errorObj) { + NEXT_FILTER.e = ret.e; + return NEXT_FILTER; + } + return ret; + } else if (typeof item === "function" && !itemIsErrorType) { + var shouldHandle = CatchFilter$_safePredicate(item, e); + if (shouldHandle === errorObj) { + var trace = errors.canAttach(errorObj.e) + ? errorObj.e + : new Error(errorObj.e + ""); + this._promise._attachExtraTrace(trace); + e = errorObj.e; + break; + } else if (shouldHandle) { + var ret = tryCatch1(cb, boundTo, e); + if (ret === errorObj) { + NEXT_FILTER.e = ret.e; + return NEXT_FILTER; + } + return ret; + } + } + } + NEXT_FILTER.e = e; + return NEXT_FILTER; +}; + +return CatchFilter; +}; + +},{"./errors.js":9,"./es5.js":11,"./util.js":37}],8:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var util = require("./util.js"); +var isPrimitive = util.isPrimitive; +var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver; + +module.exports = function(Promise) { +var returner = function Promise$_returner() { + return this; +}; +var thrower = function Promise$_thrower() { + throw this; +}; + +var wrapper = function Promise$_wrapper(value, action) { + if (action === 1) { + return function Promise$_thrower() { + throw value; + }; + } + else if (action === 2) { + return function Promise$_returner() { + return value; + }; + } +}; + + +Promise.prototype["return"] = +Promise.prototype.thenReturn = +function Promise$thenReturn(value) { + if (wrapsPrimitiveReceiver && isPrimitive(value)) { + return this._then( + wrapper(value, 2), + void 0, + void 0, + void 0, + void 0 + ); + } + return this._then(returner, void 0, void 0, value, void 0); +}; + +Promise.prototype["throw"] = +Promise.prototype.thenThrow = +function Promise$thenThrow(reason) { + if (wrapsPrimitiveReceiver && isPrimitive(reason)) { + return this._then( + wrapper(reason, 1), + void 0, + void 0, + void 0, + void 0 + ); + } + return this._then(thrower, void 0, void 0, reason, void 0); +}; +}; + +},{"./util.js":37}],9:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var global = require("./global.js"); +var Objectfreeze = require("./es5.js").freeze; +var util = require("./util.js"); +var inherits = util.inherits; +var notEnumerableProp = util.notEnumerableProp; +var Error = global.Error; + +function markAsOriginatingFromRejection(e) { + try { + notEnumerableProp(e, "isAsync", true); + } + catch(ignore) {} +} + +function originatesFromRejection(e) { + if (e == null) return false; + return ((e instanceof RejectionError) || + e["isAsync"] === true); +} + +function isError(obj) { + return obj instanceof Error; +} + +function canAttach(obj) { + return isError(obj); +} + +function subError(nameProperty, defaultMessage) { + function SubError(message) { + if (!(this instanceof SubError)) return new SubError(message); + this.message = typeof message === "string" ? message : defaultMessage; + this.name = nameProperty; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + } + inherits(SubError, Error); + return SubError; +} + +var TypeError = global.TypeError; +if (typeof TypeError !== "function") { + TypeError = subError("TypeError", "type error"); +} +var RangeError = global.RangeError; +if (typeof RangeError !== "function") { + RangeError = subError("RangeError", "range error"); +} +var CancellationError = subError("CancellationError", "cancellation error"); +var TimeoutError = subError("TimeoutError", "timeout error"); + +function RejectionError(message) { + this.name = "RejectionError"; + this.message = message; + this.cause = message; + this.isAsync = true; + + if (message instanceof Error) { + this.message = message.message; + this.stack = message.stack; + } + else if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + +} +inherits(RejectionError, Error); + +var key = "__BluebirdErrorTypes__"; +var errorTypes = global[key]; +if (!errorTypes) { + errorTypes = Objectfreeze({ + CancellationError: CancellationError, + TimeoutError: TimeoutError, + RejectionError: RejectionError + }); + notEnumerableProp(global, key, errorTypes); +} + +module.exports = { + Error: Error, + TypeError: TypeError, + RangeError: RangeError, + CancellationError: errorTypes.CancellationError, + RejectionError: errorTypes.RejectionError, + TimeoutError: errorTypes.TimeoutError, + originatesFromRejection: originatesFromRejection, + markAsOriginatingFromRejection: markAsOriginatingFromRejection, + canAttach: canAttach +}; + +},{"./es5.js":11,"./global.js":15,"./util.js":37}],10:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise) { +var TypeError = require('./errors.js').TypeError; + +function apiRejection(msg) { + var error = new TypeError(msg); + var ret = Promise.rejected(error); + var parent = ret._peekContext(); + if (parent != null) { + parent._attachExtraTrace(error); + } + return ret; +} + +return apiRejection; +}; + +},{"./errors.js":9}],11:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +var isES5 = (function(){ + "use strict"; + return this === void 0; +})(); + +if (isES5) { + module.exports = { + freeze: Object.freeze, + defineProperty: Object.defineProperty, + keys: Object.keys, + getPrototypeOf: Object.getPrototypeOf, + isArray: Array.isArray, + isES5: isES5 + }; +} + +else { + var has = {}.hasOwnProperty; + var str = {}.toString; + var proto = {}.constructor.prototype; + + function ObjectKeys(o) { + var ret = []; + for (var key in o) { + if (has.call(o, key)) { + ret.push(key); + } + } + return ret; + } + + function ObjectDefineProperty(o, key, desc) { + o[key] = desc.value; + return o; + } + + function ObjectFreeze(obj) { + return obj; + } + + function ObjectGetPrototypeOf(obj) { + try { + return Object(obj).constructor.prototype; + } + catch (e) { + return proto; + } + } + + function ArrayIsArray(obj) { + try { + return str.call(obj) === "[object Array]"; + } + catch(e) { + return false; + } + } + + module.exports = { + isArray: ArrayIsArray, + keys: ObjectKeys, + defineProperty: ObjectDefineProperty, + freeze: ObjectFreeze, + getPrototypeOf: ObjectGetPrototypeOf, + isES5: isES5 + }; +} + +},{}],12:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise) { +var isArray = require("./util.js").isArray; + +function Promise$_filter(booleans) { + var values = this instanceof Promise ? this._settledValue : this; + var len = values.length; + var ret = new Array(len); + var j = 0; + + for (var i = 0; i < len; ++i) { + if (booleans[i]) ret[j++] = values[i]; + + } + ret.length = j; + return ret; +} + +var ref = {ref: null}; +Promise.filter = function Promise$Filter(promises, fn) { + return Promise.map(promises, fn, ref) + ._then(Promise$_filter, void 0, void 0, ref.ref, void 0); +}; + +Promise.prototype.filter = function Promise$filter(fn) { + return this.map(fn, ref) + ._then(Promise$_filter, void 0, void 0, ref.ref, void 0); +}; +}; + +},{"./util.js":37}],13:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, NEXT_FILTER) { +var util = require("./util.js"); +var wrapsPrimitiveReceiver = util.wrapsPrimitiveReceiver; +var isPrimitive = util.isPrimitive; +var thrower = util.thrower; + + +function returnThis() { + return this; +} +function throwThis() { + throw this; +} +function return$(r) { + return function Promise$_returner() { + return r; + }; +} +function throw$(r) { + return function Promise$_thrower() { + throw r; + }; +} +function promisedFinally(ret, reasonOrValue, isFulfilled) { + var then; + if (wrapsPrimitiveReceiver && isPrimitive(reasonOrValue)) { + then = isFulfilled ? return$(reasonOrValue) : throw$(reasonOrValue); + } + else { + then = isFulfilled ? returnThis : throwThis; + } + return ret._then(then, thrower, void 0, reasonOrValue, void 0); +} + +function finallyHandler(reasonOrValue) { + var promise = this.promise; + var handler = this.handler; + + var ret = promise._isBound() + ? handler.call(promise._boundTo) + : handler(); + + if (ret !== void 0) { + var maybePromise = Promise._cast(ret, void 0); + if (maybePromise instanceof Promise) { + return promisedFinally(maybePromise, reasonOrValue, + promise.isFulfilled()); + } + } + + if (promise.isRejected()) { + NEXT_FILTER.e = reasonOrValue; + return NEXT_FILTER; + } + else { + return reasonOrValue; + } +} + +function tapHandler(value) { + var promise = this.promise; + var handler = this.handler; + + var ret = promise._isBound() + ? handler.call(promise._boundTo, value) + : handler(value); + + if (ret !== void 0) { + var maybePromise = Promise._cast(ret, void 0); + if (maybePromise instanceof Promise) { + return promisedFinally(maybePromise, value, true); + } + } + return value; +} + +Promise.prototype._passThroughHandler = +function Promise$_passThroughHandler(handler, isFinally) { + if (typeof handler !== "function") return this.then(); + + var promiseAndHandler = { + promise: this, + handler: handler + }; + + return this._then( + isFinally ? finallyHandler : tapHandler, + isFinally ? finallyHandler : void 0, void 0, + promiseAndHandler, void 0); +}; + +Promise.prototype.lastly = +Promise.prototype["finally"] = function Promise$finally(handler) { + return this._passThroughHandler(handler, true); +}; + +Promise.prototype.tap = function Promise$tap(handler) { + return this._passThroughHandler(handler, false); +}; +}; + +},{"./util.js":37}],14:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, apiRejection, INTERNAL) { +var PromiseSpawn = require("./promise_spawn.js")(Promise, INTERNAL); +var errors = require("./errors.js"); +var TypeError = errors.TypeError; +var deprecated = require("./util.js").deprecated; + +Promise.coroutine = function Promise$Coroutine(generatorFunction) { + if (typeof generatorFunction !== "function") { + throw new TypeError("generatorFunction must be a function"); + } + var PromiseSpawn$ = PromiseSpawn; + return function () { + var generator = generatorFunction.apply(this, arguments); + var spawn = new PromiseSpawn$(void 0, void 0); + spawn._generator = generator; + spawn._next(void 0); + return spawn.promise(); + }; +}; + +Promise.coroutine.addYieldHandler = PromiseSpawn.addYieldHandler; + +Promise.spawn = function Promise$Spawn(generatorFunction) { + deprecated("Promise.spawn is deprecated. Use Promise.coroutine instead."); + if (typeof generatorFunction !== "function") { + return apiRejection("generatorFunction must be a function"); + } + var spawn = new PromiseSpawn(generatorFunction, this); + var ret = spawn.promise(); + spawn._run(Promise.spawn); + return ret; +}; +}; + +},{"./errors.js":9,"./promise_spawn.js":22,"./util.js":37}],15:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = (function(){ +if (typeof this !== "undefined") { + return this; +} +if (typeof process !== "undefined" && + typeof global !== "undefined" && + typeof process.execPath === "string") { + return global; +} +if (typeof window !== "undefined" && + typeof document !== "undefined" && + typeof navigator !== "undefined" && navigator !== null && + typeof navigator.appName === "string") { + if(window.wrappedJSObject !== undefined){ + return window.wrappedJSObject; + } + return window; +} +})(); + +},{}],16:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, PromiseArray, INTERNAL, apiRejection) { + +var all = Promise.all; +var util = require("./util.js"); +var canAttach = require("./errors.js").canAttach; +var isArray = util.isArray; +var _cast = Promise._cast; + +function unpack(values) { + return Promise$_Map(values, this[0], this[1], this[2]); +} + +function Promise$_Map(promises, fn, useBound, ref) { + if (typeof fn !== "function") { + return apiRejection("fn must be a function"); + } + + var receiver = void 0; + if (useBound === true) { + if (promises._isBound()) { + receiver = promises._boundTo; + } + } + else if (useBound !== false) { + receiver = useBound; + } + + var shouldUnwrapItems = ref !== void 0; + if (shouldUnwrapItems) ref.ref = promises; + + if (promises instanceof Promise) { + var pack = [fn, receiver, ref]; + return promises._then(unpack, void 0, void 0, pack, void 0); + } + else if (!isArray(promises)) { + return apiRejection("expecting an array, a promise or a thenable"); + } + + var promise = new Promise(INTERNAL); + if (receiver !== void 0) promise._setBoundTo(receiver); + promise._setTrace(void 0); + + var mapping = new Mapping(promise, + fn, + promises, + receiver, + shouldUnwrapItems); + mapping.init(); + return promise; +} + +var pending = {}; +function Mapping(promise, callback, items, receiver, shouldUnwrapItems) { + this.shouldUnwrapItems = shouldUnwrapItems; + this.index = 0; + this.items = items; + this.callback = callback; + this.receiver = receiver; + this.promise = promise; + this.result = new Array(items.length); +} +util.inherits(Mapping, PromiseArray); + +Mapping.prototype.init = function Mapping$init() { + var items = this.items; + var len = items.length; + var result = this.result; + var isRejected = false; + for (var i = 0; i < len; ++i) { + var maybePromise = _cast(items[i], void 0); + if (maybePromise instanceof Promise) { + if (maybePromise.isPending()) { + result[i] = pending; + maybePromise._proxyPromiseArray(this, i); + } + else if (maybePromise.isFulfilled()) { + result[i] = maybePromise.value(); + } + else { + maybePromise._unsetRejectionIsUnhandled(); + if (!isRejected) { + this.reject(maybePromise.reason()); + isRejected = true; + } + } + } + else { + result[i] = maybePromise; + } + } + if (!isRejected) this.iterate(); +}; + +Mapping.prototype.isResolved = function Mapping$isResolved() { + return this.promise === null; +}; + +Mapping.prototype._promiseProgressed = +function Mapping$_promiseProgressed(value) { + if (this.isResolved()) return; + this.promise._progress(value); +}; + +Mapping.prototype._promiseFulfilled = +function Mapping$_promiseFulfilled(value, index) { + if (this.isResolved()) return; + this.result[index] = value; + if (this.shouldUnwrapItems) this.items[index] = value; + if (this.index === index) this.iterate(); +}; + +Mapping.prototype._promiseRejected = +function Mapping$_promiseRejected(reason) { + this.reject(reason); +}; + +Mapping.prototype.reject = function Mapping$reject(reason) { + if (this.isResolved()) return; + var trace = canAttach(reason) ? reason : new Error(reason + ""); + this.promise._attachExtraTrace(trace); + this.promise._reject(reason, trace); +}; + +Mapping.prototype.iterate = function Mapping$iterate() { + var i = this.index; + var items = this.items; + var result = this.result; + var len = items.length; + var result = this.result; + var receiver = this.receiver; + var callback = this.callback; + + for (; i < len; ++i) { + var value = result[i]; + if (value === pending) { + this.index = i; + return; + } + try { result[i] = callback.call(receiver, value, i, len); } + catch (e) { return this.reject(e); } + } + this.promise._follow(all(result)); + this.items = this.result = this.callback = this.promise = null; +}; + +Promise.prototype.map = function Promise$map(fn, ref) { + return Promise$_Map(this, fn, true, ref); +}; + +Promise.map = function Promise$Map(promises, fn, ref) { + return Promise$_Map(promises, fn, false, ref); +}; +}; + +},{"./errors.js":9,"./util.js":37}],17:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise) { +var util = require("./util.js"); +var async = require("./async.js"); +var tryCatch2 = util.tryCatch2; +var tryCatch1 = util.tryCatch1; +var errorObj = util.errorObj; + +function thrower(r) { + throw r; +} + +function Promise$_successAdapter(val, receiver) { + var nodeback = this; + var ret = val === void 0 + ? tryCatch1(nodeback, receiver, null) + : tryCatch2(nodeback, receiver, null, val); + if (ret === errorObj) { + async.invokeLater(thrower, void 0, ret.e); + } +} +function Promise$_errorAdapter(reason, receiver) { + var nodeback = this; + var ret = tryCatch1(nodeback, receiver, reason); + if (ret === errorObj) { + async.invokeLater(thrower, void 0, ret.e); + } +} + +Promise.prototype.nodeify = function Promise$nodeify(nodeback) { + if (typeof nodeback == "function") { + this._then( + Promise$_successAdapter, + Promise$_errorAdapter, + void 0, + nodeback, + this._isBound() ? this._boundTo : null + ); + } + return this; +}; +}; + +},{"./async.js":2,"./util.js":37}],18:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, isPromiseArrayProxy) { +var util = require("./util.js"); +var async = require("./async.js"); +var errors = require("./errors.js"); +var tryCatch1 = util.tryCatch1; +var errorObj = util.errorObj; + +Promise.prototype.progressed = function Promise$progressed(handler) { + return this._then(void 0, void 0, handler, void 0, void 0); +}; + +Promise.prototype._progress = function Promise$_progress(progressValue) { + if (this._isFollowingOrFulfilledOrRejected()) return; + this._progressUnchecked(progressValue); + +}; + +Promise.prototype._progressHandlerAt = +function Promise$_progressHandlerAt(index) { + if (index === 0) return this._progressHandler0; + return this[index + 2 - 5]; +}; + +Promise.prototype._doProgressWith = +function Promise$_doProgressWith(progression) { + var progressValue = progression.value; + var handler = progression.handler; + var promise = progression.promise; + var receiver = progression.receiver; + + this._pushContext(); + var ret = tryCatch1(handler, receiver, progressValue); + this._popContext(); + + if (ret === errorObj) { + if (ret.e != null && + ret.e.name !== "StopProgressPropagation") { + var trace = errors.canAttach(ret.e) + ? ret.e : new Error(ret.e + ""); + promise._attachExtraTrace(trace); + promise._progress(ret.e); + } + } + else if (ret instanceof Promise) { + ret._then(promise._progress, null, null, promise, void 0); + } + else { + promise._progress(ret); + } +}; + + +Promise.prototype._progressUnchecked = +function Promise$_progressUnchecked(progressValue) { + if (!this.isPending()) return; + var len = this._length(); + var progress = this._progress; + for (var i = 0; i < len; i += 5) { + var handler = this._progressHandlerAt(i); + var promise = this._promiseAt(i); + if (!(promise instanceof Promise)) { + var receiver = this._receiverAt(i); + if (typeof handler === "function") { + handler.call(receiver, progressValue, promise); + } + else if (receiver instanceof Promise && receiver._isProxied()) { + receiver._progressUnchecked(progressValue); + } + else if (isPromiseArrayProxy(receiver, promise)) { + receiver._promiseProgressed(progressValue, promise); + } + continue; + } + + if (typeof handler === "function") { + async.invoke(this._doProgressWith, this, { + handler: handler, + promise: promise, + receiver: this._receiverAt(i), + value: progressValue + }); + } + else { + async.invoke(progress, promise, progressValue); + } + } +}; +}; + +},{"./async.js":2,"./errors.js":9,"./util.js":37}],19:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function() { +var global = require("./global.js"); +var util = require("./util.js"); +var async = require("./async.js"); +var errors = require("./errors.js"); + +var INTERNAL = function(){}; +var APPLY = {}; +var NEXT_FILTER = {e: null}; + +var PromiseArray = require("./promise_array.js")(Promise, INTERNAL); +var CapturedTrace = require("./captured_trace.js")(); +var CatchFilter = require("./catch_filter.js")(NEXT_FILTER); +var PromiseResolver = require("./promise_resolver.js"); + +var isArray = util.isArray; + +var errorObj = util.errorObj; +var tryCatch1 = util.tryCatch1; +var tryCatch2 = util.tryCatch2; +var tryCatchApply = util.tryCatchApply; +var RangeError = errors.RangeError; +var TypeError = errors.TypeError; +var CancellationError = errors.CancellationError; +var TimeoutError = errors.TimeoutError; +var RejectionError = errors.RejectionError; +var originatesFromRejection = errors.originatesFromRejection; +var markAsOriginatingFromRejection = errors.markAsOriginatingFromRejection; +var canAttach = errors.canAttach; +var thrower = util.thrower; +var apiRejection = require("./errors_api_rejection")(Promise); + + +var makeSelfResolutionError = function Promise$_makeSelfResolutionError() { + return new TypeError("circular promise resolution chain"); +}; + +function isPromise(obj) { + if (obj === void 0) return false; + return obj instanceof Promise; +} + +function isPromiseArrayProxy(receiver, promiseSlotValue) { + if (receiver instanceof PromiseArray) { + return promiseSlotValue >= 0; + } + return false; +} + +function Promise(resolver) { + if (typeof resolver !== "function") { + throw new TypeError("the promise constructor requires a resolver function"); + } + if (this.constructor !== Promise) { + throw new TypeError("the promise constructor cannot be invoked directly"); + } + this._bitField = 0; + this._fulfillmentHandler0 = void 0; + this._rejectionHandler0 = void 0; + this._promise0 = void 0; + this._receiver0 = void 0; + this._settledValue = void 0; + this._boundTo = void 0; + if (resolver !== INTERNAL) this._resolveFromResolver(resolver); +} + +Promise.prototype.bind = function Promise$bind(thisArg) { + var ret = new Promise(INTERNAL); + ret._setTrace(this); + ret._follow(this); + ret._setBoundTo(thisArg); + if (this._cancellable()) { + ret._setCancellable(); + ret._cancellationParent = this; + } + return ret; +}; + +Promise.prototype.toString = function Promise$toString() { + return "[object Promise]"; +}; + +Promise.prototype.caught = Promise.prototype["catch"] = +function Promise$catch(fn) { + var len = arguments.length; + if (len > 1) { + var catchInstances = new Array(len - 1), + j = 0, i; + for (i = 0; i < len - 1; ++i) { + var item = arguments[i]; + if (typeof item === "function") { + catchInstances[j++] = item; + } + else { + var catchFilterTypeError = + new TypeError( + "A catch filter must be an error constructor " + + "or a filter function"); + + this._attachExtraTrace(catchFilterTypeError); + async.invoke(this._reject, this, catchFilterTypeError); + return; + } + } + catchInstances.length = j; + fn = arguments[i]; + + this._resetTrace(); + var catchFilter = new CatchFilter(catchInstances, fn, this); + return this._then(void 0, catchFilter.doFilter, void 0, + catchFilter, void 0); + } + return this._then(void 0, fn, void 0, void 0, void 0); +}; + +Promise.prototype.then = +function Promise$then(didFulfill, didReject, didProgress) { + return this._then(didFulfill, didReject, didProgress, + void 0, void 0); +}; + + +Promise.prototype.done = +function Promise$done(didFulfill, didReject, didProgress) { + var promise = this._then(didFulfill, didReject, didProgress, + void 0, void 0); + promise._setIsFinal(); +}; + +Promise.prototype.spread = function Promise$spread(didFulfill, didReject) { + return this._then(didFulfill, didReject, void 0, + APPLY, void 0); +}; + +Promise.prototype.isCancellable = function Promise$isCancellable() { + return !this.isResolved() && + this._cancellable(); +}; + +Promise.prototype.toJSON = function Promise$toJSON() { + var ret = { + isFulfilled: false, + isRejected: false, + fulfillmentValue: void 0, + rejectionReason: void 0 + }; + if (this.isFulfilled()) { + ret.fulfillmentValue = this._settledValue; + ret.isFulfilled = true; + } + else if (this.isRejected()) { + ret.rejectionReason = this._settledValue; + ret.isRejected = true; + } + return ret; +}; + +Promise.prototype.all = function Promise$all() { + return Promise$_all(this, true); +}; + + +Promise.is = isPromise; + +function Promise$_all(promises, useBound) { + return Promise$_CreatePromiseArray( + promises, + PromiseArray, + useBound === true && promises._isBound() + ? promises._boundTo + : void 0 + ).promise(); +} +Promise.all = function Promise$All(promises) { + return Promise$_all(promises, false); +}; + +Promise.join = function Promise$Join() { + var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];} + return Promise$_CreatePromiseArray(args, PromiseArray, void 0).promise(); +}; + +Promise.resolve = Promise.fulfilled = +function Promise$Resolve(value) { + var ret = new Promise(INTERNAL); + ret._setTrace(void 0); + if (ret._tryFollow(value)) { + return ret; + } + ret._cleanValues(); + ret._setFulfilled(); + ret._settledValue = value; + return ret; +}; + +Promise.reject = Promise.rejected = function Promise$Reject(reason) { + var ret = new Promise(INTERNAL); + ret._setTrace(void 0); + markAsOriginatingFromRejection(reason); + ret._cleanValues(); + ret._setRejected(); + ret._settledValue = reason; + if (!canAttach(reason)) { + var trace = new Error(reason + ""); + ret._setCarriedStackTrace(trace); + } + ret._ensurePossibleRejectionHandled(); + return ret; +}; + +Promise.prototype.error = function Promise$_error(fn) { + return this.caught(originatesFromRejection, fn); +}; + +Promise.prototype._resolveFromSyncValue = +function Promise$_resolveFromSyncValue(value) { + if (value === errorObj) { + this._cleanValues(); + this._setRejected(); + this._settledValue = value.e; + this._ensurePossibleRejectionHandled(); + } + else { + var maybePromise = Promise._cast(value, void 0); + if (maybePromise instanceof Promise) { + this._follow(maybePromise); + } + else { + this._cleanValues(); + this._setFulfilled(); + this._settledValue = value; + } + } +}; + +Promise.method = function Promise$_Method(fn) { + if (typeof fn !== "function") { + throw new TypeError("fn must be a function"); + } + return function Promise$_method() { + var value; + switch(arguments.length) { + case 0: value = tryCatch1(fn, this, void 0); break; + case 1: value = tryCatch1(fn, this, arguments[0]); break; + case 2: value = tryCatch2(fn, this, arguments[0], arguments[1]); break; + default: + var $_len = arguments.length;var args = new Array($_len); for(var $_i = 0; $_i < $_len; ++$_i) {args[$_i] = arguments[$_i];} + value = tryCatchApply(fn, args, this); break; + } + var ret = new Promise(INTERNAL); + ret._setTrace(void 0); + ret._resolveFromSyncValue(value); + return ret; + }; +}; + +Promise.attempt = Promise["try"] = function Promise$_Try(fn, args, ctx) { + if (typeof fn !== "function") { + return apiRejection("fn must be a function"); + } + var value = isArray(args) + ? tryCatchApply(fn, args, ctx) + : tryCatch1(fn, ctx, args); + + var ret = new Promise(INTERNAL); + ret._setTrace(void 0); + ret._resolveFromSyncValue(value); + return ret; +}; + +Promise.defer = Promise.pending = function Promise$Defer() { + var promise = new Promise(INTERNAL); + promise._setTrace(void 0); + return new PromiseResolver(promise); +}; + +Promise.bind = function Promise$Bind(thisArg) { + var ret = new Promise(INTERNAL); + ret._setTrace(void 0); + ret._setFulfilled(); + ret._setBoundTo(thisArg); + return ret; +}; + +Promise.cast = function Promise$_Cast(obj) { + var ret = Promise._cast(obj, void 0); + if (!(ret instanceof Promise)) { + return Promise.resolve(ret); + } + return ret; +}; + +Promise.onPossiblyUnhandledRejection = +function Promise$OnPossiblyUnhandledRejection(fn) { + CapturedTrace.possiblyUnhandledRejection = typeof fn === "function" + ? fn : void 0; +}; + +var unhandledRejectionHandled; +Promise.onUnhandledRejectionHandled = +function Promise$onUnhandledRejectionHandled(fn) { + unhandledRejectionHandled = typeof fn === "function" ? fn : void 0; +}; + +var debugging = false || !!( + typeof process !== "undefined" && + typeof process.execPath === "string" && + typeof process.env === "object" && + (process.env["BLUEBIRD_DEBUG"] || + process.env["NODE_ENV"] === "development") +); + + +Promise.longStackTraces = function Promise$LongStackTraces() { + if (async.haveItemsQueued() && + debugging === false + ) { + throw new Error("cannot enable long stack traces after promises have been created"); + } + debugging = CapturedTrace.isSupported(); +}; + +Promise.hasLongStackTraces = function Promise$HasLongStackTraces() { + return debugging && CapturedTrace.isSupported(); +}; + +Promise.prototype._setProxyHandlers = +function Promise$_setProxyHandlers(receiver, promiseSlotValue) { + var index = this._length(); + + if (index >= 524287 - 5) { + index = 0; + this._setLength(0); + } + if (index === 0) { + this._promise0 = promiseSlotValue; + this._receiver0 = receiver; + } + else { + var i = index - 5; + this[i + 3] = promiseSlotValue; + this[i + 4] = receiver; + this[i + 0] = + this[i + 1] = + this[i + 2] = void 0; + } + this._setLength(index + 5); +}; + +Promise.prototype._proxyPromiseArray = +function Promise$_proxyPromiseArray(promiseArray, index) { + this._setProxyHandlers(promiseArray, index); +}; + +Promise.prototype._proxyPromise = function Promise$_proxyPromise(promise) { + promise._setProxied(); + this._setProxyHandlers(promise, -1); +}; + +Promise.prototype._then = +function Promise$_then( + didFulfill, + didReject, + didProgress, + receiver, + internalData +) { + var haveInternalData = internalData !== void 0; + var ret = haveInternalData ? internalData : new Promise(INTERNAL); + + if (debugging && !haveInternalData) { + var haveSameContext = this._peekContext() === this._traceParent; + ret._traceParent = haveSameContext ? this._traceParent : this; + ret._setTrace(this); + } + + if (!haveInternalData && this._isBound()) { + ret._setBoundTo(this._boundTo); + } + + var callbackIndex = + this._addCallbacks(didFulfill, didReject, didProgress, ret, receiver); + + if (!haveInternalData && this._cancellable()) { + ret._setCancellable(); + ret._cancellationParent = this; + } + + if (this.isResolved()) { + async.invoke(this._queueSettleAt, this, callbackIndex); + } + + return ret; +}; + +Promise.prototype._length = function Promise$_length() { + return this._bitField & 524287; +}; + +Promise.prototype._isFollowingOrFulfilledOrRejected = +function Promise$_isFollowingOrFulfilledOrRejected() { + return (this._bitField & 939524096) > 0; +}; + +Promise.prototype._isFollowing = function Promise$_isFollowing() { + return (this._bitField & 536870912) === 536870912; +}; + +Promise.prototype._setLength = function Promise$_setLength(len) { + this._bitField = (this._bitField & -524288) | + (len & 524287); +}; + +Promise.prototype._setFulfilled = function Promise$_setFulfilled() { + this._bitField = this._bitField | 268435456; +}; + +Promise.prototype._setRejected = function Promise$_setRejected() { + this._bitField = this._bitField | 134217728; +}; + +Promise.prototype._setFollowing = function Promise$_setFollowing() { + this._bitField = this._bitField | 536870912; +}; + +Promise.prototype._setIsFinal = function Promise$_setIsFinal() { + this._bitField = this._bitField | 33554432; +}; + +Promise.prototype._isFinal = function Promise$_isFinal() { + return (this._bitField & 33554432) > 0; +}; + +Promise.prototype._cancellable = function Promise$_cancellable() { + return (this._bitField & 67108864) > 0; +}; + +Promise.prototype._setCancellable = function Promise$_setCancellable() { + this._bitField = this._bitField | 67108864; +}; + +Promise.prototype._unsetCancellable = function Promise$_unsetCancellable() { + this._bitField = this._bitField & (~67108864); +}; + +Promise.prototype._setRejectionIsUnhandled = +function Promise$_setRejectionIsUnhandled() { + this._bitField = this._bitField | 2097152; +}; + +Promise.prototype._unsetRejectionIsUnhandled = +function Promise$_unsetRejectionIsUnhandled() { + this._bitField = this._bitField & (~2097152); + if (this._isUnhandledRejectionNotified()) { + this._unsetUnhandledRejectionIsNotified(); + this._notifyUnhandledRejectionIsHandled(); + } +}; + +Promise.prototype._isRejectionUnhandled = +function Promise$_isRejectionUnhandled() { + return (this._bitField & 2097152) > 0; +}; + +Promise.prototype._setUnhandledRejectionIsNotified = +function Promise$_setUnhandledRejectionIsNotified() { + this._bitField = this._bitField | 524288; +}; + +Promise.prototype._unsetUnhandledRejectionIsNotified = +function Promise$_unsetUnhandledRejectionIsNotified() { + this._bitField = this._bitField & (~524288); +}; + +Promise.prototype._isUnhandledRejectionNotified = +function Promise$_isUnhandledRejectionNotified() { + return (this._bitField & 524288) > 0; +}; + +Promise.prototype._setCarriedStackTrace = +function Promise$_setCarriedStackTrace(capturedTrace) { + this._bitField = this._bitField | 1048576; + this._fulfillmentHandler0 = capturedTrace; +}; + +Promise.prototype._unsetCarriedStackTrace = +function Promise$_unsetCarriedStackTrace() { + this._bitField = this._bitField & (~1048576); + this._fulfillmentHandler0 = void 0; +}; + +Promise.prototype._isCarryingStackTrace = +function Promise$_isCarryingStackTrace() { + return (this._bitField & 1048576) > 0; +}; + +Promise.prototype._getCarriedStackTrace = +function Promise$_getCarriedStackTrace() { + return this._isCarryingStackTrace() + ? this._fulfillmentHandler0 + : void 0; +}; + +Promise.prototype._receiverAt = function Promise$_receiverAt(index) { + var ret; + if (index === 0) { + ret = this._receiver0; + } + else { + ret = this[index + 4 - 5]; + } + if (this._isBound() && ret === void 0) { + return this._boundTo; + } + return ret; +}; + +Promise.prototype._promiseAt = function Promise$_promiseAt(index) { + if (index === 0) return this._promise0; + return this[index + 3 - 5]; +}; + +Promise.prototype._fulfillmentHandlerAt = +function Promise$_fulfillmentHandlerAt(index) { + if (index === 0) return this._fulfillmentHandler0; + return this[index + 0 - 5]; +}; + +Promise.prototype._rejectionHandlerAt = +function Promise$_rejectionHandlerAt(index) { + if (index === 0) return this._rejectionHandler0; + return this[index + 1 - 5]; +}; + +Promise.prototype._unsetAt = function Promise$_unsetAt(index) { + if (index === 0) { + this._rejectionHandler0 = + this._progressHandler0 = + this._promise0 = + this._receiver0 = void 0; + if (!this._isCarryingStackTrace()) { + this._fulfillmentHandler0 = void 0; + } + } + else { + this[index - 5 + 0] = + this[index - 5 + 1] = + this[index - 5 + 2] = + this[index - 5 + 3] = + this[index - 5 + 4] = void 0; + } +}; + +Promise.prototype._resolveFromResolver = +function Promise$_resolveFromResolver(resolver) { + var promise = this; + this._setTrace(void 0); + this._pushContext(); + + function Promise$_resolver(val) { + if (promise._tryFollow(val)) { + return; + } + promise._fulfill(val); + } + function Promise$_rejecter(val) { + var trace = canAttach(val) ? val : new Error(val + ""); + promise._attachExtraTrace(trace); + markAsOriginatingFromRejection(val); + promise._reject(val, trace === val ? void 0 : trace); + } + var r = tryCatch2(resolver, void 0, Promise$_resolver, Promise$_rejecter); + this._popContext(); + + if (r !== void 0 && r === errorObj) { + var e = r.e; + var trace = canAttach(e) ? e : new Error(e + ""); + promise._reject(e, trace); + } +}; + +Promise.prototype._addCallbacks = function Promise$_addCallbacks( + fulfill, + reject, + progress, + promise, + receiver +) { + var index = this._length(); + + if (index >= 524287 - 5) { + index = 0; + this._setLength(0); + } + + if (index === 0) { + this._promise0 = promise; + if (receiver !== void 0) this._receiver0 = receiver; + if (typeof fulfill === "function" && !this._isCarryingStackTrace()) + this._fulfillmentHandler0 = fulfill; + if (typeof reject === "function") this._rejectionHandler0 = reject; + if (typeof progress === "function") this._progressHandler0 = progress; + } + else { + var i = index - 5; + this[i + 3] = promise; + this[i + 4] = receiver; + this[i + 0] = typeof fulfill === "function" + ? fulfill : void 0; + this[i + 1] = typeof reject === "function" + ? reject : void 0; + this[i + 2] = typeof progress === "function" + ? progress : void 0; + } + this._setLength(index + 5); + return index; +}; + + + +Promise.prototype._setBoundTo = function Promise$_setBoundTo(obj) { + if (obj !== void 0) { + this._bitField = this._bitField | 8388608; + this._boundTo = obj; + } + else { + this._bitField = this._bitField & (~8388608); + } +}; + +Promise.prototype._isBound = function Promise$_isBound() { + return (this._bitField & 8388608) === 8388608; +}; + +Promise.prototype._spreadSlowCase = +function Promise$_spreadSlowCase(targetFn, promise, values, boundTo) { + var promiseForAll = + Promise$_CreatePromiseArray + (values, PromiseArray, boundTo) + .promise() + ._then(function() { + return targetFn.apply(boundTo, arguments); + }, void 0, void 0, APPLY, void 0); + + promise._follow(promiseForAll); +}; + +Promise.prototype._callSpread = +function Promise$_callSpread(handler, promise, value, localDebugging) { + var boundTo = this._isBound() ? this._boundTo : void 0; + if (isArray(value)) { + for (var i = 0, len = value.length; i < len; ++i) { + if (isPromise(Promise._cast(value[i], void 0))) { + this._spreadSlowCase(handler, promise, value, boundTo); + return; + } + } + } + if (localDebugging) promise._pushContext(); + return tryCatchApply(handler, value, boundTo); +}; + +Promise.prototype._callHandler = +function Promise$_callHandler( + handler, receiver, promise, value, localDebugging) { + var x; + if (receiver === APPLY && !this.isRejected()) { + x = this._callSpread(handler, promise, value, localDebugging); + } + else { + if (localDebugging) promise._pushContext(); + x = tryCatch1(handler, receiver, value); + } + if (localDebugging) promise._popContext(); + return x; +}; + +Promise.prototype._settlePromiseFromHandler = +function Promise$_settlePromiseFromHandler( + handler, receiver, value, promise +) { + if (!isPromise(promise)) { + handler.call(receiver, value, promise); + return; + } + + var localDebugging = debugging; + var x = this._callHandler(handler, receiver, + promise, value, localDebugging); + + if (promise._isFollowing()) return; + + if (x === errorObj || x === promise || x === NEXT_FILTER) { + var err = x === promise + ? makeSelfResolutionError() + : x.e; + var trace = canAttach(err) ? err : new Error(err + ""); + if (x !== NEXT_FILTER) promise._attachExtraTrace(trace); + promise._rejectUnchecked(err, trace); + } + else { + var castValue = Promise._cast(x, promise); + if (isPromise(castValue)) { + if (castValue.isRejected() && + !castValue._isCarryingStackTrace() && + !canAttach(castValue._settledValue)) { + var trace = new Error(castValue._settledValue + ""); + promise._attachExtraTrace(trace); + castValue._setCarriedStackTrace(trace); + } + promise._follow(castValue); + if (castValue._cancellable()) { + promise._cancellationParent = castValue; + promise._setCancellable(); + } + } + else { + promise._fulfillUnchecked(x); + } + } +}; + +Promise.prototype._follow = +function Promise$_follow(promise) { + this._setFollowing(); + + if (promise.isPending()) { + if (promise._cancellable() ) { + this._cancellationParent = promise; + this._setCancellable(); + } + promise._proxyPromise(this); + } + else if (promise.isFulfilled()) { + this._fulfillUnchecked(promise._settledValue); + } + else { + this._rejectUnchecked(promise._settledValue, + promise._getCarriedStackTrace()); + } + + if (promise._isRejectionUnhandled()) promise._unsetRejectionIsUnhandled(); + + if (debugging && + promise._traceParent == null) { + promise._traceParent = this; + } +}; + +Promise.prototype._tryFollow = +function Promise$_tryFollow(value) { + if (this._isFollowingOrFulfilledOrRejected() || + value === this) { + return false; + } + var maybePromise = Promise._cast(value, void 0); + if (!isPromise(maybePromise)) { + return false; + } + this._follow(maybePromise); + return true; +}; + +Promise.prototype._resetTrace = function Promise$_resetTrace() { + if (debugging) { + this._trace = new CapturedTrace(this._peekContext() === void 0); + } +}; + +Promise.prototype._setTrace = function Promise$_setTrace(parent) { + if (debugging) { + var context = this._peekContext(); + this._traceParent = context; + var isTopLevel = context === void 0; + if (parent !== void 0 && + parent._traceParent === context) { + this._trace = parent._trace; + } + else { + this._trace = new CapturedTrace(isTopLevel); + } + } + return this; +}; + +Promise.prototype._attachExtraTrace = +function Promise$_attachExtraTrace(error) { + if (debugging) { + var promise = this; + var stack = error.stack; + stack = typeof stack === "string" + ? stack.split("\n") : []; + var headerLineCount = 1; + + while(promise != null && + promise._trace != null) { + stack = CapturedTrace.combine( + stack, + promise._trace.stack.split("\n") + ); + promise = promise._traceParent; + } + + var max = Error.stackTraceLimit + headerLineCount; + var len = stack.length; + if (len > max) { + stack.length = max; + } + if (stack.length <= headerLineCount) { + error.stack = "(No stack trace)"; + } + else { + error.stack = stack.join("\n"); + } + } +}; + +Promise.prototype._cleanValues = function Promise$_cleanValues() { + if (this._cancellable()) { + this._cancellationParent = void 0; + } +}; + +Promise.prototype._fulfill = function Promise$_fulfill(value) { + if (this._isFollowingOrFulfilledOrRejected()) return; + this._fulfillUnchecked(value); +}; + +Promise.prototype._reject = +function Promise$_reject(reason, carriedStackTrace) { + if (this._isFollowingOrFulfilledOrRejected()) return; + this._rejectUnchecked(reason, carriedStackTrace); +}; + +Promise.prototype._settlePromiseAt = function Promise$_settlePromiseAt(index) { + var handler = this.isFulfilled() + ? this._fulfillmentHandlerAt(index) + : this._rejectionHandlerAt(index); + + var value = this._settledValue; + var receiver = this._receiverAt(index); + var promise = this._promiseAt(index); + + if (typeof handler === "function") { + this._settlePromiseFromHandler(handler, receiver, value, promise); + } + else { + var done = false; + var isFulfilled = this.isFulfilled(); + if (receiver !== void 0) { + if (receiver instanceof Promise && + receiver._isProxied()) { + receiver._unsetProxied(); + + if (isFulfilled) receiver._fulfillUnchecked(value); + else receiver._rejectUnchecked(value, + this._getCarriedStackTrace()); + done = true; + } + else if (isPromiseArrayProxy(receiver, promise)) { + if (isFulfilled) receiver._promiseFulfilled(value, promise); + else receiver._promiseRejected(value, promise); + done = true; + } + } + + if (!done) { + if (isFulfilled) promise._fulfill(value); + else promise._reject(value, this._getCarriedStackTrace()); + } + } + + if (index >= 256) { + this._queueGC(); + } +}; + +Promise.prototype._isProxied = function Promise$_isProxied() { + return (this._bitField & 4194304) === 4194304; +}; + +Promise.prototype._setProxied = function Promise$_setProxied() { + this._bitField = this._bitField | 4194304; +}; + +Promise.prototype._unsetProxied = function Promise$_unsetProxied() { + this._bitField = this._bitField & (~4194304); +}; + +Promise.prototype._isGcQueued = function Promise$_isGcQueued() { + return (this._bitField & -1073741824) === -1073741824; +}; + +Promise.prototype._setGcQueued = function Promise$_setGcQueued() { + this._bitField = this._bitField | -1073741824; +}; + +Promise.prototype._unsetGcQueued = function Promise$_unsetGcQueued() { + this._bitField = this._bitField & (~-1073741824); +}; + +Promise.prototype._queueGC = function Promise$_queueGC() { + if (this._isGcQueued()) return; + this._setGcQueued(); + async.invokeLater(this._gc, this, void 0); +}; + +Promise.prototype._gc = function Promise$gc() { + var len = this._length(); + this._unsetAt(0); + for (var i = 0; i < len; i++) { + delete this[i]; + } + this._setLength(0); + this._unsetGcQueued(); +}; + +Promise.prototype._queueSettleAt = function Promise$_queueSettleAt(index) { + if (this._isRejectionUnhandled()) this._unsetRejectionIsUnhandled(); + async.invoke(this._settlePromiseAt, this, index); +}; + +Promise.prototype._fulfillUnchecked = +function Promise$_fulfillUnchecked(value) { + if (!this.isPending()) return; + if (value === this) { + var err = makeSelfResolutionError(); + this._attachExtraTrace(err); + return this._rejectUnchecked(err, void 0); + } + this._cleanValues(); + this._setFulfilled(); + this._settledValue = value; + var len = this._length(); + + if (len > 0) { + async.invoke(this._settlePromises, this, len); + } +}; + +Promise.prototype._rejectUncheckedCheckError = +function Promise$_rejectUncheckedCheckError(reason) { + var trace = canAttach(reason) ? reason : new Error(reason + ""); + this._rejectUnchecked(reason, trace === reason ? void 0 : trace); +}; + +Promise.prototype._rejectUnchecked = +function Promise$_rejectUnchecked(reason, trace) { + if (!this.isPending()) return; + if (reason === this) { + var err = makeSelfResolutionError(); + this._attachExtraTrace(err); + return this._rejectUnchecked(err); + } + this._cleanValues(); + this._setRejected(); + this._settledValue = reason; + + if (this._isFinal()) { + async.invokeLater(thrower, void 0, trace === void 0 ? reason : trace); + return; + } + var len = this._length(); + + if (trace !== void 0) this._setCarriedStackTrace(trace); + + if (len > 0) { + async.invoke(this._rejectPromises, this, null); + } + else { + this._ensurePossibleRejectionHandled(); + } +}; + +Promise.prototype._rejectPromises = function Promise$_rejectPromises() { + this._settlePromises(); + this._unsetCarriedStackTrace(); +}; + +Promise.prototype._settlePromises = function Promise$_settlePromises() { + var len = this._length(); + for (var i = 0; i < len; i+= 5) { + this._settlePromiseAt(i); + } +}; + +Promise.prototype._ensurePossibleRejectionHandled = +function Promise$_ensurePossibleRejectionHandled() { + this._setRejectionIsUnhandled(); + if (CapturedTrace.possiblyUnhandledRejection !== void 0) { + async.invokeLater(this._notifyUnhandledRejection, this, void 0); + } +}; + +Promise.prototype._notifyUnhandledRejectionIsHandled = +function Promise$_notifyUnhandledRejectionIsHandled() { + if (typeof unhandledRejectionHandled === "function") { + async.invokeLater(unhandledRejectionHandled, void 0, this); + } +}; + +Promise.prototype._notifyUnhandledRejection = +function Promise$_notifyUnhandledRejection() { + if (this._isRejectionUnhandled()) { + var reason = this._settledValue; + var trace = this._getCarriedStackTrace(); + + this._setUnhandledRejectionIsNotified(); + + if (trace !== void 0) { + this._unsetCarriedStackTrace(); + reason = trace; + } + if (typeof CapturedTrace.possiblyUnhandledRejection === "function") { + CapturedTrace.possiblyUnhandledRejection(reason, this); + } + } +}; + +var contextStack = []; +Promise.prototype._peekContext = function Promise$_peekContext() { + var lastIndex = contextStack.length - 1; + if (lastIndex >= 0) { + return contextStack[lastIndex]; + } + return void 0; + +}; + +Promise.prototype._pushContext = function Promise$_pushContext() { + if (!debugging) return; + contextStack.push(this); +}; + +Promise.prototype._popContext = function Promise$_popContext() { + if (!debugging) return; + contextStack.pop(); +}; + +function Promise$_CreatePromiseArray( + promises, PromiseArrayConstructor, boundTo) { + + var list = null; + if (isArray(promises)) { + list = promises; + } + else { + list = Promise._cast(promises, void 0); + if (list !== promises) { + list._setBoundTo(boundTo); + } + else if (!isPromise(list)) { + list = null; + } + } + if (list !== null) { + return new PromiseArrayConstructor(list, boundTo); + } + return { + promise: function() {return apiRejection("expecting an array, a promise or a thenable");} + }; +} + +var old = global.Promise; +Promise.noConflict = function() { + if (global.Promise === Promise) { + global.Promise = old; + } + return Promise; +}; + +if (!CapturedTrace.isSupported()) { + Promise.longStackTraces = function(){}; + debugging = false; +} + +Promise._makeSelfResolutionError = makeSelfResolutionError; +require("./finally.js")(Promise, NEXT_FILTER); +require("./direct_resolve.js")(Promise); +require("./thenables.js")(Promise, INTERNAL); +require("./synchronous_inspection.js")(Promise); +Promise.RangeError = RangeError; +Promise.CancellationError = CancellationError; +Promise.TimeoutError = TimeoutError; +Promise.TypeError = TypeError; +Promise.RejectionError = RejectionError; + +util.toFastProperties(Promise); +util.toFastProperties(Promise.prototype); +require('./timers.js')(Promise,INTERNAL); +require('./any.js')(Promise,Promise$_CreatePromiseArray,PromiseArray); +require('./race.js')(Promise,INTERNAL); +require('./call_get.js')(Promise); +require('./filter.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); +require('./generators.js')(Promise,apiRejection,INTERNAL); +require('./map.js')(Promise,PromiseArray,INTERNAL,apiRejection); +require('./nodeify.js')(Promise); +require('./promisify.js')(Promise,INTERNAL); +require('./props.js')(Promise,PromiseArray); +require('./reduce.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection,INTERNAL); +require('./settle.js')(Promise,Promise$_CreatePromiseArray,PromiseArray); +require('./some.js')(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection); +require('./progress.js')(Promise,isPromiseArrayProxy); +require('./cancel.js')(Promise,INTERNAL); + +Promise.prototype = Promise.prototype; +return Promise; + +}; + +},{"./any.js":1,"./async.js":2,"./call_get.js":4,"./cancel.js":5,"./captured_trace.js":6,"./catch_filter.js":7,"./direct_resolve.js":8,"./errors.js":9,"./errors_api_rejection":10,"./filter.js":12,"./finally.js":13,"./generators.js":14,"./global.js":15,"./map.js":16,"./nodeify.js":17,"./progress.js":18,"./promise_array.js":20,"./promise_resolver.js":21,"./promisify.js":23,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":32,"./synchronous_inspection.js":34,"./thenables.js":35,"./timers.js":36,"./util.js":37}],20:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, INTERNAL) { +var canAttach = require("./errors.js").canAttach; +var util = require("./util.js"); +var async = require("./async.js"); +var hasOwn = {}.hasOwnProperty; +var isArray = util.isArray; + +function toResolutionValue(val) { + switch(val) { + case -1: return void 0; + case -2: return []; + case -3: return {}; + } +} + +function PromiseArray(values, boundTo) { + var promise = this._promise = new Promise(INTERNAL); + var parent = void 0; + if (values instanceof Promise) { + parent = values; + if (values._cancellable()) { + promise._setCancellable(); + promise._cancellationParent = values; + } + if (values._isBound()) { + promise._setBoundTo(boundTo); + } + } + promise._setTrace(parent); + this._values = values; + this._length = 0; + this._totalResolved = 0; + this._init(void 0, -2); +} +PromiseArray.PropertiesPromiseArray = function() {}; + +PromiseArray.prototype.length = function PromiseArray$length() { + return this._length; +}; + +PromiseArray.prototype.promise = function PromiseArray$promise() { + return this._promise; +}; + +PromiseArray.prototype._init = +function PromiseArray$_init(_, resolveValueIfEmpty) { + var values = this._values; + if (values instanceof Promise) { + if (values.isFulfilled()) { + values = values._settledValue; + if (!isArray(values)) { + var err = new Promise.TypeError("expecting an array, a promise or a thenable"); + this.__hardReject__(err); + return; + } + this._values = values; + } + else if (values.isPending()) { + values._then( + this._init, + this._reject, + void 0, + this, + resolveValueIfEmpty + ); + return; + } + else { + values._unsetRejectionIsUnhandled(); + this._reject(values._settledValue); + return; + } + } + + if (values.length === 0) { + this._resolve(toResolutionValue(resolveValueIfEmpty)); + return; + } + var len = values.length; + var newLen = len; + var newValues; + if (this instanceof PromiseArray.PropertiesPromiseArray) { + newValues = this._values; + } + else { + newValues = new Array(len); + } + var isDirectScanNeeded = false; + for (var i = 0; i < len; ++i) { + var promise = values[i]; + if (promise === void 0 && !hasOwn.call(values, i)) { + newLen--; + continue; + } + var maybePromise = Promise._cast(promise, void 0); + if (maybePromise instanceof Promise) { + if (maybePromise.isPending()) { + maybePromise._proxyPromiseArray(this, i); + } + else { + maybePromise._unsetRejectionIsUnhandled(); + isDirectScanNeeded = true; + } + } + else { + isDirectScanNeeded = true; + } + newValues[i] = maybePromise; + } + if (newLen === 0) { + if (resolveValueIfEmpty === -2) { + this._resolve(newValues); + } + else { + this._resolve(toResolutionValue(resolveValueIfEmpty)); + } + return; + } + this._values = newValues; + this._length = newLen; + if (isDirectScanNeeded) { + var scanMethod = newLen === len + ? this._scanDirectValues + : this._scanDirectValuesHoled; + async.invoke(scanMethod, this, len); + } +}; + +PromiseArray.prototype._settlePromiseAt = +function PromiseArray$_settlePromiseAt(index) { + var value = this._values[index]; + if (!(value instanceof Promise)) { + this._promiseFulfilled(value, index); + } + else if (value.isFulfilled()) { + this._promiseFulfilled(value._settledValue, index); + } + else if (value.isRejected()) { + this._promiseRejected(value._settledValue, index); + } +}; + +PromiseArray.prototype._scanDirectValuesHoled = +function PromiseArray$_scanDirectValuesHoled(len) { + for (var i = 0; i < len; ++i) { + if (this._isResolved()) { + break; + } + if (hasOwn.call(this._values, i)) { + this._settlePromiseAt(i); + } + } +}; + +PromiseArray.prototype._scanDirectValues = +function PromiseArray$_scanDirectValues(len) { + for (var i = 0; i < len; ++i) { + if (this._isResolved()) { + break; + } + this._settlePromiseAt(i); + } +}; + +PromiseArray.prototype._isResolved = function PromiseArray$_isResolved() { + return this._values === null; +}; + +PromiseArray.prototype._resolve = function PromiseArray$_resolve(value) { + this._values = null; + this._promise._fulfill(value); +}; + +PromiseArray.prototype.__hardReject__ = +PromiseArray.prototype._reject = function PromiseArray$_reject(reason) { + this._values = null; + var trace = canAttach(reason) ? reason : new Error(reason + ""); + this._promise._attachExtraTrace(trace); + this._promise._reject(reason, trace); +}; + +PromiseArray.prototype._promiseProgressed = +function PromiseArray$_promiseProgressed(progressValue, index) { + if (this._isResolved()) return; + this._promise._progress({ + index: index, + value: progressValue + }); +}; + + +PromiseArray.prototype._promiseFulfilled = +function PromiseArray$_promiseFulfilled(value, index) { + if (this._isResolved()) return; + this._values[index] = value; + var totalResolved = ++this._totalResolved; + if (totalResolved >= this._length) { + this._resolve(this._values); + } +}; + +PromiseArray.prototype._promiseRejected = +function PromiseArray$_promiseRejected(reason, index) { + if (this._isResolved()) return; + this._totalResolved++; + this._reject(reason); +}; + +return PromiseArray; +}; + +},{"./async.js":2,"./errors.js":9,"./util.js":37}],21:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var util = require("./util.js"); +var maybeWrapAsError = util.maybeWrapAsError; +var errors = require("./errors.js"); +var TimeoutError = errors.TimeoutError; +var RejectionError = errors.RejectionError; +var async = require("./async.js"); +var haveGetters = util.haveGetters; +var es5 = require("./es5.js"); + +function isUntypedError(obj) { + return obj instanceof Error && + es5.getPrototypeOf(obj) === Error.prototype; +} + +function wrapAsRejectionError(obj) { + var ret; + if (isUntypedError(obj)) { + ret = new RejectionError(obj); + } + else { + ret = obj; + } + errors.markAsOriginatingFromRejection(ret); + return ret; +} + +function nodebackForPromise(promise) { + function PromiseResolver$_callback(err, value) { + if (promise === null) return; + + if (err) { + var wrapped = wrapAsRejectionError(maybeWrapAsError(err)); + promise._attachExtraTrace(wrapped); + promise._reject(wrapped); + } + else { + if (arguments.length > 2) { + var $_len = arguments.length;var args = new Array($_len - 1); for(var $_i = 1; $_i < $_len; ++$_i) {args[$_i - 1] = arguments[$_i];} + promise._fulfill(args); + } + else { + promise._fulfill(value); + } + } + + promise = null; + } + return PromiseResolver$_callback; +} + + +var PromiseResolver; +if (!haveGetters) { + PromiseResolver = function PromiseResolver(promise) { + this.promise = promise; + this.asCallback = nodebackForPromise(promise); + this.callback = this.asCallback; + }; +} +else { + PromiseResolver = function PromiseResolver(promise) { + this.promise = promise; + }; +} +if (haveGetters) { + var prop = { + get: function() { + return nodebackForPromise(this.promise); + } + }; + es5.defineProperty(PromiseResolver.prototype, "asCallback", prop); + es5.defineProperty(PromiseResolver.prototype, "callback", prop); +} + +PromiseResolver._nodebackForPromise = nodebackForPromise; + +PromiseResolver.prototype.toString = function PromiseResolver$toString() { + return "[object PromiseResolver]"; +}; + +PromiseResolver.prototype.resolve = +PromiseResolver.prototype.fulfill = function PromiseResolver$resolve(value) { + var promise = this.promise; + if (promise._tryFollow(value)) { + return; + } + async.invoke(promise._fulfill, promise, value); +}; + +PromiseResolver.prototype.reject = function PromiseResolver$reject(reason) { + var promise = this.promise; + errors.markAsOriginatingFromRejection(reason); + var trace = errors.canAttach(reason) ? reason : new Error(reason + ""); + promise._attachExtraTrace(trace); + async.invoke(promise._reject, promise, reason); + if (trace !== reason) { + async.invoke(this._setCarriedStackTrace, this, trace); + } +}; + +PromiseResolver.prototype.progress = +function PromiseResolver$progress(value) { + async.invoke(this.promise._progress, this.promise, value); +}; + +PromiseResolver.prototype.cancel = function PromiseResolver$cancel() { + async.invoke(this.promise.cancel, this.promise, void 0); +}; + +PromiseResolver.prototype.timeout = function PromiseResolver$timeout() { + this.reject(new TimeoutError("timeout")); +}; + +PromiseResolver.prototype.isResolved = function PromiseResolver$isResolved() { + return this.promise.isResolved(); +}; + +PromiseResolver.prototype.toJSON = function PromiseResolver$toJSON() { + return this.promise.toJSON(); +}; + +PromiseResolver.prototype._setCarriedStackTrace = +function PromiseResolver$_setCarriedStackTrace(trace) { + if (this.promise.isRejected()) { + this.promise._setCarriedStackTrace(trace); + } +}; + +module.exports = PromiseResolver; + +},{"./async.js":2,"./errors.js":9,"./es5.js":11,"./util.js":37}],22:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, INTERNAL) { +var errors = require("./errors.js"); +var TypeError = errors.TypeError; +var util = require("./util.js"); +var isArray = util.isArray; +var errorObj = util.errorObj; +var tryCatch1 = util.tryCatch1; +var yieldHandlers = []; + +function promiseFromYieldHandler(value) { + var _yieldHandlers = yieldHandlers; + var _errorObj = errorObj; + var _Promise = Promise; + var len = _yieldHandlers.length; + for (var i = 0; i < len; ++i) { + var result = tryCatch1(_yieldHandlers[i], void 0, value); + if (result === _errorObj) { + return _Promise.reject(_errorObj.e); + } + var maybePromise = _Promise._cast(result, + promiseFromYieldHandler, void 0); + if (maybePromise instanceof _Promise) return maybePromise; + } + return null; +} + +function PromiseSpawn(generatorFunction, receiver) { + var promise = this._promise = new Promise(INTERNAL); + promise._setTrace(void 0); + this._generatorFunction = generatorFunction; + this._receiver = receiver; + this._generator = void 0; +} + +PromiseSpawn.prototype.promise = function PromiseSpawn$promise() { + return this._promise; +}; + +PromiseSpawn.prototype._run = function PromiseSpawn$_run() { + this._generator = this._generatorFunction.call(this._receiver); + this._receiver = + this._generatorFunction = void 0; + this._next(void 0); +}; + +PromiseSpawn.prototype._continue = function PromiseSpawn$_continue(result) { + if (result === errorObj) { + this._generator = void 0; + var trace = errors.canAttach(result.e) + ? result.e : new Error(result.e + ""); + this._promise._attachExtraTrace(trace); + this._promise._reject(result.e, trace); + return; + } + + var value = result.value; + if (result.done === true) { + this._generator = void 0; + if (!this._promise._tryFollow(value)) { + this._promise._fulfill(value); + } + } + else { + var maybePromise = Promise._cast(value, PromiseSpawn$_continue, void 0); + if (!(maybePromise instanceof Promise)) { + if (isArray(maybePromise)) { + maybePromise = Promise.all(maybePromise); + } + else { + maybePromise = promiseFromYieldHandler(maybePromise); + } + if (maybePromise === null) { + this._throw(new TypeError("A value was yielded that could not be treated as a promise")); + return; + } + } + maybePromise._then( + this._next, + this._throw, + void 0, + this, + null + ); + } +}; + +PromiseSpawn.prototype._throw = function PromiseSpawn$_throw(reason) { + if (errors.canAttach(reason)) + this._promise._attachExtraTrace(reason); + this._continue( + tryCatch1(this._generator["throw"], this._generator, reason) + ); +}; + +PromiseSpawn.prototype._next = function PromiseSpawn$_next(value) { + this._continue( + tryCatch1(this._generator.next, this._generator, value) + ); +}; + +PromiseSpawn.addYieldHandler = function PromiseSpawn$AddYieldHandler(fn) { + if (typeof fn !== "function") throw new TypeError("fn must be a function"); + yieldHandlers.push(fn); +}; + +return PromiseSpawn; +}; + +},{"./errors.js":9,"./util.js":37}],23:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, INTERNAL) { +var THIS = {}; +var util = require("./util.js"); +var es5 = require("./es5.js"); +var nodebackForPromise = require("./promise_resolver.js") + ._nodebackForPromise; +var withAppended = util.withAppended; +var maybeWrapAsError = util.maybeWrapAsError; +var canEvaluate = util.canEvaluate; +var deprecated = util.deprecated; +var TypeError = require("./errors").TypeError; + + +var rasyncSuffix = new RegExp("Async" + "$"); +function isPromisified(fn) { + return fn.__isPromisified__ === true; +} +function hasPromisified(obj, key) { + var containsKey = ((key + "Async") in obj); + return containsKey ? isPromisified(obj[key + "Async"]) + : false; +} +function checkValid(ret) { + for (var i = 0; i < ret.length; i += 2) { + var key = ret[i]; + if (rasyncSuffix.test(key)) { + var keyWithoutAsyncSuffix = key.replace(rasyncSuffix, ""); + for (var j = 0; j < ret.length; j += 2) { + if (ret[j] === keyWithoutAsyncSuffix) { + throw new TypeError("Cannot promisify an API " + + "that has normal methods with Async-suffix"); + } + } + } + } +} +var inheritedMethods = (function() { + if (es5.isES5) { + var create = Object.create; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + return function(cur) { + var ret = []; + var visitedKeys = create(null); + var original = cur; + while (cur !== null) { + var keys = es5.keys(cur); + for (var i = 0, len = keys.length; i < len; ++i) { + var key = keys[i]; + if (visitedKeys[key]) continue; + visitedKeys[key] = true; + var desc = getOwnPropertyDescriptor(cur, key); + + if (desc != null && + typeof desc.value === "function" && + !isPromisified(desc.value) && + !hasPromisified(original, key)) { + ret.push(key, desc.value); + } + } + cur = es5.getPrototypeOf(cur); + } + checkValid(ret); + return ret; + }; + } + else { + return function(obj) { + var ret = []; + /*jshint forin:false */ + for (var key in obj) { + var fn = obj[key]; + if (typeof fn === "function" && + !isPromisified(fn) && + !hasPromisified(obj, key)) { + ret.push(key, fn); + } + } + checkValid(ret); + return ret; + }; + } +})(); + +function switchCaseArgumentOrder(likelyArgumentCount) { + var ret = [likelyArgumentCount]; + var min = Math.max(0, likelyArgumentCount - 1 - 5); + for(var i = likelyArgumentCount - 1; i >= min; --i) { + if (i === likelyArgumentCount) continue; + ret.push(i); + } + for(var i = likelyArgumentCount + 1; i <= 5; ++i) { + ret.push(i); + } + return ret; +} + +function parameterDeclaration(parameterCount) { + var ret = new Array(parameterCount); + for(var i = 0; i < ret.length; ++i) { + ret[i] = "_arg" + i; + } + return ret.join(", "); +} + +function parameterCount(fn) { + if (typeof fn.length === "number") { + return Math.max(Math.min(fn.length, 1023 + 1), 0); + } + return 0; +} + +function propertyAccess(id) { + var rident = /^[a-z$_][a-z$_0-9]*$/i; + + if (rident.test(id)) { + return "." + id; + } + else return "['" + id.replace(/(['\\])/g, "\\$1") + "']"; +} + +function makeNodePromisifiedEval(callback, receiver, originalName, fn) { + var newParameterCount = Math.max(0, parameterCount(fn) - 1); + var argumentOrder = switchCaseArgumentOrder(newParameterCount); + + var callbackName = (typeof originalName === "string" ? + originalName + "Async" : + "promisified"); + + function generateCallForArgumentCount(count) { + var args = new Array(count); + for (var i = 0, len = args.length; i < len; ++i) { + args[i] = "arguments[" + i + "]"; + } + var comma = count > 0 ? "," : ""; + + if (typeof callback === "string" && + receiver === THIS) { + return "this" + propertyAccess(callback) + "("+args.join(",") + + comma +" fn);"+ + "break;"; + } + return (receiver === void 0 + ? "callback("+args.join(",")+ comma +" fn);" + : "callback.call("+(receiver === THIS + ? "this" + : "receiver")+", "+args.join(",") + comma + " fn);") + + "break;"; + } + + function generateArgumentSwitchCase() { + var ret = ""; + for(var i = 0; i < argumentOrder.length; ++i) { + ret += "case " + argumentOrder[i] +":" + + generateCallForArgumentCount(argumentOrder[i]); + } + ret += "default: var args = new Array(len + 1);" + + "var i = 0;" + + "for (var i = 0; i < len; ++i) { " + + " args[i] = arguments[i];" + + "}" + + "args[i] = fn;" + + + (typeof callback === "string" + ? "this" + propertyAccess(callback) + ".apply(" + : "callback.apply(") + + + (receiver === THIS ? "this" : "receiver") + + ", args); break;"; + return ret; + } + + return new Function("Promise", "callback", "receiver", + "withAppended", "maybeWrapAsError", "nodebackForPromise", + "INTERNAL", + "var ret = function " + callbackName + + "(" + parameterDeclaration(newParameterCount) + ") {\"use strict\";" + + "var len = arguments.length;" + + "var promise = new Promise(INTERNAL);"+ + "promise._setTrace(void 0);" + + "var fn = nodebackForPromise(promise);"+ + "try {" + + "switch(len) {" + + generateArgumentSwitchCase() + + "}" + + "}" + + "catch(e){ " + + "var wrapped = maybeWrapAsError(e);" + + "promise._attachExtraTrace(wrapped);" + + "promise._reject(wrapped);" + + "}" + + "return promise;" + + "" + + "}; ret.__isPromisified__ = true; return ret;" + )(Promise, callback, receiver, withAppended, + maybeWrapAsError, nodebackForPromise, INTERNAL); +} + +function makeNodePromisifiedClosure(callback, receiver) { + function promisified() { + var _receiver = receiver; + if (receiver === THIS) _receiver = this; + if (typeof callback === "string") { + callback = _receiver[callback]; + } + var promise = new Promise(INTERNAL); + promise._setTrace(void 0); + var fn = nodebackForPromise(promise); + try { + callback.apply(_receiver, withAppended(arguments, fn)); + } + catch(e) { + var wrapped = maybeWrapAsError(e); + promise._attachExtraTrace(wrapped); + promise._reject(wrapped); + } + return promise; + } + promisified.__isPromisified__ = true; + return promisified; +} + +var makeNodePromisified = canEvaluate + ? makeNodePromisifiedEval + : makeNodePromisifiedClosure; + +function _promisify(callback, receiver, isAll) { + if (isAll) { + var methods = inheritedMethods(callback); + for (var i = 0, len = methods.length; i < len; i+= 2) { + var key = methods[i]; + var fn = methods[i+1]; + var promisifiedKey = key + "Async"; + callback[promisifiedKey] = makeNodePromisified(key, THIS, key, fn); + } + util.toFastProperties(callback); + return callback; + } + else { + return makeNodePromisified(callback, receiver, void 0, callback); + } +} + +Promise.promisify = function Promise$Promisify(fn, receiver) { + if (typeof fn === "object" && fn !== null) { + deprecated("Promise.promisify for promisifying entire objects is deprecated. Use Promise.promisifyAll instead."); + return _promisify(fn, receiver, true); + } + if (typeof fn !== "function") { + throw new TypeError("fn must be a function"); + } + if (isPromisified(fn)) { + return fn; + } + return _promisify( + fn, + arguments.length < 2 ? THIS : receiver, + false); +}; + +Promise.promisifyAll = function Promise$PromisifyAll(target) { + if (typeof target !== "function" && typeof target !== "object") { + throw new TypeError("the target of promisifyAll must be an object or a function"); + } + return _promisify(target, void 0, true); +}; +}; + + +},{"./errors":9,"./es5.js":11,"./promise_resolver.js":21,"./util.js":37}],24:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, PromiseArray) { +var util = require("./util.js"); +var inherits = util.inherits; +var es5 = require("./es5.js"); + +function PropertiesPromiseArray(obj, boundTo) { + var keys = es5.keys(obj); + var values = new Array(keys.length); + for (var i = 0, len = values.length; i < len; ++i) { + values[i] = obj[keys[i]]; + } + this.constructor$(values, boundTo); + if (!this._isResolved()) { + for (var i = 0, len = keys.length; i < len; ++i) { + values.push(keys[i]); + } + } +} +inherits(PropertiesPromiseArray, PromiseArray); + +PropertiesPromiseArray.prototype._init = +function PropertiesPromiseArray$_init() { + this._init$(void 0, -3) ; +}; + +PropertiesPromiseArray.prototype._promiseFulfilled = +function PropertiesPromiseArray$_promiseFulfilled(value, index) { + if (this._isResolved()) return; + this._values[index] = value; + var totalResolved = ++this._totalResolved; + if (totalResolved >= this._length) { + var val = {}; + var keyOffset = this.length(); + for (var i = 0, len = this.length(); i < len; ++i) { + val[this._values[i + keyOffset]] = this._values[i]; + } + this._resolve(val); + } +}; + +PropertiesPromiseArray.prototype._promiseProgressed = +function PropertiesPromiseArray$_promiseProgressed(value, index) { + if (this._isResolved()) return; + + this._promise._progress({ + key: this._values[index + this.length()], + value: value + }); +}; + +PromiseArray.PropertiesPromiseArray = PropertiesPromiseArray; + +return PropertiesPromiseArray; +}; + +},{"./es5.js":11,"./util.js":37}],25:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, PromiseArray) { +var PropertiesPromiseArray = require("./properties_promise_array.js")( + Promise, PromiseArray); +var util = require("./util.js"); +var apiRejection = require("./errors_api_rejection")(Promise); +var isObject = util.isObject; + +function Promise$_Props(promises, useBound) { + var ret; + var castValue = Promise._cast(promises, void 0); + + if (!isObject(castValue)) { + return apiRejection("cannot await properties of a non-object"); + } + else if (castValue instanceof Promise) { + ret = castValue._then(Promise.props, void 0, void 0, + void 0, void 0); + } + else { + ret = new PropertiesPromiseArray( + castValue, + useBound === true && castValue._isBound() + ? castValue._boundTo + : void 0 + ).promise(); + useBound = false; + } + if (useBound === true && castValue._isBound()) { + ret._setBoundTo(castValue._boundTo); + } + return ret; +} + +Promise.prototype.props = function Promise$props() { + return Promise$_Props(this, true); +}; + +Promise.props = function Promise$Props(promises) { + return Promise$_Props(promises, false); +}; +}; + +},{"./errors_api_rejection":10,"./properties_promise_array.js":24,"./util.js":37}],26:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +function arrayCopy(src, srcIndex, dst, dstIndex, len) { + for (var j = 0; j < len; ++j) { + dst[j + dstIndex] = src[j + srcIndex]; + } +} + +function pow2AtLeast(n) { + n = n >>> 0; + n = n - 1; + n = n | (n >> 1); + n = n | (n >> 2); + n = n | (n >> 4); + n = n | (n >> 8); + n = n | (n >> 16); + return n + 1; +} + +function getCapacity(capacity) { + if (typeof capacity !== "number") return 16; + return pow2AtLeast( + Math.min( + Math.max(16, capacity), 1073741824) + ); +} + +function Queue(capacity) { + this._capacity = getCapacity(capacity); + this._length = 0; + this._front = 0; + this._makeCapacity(); +} + +Queue.prototype._willBeOverCapacity = +function Queue$_willBeOverCapacity(size) { + return this._capacity < size; +}; + +Queue.prototype._pushOne = function Queue$_pushOne(arg) { + var length = this.length(); + this._checkCapacity(length + 1); + var i = (this._front + length) & (this._capacity - 1); + this[i] = arg; + this._length = length + 1; +}; + +Queue.prototype.push = function Queue$push(fn, receiver, arg) { + var length = this.length() + 3; + if (this._willBeOverCapacity(length)) { + this._pushOne(fn); + this._pushOne(receiver); + this._pushOne(arg); + return; + } + var j = this._front + length - 3; + this._checkCapacity(length); + var wrapMask = this._capacity - 1; + this[(j + 0) & wrapMask] = fn; + this[(j + 1) & wrapMask] = receiver; + this[(j + 2) & wrapMask] = arg; + this._length = length; +}; + +Queue.prototype.shift = function Queue$shift() { + var front = this._front, + ret = this[front]; + + this[front] = void 0; + this._front = (front + 1) & (this._capacity - 1); + this._length--; + return ret; +}; + +Queue.prototype.length = function Queue$length() { + return this._length; +}; + +Queue.prototype._makeCapacity = function Queue$_makeCapacity() { + var len = this._capacity; + for (var i = 0; i < len; ++i) { + this[i] = void 0; + } +}; + +Queue.prototype._checkCapacity = function Queue$_checkCapacity(size) { + if (this._capacity < size) { + this._resizeTo(this._capacity << 3); + } +}; + +Queue.prototype._resizeTo = function Queue$_resizeTo(capacity) { + var oldFront = this._front; + var oldCapacity = this._capacity; + var oldQueue = new Array(oldCapacity); + var length = this.length(); + + arrayCopy(this, 0, oldQueue, 0, oldCapacity); + this._capacity = capacity; + this._makeCapacity(); + this._front = 0; + if (oldFront + length <= oldCapacity) { + arrayCopy(oldQueue, oldFront, this, 0, length); + } + else { var lengthBeforeWrapping = + length - ((oldFront + length) & (oldCapacity - 1)); + + arrayCopy(oldQueue, oldFront, this, 0, lengthBeforeWrapping); + arrayCopy(oldQueue, 0, this, lengthBeforeWrapping, + length - lengthBeforeWrapping); + } +}; + +module.exports = Queue; + +},{}],27:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, INTERNAL) { +var apiRejection = require("./errors_api_rejection.js")(Promise); +var isArray = require("./util.js").isArray; + +var raceLater = function Promise$_raceLater(promise) { + return promise.then(function(array) { + return Promise$_Race(array, promise); + }); +}; + +var hasOwn = {}.hasOwnProperty; +function Promise$_Race(promises, parent) { + var maybePromise = Promise._cast(promises, void 0); + + if (maybePromise instanceof Promise) { + return raceLater(maybePromise); + } + else if (!isArray(promises)) { + return apiRejection("expecting an array, a promise or a thenable"); + } + + var ret = new Promise(INTERNAL); + ret._setTrace(parent); + if (parent !== void 0) { + if (parent._isBound()) { + ret._setBoundTo(parent._boundTo); + } + if (parent._cancellable()) { + ret._setCancellable(); + ret._cancellationParent = parent; + } + } + var fulfill = ret._fulfill; + var reject = ret._reject; + for (var i = 0, len = promises.length; i < len; ++i) { + var val = promises[i]; + + if (val === void 0 && !(hasOwn.call(promises, i))) { + continue; + } + + Promise.cast(val)._then( + fulfill, + reject, + void 0, + ret, + null + ); + } + return ret; +} + +Promise.race = function Promise$Race(promises) { + return Promise$_Race(promises, void 0); +}; + +Promise.prototype.race = function Promise$race() { + return Promise$_Race(this, void 0); +}; + +}; + +},{"./errors_api_rejection.js":10,"./util.js":37}],28:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function( + Promise, Promise$_CreatePromiseArray, + PromiseArray, apiRejection, INTERNAL) { + +function Reduction(callback, index, accum, items, receiver) { + this.promise = new Promise(INTERNAL); + this.index = index; + this.length = items.length; + this.items = items; + this.callback = callback; + this.receiver = receiver; + this.accum = accum; +} + +Reduction.prototype.reject = function Reduction$reject(e) { + this.promise._reject(e); +}; + +Reduction.prototype.fulfill = function Reduction$fulfill(value, index) { + this.accum = value; + this.index = index + 1; + this.iterate(); +}; + +Reduction.prototype.iterate = function Reduction$iterate() { + var i = this.index; + var len = this.length; + var items = this.items; + var result = this.accum; + var receiver = this.receiver; + var callback = this.callback; + + for (; i < len; ++i) { + result = callback.call(receiver, result, items[i], i, len); + result = Promise._cast(result, void 0); + + if (result instanceof Promise) { + result._then( + this.fulfill, this.reject, void 0, this, i); + return; + } + } + this.promise._fulfill(result); +}; + +function Promise$_reducer(fulfilleds, initialValue) { + var fn = this; + var receiver = void 0; + if (typeof fn !== "function") { + receiver = fn.receiver; + fn = fn.fn; + } + var len = fulfilleds.length; + var accum = void 0; + var startIndex = 0; + + if (initialValue !== void 0) { + accum = initialValue; + startIndex = 0; + } + else { + startIndex = 1; + if (len > 0) accum = fulfilleds[0]; + } + var i = startIndex; + + if (i >= len) { + return accum; + } + + var reduction = new Reduction(fn, i, accum, fulfilleds, receiver); + reduction.iterate(); + return reduction.promise; +} + +function Promise$_unpackReducer(fulfilleds) { + var fn = this.fn; + var initialValue = this.initialValue; + return Promise$_reducer.call(fn, fulfilleds, initialValue); +} + +function Promise$_slowReduce( + promises, fn, initialValue, useBound) { + return initialValue._then(function(initialValue) { + return Promise$_Reduce( + promises, fn, initialValue, useBound); + }, void 0, void 0, void 0, void 0); +} + +function Promise$_Reduce(promises, fn, initialValue, useBound) { + if (typeof fn !== "function") { + return apiRejection("fn must be a function"); + } + + if (useBound === true && promises._isBound()) { + fn = { + fn: fn, + receiver: promises._boundTo + }; + } + + if (initialValue !== void 0) { + if (initialValue instanceof Promise) { + if (initialValue.isFulfilled()) { + initialValue = initialValue._settledValue; + } + else { + return Promise$_slowReduce(promises, + fn, initialValue, useBound); + } + } + + return Promise$_CreatePromiseArray(promises, PromiseArray, + useBound === true && promises._isBound() + ? promises._boundTo + : void 0) + .promise() + ._then(Promise$_unpackReducer, void 0, void 0, { + fn: fn, + initialValue: initialValue + }, void 0); + } + return Promise$_CreatePromiseArray(promises, PromiseArray, + useBound === true && promises._isBound() + ? promises._boundTo + : void 0).promise() + ._then(Promise$_reducer, void 0, void 0, fn, void 0); +} + + +Promise.reduce = function Promise$Reduce(promises, fn, initialValue) { + return Promise$_Reduce(promises, fn, initialValue, false); +}; + +Promise.prototype.reduce = function Promise$reduce(fn, initialValue) { + return Promise$_Reduce(this, fn, initialValue, true); +}; +}; + +},{}],29:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var global = require("./global.js"); +var schedule; +if (typeof process !== "undefined" && process !== null && + typeof process.cwd === "function" && + typeof process.nextTick === "function" && + typeof process.version === "string") { + schedule = function Promise$_Scheduler(fn) { + process.nextTick(fn); + }; +} +else if ((typeof global.MutationObserver === "function" || + typeof global.WebkitMutationObserver === "function" || + typeof global.WebKitMutationObserver === "function") && + typeof document !== "undefined" && + typeof document.createElement === "function") { + + + schedule = (function(){ + var MutationObserver = global.MutationObserver || + global.WebkitMutationObserver || + global.WebKitMutationObserver; + var div = document.createElement("div"); + var queuedFn = void 0; + var observer = new MutationObserver( + function Promise$_Scheduler() { + var fn = queuedFn; + queuedFn = void 0; + fn(); + } + ); + observer.observe(div, { + attributes: true + }); + return function Promise$_Scheduler(fn) { + queuedFn = fn; + div.setAttribute("class", "foo"); + }; + + })(); +} +else if (typeof global.postMessage === "function" && + typeof global.importScripts !== "function" && + typeof global.addEventListener === "function" && + typeof global.removeEventListener === "function") { + + var MESSAGE_KEY = "bluebird_message_key_" + Math.random(); + schedule = (function(){ + var queuedFn = void 0; + + function Promise$_Scheduler(e) { + if (e.source === global && + e.data === MESSAGE_KEY) { + var fn = queuedFn; + queuedFn = void 0; + fn(); + } + } + + global.addEventListener("message", Promise$_Scheduler, false); + + return function Promise$_Scheduler(fn) { + queuedFn = fn; + global.postMessage( + MESSAGE_KEY, "*" + ); + }; + + })(); +} +else if (typeof global.MessageChannel === "function") { + schedule = (function(){ + var queuedFn = void 0; + + var channel = new global.MessageChannel(); + channel.port1.onmessage = function Promise$_Scheduler() { + var fn = queuedFn; + queuedFn = void 0; + fn(); + }; + + return function Promise$_Scheduler(fn) { + queuedFn = fn; + channel.port2.postMessage(null); + }; + })(); +} +else if (global.setTimeout) { + schedule = function Promise$_Scheduler(fn) { + setTimeout(fn, 4); + }; +} +else { + schedule = function Promise$_Scheduler(fn) { + fn(); + }; +} + +module.exports = schedule; + +},{"./global.js":15}],30:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = + function(Promise, Promise$_CreatePromiseArray, PromiseArray) { + +var SettledPromiseArray = require("./settled_promise_array.js")( + Promise, PromiseArray); + +function Promise$_Settle(promises, useBound) { + return Promise$_CreatePromiseArray( + promises, + SettledPromiseArray, + useBound === true && promises._isBound() + ? promises._boundTo + : void 0 + ).promise(); +} + +Promise.settle = function Promise$Settle(promises) { + return Promise$_Settle(promises, false); +}; + +Promise.prototype.settle = function Promise$settle() { + return Promise$_Settle(this, true); +}; +}; + +},{"./settled_promise_array.js":31}],31:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, PromiseArray) { +var PromiseInspection = Promise.PromiseInspection; +var util = require("./util.js"); +var inherits = util.inherits; +function SettledPromiseArray(values, boundTo) { + this.constructor$(values, boundTo); +} +inherits(SettledPromiseArray, PromiseArray); + +SettledPromiseArray.prototype._promiseResolved = +function SettledPromiseArray$_promiseResolved(index, inspection) { + this._values[index] = inspection; + var totalResolved = ++this._totalResolved; + if (totalResolved >= this._length) { + this._resolve(this._values); + } +}; + +SettledPromiseArray.prototype._promiseFulfilled = +function SettledPromiseArray$_promiseFulfilled(value, index) { + if (this._isResolved()) return; + var ret = new PromiseInspection(); + ret._bitField = 268435456; + ret._settledValue = value; + this._promiseResolved(index, ret); +}; +SettledPromiseArray.prototype._promiseRejected = +function SettledPromiseArray$_promiseRejected(reason, index) { + if (this._isResolved()) return; + var ret = new PromiseInspection(); + ret._bitField = 134217728; + ret._settledValue = reason; + this._promiseResolved(index, ret); +}; + +return SettledPromiseArray; +}; + +},{"./util.js":37}],32:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = +function(Promise, Promise$_CreatePromiseArray, PromiseArray, apiRejection) { + +var SomePromiseArray = require("./some_promise_array.js")(PromiseArray); +function Promise$_Some(promises, howMany, useBound) { + if ((howMany | 0) !== howMany || howMany < 0) { + return apiRejection("expecting a positive integer"); + } + var ret = Promise$_CreatePromiseArray( + promises, + SomePromiseArray, + useBound === true && promises._isBound() + ? promises._boundTo + : void 0 + ); + var promise = ret.promise(); + if (promise.isRejected()) { + return promise; + } + ret.setHowMany(howMany); + ret.init(); + return promise; +} + +Promise.some = function Promise$Some(promises, howMany) { + return Promise$_Some(promises, howMany, false); +}; + +Promise.prototype.some = function Promise$some(count) { + return Promise$_Some(this, count, true); +}; + +}; + +},{"./some_promise_array.js":33}],33:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function (PromiseArray) { +var util = require("./util.js"); +var RangeError = require("./errors.js").RangeError; +var inherits = util.inherits; +var isArray = util.isArray; + +function SomePromiseArray(values, boundTo) { + this.constructor$(values, boundTo); + this._howMany = 0; + this._unwrap = false; + this._initialized = false; +} +inherits(SomePromiseArray, PromiseArray); + +SomePromiseArray.prototype._init = function SomePromiseArray$_init() { + if (!this._initialized) { + return; + } + if (this._howMany === 0) { + this._resolve([]); + return; + } + this._init$(void 0, -2); + var isArrayResolved = isArray(this._values); + this._holes = isArrayResolved ? this._values.length - this.length() : 0; + + if (!this._isResolved() && + isArrayResolved && + this._howMany > this._canPossiblyFulfill()) { + var message = "(Promise.some) input array contains less than " + + this._howMany + " promises"; + this._reject(new RangeError(message)); + } +}; + +SomePromiseArray.prototype.init = function SomePromiseArray$init() { + this._initialized = true; + this._init(); +}; + +SomePromiseArray.prototype.setUnwrap = function SomePromiseArray$setUnwrap() { + this._unwrap = true; +}; + +SomePromiseArray.prototype.howMany = function SomePromiseArray$howMany() { + return this._howMany; +}; + +SomePromiseArray.prototype.setHowMany = +function SomePromiseArray$setHowMany(count) { + if (this._isResolved()) return; + this._howMany = count; +}; + +SomePromiseArray.prototype._promiseFulfilled = +function SomePromiseArray$_promiseFulfilled(value) { + if (this._isResolved()) return; + this._addFulfilled(value); + if (this._fulfilled() === this.howMany()) { + this._values.length = this.howMany(); + if (this.howMany() === 1 && this._unwrap) { + this._resolve(this._values[0]); + } + else { + this._resolve(this._values); + } + } + +}; +SomePromiseArray.prototype._promiseRejected = +function SomePromiseArray$_promiseRejected(reason) { + if (this._isResolved()) return; + this._addRejected(reason); + if (this.howMany() > this._canPossiblyFulfill()) { + if (this._values.length === this.length()) { + this._reject([]); + } + else { + this._reject(this._values.slice(this.length() + this._holes)); + } + } +}; + +SomePromiseArray.prototype._fulfilled = function SomePromiseArray$_fulfilled() { + return this._totalResolved; +}; + +SomePromiseArray.prototype._rejected = function SomePromiseArray$_rejected() { + return this._values.length - this.length() - this._holes; +}; + +SomePromiseArray.prototype._addRejected = +function SomePromiseArray$_addRejected(reason) { + this._values.push(reason); +}; + +SomePromiseArray.prototype._addFulfilled = +function SomePromiseArray$_addFulfilled(value) { + this._values[this._totalResolved++] = value; +}; + +SomePromiseArray.prototype._canPossiblyFulfill = +function SomePromiseArray$_canPossiblyFulfill() { + return this.length() - this._rejected(); +}; + +return SomePromiseArray; +}; + +},{"./errors.js":9,"./util.js":37}],34:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise) { +function PromiseInspection(promise) { + if (promise !== void 0) { + this._bitField = promise._bitField; + this._settledValue = promise.isResolved() + ? promise._settledValue + : void 0; + } + else { + this._bitField = 0; + this._settledValue = void 0; + } +} + +PromiseInspection.prototype.isFulfilled = +Promise.prototype.isFulfilled = function Promise$isFulfilled() { + return (this._bitField & 268435456) > 0; +}; + +PromiseInspection.prototype.isRejected = +Promise.prototype.isRejected = function Promise$isRejected() { + return (this._bitField & 134217728) > 0; +}; + +PromiseInspection.prototype.isPending = +Promise.prototype.isPending = function Promise$isPending() { + return (this._bitField & 402653184) === 0; +}; + +PromiseInspection.prototype.value = +Promise.prototype.value = function Promise$value() { + if (!this.isFulfilled()) { + throw new TypeError("cannot get fulfillment value of a non-fulfilled promise"); + } + return this._settledValue; +}; + +PromiseInspection.prototype.error = +Promise.prototype.reason = function Promise$reason() { + if (!this.isRejected()) { + throw new TypeError("cannot get rejection reason of a non-rejected promise"); + } + return this._settledValue; +}; + +PromiseInspection.prototype.isResolved = +Promise.prototype.isResolved = function Promise$isResolved() { + return (this._bitField & 402653184) > 0; +}; + +Promise.prototype.inspect = function Promise$inspect() { + return new PromiseInspection(this); +}; + +Promise.PromiseInspection = PromiseInspection; +}; + +},{}],35:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +module.exports = function(Promise, INTERNAL) { +var util = require("./util.js"); +var canAttach = require("./errors.js").canAttach; +var errorObj = util.errorObj; +var isObject = util.isObject; + +function getThen(obj) { + try { + return obj.then; + } + catch(e) { + errorObj.e = e; + return errorObj; + } +} + +function Promise$_Cast(obj, originalPromise) { + if (isObject(obj)) { + if (obj instanceof Promise) { + return obj; + } + else if (isAnyBluebirdPromise(obj)) { + var ret = new Promise(INTERNAL); + ret._setTrace(void 0); + obj._then( + ret._fulfillUnchecked, + ret._rejectUncheckedCheckError, + ret._progressUnchecked, + ret, + null + ); + ret._setFollowing(); + return ret; + } + var then = getThen(obj); + if (then === errorObj) { + if (originalPromise !== void 0 && canAttach(then.e)) { + originalPromise._attachExtraTrace(then.e); + } + return Promise.reject(then.e); + } + else if (typeof then === "function") { + return Promise$_doThenable(obj, then, originalPromise); + } + } + return obj; +} + +var hasProp = {}.hasOwnProperty; +function isAnyBluebirdPromise(obj) { + return hasProp.call(obj, "_promise0"); +} + +function Promise$_doThenable(x, then, originalPromise) { + var resolver = Promise.defer(); + var called = false; + try { + then.call( + x, + Promise$_resolveFromThenable, + Promise$_rejectFromThenable, + Promise$_progressFromThenable + ); + } + catch(e) { + if (!called) { + called = true; + var trace = canAttach(e) ? e : new Error(e + ""); + if (originalPromise !== void 0) { + originalPromise._attachExtraTrace(trace); + } + resolver.promise._reject(e, trace); + } + } + return resolver.promise; + + function Promise$_resolveFromThenable(y) { + if (called) return; + called = true; + + if (x === y) { + var e = Promise._makeSelfResolutionError(); + if (originalPromise !== void 0) { + originalPromise._attachExtraTrace(e); + } + resolver.promise._reject(e, void 0); + return; + } + resolver.resolve(y); + } + + function Promise$_rejectFromThenable(r) { + if (called) return; + called = true; + var trace = canAttach(r) ? r : new Error(r + ""); + if (originalPromise !== void 0) { + originalPromise._attachExtraTrace(trace); + } + resolver.promise._reject(r, trace); + } + + function Promise$_progressFromThenable(v) { + if (called) return; + var promise = resolver.promise; + if (typeof promise._progress === "function") { + promise._progress(v); + } + } +} + +Promise._cast = Promise$_Cast; +}; + +},{"./errors.js":9,"./util.js":37}],36:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var global = require("./global.js"); +var setTimeout = function(fn, ms) { + var $_len = arguments.length;var args = new Array($_len - 2); for(var $_i = 2; $_i < $_len; ++$_i) {args[$_i - 2] = arguments[$_i];} + global.setTimeout(function(){ + fn.apply(void 0, args); + }, ms); +}; + +module.exports = function(Promise, INTERNAL) { +var util = require("./util.js"); +var errors = require("./errors.js"); +var apiRejection = require("./errors_api_rejection")(Promise); +var TimeoutError = Promise.TimeoutError; + +var afterTimeout = function Promise$_afterTimeout(promise, message, ms) { + if (!promise.isPending()) return; + if (typeof message !== "string") { + message = "operation timed out after" + " " + ms + " ms" + } + var err = new TimeoutError(message); + errors.markAsOriginatingFromRejection(err); + promise._attachExtraTrace(err); + promise._rejectUnchecked(err); +}; + +var afterDelay = function Promise$_afterDelay(value, promise) { + promise._fulfill(value); +}; + +var delay = Promise.delay = function Promise$Delay(value, ms) { + if (ms === void 0) { + ms = value; + value = void 0; + } + ms = +ms; + var maybePromise = Promise._cast(value, void 0); + var promise = new Promise(INTERNAL); + + if (maybePromise instanceof Promise) { + if (maybePromise._isBound()) { + promise._setBoundTo(maybePromise._boundTo); + } + if (maybePromise._cancellable()) { + promise._setCancellable(); + promise._cancellationParent = maybePromise; + } + promise._setTrace(maybePromise); + promise._follow(maybePromise); + return promise.then(function(value) { + return Promise.delay(value, ms); + }); + } + else { + promise._setTrace(void 0); + setTimeout(afterDelay, ms, value, promise); + } + return promise; +}; + +Promise.prototype.delay = function Promise$delay(ms) { + return delay(this, ms); +}; + +Promise.prototype.timeout = function Promise$timeout(ms, message) { + ms = +ms; + + var ret = new Promise(INTERNAL); + ret._setTrace(this); + + if (this._isBound()) ret._setBoundTo(this._boundTo); + if (this._cancellable()) { + ret._setCancellable(); + ret._cancellationParent = this; + } + ret._follow(this); + setTimeout(afterTimeout, ms, ret, message, ms); + return ret; +}; + +}; + +},{"./errors.js":9,"./errors_api_rejection":10,"./global.js":15,"./util.js":37}],37:[function(require,module,exports){ +/** + * Copyright (c) 2014 Petka Antonov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions:

+ * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ +"use strict"; +var global = require("./global.js"); +var es5 = require("./es5.js"); +var haveGetters = (function(){ + try { + var o = {}; + es5.defineProperty(o, "f", { + get: function () { + return 3; + } + }); + return o.f === 3; + } + catch (e) { + return false; + } + +})(); + +var canEvaluate = (function() { + if (typeof window !== "undefined" && window !== null && + typeof window.document !== "undefined" && + typeof navigator !== "undefined" && navigator !== null && + typeof navigator.appName === "string" && + window === global) { + return false; + } + return true; +})(); + +function deprecated(msg) { + if (typeof console !== "undefined" && console !== null && + typeof console.warn === "function") { + console.warn("Bluebird: " + msg); + } +} + +var errorObj = {e: {}}; +function tryCatch1(fn, receiver, arg) { + try { + return fn.call(receiver, arg); + } + catch (e) { + errorObj.e = e; + return errorObj; + } +} + +function tryCatch2(fn, receiver, arg, arg2) { + try { + return fn.call(receiver, arg, arg2); + } + catch (e) { + errorObj.e = e; + return errorObj; + } +} + +function tryCatchApply(fn, args, receiver) { + try { + return fn.apply(receiver, args); + } + catch (e) { + errorObj.e = e; + return errorObj; + } +} + +var inherits = function(Child, Parent) { + var hasProp = {}.hasOwnProperty; + + function T() { + this.constructor = Child; + this.constructor$ = Parent; + for (var propertyName in Parent.prototype) { + if (hasProp.call(Parent.prototype, propertyName) && + propertyName.charAt(propertyName.length-1) !== "$" + ) { + this[propertyName + "$"] = Parent.prototype[propertyName]; + } + } + } + T.prototype = Parent.prototype; + Child.prototype = new T(); + return Child.prototype; +}; + +function asString(val) { + return typeof val === "string" ? val : ("" + val); +} + +function isPrimitive(val) { + return val == null || val === true || val === false || + typeof val === "string" || typeof val === "number"; + +} + +function isObject(value) { + return !isPrimitive(value); +} + +function maybeWrapAsError(maybeError) { + if (!isPrimitive(maybeError)) return maybeError; + + return new Error(asString(maybeError)); +} + +function withAppended(target, appendee) { + var len = target.length; + var ret = new Array(len + 1); + var i; + for (i = 0; i < len; ++i) { + ret[i] = target[i]; + } + ret[i] = appendee; + return ret; +} + + +function notEnumerableProp(obj, name, value) { + if (isPrimitive(obj)) return obj; + var descriptor = { + value: value, + configurable: true, + enumerable: false, + writable: true + }; + es5.defineProperty(obj, name, descriptor); + return obj; +} + + +var wrapsPrimitiveReceiver = (function() { + return this !== "string"; +}).call("string"); + +function thrower(r) { + throw r; +} + + +function toFastProperties(obj) { + /*jshint -W027*/ + function f() {} + f.prototype = obj; + return f; + eval(obj); +} + +var ret = { + thrower: thrower, + isArray: es5.isArray, + haveGetters: haveGetters, + notEnumerableProp: notEnumerableProp, + isPrimitive: isPrimitive, + isObject: isObject, + canEvaluate: canEvaluate, + deprecated: deprecated, + errorObj: errorObj, + tryCatch1: tryCatch1, + tryCatch2: tryCatch2, + tryCatchApply: tryCatchApply, + inherits: inherits, + withAppended: withAppended, + asString: asString, + maybeWrapAsError: maybeWrapAsError, + wrapsPrimitiveReceiver: wrapsPrimitiveReceiver, + toFastProperties: toFastProperties +}; + +module.exports = ret; + +},{"./es5.js":11,"./global.js":15}]},{},[3]) +(3) +}); +; \ No newline at end of file diff --git a/ajax/libs/bluebird/1.2.2/bluebird.min.js b/ajax/libs/bluebird/1.2.2/bluebird.min.js new file mode 100644 index 000000000..43860b697 --- /dev/null +++ b/ajax/libs/bluebird/1.2.2/bluebird.min.js @@ -0,0 +1 @@ +!function(a){"object"==typeof exports?module.exports=a():"function"==typeof define&&define.amd?define(a):"undefined"!=typeof window?window.Promise=a():"undefined"!=typeof global?global.Promise=a():"undefined"!=typeof self&&(self.Promise=a())}(function(){var define,module,exports;return(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)}throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0};Async.prototype.invokeLater=function Async$invokeLater(fn,receiver,arg){if(process!==void 0&&process.domain!=null&&!fn.domain){fn=process.domain.bind(fn)}this._lateBuffer.push(fn,receiver,arg);this._queueTick()};Async.prototype.invoke=function Async$invoke(fn,receiver,arg){if(process!==void 0&&process.domain!=null&&!fn.domain){fn=process.domain.bind(fn)}var functionBuffer=this._functionBuffer;functionBuffer.push(fn,receiver,arg);this._length=functionBuffer.length();this._queueTick()};Async.prototype._consumeFunctionBuffer=function Async$_consumeFunctionBuffer(){var functionBuffer=this._functionBuffer;while(functionBuffer.length()>0){var fn=functionBuffer.shift();var receiver=functionBuffer.shift();var arg=functionBuffer.shift();fn.call(receiver,arg)}this._reset();this._consumeLateBuffer()};Async.prototype._consumeLateBuffer=function Async$_consumeLateBuffer(){var buffer=this._lateBuffer;while(buffer.length()>0){var fn=buffer.shift();var receiver=buffer.shift();var arg=buffer.shift();var res=tryCatch1(fn,receiver,arg);if(res===errorObj){this._queueTick();if(fn.domain!=null){fn.domain.emit("error",res.e)}else{throw res.e}}}};Async.prototype._queueTick=function Async$_queue(){if(!this._isTickUsed){schedule(this.consumeFunctionBuffer);this._isTickUsed=true}};Async.prototype._reset=function Async$_reset(){this._isTickUsed=false;this._length=0};module.exports=new Async()},{"./global.js":15,"./queue.js":26,"./schedule.js":29,"./util.js":37}],3:[function(require,module,exports){var Promise=require("./promise.js")();module.exports=Promise},{"./promise.js":19}],4:[function(require,module,exports){module.exports=function(Promise){Promise.prototype.call=function Promise$call(propertyName){var $_len=arguments.length;var args=new Array($_len-1);for(var $_i=1;$_i<$_len;++$_i){args[$_i-1]=arguments[$_i]}return this._then(function(obj){return obj[propertyName].apply(obj,args)},void 0,void 0,void 0,void 0)};function Promise$getter(obj){var prop=typeof this==="string"?this:(""+this);return obj[prop]}Promise.prototype.get=function Promise$get(propertyName){return this._then(Promise$getter,void 0,void 0,propertyName,void 0)}}},{}],5:[function(require,module,exports){module.exports=function(Promise,INTERNAL){var errors=require("./errors.js");var async=require("./async.js");var CancellationError=errors.CancellationError;Promise.prototype._cancel=function Promise$_cancel(){if(!this.isCancellable()){return this}var parent;var promiseToReject=this;while((parent=promiseToReject._cancellationParent)!==void 0&&parent.isCancellable()){promiseToReject=parent}var err=new CancellationError();promiseToReject._attachExtraTrace(err);promiseToReject._rejectUnchecked(err)};Promise.prototype.cancel=function Promise$cancel(){if(!this.isCancellable()){return this}async.invokeLater(this._cancel,this,void 0);return this};Promise.prototype.cancellable=function Promise$cancellable(){if(this._cancellable()){return this}this._setCancellable();this._cancellationParent=void 0;return this};Promise.prototype.uncancellable=function Promise$uncancellable(){var ret=new Promise(INTERNAL);ret._setTrace(this);ret._follow(this);ret._unsetCancellable();if(this._isBound()){ret._setBoundTo(this._boundTo)}return ret};Promise.prototype.fork=function Promise$fork(didFulfill,didReject,didProgress){var ret=this._then(didFulfill,didReject,didProgress,void 0,void 0);ret._setCancellable();ret._cancellationParent=void 0;return ret}}},{"./async.js":2,"./errors.js":9}],6:[function(require,module,exports){module.exports=function(){var inherits=require("./util.js").inherits;var defineProperty=require("./es5.js").defineProperty;var rignore=new RegExp("\\b(?:[a-zA-Z0-9.]+\\$_\\w+|tryCatch(?:1|2|Apply)|new \\w*PromiseArray|\\w*PromiseArray\\.\\w*PromiseArray|setTimeout|CatchFilter\\$_\\w+|makeNodePromisified|processImmediate|process._tickCallback|nextTick|Async\\$\\w+)\\b");var rtraceline=null;var formatStack=null;function formatNonError(obj){var str;if(typeof obj==="function"){str="[function "+(obj.name||"anonymous")+"]"}else{str=obj.toString();var ruselessToString=/\[object [a-zA-Z0-9$_]+\]/;if(ruselessToString.test(str)){try{var newStr=JSON.stringify(obj);str=newStr}catch(e){}}if(str.length===0){str="(empty array)"}}return("(<"+snip(str)+">, no stack trace)")}function snip(str){var maxChars=41;if(str.length=0;--i){var line=prev[i];if(current[curLast]===line){current.pop();curLast--}else{break}}current.push("From previous event:");var lines=current.concat(prev);var ret=[];for(var i=0,len=lines.length;i0&&!rtraceline.test(lines[i]))&&lines[i]!=="From previous event:")){continue}ret.push(lines[i])}return ret};CapturedTrace.isSupported=function CapturedTrace$IsSupported(){return typeof captureStackTrace==="function"};var captureStackTrace=(function stackDetection(){if(typeof Error.stackTraceLimit==="number"&&typeof Error.captureStackTrace==="function"){rtraceline=/^\s*at\s*/;formatStack=function(stack,error){if(typeof stack==="string"){return stack}if(error.name!==void 0&&error.message!==void 0){return error.name+". "+error.message}return formatNonError(error)};var captureStackTrace=Error.captureStackTrace;return function CapturedTrace$_captureStackTrace(receiver,ignoreUntil){captureStackTrace(receiver,ignoreUntil)}}var err=new Error();if(typeof err.stack==="string"&&typeof"".startsWith==="function"&&(err.stack.startsWith("stackDetection@"))&&stackDetection.name==="stackDetection"){defineProperty(Error,"stackTraceLimit",{writable:true,enumerable:false,configurable:false,value:25});rtraceline=/@/;var rline=/[@\n]/;formatStack=function(stack,error){if(typeof stack==="string"){return(error.name+". "+error.message+"\n"+stack)}if(error.name!==void 0&&error.message!==void 0){return error.name+". "+error.message}return formatNonError(error)};return function captureStackTrace(o){var stack=new Error().stack;var split=stack.split(rline);var len=split.length;var ret="";for(var i=0;i=0}return false}function Promise(resolver){if(typeof resolver!=="function"){throw new TypeError("the promise constructor requires a resolver function")}if(this.constructor!==Promise){throw new TypeError("the promise constructor cannot be invoked directly")}this._bitField=0;this._fulfillmentHandler0=void 0;this._rejectionHandler0=void 0;this._promise0=void 0;this._receiver0=void 0;this._settledValue=void 0;this._boundTo=void 0;if(resolver!==INTERNAL){this._resolveFromResolver(resolver)}}Promise.prototype.bind=function Promise$bind(thisArg){var ret=new Promise(INTERNAL);ret._setTrace(this);ret._follow(this);ret._setBoundTo(thisArg);if(this._cancellable()){ret._setCancellable();ret._cancellationParent=this}return ret};Promise.prototype.toString=function Promise$toString(){return"[object Promise]"};Promise.prototype.caught=Promise.prototype["catch"]=function Promise$catch(fn){var len=arguments.length;if(len>1){var catchInstances=new Array(len-1),j=0,i;for(i=0;i=524287-5){index=0;this._setLength(0)}if(index===0){this._promise0=promiseSlotValue;this._receiver0=receiver}else{var i=index-5;this[i+3]=promiseSlotValue;this[i+4]=receiver;this[i+0]=this[i+1]=this[i+2]=void 0}this._setLength(index+5)};Promise.prototype._proxyPromiseArray=function Promise$_proxyPromiseArray(promiseArray,index){this._setProxyHandlers(promiseArray,index)};Promise.prototype._proxyPromise=function Promise$_proxyPromise(promise){promise._setProxied();this._setProxyHandlers(promise,-1)};Promise.prototype._then=function Promise$_then(didFulfill,didReject,didProgress,receiver,internalData){var haveInternalData=internalData!==void 0;var ret=haveInternalData?internalData:new Promise(INTERNAL);if(debugging&&!haveInternalData){var haveSameContext=this._peekContext()===this._traceParent;ret._traceParent=haveSameContext?this._traceParent:this;ret._setTrace(this)}if(!haveInternalData&&this._isBound()){ret._setBoundTo(this._boundTo)}var callbackIndex=this._addCallbacks(didFulfill,didReject,didProgress,ret,receiver);if(!haveInternalData&&this._cancellable()){ret._setCancellable();ret._cancellationParent=this}if(this.isResolved()){async.invoke(this._queueSettleAt,this,callbackIndex)}return ret};Promise.prototype._length=function Promise$_length(){return this._bitField&524287};Promise.prototype._isFollowingOrFulfilledOrRejected=function Promise$_isFollowingOrFulfilledOrRejected(){return(this._bitField&939524096)>0};Promise.prototype._isFollowing=function Promise$_isFollowing(){return(this._bitField&536870912)===536870912};Promise.prototype._setLength=function Promise$_setLength(len){this._bitField=(this._bitField&-524288)|(len&524287)};Promise.prototype._setFulfilled=function Promise$_setFulfilled(){this._bitField=this._bitField|268435456};Promise.prototype._setRejected=function Promise$_setRejected(){this._bitField=this._bitField|134217728};Promise.prototype._setFollowing=function Promise$_setFollowing(){this._bitField=this._bitField|536870912};Promise.prototype._setIsFinal=function Promise$_setIsFinal(){this._bitField=this._bitField|33554432};Promise.prototype._isFinal=function Promise$_isFinal(){return(this._bitField&33554432)>0};Promise.prototype._cancellable=function Promise$_cancellable(){return(this._bitField&67108864)>0};Promise.prototype._setCancellable=function Promise$_setCancellable(){this._bitField=this._bitField|67108864};Promise.prototype._unsetCancellable=function Promise$_unsetCancellable(){this._bitField=this._bitField&(~67108864)};Promise.prototype._setRejectionIsUnhandled=function Promise$_setRejectionIsUnhandled(){this._bitField=this._bitField|2097152};Promise.prototype._unsetRejectionIsUnhandled=function Promise$_unsetRejectionIsUnhandled(){this._bitField=this._bitField&(~2097152);if(this._isUnhandledRejectionNotified()){this._unsetUnhandledRejectionIsNotified();this._notifyUnhandledRejectionIsHandled()}};Promise.prototype._isRejectionUnhandled=function Promise$_isRejectionUnhandled(){return(this._bitField&2097152)>0};Promise.prototype._setUnhandledRejectionIsNotified=function Promise$_setUnhandledRejectionIsNotified(){this._bitField=this._bitField|524288};Promise.prototype._unsetUnhandledRejectionIsNotified=function Promise$_unsetUnhandledRejectionIsNotified(){this._bitField=this._bitField&(~524288)};Promise.prototype._isUnhandledRejectionNotified=function Promise$_isUnhandledRejectionNotified(){return(this._bitField&524288)>0};Promise.prototype._setCarriedStackTrace=function Promise$_setCarriedStackTrace(capturedTrace){this._bitField=this._bitField|1048576;this._fulfillmentHandler0=capturedTrace};Promise.prototype._unsetCarriedStackTrace=function Promise$_unsetCarriedStackTrace(){this._bitField=this._bitField&(~1048576);this._fulfillmentHandler0=void 0};Promise.prototype._isCarryingStackTrace=function Promise$_isCarryingStackTrace(){return(this._bitField&1048576)>0};Promise.prototype._getCarriedStackTrace=function Promise$_getCarriedStackTrace(){return this._isCarryingStackTrace()?this._fulfillmentHandler0:void 0};Promise.prototype._receiverAt=function Promise$_receiverAt(index){var ret;if(index===0){ret=this._receiver0}else{ret=this[index+4-5]}if(this._isBound()&&ret===void 0){return this._boundTo}return ret};Promise.prototype._promiseAt=function Promise$_promiseAt(index){if(index===0){return this._promise0}return this[index+3-5]};Promise.prototype._fulfillmentHandlerAt=function Promise$_fulfillmentHandlerAt(index){if(index===0){return this._fulfillmentHandler0}return this[index+0-5]};Promise.prototype._rejectionHandlerAt=function Promise$_rejectionHandlerAt(index){if(index===0){return this._rejectionHandler0}return this[index+1-5]};Promise.prototype._unsetAt=function Promise$_unsetAt(index){if(index===0){this._rejectionHandler0=this._progressHandler0=this._promise0=this._receiver0=void 0;if(!this._isCarryingStackTrace()){this._fulfillmentHandler0=void 0}}else{this[index-5+0]=this[index-5+1]=this[index-5+2]=this[index-5+3]=this[index-5+4]=void 0}};Promise.prototype._resolveFromResolver=function Promise$_resolveFromResolver(resolver){var promise=this;this._setTrace(void 0);this._pushContext();function Promise$_resolver(val){if(promise._tryFollow(val)){return}promise._fulfill(val)}function Promise$_rejecter(val){var trace=canAttach(val)?val:new Error(val+"");promise._attachExtraTrace(trace);markAsOriginatingFromRejection(val);promise._reject(val,trace===val?void 0:trace)}var r=tryCatch2(resolver,void 0,Promise$_resolver,Promise$_rejecter);this._popContext();if(r!==void 0&&r===errorObj){var e=r.e;var trace=canAttach(e)?e:new Error(e+"");promise._reject(e,trace)}};Promise.prototype._addCallbacks=function Promise$_addCallbacks(fulfill,reject,progress,promise,receiver){var index=this._length();if(index>=524287-5){index=0;this._setLength(0)}if(index===0){this._promise0=promise;if(receiver!==void 0){this._receiver0=receiver}if(typeof fulfill==="function"&&!this._isCarryingStackTrace()){this._fulfillmentHandler0=fulfill}if(typeof reject==="function"){this._rejectionHandler0=reject}if(typeof progress==="function"){this._progressHandler0=progress}}else{var i=index-5;this[i+3]=promise;this[i+4]=receiver;this[i+0]=typeof fulfill==="function"?fulfill:void 0;this[i+1]=typeof reject==="function"?reject:void 0;this[i+2]=typeof progress==="function"?progress:void 0}this._setLength(index+5);return index};Promise.prototype._setBoundTo=function Promise$_setBoundTo(obj){if(obj!==void 0){this._bitField=this._bitField|8388608;this._boundTo=obj}else{this._bitField=this._bitField&(~8388608)}};Promise.prototype._isBound=function Promise$_isBound(){return(this._bitField&8388608)===8388608};Promise.prototype._spreadSlowCase=function Promise$_spreadSlowCase(targetFn,promise,values,boundTo){var promiseForAll=Promise$_CreatePromiseArray(values,PromiseArray,boundTo).promise()._then(function(){return targetFn.apply(boundTo,arguments)},void 0,void 0,APPLY,void 0);promise._follow(promiseForAll)};Promise.prototype._callSpread=function Promise$_callSpread(handler,promise,value,localDebugging){var boundTo=this._isBound()?this._boundTo:void 0;if(isArray(value)){for(var i=0,len=value.length;imax){stack.length=max}if(stack.length<=headerLineCount){error.stack="(No stack trace)"}else{error.stack=stack.join("\n")}}};Promise.prototype._cleanValues=function Promise$_cleanValues(){if(this._cancellable()){this._cancellationParent=void 0}};Promise.prototype._fulfill=function Promise$_fulfill(value){if(this._isFollowingOrFulfilledOrRejected()){return}this._fulfillUnchecked(value)};Promise.prototype._reject=function Promise$_reject(reason,carriedStackTrace){if(this._isFollowingOrFulfilledOrRejected()){return}this._rejectUnchecked(reason,carriedStackTrace)};Promise.prototype._settlePromiseAt=function Promise$_settlePromiseAt(index){var handler=this.isFulfilled()?this._fulfillmentHandlerAt(index):this._rejectionHandlerAt(index);var value=this._settledValue;var receiver=this._receiverAt(index);var promise=this._promiseAt(index);if(typeof handler==="function"){this._settlePromiseFromHandler(handler,receiver,value,promise)}else{var done=false;var isFulfilled=this.isFulfilled();if(receiver!==void 0){if(receiver instanceof Promise&&receiver._isProxied()){receiver._unsetProxied();if(isFulfilled){receiver._fulfillUnchecked(value)}else{receiver._rejectUnchecked(value,this._getCarriedStackTrace())}done=true}else{if(isPromiseArrayProxy(receiver,promise)){if(isFulfilled){receiver._promiseFulfilled(value,promise)}else{receiver._promiseRejected(value,promise)}done=true}}}if(!done){if(isFulfilled){promise._fulfill(value)}else{promise._reject(value,this._getCarriedStackTrace())}}}if(index>=256){this._queueGC()}};Promise.prototype._isProxied=function Promise$_isProxied(){return(this._bitField&4194304)===4194304};Promise.prototype._setProxied=function Promise$_setProxied(){this._bitField=this._bitField|4194304};Promise.prototype._unsetProxied=function Promise$_unsetProxied(){this._bitField=this._bitField&(~4194304)};Promise.prototype._isGcQueued=function Promise$_isGcQueued(){return(this._bitField&-1073741824)===-1073741824};Promise.prototype._setGcQueued=function Promise$_setGcQueued(){this._bitField=this._bitField|-1073741824};Promise.prototype._unsetGcQueued=function Promise$_unsetGcQueued(){this._bitField=this._bitField&(~-1073741824)};Promise.prototype._queueGC=function Promise$_queueGC(){if(this._isGcQueued()){return}this._setGcQueued();async.invokeLater(this._gc,this,void 0)};Promise.prototype._gc=function Promise$gc(){var len=this._length();this._unsetAt(0);for(var i=0;i0){async.invoke(this._settlePromises,this,len)}};Promise.prototype._rejectUncheckedCheckError=function Promise$_rejectUncheckedCheckError(reason){var trace=canAttach(reason)?reason:new Error(reason+"");this._rejectUnchecked(reason,trace===reason?void 0:trace)};Promise.prototype._rejectUnchecked=function Promise$_rejectUnchecked(reason,trace){if(!this.isPending()){return}if(reason===this){var err=makeSelfResolutionError();this._attachExtraTrace(err);return this._rejectUnchecked(err)}this._cleanValues();this._setRejected();this._settledValue=reason;if(this._isFinal()){async.invokeLater(thrower,void 0,trace===void 0?reason:trace);return}var len=this._length();if(trace!==void 0){this._setCarriedStackTrace(trace)}if(len>0){async.invoke(this._rejectPromises,this,null)}else{this._ensurePossibleRejectionHandled()}};Promise.prototype._rejectPromises=function Promise$_rejectPromises(){this._settlePromises();this._unsetCarriedStackTrace()};Promise.prototype._settlePromises=function Promise$_settlePromises(){var len=this._length();for(var i=0;i=0){return contextStack[lastIndex]}return void 0};Promise.prototype._pushContext=function Promise$_pushContext(){if(!debugging){return}contextStack.push(this)};Promise.prototype._popContext=function Promise$_popContext(){if(!debugging){return}contextStack.pop()};function Promise$_CreatePromiseArray(promises,PromiseArrayConstructor,boundTo){var list=null;if(isArray(promises)){list=promises}else{list=Promise._cast(promises,void 0);if(list!==promises){list._setBoundTo(boundTo)}else{if(!isPromise(list)){list=null}}}if(list!==null){return new PromiseArrayConstructor(list,boundTo)}return{promise:function(){return apiRejection("expecting an array, a promise or a thenable")}}}var old=global.Promise;Promise.noConflict=function(){if(global.Promise===Promise){global.Promise=old}return Promise};if(!CapturedTrace.isSupported()){Promise.longStackTraces=function(){};debugging=false}Promise._makeSelfResolutionError=makeSelfResolutionError;require("./finally.js")(Promise,NEXT_FILTER);require("./direct_resolve.js")(Promise);require("./thenables.js")(Promise,INTERNAL);require("./synchronous_inspection.js")(Promise);Promise.RangeError=RangeError;Promise.CancellationError=CancellationError;Promise.TimeoutError=TimeoutError;Promise.TypeError=TypeError;Promise.RejectionError=RejectionError;util.toFastProperties(Promise);util.toFastProperties(Promise.prototype);require("./timers.js")(Promise,INTERNAL);require("./any.js")(Promise,Promise$_CreatePromiseArray,PromiseArray);require("./race.js")(Promise,INTERNAL);require("./call_get.js")(Promise);require("./filter.js")(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection);require("./generators.js")(Promise,apiRejection,INTERNAL);require("./map.js")(Promise,PromiseArray,INTERNAL,apiRejection);require("./nodeify.js")(Promise);require("./promisify.js")(Promise,INTERNAL);require("./props.js")(Promise,PromiseArray);require("./reduce.js")(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection,INTERNAL);require("./settle.js")(Promise,Promise$_CreatePromiseArray,PromiseArray);require("./some.js")(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection);require("./progress.js")(Promise,isPromiseArrayProxy);require("./cancel.js")(Promise,INTERNAL);Promise.prototype=Promise.prototype;return Promise}},{"./any.js":1,"./async.js":2,"./call_get.js":4,"./cancel.js":5,"./captured_trace.js":6,"./catch_filter.js":7,"./direct_resolve.js":8,"./errors.js":9,"./errors_api_rejection":10,"./filter.js":12,"./finally.js":13,"./generators.js":14,"./global.js":15,"./map.js":16,"./nodeify.js":17,"./progress.js":18,"./promise_array.js":20,"./promise_resolver.js":21,"./promisify.js":23,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":32,"./synchronous_inspection.js":34,"./thenables.js":35,"./timers.js":36,"./util.js":37}],20:[function(require,module,exports){module.exports=function(Promise,INTERNAL){var canAttach=require("./errors.js").canAttach;var util=require("./util.js");var async=require("./async.js");var hasOwn={}.hasOwnProperty;var isArray=util.isArray;function toResolutionValue(val){switch(val){case -1:return void 0;case -2:return[];case -3:return{}}}function PromiseArray(values,boundTo){var promise=this._promise=new Promise(INTERNAL);var parent=void 0;if(values instanceof Promise){parent=values;if(values._cancellable()){promise._setCancellable();promise._cancellationParent=values}if(values._isBound()){promise._setBoundTo(boundTo)}}promise._setTrace(parent);this._values=values;this._length=0;this._totalResolved=0;this._init(void 0,-2)}PromiseArray.PropertiesPromiseArray=function(){};PromiseArray.prototype.length=function PromiseArray$length(){return this._length};PromiseArray.prototype.promise=function PromiseArray$promise(){return this._promise};PromiseArray.prototype._init=function PromiseArray$_init(_,resolveValueIfEmpty){var values=this._values;if(values instanceof Promise){if(values.isFulfilled()){values=values._settledValue;if(!isArray(values)){var err=new Promise.TypeError("expecting an array, a promise or a thenable");this.__hardReject__(err);return}this._values=values}else{if(values.isPending()){values._then(this._init,this._reject,void 0,this,resolveValueIfEmpty);return}else{values._unsetRejectionIsUnhandled();this._reject(values._settledValue);return}}}if(values.length===0){this._resolve(toResolutionValue(resolveValueIfEmpty));return}var len=values.length;var newLen=len;var newValues;if(this instanceof PromiseArray.PropertiesPromiseArray){newValues=this._values}else{newValues=new Array(len)}var isDirectScanNeeded=false;for(var i=0;i=this._length){this._resolve(this._values)}};PromiseArray.prototype._promiseRejected=function PromiseArray$_promiseRejected(reason,index){if(this._isResolved()){return}this._totalResolved++;this._reject(reason)};return PromiseArray}},{"./async.js":2,"./errors.js":9,"./util.js":37}],21:[function(require,module,exports){var util=require("./util.js");var maybeWrapAsError=util.maybeWrapAsError;var errors=require("./errors.js");var TimeoutError=errors.TimeoutError;var RejectionError=errors.RejectionError;var async=require("./async.js");var haveGetters=util.haveGetters;var es5=require("./es5.js");function isUntypedError(obj){return obj instanceof Error&&es5.getPrototypeOf(obj)===Error.prototype}function wrapAsRejectionError(obj){var ret;if(isUntypedError(obj)){ret=new RejectionError(obj)}else{ret=obj}errors.markAsOriginatingFromRejection(ret);return ret}function nodebackForPromise(promise){function PromiseResolver$_callback(err,value){if(promise===null){return}if(err){var wrapped=wrapAsRejectionError(maybeWrapAsError(err));promise._attachExtraTrace(wrapped);promise._reject(wrapped)}else{if(arguments.length>2){var $_len=arguments.length;var args=new Array($_len-1);for(var $_i=1;$_i<$_len;++$_i){args[$_i-1]=arguments[$_i]}promise._fulfill(args)}else{promise._fulfill(value)}}promise=null}return PromiseResolver$_callback}var PromiseResolver;if(!haveGetters){PromiseResolver=function PromiseResolver(promise){this.promise=promise;this.asCallback=nodebackForPromise(promise);this.callback=this.asCallback}}else{PromiseResolver=function PromiseResolver(promise){this.promise=promise}}if(haveGetters){var prop={get:function(){return nodebackForPromise(this.promise)}};es5.defineProperty(PromiseResolver.prototype,"asCallback",prop);es5.defineProperty(PromiseResolver.prototype,"callback",prop)}PromiseResolver._nodebackForPromise=nodebackForPromise;PromiseResolver.prototype.toString=function PromiseResolver$toString(){return"[object PromiseResolver]"};PromiseResolver.prototype.resolve=PromiseResolver.prototype.fulfill=function PromiseResolver$resolve(value){var promise=this.promise;if(promise._tryFollow(value)){return}async.invoke(promise._fulfill,promise,value)};PromiseResolver.prototype.reject=function PromiseResolver$reject(reason){var promise=this.promise;errors.markAsOriginatingFromRejection(reason);var trace=errors.canAttach(reason)?reason:new Error(reason+"");promise._attachExtraTrace(trace);async.invoke(promise._reject,promise,reason);if(trace!==reason){async.invoke(this._setCarriedStackTrace,this,trace)}};PromiseResolver.prototype.progress=function PromiseResolver$progress(value){async.invoke(this.promise._progress,this.promise,value)};PromiseResolver.prototype.cancel=function PromiseResolver$cancel(){async.invoke(this.promise.cancel,this.promise,void 0)};PromiseResolver.prototype.timeout=function PromiseResolver$timeout(){this.reject(new TimeoutError("timeout"))};PromiseResolver.prototype.isResolved=function PromiseResolver$isResolved(){return this.promise.isResolved()};PromiseResolver.prototype.toJSON=function PromiseResolver$toJSON(){return this.promise.toJSON()};PromiseResolver.prototype._setCarriedStackTrace=function PromiseResolver$_setCarriedStackTrace(trace){if(this.promise.isRejected()){this.promise._setCarriedStackTrace(trace)}};module.exports=PromiseResolver},{"./async.js":2,"./errors.js":9,"./es5.js":11,"./util.js":37}],22:[function(require,module,exports){module.exports=function(Promise,INTERNAL){var errors=require("./errors.js");var TypeError=errors.TypeError;var util=require("./util.js");var isArray=util.isArray;var errorObj=util.errorObj;var tryCatch1=util.tryCatch1;var yieldHandlers=[];function promiseFromYieldHandler(value){var _yieldHandlers=yieldHandlers;var _errorObj=errorObj;var _Promise=Promise;var len=_yieldHandlers.length;for(var i=0;i=min;--i){if(i===likelyArgumentCount){continue}ret.push(i)}for(var i=likelyArgumentCount+1;i<=5;++i){ret.push(i)}return ret}function parameterDeclaration(parameterCount){var ret=new Array(parameterCount);for(var i=0;i0?",":"";if(typeof callback==="string"&&receiver===THIS){return"this"+propertyAccess(callback)+"("+args.join(",")+comma+" fn);break;"}return(receiver===void 0?"callback("+args.join(",")+comma+" fn);":"callback.call("+(receiver===THIS?"this":"receiver")+", "+args.join(",")+comma+" fn);")+"break;"}function generateArgumentSwitchCase(){var ret="";for(var i=0;i=this._length){var val={};var keyOffset=this.length();for(var i=0,len=this.length();i>>0;n=n-1;n=n|(n>>1);n=n|(n>>2);n=n|(n>>4);n=n|(n>>8);n=n|(n>>16);return n+1}function getCapacity(capacity){if(typeof capacity!=="number"){return 16}return pow2AtLeast(Math.min(Math.max(16,capacity),1073741824))}function Queue(capacity){this._capacity=getCapacity(capacity);this._length=0;this._front=0;this._makeCapacity()}Queue.prototype._willBeOverCapacity=function Queue$_willBeOverCapacity(size){return this._capacity0){accum=fulfilleds[0]}}var i=startIndex;if(i>=len){return accum}var reduction=new Reduction(fn,i,accum,fulfilleds,receiver);reduction.iterate();return reduction.promise}function Promise$_unpackReducer(fulfilleds){var fn=this.fn;var initialValue=this.initialValue;return Promise$_reducer.call(fn,fulfilleds,initialValue)}function Promise$_slowReduce(promises,fn,initialValue,useBound){return initialValue._then(function(initialValue){return Promise$_Reduce(promises,fn,initialValue,useBound)},void 0,void 0,void 0,void 0)}function Promise$_Reduce(promises,fn,initialValue,useBound){if(typeof fn!=="function"){return apiRejection("fn must be a function")}if(useBound===true&&promises._isBound()){fn={fn:fn,receiver:promises._boundTo}}if(initialValue!==void 0){if(initialValue instanceof Promise){if(initialValue.isFulfilled()){initialValue=initialValue._settledValue}else{return Promise$_slowReduce(promises,fn,initialValue,useBound)}}return Promise$_CreatePromiseArray(promises,PromiseArray,useBound===true&&promises._isBound()?promises._boundTo:void 0).promise()._then(Promise$_unpackReducer,void 0,void 0,{fn:fn,initialValue:initialValue},void 0)}return Promise$_CreatePromiseArray(promises,PromiseArray,useBound===true&&promises._isBound()?promises._boundTo:void 0).promise()._then(Promise$_reducer,void 0,void 0,fn,void 0)}Promise.reduce=function Promise$Reduce(promises,fn,initialValue){return Promise$_Reduce(promises,fn,initialValue,false)};Promise.prototype.reduce=function Promise$reduce(fn,initialValue){return Promise$_Reduce(this,fn,initialValue,true)}}},{}],29:[function(require,module,exports){var global=require("./global.js");var schedule;if(typeof process!=="undefined"&&process!==null&&typeof process.cwd==="function"&&typeof process.nextTick==="function"&&typeof process.version==="string"){schedule=function Promise$_Scheduler(fn){process.nextTick(fn)}}else{if((typeof global.MutationObserver==="function"||typeof global.WebkitMutationObserver==="function"||typeof global.WebKitMutationObserver==="function")&&typeof document!=="undefined"&&typeof document.createElement==="function"){schedule=(function(){var MutationObserver=global.MutationObserver||global.WebkitMutationObserver||global.WebKitMutationObserver;var div=document.createElement("div");var queuedFn=void 0;var observer=new MutationObserver(function Promise$_Scheduler(){var fn=queuedFn;queuedFn=void 0;fn()});observer.observe(div,{attributes:true});return function Promise$_Scheduler(fn){queuedFn=fn;div.setAttribute("class","foo")}})()}else{if(typeof global.postMessage==="function"&&typeof global.importScripts!=="function"&&typeof global.addEventListener==="function"&&typeof global.removeEventListener==="function"){var MESSAGE_KEY="bluebird_message_key_"+Math.random();schedule=(function(){var queuedFn=void 0;function Promise$_Scheduler(e){if(e.source===global&&e.data===MESSAGE_KEY){var fn=queuedFn;queuedFn=void 0;fn()}}global.addEventListener("message",Promise$_Scheduler,false);return function Promise$_Scheduler(fn){queuedFn=fn;global.postMessage(MESSAGE_KEY,"*")}})()}else{if(typeof global.MessageChannel==="function"){schedule=(function(){var queuedFn=void 0;var channel=new global.MessageChannel();channel.port1.onmessage=function Promise$_Scheduler(){var fn=queuedFn;queuedFn=void 0;fn()};return function Promise$_Scheduler(fn){queuedFn=fn;channel.port2.postMessage(null)}})()}else{if(global.setTimeout){schedule=function Promise$_Scheduler(fn){setTimeout(fn,4)}}else{schedule=function Promise$_Scheduler(fn){fn()}}}}}}module.exports=schedule},{"./global.js":15}],30:[function(require,module,exports){module.exports=function(Promise,Promise$_CreatePromiseArray,PromiseArray){var SettledPromiseArray=require("./settled_promise_array.js")(Promise,PromiseArray);function Promise$_Settle(promises,useBound){return Promise$_CreatePromiseArray(promises,SettledPromiseArray,useBound===true&&promises._isBound()?promises._boundTo:void 0).promise()}Promise.settle=function Promise$Settle(promises){return Promise$_Settle(promises,false)};Promise.prototype.settle=function Promise$settle(){return Promise$_Settle(this,true)}}},{"./settled_promise_array.js":31}],31:[function(require,module,exports){module.exports=function(Promise,PromiseArray){var PromiseInspection=Promise.PromiseInspection;var util=require("./util.js");var inherits=util.inherits;function SettledPromiseArray(values,boundTo){this.constructor$(values,boundTo)}inherits(SettledPromiseArray,PromiseArray);SettledPromiseArray.prototype._promiseResolved=function SettledPromiseArray$_promiseResolved(index,inspection){this._values[index]=inspection;var totalResolved=++this._totalResolved;if(totalResolved>=this._length){this._resolve(this._values)}};SettledPromiseArray.prototype._promiseFulfilled=function SettledPromiseArray$_promiseFulfilled(value,index){if(this._isResolved()){return}var ret=new PromiseInspection();ret._bitField=268435456;ret._settledValue=value;this._promiseResolved(index,ret)};SettledPromiseArray.prototype._promiseRejected=function SettledPromiseArray$_promiseRejected(reason,index){if(this._isResolved()){return}var ret=new PromiseInspection();ret._bitField=134217728;ret._settledValue=reason;this._promiseResolved(index,ret)};return SettledPromiseArray}},{"./util.js":37}],32:[function(require,module,exports){module.exports=function(Promise,Promise$_CreatePromiseArray,PromiseArray,apiRejection){var SomePromiseArray=require("./some_promise_array.js")(PromiseArray);function Promise$_Some(promises,howMany,useBound){if((howMany|0)!==howMany||howMany<0){return apiRejection("expecting a positive integer")}var ret=Promise$_CreatePromiseArray(promises,SomePromiseArray,useBound===true&&promises._isBound()?promises._boundTo:void 0);var promise=ret.promise();if(promise.isRejected()){return promise}ret.setHowMany(howMany);ret.init();return promise}Promise.some=function Promise$Some(promises,howMany){return Promise$_Some(promises,howMany,false)};Promise.prototype.some=function Promise$some(count){return Promise$_Some(this,count,true)}}},{"./some_promise_array.js":33}],33:[function(require,module,exports){module.exports=function(PromiseArray){var util=require("./util.js");var RangeError=require("./errors.js").RangeError;var inherits=util.inherits;var isArray=util.isArray;function SomePromiseArray(values,boundTo){this.constructor$(values,boundTo);this._howMany=0;this._unwrap=false;this._initialized=false}inherits(SomePromiseArray,PromiseArray);SomePromiseArray.prototype._init=function SomePromiseArray$_init(){if(!this._initialized){return}if(this._howMany===0){this._resolve([]);return}this._init$(void 0,-2);var isArrayResolved=isArray(this._values);this._holes=isArrayResolved?this._values.length-this.length():0;if(!this._isResolved()&&isArrayResolved&&this._howMany>this._canPossiblyFulfill()){var message="(Promise.some) input array contains less than "+this._howMany+" promises";this._reject(new RangeError(message))}};SomePromiseArray.prototype.init=function SomePromiseArray$init(){this._initialized=true;this._init()};SomePromiseArray.prototype.setUnwrap=function SomePromiseArray$setUnwrap(){this._unwrap=true};SomePromiseArray.prototype.howMany=function SomePromiseArray$howMany(){return this._howMany};SomePromiseArray.prototype.setHowMany=function SomePromiseArray$setHowMany(count){if(this._isResolved()){return}this._howMany=count};SomePromiseArray.prototype._promiseFulfilled=function SomePromiseArray$_promiseFulfilled(value){if(this._isResolved()){return}this._addFulfilled(value);if(this._fulfilled()===this.howMany()){this._values.length=this.howMany();if(this.howMany()===1&&this._unwrap){this._resolve(this._values[0])}else{this._resolve(this._values)}}};SomePromiseArray.prototype._promiseRejected=function SomePromiseArray$_promiseRejected(reason){if(this._isResolved()){return}this._addRejected(reason);if(this.howMany()>this._canPossiblyFulfill()){if(this._values.length===this.length()){this._reject([])}else{this._reject(this._values.slice(this.length()+this._holes))}}};SomePromiseArray.prototype._fulfilled=function SomePromiseArray$_fulfilled(){return this._totalResolved};SomePromiseArray.prototype._rejected=function SomePromiseArray$_rejected(){return this._values.length-this.length()-this._holes};SomePromiseArray.prototype._addRejected=function SomePromiseArray$_addRejected(reason){this._values.push(reason)};SomePromiseArray.prototype._addFulfilled=function SomePromiseArray$_addFulfilled(value){this._values[this._totalResolved++]=value};SomePromiseArray.prototype._canPossiblyFulfill=function SomePromiseArray$_canPossiblyFulfill(){return this.length()-this._rejected()};return SomePromiseArray}},{"./errors.js":9,"./util.js":37}],34:[function(require,module,exports){module.exports=function(Promise){function PromiseInspection(promise){if(promise!==void 0){this._bitField=promise._bitField;this._settledValue=promise.isResolved()?promise._settledValue:void 0}else{this._bitField=0;this._settledValue=void 0}}PromiseInspection.prototype.isFulfilled=Promise.prototype.isFulfilled=function Promise$isFulfilled(){return(this._bitField&268435456)>0};PromiseInspection.prototype.isRejected=Promise.prototype.isRejected=function Promise$isRejected(){return(this._bitField&134217728)>0};PromiseInspection.prototype.isPending=Promise.prototype.isPending=function Promise$isPending(){return(this._bitField&402653184)===0};PromiseInspection.prototype.value=Promise.prototype.value=function Promise$value(){if(!this.isFulfilled()){throw new TypeError("cannot get fulfillment value of a non-fulfilled promise")}return this._settledValue};PromiseInspection.prototype.error=Promise.prototype.reason=function Promise$reason(){if(!this.isRejected()){throw new TypeError("cannot get rejection reason of a non-rejected promise")}return this._settledValue};PromiseInspection.prototype.isResolved=Promise.prototype.isResolved=function Promise$isResolved(){return(this._bitField&402653184)>0};Promise.prototype.inspect=function Promise$inspect(){return new PromiseInspection(this)};Promise.PromiseInspection=PromiseInspection}},{}],35:[function(require,module,exports){module.exports=function(Promise,INTERNAL){var util=require("./util.js");var canAttach=require("./errors.js").canAttach;var errorObj=util.errorObj;var isObject=util.isObject;function getThen(obj){try{return obj.then}catch(e){errorObj.e=e;return errorObj}}function Promise$_Cast(obj,originalPromise){if(isObject(obj)){if(obj instanceof Promise){return obj}else{if(isAnyBluebirdPromise(obj)){var ret=new Promise(INTERNAL);ret._setTrace(void 0);obj._then(ret._fulfillUnchecked,ret._rejectUncheckedCheckError,ret._progressUnchecked,ret,null);ret._setFollowing();return ret}}var then=getThen(obj);if(then===errorObj){if(originalPromise!==void 0&&canAttach(then.e)){originalPromise._attachExtraTrace(then.e)}return Promise.reject(then.e)}else{if(typeof then==="function"){return Promise$_doThenable(obj,then,originalPromise)}}}return obj}var hasProp={}.hasOwnProperty;function isAnyBluebirdPromise(obj){return hasProp.call(obj,"_promise0")}function Promise$_doThenable(x,then,originalPromise){var resolver=Promise.defer();var called=false;try{then.call(x,Promise$_resolveFromThenable,Promise$_rejectFromThenable,Promise$_progressFromThenable)}catch(e){if(!called){called=true;var trace=canAttach(e)?e:new Error(e+"");if(originalPromise!==void 0){originalPromise._attachExtraTrace(trace)}resolver.promise._reject(e,trace)}}return resolver.promise;function Promise$_resolveFromThenable(y){if(called){return}called=true;if(x===y){var e=Promise._makeSelfResolutionError();if(originalPromise!==void 0){originalPromise._attachExtraTrace(e)}resolver.promise._reject(e,void 0);return}resolver.resolve(y)}function Promise$_rejectFromThenable(r){if(called){return}called=true;var trace=canAttach(r)?r:new Error(r+"");if(originalPromise!==void 0){originalPromise._attachExtraTrace(trace)}resolver.promise._reject(r,trace)}function Promise$_progressFromThenable(v){if(called){return}var promise=resolver.promise;if(typeof promise._progress==="function"){promise._progress(v)}}}Promise._cast=Promise$_Cast}},{"./errors.js":9,"./util.js":37}],36:[function(require,module,exports){var global=require("./global.js");var setTimeout=function(fn,ms){var $_len=arguments.length;var args=new Array($_len-2);for(var $_i=2;$_i<$_len;++$_i){args[$_i-2]=arguments[$_i]}global.setTimeout(function(){fn.apply(void 0,args)},ms)};module.exports=function(Promise,INTERNAL){var util=require("./util.js");var errors=require("./errors.js");var apiRejection=require("./errors_api_rejection")(Promise);var TimeoutError=Promise.TimeoutError;var afterTimeout=function Promise$_afterTimeout(promise,message,ms){if(!promise.isPending()){return}if(typeof message!=="string"){message="operation timed out after "+ms+" ms"}var err=new TimeoutError(message);errors.markAsOriginatingFromRejection(err);promise._attachExtraTrace(err);promise._rejectUnchecked(err)};var afterDelay=function Promise$_afterDelay(value,promise){promise._fulfill(value)};var delay=Promise.delay=function Promise$Delay(value,ms){if(ms===void 0){ms=value;value=void 0}ms=+ms;var maybePromise=Promise._cast(value,void 0);var promise=new Promise(INTERNAL);if(maybePromise instanceof Promise){if(maybePromise._isBound()){promise._setBoundTo(maybePromise._boundTo)}if(maybePromise._cancellable()){promise._setCancellable();promise._cancellationParent=maybePromise}promise._setTrace(maybePromise);promise._follow(maybePromise);return promise.then(function(value){return Promise.delay(value,ms)})}else{promise._setTrace(void 0);setTimeout(afterDelay,ms,value,promise)}return promise};Promise.prototype.delay=function Promise$delay(ms){return delay(this,ms)};Promise.prototype.timeout=function Promise$timeout(ms,message){ms=+ms;var ret=new Promise(INTERNAL);ret._setTrace(this);if(this._isBound()){ret._setBoundTo(this._boundTo)}if(this._cancellable()){ret._setCancellable();ret._cancellationParent=this}ret._follow(this);setTimeout(afterTimeout,ms,ret,message,ms);return ret}}},{"./errors.js":9,"./errors_api_rejection":10,"./global.js":15,"./util.js":37}],37:[function(require,module,exports){var global=require("./global.js");var es5=require("./es5.js");var haveGetters=(function(){try{var o={};es5.defineProperty(o,"f",{get:function(){return 3}});return o.f===3}catch(e){return false}})();var canEvaluate=(function(){if(typeof window!=="undefined"&&window!==null&&typeof window.document!=="undefined"&&typeof navigator!=="undefined"&&navigator!==null&&typeof navigator.appName==="string"&&window===global){return false}return true})();function deprecated(msg){if(typeof console!=="undefined"&&console!==null&&typeof console.warn==="function"){console.warn("Bluebird: "+msg)}}var errorObj={e:{}};function tryCatch1(fn,receiver,arg){try{return fn.call(receiver,arg)}catch(e){errorObj.e=e;return errorObj}}function tryCatch2(fn,receiver,arg,arg2){try{return fn.call(receiver,arg,arg2)}catch(e){errorObj.e=e;return errorObj}}function tryCatchApply(fn,args,receiver){try{return fn.apply(receiver,args)}catch(e){errorObj.e=e;return errorObj}}var inherits=function(Child,Parent){var hasProp={}.hasOwnProperty;function T(){this.constructor=Child;this.constructor$=Parent;for(var propertyName in Parent.prototype){if(hasProp.call(Parent.prototype,propertyName)&&propertyName.charAt(propertyName.length-1)!=="$"){this[propertyName+"$"]=Parent.prototype[propertyName]}}}T.prototype=Parent.prototype;Child.prototype=new T();return Child.prototype};function asString(val){return typeof val==="string"?val:(""+val)}function isPrimitive(val){return val==null||val===true||val===false||typeof val==="string"||typeof val==="number"}function isObject(value){return !isPrimitive(value)}function maybeWrapAsError(maybeError){if(!isPrimitive(maybeError)){return maybeError}return new Error(asString(maybeError))}function withAppended(target,appendee){var len=target.length;var ret=new Array(len+1);var i;for(i=0;i