Comparing version 2.0.1 to 2.0.2
{ | ||
"name": "q", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"publishConfig": { | ||
"tag": "future" | ||
}, | ||
"description": "A library for promises (CommonJS/Promises/A,B,D)", | ||
@@ -41,7 +44,7 @@ "homepage": "https://github.com/kriskowal/q", | ||
"asap": "^1.0.0", | ||
"collections": "^2.0.0" | ||
"collections": ">=2.0.1 <3.0.0" | ||
}, | ||
"devDependencies": { | ||
"jshint": "^2.4.4", | ||
"jasminum": "^2.0.1", | ||
"jasminum": ">=2.0.5 <3.0.0", | ||
"opener": "^1.3.0", | ||
@@ -61,3 +64,3 @@ "promises-aplus-tests": "^1.0.2", | ||
"lint": "jshint q.js", | ||
"test": "npm run lint && jasminum test && promises-aplus-tests test/aplus-adapter", | ||
"test": "npm run lint && jasminum test && npm run test:phantom && promises-aplus-tests test/aplus-adapter", | ||
"test:phantom": "jasminum-phantom test", | ||
@@ -64,0 +67,0 @@ "cover": "istanbul cover test/index.js && istanbul report html && opener coverage/index.html", |
163
q.js
@@ -1,2 +0,2 @@ | ||
// vim:ts=4:sts=4:sw=4: | ||
/* vim:ts=4:sts=4:sw=4: */ | ||
/*! | ||
@@ -184,3 +184,3 @@ * | ||
function Q_inspect(promise) { | ||
function Q_getHandler(promise) { | ||
var handler = handlers.get(promise); | ||
@@ -206,3 +206,3 @@ if (!handler || !handler.became) { | ||
var theViciousCycleRejection = Q_reject(theViciousCycleError); | ||
var theViciousCycle = Q_inspect(theViciousCycleRejection); | ||
var theViciousCycle = Q_getHandler(theViciousCycleRejection); | ||
@@ -329,3 +329,3 @@ var thenables = new WeakMap(); | ||
Q_isPromise(promise) && | ||
(handler = Q_inspect(promise)).state === "fulfilled" | ||
(handler = Q_getHandler(promise)).state === "fulfilled" | ||
) { | ||
@@ -630,3 +630,3 @@ answers[index] = handler.value; | ||
var deferred = defer(); | ||
handler = Q_inspect(deferred.promise); | ||
handler = Q_getHandler(deferred.promise); | ||
try { | ||
@@ -712,3 +712,3 @@ setup(deferred.resolve, deferred.reject, deferred.setEstimate); | ||
// handler. | ||
return Q_inspect(this).inspect(); | ||
return Q_getHandler(this).inspect(); | ||
}; | ||
@@ -720,3 +720,3 @@ | ||
Promise.prototype.isPending = function Promise_isPending() { | ||
return Q_inspect(this).state === "pending"; | ||
return Q_getHandler(this).state === "pending"; | ||
}; | ||
@@ -729,3 +729,3 @@ | ||
Promise.prototype.isFulfilled = function Promise_isFulfilled() { | ||
return Q_inspect(this).state === "fulfilled"; | ||
return Q_getHandler(this).state === "fulfilled"; | ||
}; | ||
@@ -738,6 +738,13 @@ | ||
Promise.prototype.isRejected = function Promise_isRejected() { | ||
return Q_inspect(this).state === "rejected"; | ||
return Q_getHandler(this).state === "rejected"; | ||
}; | ||
/** | ||
* TODO | ||
*/ | ||
Promise.prototype.toBePassed = function Promise_toBePassed() { | ||
return Q_getHandler(this).state === "passed"; | ||
}; | ||
/** | ||
* @returns {string} merely `"[object Promise]"` | ||
@@ -873,3 +880,3 @@ */ | ||
Q_inspect(self).dispatch(_fulfilled, "then", [_rejected]); | ||
Q_getHandler(self).dispatch(_fulfilled, "then", [_rejected]); | ||
}); | ||
@@ -956,3 +963,3 @@ }; | ||
Promise.prototype.observeEstimate = function Promise_observeEstimate(emit) { | ||
this.dispatch("estimate", [emit]); | ||
this.rawDispatch(null, "estimate", [emit]); | ||
return this; | ||
@@ -965,3 +972,3 @@ }; | ||
Promise.prototype.getEstimate = function Promise_getEstimate() { | ||
return Q_inspect(this).estimate; | ||
return Q_getHandler(this).estimate; | ||
}; | ||
@@ -983,3 +990,3 @@ | ||
asap(function Promise_dispatch_task() { | ||
Q_inspect(self).dispatch(resolve, op, args); | ||
Q_getHandler(self).dispatch(resolve, op, args); | ||
}); | ||
@@ -991,4 +998,4 @@ }; | ||
*/ | ||
Promise.prototype.get = function Promise_get(key) { | ||
return this.dispatch("get", [key]); | ||
Promise.prototype.get = function Promise_get(name) { | ||
return this.dispatch("get", [name]); | ||
}; | ||
@@ -1118,3 +1125,14 @@ | ||
/** | ||
* TODO | ||
*/ | ||
Promise.prototype.pass = function Promise_pass() { | ||
if (!this.toBePassed()) { | ||
return new Promise(new Passed(this)); | ||
} else { | ||
return this; | ||
} | ||
}; | ||
// Thus begins the portion dedicated to the deferred | ||
@@ -1146,3 +1164,3 @@ | ||
Deferred.prototype.resolve = function Deferred_resolve(value) { | ||
var handler = Q_inspect(promises.get(this)); | ||
var handler = Q_getHandler(promises.get(this)); | ||
if (!handler.messages) { | ||
@@ -1158,3 +1176,3 @@ return; | ||
Deferred.prototype.reject = function Deferred_reject(reason) { | ||
var handler = Q_inspect(promises.get(this)); | ||
var handler = Q_getHandler(promises.get(this)); | ||
if (!handler.messages) { | ||
@@ -1177,3 +1195,3 @@ return; | ||
} | ||
var handler = Q_inspect(promises.get(this)); | ||
var handler = Q_getHandler(promises.get(this)); | ||
// TODO There is a bit of capability leakage going on here. The Deferred | ||
@@ -1241,12 +1259,34 @@ // should only be able to set the estimate for its original | ||
Fulfilled.prototype.invoke = function Fulfilled_invoke( | ||
name, args | ||
) { | ||
return this.value[name].apply(this.value, args); | ||
Fulfilled.prototype.call = function Fulfilled_call(args, thisp) { | ||
return this.callInvoke(this.value, args, thisp); | ||
}; | ||
Fulfilled.prototype.call = function Fulfilled_call(args, thisp) { | ||
return this.value.apply(thisp, args); | ||
Fulfilled.prototype.invoke = function Fulfilled_invoke(name, args) { | ||
return this.callInvoke(this.value[name], args, this.value); | ||
}; | ||
Fulfilled.prototype.callInvoke = function Fulfilled_callInvoke(callback, args, thisp) { | ||
var waitToBePassed; | ||
for (var index = 0; index < args.length; index++) { | ||
if (Q_isPromise(args[index]) && args[index].toBePassed()) { | ||
waitToBePassed = waitToBePassed || []; | ||
waitToBePassed.push(args[index]); | ||
} | ||
} | ||
if (waitToBePassed) { | ||
var self = this; | ||
return Q_all(waitToBePassed).then(function () { | ||
return self.callInvoke(callback, args.map(function (arg) { | ||
if (Q_isPromise(arg) && arg.toBePassed()) { | ||
return arg.inspect().value; | ||
} else { | ||
return arg; | ||
} | ||
}), thisp); | ||
}); | ||
} else { | ||
return callback.apply(thisp, args); | ||
} | ||
}; | ||
Fulfilled.prototype.keys = function Fulfilled_keys() { | ||
@@ -1337,3 +1377,3 @@ return Object.keys(this.value); | ||
this.became = theViciousCycle; | ||
var handler = Q_inspect(promise); | ||
var handler = Q_getHandler(promise); | ||
this.became = handler; | ||
@@ -1348,3 +1388,3 @@ | ||
asap(function Pending_become_eachMessage_task() { | ||
var handler = Q_inspect(promise); | ||
var handler = Q_getHandler(promise); | ||
handler.dispatch.apply(handler, message); | ||
@@ -1393,3 +1433,3 @@ }); | ||
}); | ||
this.became = Q_inspect(deferred.promise); | ||
this.became = Q_getHandler(deferred.promise); | ||
} | ||
@@ -1404,2 +1444,17 @@ return this.became; | ||
function Passed(promise) { | ||
this.promise = promise; | ||
} | ||
Passed.prototype.state = "passed"; | ||
Passed.prototype.inspect = function Passed_inspect() { | ||
return this.promise.inspect(); | ||
}; | ||
Passed.prototype.dispatch = function Passed_dispatch(resolve, op, args) { | ||
return this.promise.rawDispatch(resolve, op, args); | ||
}; | ||
// Thus begins the Q Node.js bridge | ||
@@ -1423,3 +1478,3 @@ | ||
var deferred = Q.defer(); | ||
args[index - 2] = makeNodebackResolver(deferred.resolve); | ||
args[index - 2] = deferred.makeNodeResolver(); | ||
Q(object).dispatch("invoke", [name, args]).catch(deferred.reject); | ||
@@ -1429,2 +1484,13 @@ return deferred.promise; | ||
Promise.prototype.ninvoke = function Promise_ninvoke(name /*...args*/) { | ||
var args = new Array(arguments.length); | ||
for (var index = 1; index < arguments.length; index++) { | ||
args[index - 1] = arguments[index]; | ||
} | ||
var deferred = Q.defer(); | ||
args[index - 1] = deferred.makeNodeResolver(); | ||
this.dispatch("invoke", [name, args]).catch(deferred.reject); | ||
return deferred.promise; | ||
}; | ||
/** | ||
@@ -1446,3 +1512,3 @@ * Wraps a Node.js continuation passing function and returns an equivalent | ||
var deferred = Q.defer(); | ||
args[index] = makeNodebackResolver(deferred.resolve, pattern); | ||
args[index] = deferred.makeNodeResolver(pattern); | ||
Q(callback).apply(this, args).catch(deferred.reject); | ||
@@ -1456,8 +1522,13 @@ return deferred.promise; | ||
* promise. | ||
* TODO | ||
* @param unpack `true` means that the Node.js-style-callback accepts a | ||
* fixed or variable number of arguments and that the deferred should be resolved | ||
* with an array of these value arguments, or rejected with the error argument. | ||
* An array of names means that the Node.js-style-callback accepts a fixed | ||
* number of arguments, and that the resolution should be an object with | ||
* properties corresponding to the given names and respective value arguments. | ||
* @returns a nodeback | ||
* @private | ||
*/ | ||
function makeNodebackResolver(resolve, names) { | ||
if (names === true) { | ||
Deferred.prototype.makeNodeResolver = function (unpack) { | ||
var resolve = this.resolve; | ||
if (unpack === true) { | ||
return function variadicNodebackToResolver(error) { | ||
@@ -1474,3 +1545,3 @@ if (error) { | ||
}; | ||
} else if (names) { | ||
} else if (unpack) { | ||
return function namedArgumentNodebackToResolver(error) { | ||
@@ -1481,4 +1552,4 @@ if (error) { | ||
var value = {}; | ||
for (var index in names) { | ||
value[names[index]] = arguments[index + 1]; | ||
for (var index in unpack) { | ||
value[unpack[index]] = arguments[index + 1]; | ||
} | ||
@@ -1497,3 +1568,3 @@ resolve(value); | ||
} | ||
} | ||
}; | ||
@@ -1685,3 +1756,3 @@ /** | ||
var nodeArgs = Array.prototype.slice.call(args); | ||
nodeArgs.push(makeNodebackResolver(deferred.resolve)); | ||
nodeArgs.push(deferred.makeNodeResolver()); | ||
Q(callback).apply(this, nodeArgs).catch(deferred.reject); | ||
@@ -1713,3 +1784,3 @@ return deferred.promise; | ||
var deferred = Q.defer(); | ||
nodeArgs.push(makeNodebackResolver(deferred.resolve)); | ||
nodeArgs.push(deferred.makeNodeResolver()); | ||
Q(callback).apply(this, nodeArgs).catch(deferred.reject); | ||
@@ -1733,3 +1804,3 @@ return deferred.promise; | ||
var deferred = Q.defer(); | ||
nodeArgs.push(makeNodebackResolver(deferred.resolve)); | ||
nodeArgs.push(deferred.makeNodeResolver()); | ||
function bound() { | ||
@@ -1745,3 +1816,3 @@ return callback.apply(thisp, arguments); | ||
var deferred = Q.defer(); | ||
nodeArgs.push(makeNodebackResolver(deferred.resolve)); | ||
nodeArgs.push(deferred.makeNodeResolver()); | ||
Q(object).dispatch("invoke", [name, nodeArgs]).catch(deferred.reject); | ||
@@ -1755,12 +1826,2 @@ return deferred.promise; | ||
Q.makeNodeResolver = deprecate(makeNodebackResolver, "makeNodeResolver"); | ||
Promise.prototype.ninvoke = deprecate(function (name) { | ||
var args = new Array(arguments.length - 1); | ||
for (var index = 1; index < arguments.length; index++) { | ||
args[index - 1] = arguments[index]; | ||
} | ||
return Q.npost(this, name, args); | ||
}, "ninvoke", "Q.ninvoke"); | ||
Q.nmapply = deprecate(Q.nmapply, "nmapply", "q/node nmapply"); | ||
@@ -1767,0 +1828,0 @@ Promise.prototype.nmapply = deprecate(Promise.prototype.npost, "nmapply", "Q.nmapply"); |
@@ -216,3 +216,3 @@ | ||
var deferred = Q.defer(); | ||
var callback = Q.makeNodeResolver(deferred.resolve); | ||
var callback = deferred.makeNodeResolver(); | ||
callback(null, 10); | ||
@@ -227,3 +227,3 @@ deferred.promise.then(function (value) { | ||
var deferred = Q.defer(); | ||
var callback = Q.makeNodeResolver(deferred.resolve); | ||
var callback = deferred.makeNodeResolver(); | ||
var exception = new Error("Holy Exception of Anitoch"); | ||
@@ -230,0 +230,0 @@ callback(exception); |
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
Mixed license
License(Experimental) Package contains multiple licenses.
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
Mixed license
License(Experimental) Package contains multiple licenses.
Found 1 instance in 1 package
166822
20
3862
Updatedcollections@>=2.0.1 <3.0.0