UNPKG

q

Version:

A library for promises (CommonJS/Promises/A,B,D)

168 lines (141 loc) 5.88 kB
# vim:ts=4:sts=4:sw=4:et:tw=60 0.4.0 - BACKWARD INCOMPATIBLE* - *Removed the utility modules. NPM and Node no longer expose any module except the main module. These have been moved and merged into the "qq" package. - *In a non-CommonJS browser, q.js can be used as a script. It now creates a Q global variable. - Fixed thenable assimilation. - Fixed some issues with asap, when it resolves to undefined, or throws an exception. 0.3.0 - BACKWARD-INCOMPATIBLE - The `post` method has been reverted to its original signature, as provided in Tyler Close's `ref_send` API. That is, `post` accepts two arguments, the second of which is an arbitrary object, but usually invocation arguments as an `Array`. To provide variadic arguments to `post`, there is a new `invoke` function that posts the variadic arguments to the value given in the first argument. - The `defined` method has been moved from `q` to `q/util` since it gets no use in practice but is still theoretically useful. - The `Promise` constructor has been renamed to `makePromise` to be consistent with the convention that functions that do not require the `new` keyword to be used as constructors have camelCase names. - The `isResolved` function has been renamed to `isFulfilled`. There is a new `isResolved` function that indicates whether a value is not a promise or, if it is a promise, whether it has been either fulfilled or rejected. The code has been revised to reflect this nuance in terminology. 0.2.10 - Added `join` to `"q/util"` for variadically joining multiple promises. 0.2.9 - The future-compatible `invoke` method has been added, to replace `post`, since `post` will become backward- incompatible in the next major release. - Exceptions thrown in the callbacks of a `when` call are now emitted to Node's `"uncaughtException"` `process` event in addition to being returned as a rejection reason. 0.2.8 - Exceptions thrown in the callbacks of a `when` call are now consumed, warned, and transformed into rejections of the promise returned by `when`. 0.2.7 - Fixed a minor bug in thenable assimilation, regressed because of the change in the forwarding protocol. - Fixed behavior of "q/util" `deep` method on dates and other primitives. Github issue #11. 0.2.6 - Thenables (objects with a "then" method) are accepted and provided, bringing this implementation of Q into conformance with Promises/A, B, and D. - Added `makePromise`, to replace the `Promise` function eventually. - Rejections are now also duck-typed. A rejection is a promise with a valueOf method that returns a rejection descriptor. A rejection descriptor has a "promiseRejected" property equal to "true" and a "reason" property corresponding to the rejection reason. - Altered the `makePromise` API such that the `fallback` method no longer receives a superfluous `resolved` method after the `operator`. The fallback method is responsible only for returning a resolution. This breaks an undocumented API, so third-party API's depending on the previous undocumented behavior may break. 0.2.5 - Changed promises into a duck-type such that multiple instances of the Q module can exchange promise objects. A promise is now defined as "an object that implements the `promiseSend(op, resolved, ...)` method and `valueOf`". - Exceptions in promises are now captured and returned as rejections. 0.2.4 - Fixed bug in `ref` that prevented `del` messages from being received (gozala) - Fixed a conflict with FireFox 4; constructor property is now read-only. 0.2.3 - Added `keys` message to promises and to the promise API. 0.2.2 - Added boilerplate to `q/queue` and `q/util`. - Fixed missing dependency to `q/queue`. 0.2.1 - The `resolve` and `reject` methods of `defer` objects now return the resolution promise for convenience. - Added `q/util`, which provides `step`, `delay`, `shallow`, `deep`, and three reduction orders. - Added `q/queue` module for a promise `Queue`. - Added `q-comm` to the list of compatible libraries. - Deprecated `defined` from `q`, with intent to move it to `q/util`. 0.2.0 - BACKWARD INCOMPATIBLE - Changed post(ref, name, args) to variadic post(ref, name, ...args). BACKWARD INCOMPATIBLE - Added a def(value) method to annotate an object as being necessarily a local value that cannot be serialized, such that inter-process/worker/vat promise communication libraries will send messages to it, but never send it back. - Added a send(value, op, ...args) method to the public API, for forwarding messages to a value or promise in a future turn. 0.1.9 - Added isRejected() for testing whether a value is a rejected promise. isResolved() retains the behavior of stating that rejected promises are not resolved. 0.1.8 - Fixed isResolved(null) and isResolved(undefined) [issue #9] - Fixed a problem with the Object.create shim 0.1.7 - shimmed ES5 Object.create in addition to Object.freeze for compatibility on non-ES5 engines (gozala) 0.1.6 - Q.isResolved added - promise.valueOf() now returns the value of resolved and near values - asap retried - promises are frozen when possible 0.1.5 - fixed dependency list for Teleport (gozala) - all unit tests now pass (gozala) 0.1.4 - added support for Teleport as an engine (gozala) - simplified and updated methods for getting internal print and enqueue functions universally (gozala) 0.1.3 - fixed erroneous link to the q module in package.json 0.1.2 - restructured for overlay style package compatibility 0.1.0 - removed asap because it was broken, probably down to the philosophy. 0.0.3 - removed q-util - fixed asap so it returns a value if completed 0.0.2 - added q-util 0.0.1 - initial version