PATH:
usr
/
local
/
lib
/
node_modules
/
ghost-cli
/
node_modules
/
bluebird
/
js
/
release
"use strict"; module.exports = function(Promise, PromiseArray, apiRejection) { var util = require("./util"); var RangeError = require("./errors").RangeError; var AggregateError = require("./errors").AggregateError; var isArray = util.isArray; var CANCELLATION = {}; function SomePromiseArray(values) { this.constructor$(values); this._howMany = 0; this._unwrap = false; this._initialized = false; } util.inherits(SomePromiseArray, PromiseArray); SomePromiseArray.prototype._init = function () { if (!this._initialized) { return; } if (this._howMany === 0) { this._resolve([]); return; } this._init$(undefined, -5); var isArrayResolved = isArray(this._values); if (!this._isResolved() && isArrayResolved && this._howMany > this._canPossiblyFulfill()) { this._reject(this._getRangeError(this.length())); } }; SomePromiseArray.prototype.init = function () { this._initialized = true; this._init(); }; SomePromiseArray.prototype.setUnwrap = function () { this._unwrap = true; }; SomePromiseArray.prototype.howMany = function () { return this._howMany; }; SomePromiseArray.prototype.setHowMany = function (count) { this._howMany = count; }; SomePromiseArray.prototype._promiseFulfilled = function (value) { 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); } return true; } return false; }; SomePromiseArray.prototype._promiseRejected = function (reason) { this._addRejected(reason); return this._checkOutcome(); }; SomePromiseArray.prototype._promiseCancelled = function () { if (this._values instanceof Promise || this._values == null) { return this._cancel(); } this._addRejected(CANCELLATION); return this._checkOutcome(); }; SomePromiseArray.prototype._checkOutcome = function() { if (this.howMany() > this._canPossiblyFulfill()) { var e = new AggregateError(); for (var i = this.length(); i < this._values.length; ++i) { if (this._values[i] !== CANCELLATION) { e.push(this._values[i]); } } if (e.length > 0) { this._reject(e); } else { this._cancel(); } return true; } return false; }; SomePromiseArray.prototype._fulfilled = function () { return this._totalResolved; }; SomePromiseArray.prototype._rejected = function () { return this._values.length - this.length(); }; SomePromiseArray.prototype._addRejected = function (reason) { this._values.push(reason); }; SomePromiseArray.prototype._addFulfilled = function (value) { this._values[this._totalResolved++] = value; }; SomePromiseArray.prototype._canPossiblyFulfill = function () { return this.length() - this._rejected(); }; SomePromiseArray.prototype._getRangeError = function (count) { var message = "Input array must contain at least " + this._howMany + " items but contains only " + count + " items"; return new RangeError(message); }; SomePromiseArray.prototype._resolveEmptyArray = function () { this._reject(this._getRangeError(0)); }; function some(promises, howMany) { if ((howMany | 0) !== howMany || howMany < 0) { return apiRejection("expecting a positive integer\u000a\u000a See http://goo.gl/MqrFmX\u000a"); } var ret = new SomePromiseArray(promises); var promise = ret.promise(); ret.setHowMany(howMany); ret.init(); return promise; } Promise.some = function (promises, howMany) { return some(promises, howMany); }; Promise.prototype.some = function (howMany) { return some(this, howMany); }; Promise._SomePromiseArray = SomePromiseArray; };
[-] bind.js
[edit]
[-] thenables.js
[edit]
[-] promise.js
[edit]
[-] context.js
[edit]
[-] direct_resolve.js
[edit]
[-] using.js
[edit]
[-] synchronous_inspection.js
[edit]
[-] cancel.js
[edit]
[-] errors.js
[edit]
[-] method.js
[edit]
[-] generators.js
[edit]
[-] reduce.js
[edit]
[-] nodeify.js
[edit]
[+]
..
[-] promise_array.js
[edit]
[-] queue.js
[edit]
[-] es5.js
[edit]
[-] some.js
[edit]
[-] call_get.js
[edit]
[-] catch_filter.js
[edit]
[-] schedule.js
[edit]
[-] util.js
[edit]
[-] async.js
[edit]
[-] race.js
[edit]
[-] settle.js
[edit]
[-] timers.js
[edit]
[-] any.js
[edit]
[-] map.js
[edit]
[-] join.js
[edit]
[-] filter.js
[edit]
[-] props.js
[edit]
[-] each.js
[edit]
[-] nodeback.js
[edit]
[-] debuggability.js
[edit]
[-] bluebird.js
[edit]
[-] assert.js
[edit]
[-] promisify.js
[edit]
[-] finally.js
[edit]