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); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1267899
18409
153