Socket
Socket
Sign inDemoInstall

vow

Package Overview
Dependencies
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vow - npm Package Compare versions

Comparing version 0.1.5 to 0.1.6

546

lib/vow.js

@@ -9,3 +9,3 @@ /**

*
* @version 0.1.5
* @version 0.1.6
*/

@@ -15,326 +15,348 @@

var nextTick = typeof process === 'object'? // nodejs
process.nextTick :
global.setImmediate? // ie10
global.setImmediate :
global.postMessage? // modern browsers
(function() {
var fns = [],
msg = '__promise' + +new Date,
onMessage = function(e) {
if(e.data === msg) {
e.stopPropagation?
e.stopPropagation() :
e.cancelBubble = true;
var undef,
nextTick = typeof process === 'object'? // nodejs
process.nextTick :
global.setImmediate? // ie10
global.setImmediate :
global.postMessage? // modern browsers
(function() {
var fns = [],
msg = '__promise' + +new Date,
onMessage = function(e) {
if(e.data === msg) {
e.stopPropagation?
e.stopPropagation() :
e.cancelBubble = true;
var callFns = fns, i = 0, len = fns.length;
fns = [];
while(i < len) {
callFns[i++]();
}
var callFns = fns, i = 0, len = fns.length;
fns = [];
while(i < len) {
callFns[i++]();
}
};
}
};
global.addEventListener?
global.addEventListener('message', onMessage, true) :
global.attachEvent('onmessage', onMessage);
global.addEventListener?
global.addEventListener('message', onMessage, true) :
global.attachEvent('onmessage', onMessage);
return function(fn) {
fns.push(fn) === 1 && global.postMessage(msg, '*');
};
})() :
function(fn) { // old browsers
setTimeout(fn, 0);
},
isFunction = function(obj) {
return typeof obj === 'function';
};
return function(fn) {
fns.push(fn) === 1 && global.postMessage(msg, '*');
};
})() :
function(fn) { // old browsers
setTimeout(fn, 0);
},
throwException = function(e) {
nextTick(function() {
throw e;
});
},
isFunction = function(obj) {
return typeof obj === 'function';
};
var Promise = function(val) {
this._res = val;
var Promise = function(val) {
this._res = val;
this._isFulfilled = typeof val !== 'undefined';
this._isRejected = false;
this._isFulfilled = typeof val !== 'undefined';
this._isRejected = false;
this._fulfilledCallbacks = [];
this._rejectedCallbacks = [];
};
this._fulfilledCallbacks = [];
this._rejectedCallbacks = [];
};
Promise.prototype = {
valueOf : function() {
return this._res;
},
Promise.prototype = {
valueOf : function() {
return this._res;
},
isFulfilled : function() {
return this._isFulfilled;
},
isFulfilled : function() {
return this._isFulfilled;
},
isRejected : function() {
return this._isRejected;
},
isRejected : function() {
return this._isRejected;
},
isResolved : function() {
return this._isFulfilled || this._isRejected;
},
isResolved : function() {
return this._isFulfilled || this._isRejected;
},
fulfill : function(val) {
if(this.isResolved()) {
return;
}
fulfill : function(val) {
if(this.isResolved()) {
return;
}
this._isFulfilled = true;
this._res = val;
this._isFulfilled = true;
this._res = val;
this._callCallbacks(this._fulfilledCallbacks);
this._fulfilledCallbacks = this._rejectedCallbacks = null;
},
this._callCallbacks(this._fulfilledCallbacks);
this._fulfilledCallbacks = this._rejectedCallbacks = undef;
},
reject : function(error) {
if(this.isResolved()) {
return;
}
reject : function(error) {
if(this.isResolved()) {
return;
}
this._isRejected = true;
this._res = error;
this._isRejected = true;
this._res = error;
this._callCallbacks(this._rejectedCallbacks);
this._fulfilledCallbacks = this._rejectedCallbacks = null;
},
this._callCallbacks(this._rejectedCallbacks);
this._fulfilledCallbacks = this._rejectedCallbacks = undef;
},
then : function(onFulfilled, onRejected) {
var promise = new Promise(),
cb;
then : function(onFulfilled, onRejected) {
var promise = new Promise(),
cb;
if(!this._isRejected) {
cb = { promise : promise, fn : onFulfilled };
this._isFulfilled?
this._callCallbacks([cb]) :
this._fulfilledCallbacks.push(cb);
}
if(!this._isRejected) {
cb = { promise : promise, fn : onFulfilled };
this._isFulfilled?
this._callCallbacks([cb]) :
this._fulfilledCallbacks.push(cb);
}
if(!this._isFulfilled) {
cb = { promise : promise, fn : onRejected };
this._isRejected?
this._callCallbacks([cb]) :
this._rejectedCallbacks.push(cb);
}
if(!this._isFulfilled) {
cb = { promise : promise, fn : onRejected };
this._isRejected?
this._callCallbacks([cb]) :
this._rejectedCallbacks.push(cb);
}
return promise;
},
return promise;
},
fail : function(onRejected) {
return this.then(null, onRejected);
},
fail : function(onRejected) {
return this.then(undef, onRejected);
},
spread : function(onFulfilled, onRejected) {
return this.then(
function(val) {
return onFulfilled.apply(this, val);
},
onRejected);
},
spread : function(onFulfilled, onRejected) {
return this.then(
function(val) {
return onFulfilled.apply(this, val);
},
onRejected);
},
_callCallbacks : function(callbacks) {
if(!callbacks.length) {
return;
}
done : function() {
this.fail(throwException);
},
var arg = this._res,
isFulfilled = this.isFulfilled();
_callCallbacks : function(callbacks) {
if(!callbacks.length) {
return;
}
nextTick(function() {
var i = 0, len = callbacks.length, cb;
while(i < len) {
var promise = (cb = callbacks[i++]).promise,
fn = cb.fn;
var arg = this._res,
isFulfilled = this.isFulfilled();
if(isFunction(fn)) {
var res;
try {
res = fn(arg);
}
catch(e) {
promise.reject(e);
continue;
}
nextTick(function() {
var i = 0, len = callbacks.length, cb;
while(i < len) {
var promise = (cb = callbacks[i++]).promise,
fn = cb.fn;
Vow.isPromise(res)?
(function(promise) {
res.then(
function(val) {
promise.fulfill(val);
},
function(error) {
promise.reject(error);
})
})(promise) :
promise.fulfill(res);
if(isFunction(fn)) {
var res;
try {
res = fn(arg);
}
else {
isFulfilled?
promise.fulfill(arg) :
promise.reject(arg);
catch(e) {
promise.reject(e);
continue;
}
Vow.isPromise(res)?
(function(promise) {
res.then(
function(val) {
promise.fulfill(val);
},
function(error) {
promise.reject(error);
})
})(promise) :
promise.fulfill(res);
}
});
}
};
else {
isFulfilled?
promise.fulfill(arg) :
promise.reject(arg);
}
}
});
}
};
var Vow = {
promise : function(val) {
return new Promise(val);
},
var Vow = {
promise : function(val) {
return new Promise(val);
},
when : function(obj, onFulfilled, onRejected) {
return (this.isPromise(obj)? obj : new Promise(obj)).then(onFulfilled, onRejected);
},
when : function(obj, onFulfilled, onRejected) {
return (this.isPromise(obj)? obj : new Promise(obj)).then(onFulfilled, onRejected);
},
isPromise : function(obj) {
return obj && isFunction(obj.then);
},
fail : function(obj, onRejected) {
return this.when(obj, undef, onRejected);
},
isFulfilled : function(obj) {
return this.isPromise(obj)? obj.isFulfilled() : true;
},
spread : function(obj, onFulfilled, onRejected) {
return (this.isPromise(obj)? obj : new Promise(obj)).spread(onFulfilled, onRejected);
},
isRejected : function(obj) {
return this.isPromise(obj)? obj.isRejected() : false;
},
done : function(obj) {
this.isPromise(obj) && obj.done();
},
isResolved : function(obj) {
return this.isPromise(obj)? obj.isResolved() : true;
},
isPromise : function(obj) {
return obj && isFunction(obj.then);
},
fulfill : function(val) {
return this.when(val, null, function(error) {
return error;
});
},
isFulfilled : function(obj) {
return this.isPromise(obj)? obj.isFulfilled() : true;
},
reject : function(error) {
return this.when(error, function(val) {
var promise = new Promise();
promise.reject(val);
return promise;
});
},
isRejected : function(obj) {
return this.isPromise(obj)? obj.isRejected() : false;
},
resolve : function(val) {
return this.isPromise(val)?
val :
this.when(val);
},
isResolved : function(obj) {
return this.isPromise(obj)? obj.isResolved() : true;
},
forEach : function(promises, onFulfilled, onRejected) {
var i = 0, len = promises.length;
while(i < len) {
this.when(promises[i++], onFulfilled, onRejected);
}
},
fulfill : function(val) {
return this.when(val, undef, function(error) {
return error;
});
},
all : function(promises) {
var resPromise = new Promise(),
i = promises.length;
reject : function(error) {
return this.when(error, function(val) {
var promise = new Promise();
promise.reject(val);
return promise;
});
},
if(i) {
var onFulfilled = function() {
if(!--i) {
var res = [],
promise;
while(promise = promises[i++]) {
res.push(promise.valueOf());
}
resPromise.fulfill(res);
}
},
onRejected = function(error) {
resPromise.reject(error);
};
resolve : function(val) {
return this.isPromise(val)?
val :
this.when(val);
},
this.forEach(promises, onFulfilled, onRejected);
}
else {
resPromise.fulfill([]);
}
forEach : function(promises, onFulfilled, onRejected) {
var i = 0, len = promises.length;
while(i < len) {
this.when(promises[i++], onFulfilled, onRejected);
}
},
return resPromise;
},
all : function(promises) {
var resPromise = new Promise(),
i = promises.length;
allResolved : function(promises) {
var resPromise = new Promise(),
i = promises.length;
if(i) {
var onProgress = function() {
if(i) {
var onFulfilled = function() {
if(!--i) {
resPromise.fulfill(promises);
var res = [],
promise;
while(promise = promises[i++]) {
res.push(promise.valueOf());
}
resPromise.fulfill(res);
}
},
onRejected = function(error) {
resPromise.reject(error);
};
this.forEach(promises, onProgress, onProgress);
}
else {
resPromise.fulfill(promises);
}
this.forEach(promises, onFulfilled, onRejected);
}
else {
resPromise.fulfill([]);
}
return resPromise;
},
return resPromise;
},
any : function(promises) {
var resPromise = new Promise(),
len = promises.length;
allResolved : function(promises) {
var resPromise = new Promise(),
i = promises.length;
if(len) {
var i = 0, error,
onFulfilled = function(val) {
resPromise.fulfill(val);
},
onRejected = function(_error) {
i || (error = _error);
if(++i === len) {
resPromise.reject(error);
}
};
if(i) {
var onProgress = function() {
if(!--i) {
resPromise.fulfill(promises);
}
};
this.forEach(promises, onFulfilled, onRejected);
}
else {
resPromise.reject(Error());
}
this.forEach(promises, onProgress, onProgress);
}
else {
resPromise.fulfill(promises);
}
return resPromise;
},
return resPromise;
},
timeout : function(origPromise, timeout) {
var resPromise = new Promise(),
timer = setTimeout(function() {
resPromise.reject(Error('timed out'));
}, timeout);
any : function(promises) {
var resPromise = new Promise(),
len = promises.length;
origPromise.then(
function(res) {
clearTimeout(timer);
resPromise.fulfill(res);
if(len) {
var i = 0, error,
onFulfilled = function(val) {
resPromise.fulfill(val);
},
function(error) {
clearTimeout(timer);
resPromise.reject(error);
});
onRejected = function(_error) {
i || (error = _error);
if(++i === len) {
resPromise.reject(error);
}
};
return resPromise;
this.forEach(promises, onFulfilled, onRejected);
}
};
else {
resPromise.reject(Error());
}
if(typeof exports === 'object') {
module.exports = Vow;
return resPromise;
},
timeout : function(origPromise, timeout) {
var resPromise = new Promise(),
timer = setTimeout(function() {
resPromise.reject(Error('timed out'));
}, timeout);
origPromise.then(
function(res) {
clearTimeout(timer);
resPromise.fulfill(res);
},
function(error) {
clearTimeout(timer);
resPromise.reject(error);
});
return resPromise;
}
else if(typeof define === 'function') {
define(function(require, exports, module) {
module.exports = Vow;
});
}
else {
global.Vow = Vow;
}
};
if(typeof exports === 'object') {
module.exports = Vow;
}
else if(typeof define === 'function') {
define(function(require, exports, module) {
module.exports = Vow;
});
}
else {
global.Vow = Vow;
}
})(this);
{
"name" : "vow",
"version" : "0.1.5",
"version" : "0.1.6",
"description" : "Promises/A+ proposal compatible promises library",

@@ -5,0 +5,0 @@ "homepage" : "https://github.com/dfilatov/jspromise",

@@ -23,6 +23,30 @@ <a href="http://promises-aplus.github.com/promises-spec"><img src="http://promises-aplus.github.com/promises-spec/assets/logo-small.png" align="right" /></a>

---
* [Creating promise](#vowpromise)
* [Promise API](#promise-api)
* [fulfill](#fulfillvalue)
* [reject](#rejectreason)
* [isFulfilled](#isfulfilled)
* [isRejected](#isrejected)
* [isResolved](#isresolved)
* [then](#thenonfulfilled-onrejected)
* [fail](#failonrejected)
* [spread](#spreadonfulfilled-onrejected)
* [Vow API](#vow-api)
* [when](#whenvalue-onfulfilled-onrejected)
* [isPromise](#ispromisevalue)
* [isFulfilled](#isfulfilledvalue)
* [isRejected](#isrejectedvalue)
* [isResolved](#isresolvededvalue)
* [fulfill](#fulfillvalue-1)
* [reject](#rejectreason-1)
* [resolve](#resolvevalue)
* [all](#allpromises)
* [allResolved](#allresolvedpromises)
* [any](#anypromises)
* [timeout](#timeoutpromise-timeout)
####Vow.promise()####
Create promise
````javascript
var promise = Vow.promise();
var promise = Vow.promise();
````

@@ -33,3 +57,4 @@ ###Promise API###

````javascript
promise.fulfill(value);
var promise = Vow.promise();
promise.fulfill('completed'); // fulfill promise with 'completed' value
````

@@ -39,3 +64,4 @@ ####reject(reason)####

````javascript
promise.reject(error);
var promise = Vow.promise();
promise.reject(Error('internal error')); // reject promise with Error object
````

@@ -45,3 +71,6 @@ ####isFulfilled()####

````javascript
promise.isFulfilled();
var promise = Vow.promise();
promise.isFulfilled(); // returns false
promise.fulfill('completed');
promise.isFulfilled(); // returns true
````

@@ -51,3 +80,6 @@ ####isRejected()####

````javascript
promise.isRejected();
var promise = Vow.promise();
promise.isRejected(); // returns false
promise.reject(Error('internal error'));
promise.isRejected(); // returns true
````

@@ -57,3 +89,6 @@ ####isResolved()####

````javascript
promise.isResolved();
var promise = Vow.promise();
promise.isResolved(); // returns false
promise.fulfill('completed'); // or promise.reject(Error('internal error'));
promise.isResolved(); // returns true
````

@@ -68,3 +103,8 @@ ####then([onFulfilled], [onRejected])####

````javascript
promise.then(onFulfilled, onRejected);
var promise = Vow.promise();
promise.then(
function() { // to be called after promise is fulfilled
},
function() {// to be called after promise is rejected
});
````

@@ -75,14 +115,26 @@ ####fail(onRejected)####

Like "then", but "spreads" the array into a variadic value handler.
````javascript
promise.spread(onFulfilled, onRejected);
````
###Vow API###
####when(value, [onFulfilled], [onRejected])####
Static equivalent for promise.then. If given ````value```` is not a promise, ````value```` is equivalent to fulfilled promise.
####isPromise(value)####
Returns whether the given ````value```` is a promise.
````javascript
Vow.isPromise('value'); // returns false
Vow.isPromise(Vow.promise()); // returns true
````
####when(valueOrPromise, [onFulfilled], [onRejected])####
####isFulfilled(value)####
Returns whether the given ````value```` is fulfilled. If ````value```` is not a promise, ````value```` is equivalent to fulfilled promise.
####isRejected(value)####
Returns whether the given ````value```` is rejected. If ````value```` is not a promise, ````value```` is equivalent to fulfilled promise.
####isResolved(value)####
Returns whether the given ````value```` is resolved (fulfilled or rejected). If ````value```` is not a promise, ````value```` is equivalent to fulfilled promise.

@@ -99,4 +151,11 @@ ####fulfill(value)####

####all(promises)####
Returns a promise to be fulfilled only after all the items in ````promises```` is fulfilled, or to be rejected when the first promise is rejected.
####allResolved(promises)####
Returns a promise to be fulfilled only after all the items in ````promises```` is resolved.
####any(promises)####
Returns a promise to be fulfilled only any item in ````promises```` is fulfilled, or to be rejected when the all items is rejected.
####timeout(promise, timeout)####
Returns a promise to be rejected after a ````timeout```` if ````promise```` does not resolved beforehand.
var Q = require('./benchmarks/node_modules/q');
console.log(Q.isRejected([]));
var d = Q.defer();
Q.done('a');

@@ -434,2 +434,17 @@ var Vow = require('..');

'promise.done' : {
'exception should be throwed' : function(test) {
var promise = Vow.promise(),
e = Error();
promise.done();
promise.reject(e);
process.once('uncaughtException', function(_e) {
test.strictEqual(_e, e);
test.done();
});
}
},
'Vow.when' : {

@@ -466,2 +481,47 @@ 'onFullfilled callback should be called when argument fullfilled' : function(test) {

'Vow.fail' : {
'onRejected callback should be called when argument rejected' : function(test) {
var promise = Vow.promise();
Vow.fail(promise, function(error) {
test.strictEqual(error, 'err');
test.done();
});
promise.reject('err');
}
},
'Vow.spread' : {
'onFulfilled argument should be spreaded' : function(test) {
Vow.spread([1, '2', true], function(arg1, arg2, arg3) {
test.strictEqual(arguments.length, 3);
test.strictEqual(arg1, 1);
test.strictEqual(arg2, '2');
test.strictEqual(arg3, true);
test.done();
});
}
},
'Vow.done' : {
'exception should be throwed if argument is a promise' : function(test) {
var promise = Vow.promise(),
e = Error();
promise.reject(e);
Vow.done(promise);
process.once('uncaughtException', function(_e) {
test.strictEqual(_e, e);
test.done();
});
},
'nothing to be happen if argument is not a promise' : function(test) {
Vow.done('val');
test.done();
}
},
'Vow.isFulfilled' : {

@@ -468,0 +528,0 @@ 'should return promise state if argument is promise' : function(test) {

@@ -9,3 +9,3 @@ /**

*
* @version 0.1.5
*/(function(e){var t=typeof process=="object"?process.nextTick:e.setImmediate?e.setImmediate:e.postMessage?function(){var t=[],n="__promise"+ +(new Date),r=function(e){if(e.data===n){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var r=t,i=0,s=t.length;t=[];while(i<s)r[i++]()}};return e.addEventListener?e.addEventListener("message",r,!0):e.attachEvent("onmessage",r),function(r){t.push(r)===1&&e.postMessage(n,"*")}}():function(e){setTimeout(e,0)},n=function(e){return typeof e=="function"},r=function(e){this._res=e,this._isFulfilled=typeof e!="undefined",this._isRejected=!1,this._fulfilledCallbacks=[],this._rejectedCallbacks=[]};r.prototype={valueOf:function(){return this._res},isFulfilled:function(){return this._isFulfilled},isRejected:function(){return this._isRejected},isResolved:function(){return this._isFulfilled||this._isRejected},fulfill:function(e){if(this.isResolved())return;this._isFulfilled=!0,this._res=e,this._callCallbacks(this._fulfilledCallbacks),this._fulfilledCallbacks=this._rejectedCallbacks=null},reject:function(e){if(this.isResolved())return;this._isRejected=!0,this._res=e,this._callCallbacks(this._rejectedCallbacks),this._fulfilledCallbacks=this._rejectedCallbacks=null},then:function(e,t){var n=new r,i;return this._isRejected||(i={promise:n,fn:e},this._isFulfilled?this._callCallbacks([i]):this._fulfilledCallbacks.push(i)),this._isFulfilled||(i={promise:n,fn:t},this._isRejected?this._callCallbacks([i]):this._rejectedCallbacks.push(i)),n},fail:function(e){return this.then(null,e)},spread:function(e,t){return this.then(function(t){return e.apply(this,t)},t)},_callCallbacks:function(e){if(!e.length)return;var r=this._res,s=this.isFulfilled();t(function(){var t=0,o=e.length,u;while(t<o){var a=(u=e[t++]).promise,f=u.fn;if(n(f)){var l;try{l=f(r)}catch(c){a.reject(c);continue}i.isPromise(l)?function(e){l.then(function(t){e.fulfill(t)},function(t){e.reject(t)})}(a):a.fulfill(l)}else s?a.fulfill(r):a.reject(r)}})}};var i={promise:function(e){return new r(e)},when:function(e,t,n){return(this.isPromise(e)?e:new r(e)).then(t,n)},isPromise:function(e){return e&&n(e.then)},isFulfilled:function(e){return this.isPromise(e)?e.isFulfilled():!0},isRejected:function(e){return this.isPromise(e)?e.isRejected():!1},isResolved:function(e){return this.isPromise(e)?e.isResolved():!0},fulfill:function(e){return this.when(e,null,function(e){return e})},reject:function(e){return this.when(e,function(e){var t=new r;return t.reject(e),t})},resolve:function(e){return this.isPromise(e)?e:this.when(e)},forEach:function(e,t,n){var r=0,i=e.length;while(r<i)this.when(e[r++],t,n)},all:function(e){var t=new r,n=e.length;if(n){var i=function(){if(!--n){var r=[],i;while(i=e[n++])r.push(i.valueOf());t.fulfill(r)}},s=function(e){t.reject(e)};this.forEach(e,i,s)}else t.fulfill([]);return t},allResolved:function(e){var t=new r,n=e.length;if(n){var i=function(){--n||t.fulfill(e)};this.forEach(e,i,i)}else t.fulfill(e);return t},any:function(e){var t=new r,n=e.length;if(n){var i=0,s,o=function(e){t.fulfill(e)},u=function(e){i||(s=e),++i===n&&t.reject(s)};this.forEach(e,o,u)}else t.reject(Error());return t},timeout:function(e,t){var n=new r,i=setTimeout(function(){n.reject(Error("timed out"))},t);return e.then(function(e){clearTimeout(i),n.fulfill(e)},function(e){clearTimeout(i),n.reject(e)}),n}};typeof exports=="object"?module.exports=i:typeof define=="function"?define(function(e,t,n){n.exports=i}):e.Vow=i})(this);
* @version 0.1.6
*/(function(e){var t,n=typeof process=="object"?process.nextTick:e.setImmediate?e.setImmediate:e.postMessage?function(){var t=[],n="__promise"+ +(new Date),r=function(e){if(e.data===n){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var r=t,i=0,s=t.length;t=[];while(i<s)r[i++]()}};return e.addEventListener?e.addEventListener("message",r,!0):e.attachEvent("onmessage",r),function(r){t.push(r)===1&&e.postMessage(n,"*")}}():function(e){setTimeout(e,0)},r=function(e){n(function(){throw e})},i=function(e){return typeof e=="function"},s=function(e){this._res=e,this._isFulfilled=typeof e!="undefined",this._isRejected=!1,this._fulfilledCallbacks=[],this._rejectedCallbacks=[]};s.prototype={valueOf:function(){return this._res},isFulfilled:function(){return this._isFulfilled},isRejected:function(){return this._isRejected},isResolved:function(){return this._isFulfilled||this._isRejected},fulfill:function(e){if(this.isResolved())return;this._isFulfilled=!0,this._res=e,this._callCallbacks(this._fulfilledCallbacks),this._fulfilledCallbacks=this._rejectedCallbacks=t},reject:function(e){if(this.isResolved())return;this._isRejected=!0,this._res=e,this._callCallbacks(this._rejectedCallbacks),this._fulfilledCallbacks=this._rejectedCallbacks=t},then:function(e,t){var n=new s,r;return this._isRejected||(r={promise:n,fn:e},this._isFulfilled?this._callCallbacks([r]):this._fulfilledCallbacks.push(r)),this._isFulfilled||(r={promise:n,fn:t},this._isRejected?this._callCallbacks([r]):this._rejectedCallbacks.push(r)),n},fail:function(e){return this.then(t,e)},spread:function(e,t){return this.then(function(t){return e.apply(this,t)},t)},done:function(){this.fail(r)},_callCallbacks:function(e){if(!e.length)return;var t=this._res,r=this.isFulfilled();n(function(){var n=0,s=e.length,u;while(n<s){var a=(u=e[n++]).promise,f=u.fn;if(i(f)){var l;try{l=f(t)}catch(c){a.reject(c);continue}o.isPromise(l)?function(e){l.then(function(t){e.fulfill(t)},function(t){e.reject(t)})}(a):a.fulfill(l)}else r?a.fulfill(t):a.reject(t)}})}};var o={promise:function(e){return new s(e)},when:function(e,t,n){return(this.isPromise(e)?e:new s(e)).then(t,n)},fail:function(e,n){return this.when(e,t,n)},spread:function(e,t,n){return(this.isPromise(e)?e:new s(e)).spread(t,n)},done:function(e){this.isPromise(e)&&e.done()},isPromise:function(e){return e&&i(e.then)},isFulfilled:function(e){return this.isPromise(e)?e.isFulfilled():!0},isRejected:function(e){return this.isPromise(e)?e.isRejected():!1},isResolved:function(e){return this.isPromise(e)?e.isResolved():!0},fulfill:function(e){return this.when(e,t,function(e){return e})},reject:function(e){return this.when(e,function(e){var t=new s;return t.reject(e),t})},resolve:function(e){return this.isPromise(e)?e:this.when(e)},forEach:function(e,t,n){var r=0,i=e.length;while(r<i)this.when(e[r++],t,n)},all:function(e){var t=new s,n=e.length;if(n){var r=function(){if(!--n){var r=[],i;while(i=e[n++])r.push(i.valueOf());t.fulfill(r)}},i=function(e){t.reject(e)};this.forEach(e,r,i)}else t.fulfill([]);return t},allResolved:function(e){var t=new s,n=e.length;if(n){var r=function(){--n||t.fulfill(e)};this.forEach(e,r,r)}else t.fulfill(e);return t},any:function(e){var t=new s,n=e.length;if(n){var r=0,i,o=function(e){t.fulfill(e)},u=function(e){r||(i=e),++r===n&&t.reject(i)};this.forEach(e,o,u)}else t.reject(Error());return t},timeout:function(e,t){var n=new s,r=setTimeout(function(){n.reject(Error("timed out"))},t);return e.then(function(e){clearTimeout(r),n.fulfill(e)},function(e){clearTimeout(r),n.reject(e)}),n}};typeof exports=="object"?module.exports=o:typeof define=="function"?define(function(e,t,n){n.exports=o}):e.Vow=o})(this);
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc