You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
800 lines
29 KiB
800 lines
29 KiB
|
|
## 1.5.1 |
|
|
|
- Q.any now annotates its error message to clarify that Q.any was involved and |
|
includes only the last error emitted. (Ivan Etchart) |
|
- Avoid domain.dispose during tests in preparation for Node.js 9. (Anna |
|
Henningsen) |
|
|
|
## 1.5.0 |
|
|
|
- Q.any gives an error message from the last rejected promise |
|
- Throw if callback supplied to "finally" is invalid (@grahamrhay) |
|
- Long stack trace improvements, can now construct long stack traces |
|
across rethrows. |
|
|
|
## 1.4.1 |
|
|
|
- Address an issue that prevented Q from being used as a `<script>` for |
|
Firefox add-ons. Q can now be used in any environment that provides `window` |
|
or `self` globals, favoring `window` since add-ons have an an immutable |
|
`self` that is distinct from `window`. |
|
|
|
## 1.4.0 |
|
|
|
- Add `noConflict` support for use in `<script>` (@jahnjw). |
|
|
|
## 1.3.0 |
|
|
|
- Add tracking for unhandled and handled rejections in Node.js (@benjamingr). |
|
|
|
## 1.2.1 |
|
|
|
- Fix Node.js environment detection for modern Browserify (@kahnjw). |
|
|
|
## 1.2.0 |
|
|
|
- Added Q.any(promisesArray) method (@vergara). |
|
Returns a promise fulfilled with the value of the first resolved promise in |
|
promisesArray. If all promises in promisesArray are rejected, it returns |
|
a rejected promise. |
|
|
|
## 1.1.2 |
|
|
|
- Removed extraneous files from the npm package by using the "files" |
|
whitelist in package.json instead of the .npmignore blacklist. |
|
(@anton-rudeshko) |
|
|
|
## 1.1.1 |
|
|
|
- Fix a pair of regressions in bootstrapping, one which precluded |
|
WebWorker support, and another that precluded support in |
|
``<script>`` usage outright. #607 |
|
|
|
## 1.1.0 |
|
|
|
- Adds support for enabling long stack traces in node.js by setting |
|
environment variable `Q_DEBUG=1`. |
|
- Introduces the `tap` method to promises, which will see a value |
|
pass through without alteration. |
|
- Use instanceof to recognize own promise instances as opposed to |
|
thenables. |
|
- Construct timeout errors with `code === ETIMEDOUT` (Kornel Lesiński) |
|
- More descriminant CommonJS module environment detection. |
|
- Dropped continuous integration for Node.js 0.6 and 0.8 because of |
|
changes to npm that preclude the use of new `^` version predicate |
|
operator in any transitive dependency. |
|
- Users can now override `Q.nextTick`. |
|
|
|
## 1.0.1 |
|
|
|
- Adds support for `Q.Promise`, which implements common usage of the |
|
ES6 `Promise` constructor and its methods. `Promise` does not have |
|
a valid promise constructor and a proper implementation awaits |
|
version 2 of Q. |
|
- Removes the console stopgap for a promise inspector. This no longer |
|
works with any degree of reliability. |
|
- Fixes support for content security policies that forbid eval. Now |
|
using the `StopIteration` global to distinguish SpiderMonkey |
|
generators from ES6 generators, assuming that they will never |
|
coexist. |
|
|
|
## 1.0.0 |
|
|
|
:cake: This is all but a re-release of version 0.9, which has settled |
|
into a gentle maintenance mode and rightly deserves an official 1.0. |
|
An ambitious 2.0 release is already around the corner, but 0.9/1.0 |
|
have been distributed far and wide and demand long term support. |
|
|
|
- Q will now attempt to post a debug message in browsers regardless |
|
of whether window.Touch is defined. Chrome at least now has this |
|
property regardless of whether touch is supported by the underlying |
|
hardware. |
|
- Remove deprecation warning from `promise.valueOf`. The function is |
|
called by the browser in various ways so there is no way to |
|
distinguish usage that should be migrated from usage that cannot be |
|
altered. |
|
|
|
## 0.9.7 |
|
|
|
- :warning: `q.min.js` is no longer checked-in. It is however still |
|
created by Grunt and NPM. |
|
- Fixes a bug that inhibited `Q.async` with implementations of the new |
|
ES6 generators. |
|
- Fixes a bug with `nextTick` affecting Safari 6.0.5 the first time a |
|
page loads when an `iframe` is involved. |
|
- Introduces `passByCopy`, `join`, and `race`. |
|
- Shows stack traces or error messages on the console, instead of |
|
`Error` objects. |
|
- Elimintates wrapper methods for improved performance. |
|
- `Q.all` now propagates progress notifications of the form you might |
|
expect of ES6 iterations, `{value, index}` where the `value` is the |
|
progress notification from the promise at `index`. |
|
|
|
## 0.9.6 |
|
|
|
- Fixes a bug in recognizing the difference between compatible Q |
|
promises, and Q promises from before the implementation of "inspect". |
|
The latter are now coerced. |
|
- Fixes an infinite asynchronous coercion cycle introduced by former |
|
solution, in two independently sufficient ways. 1.) All promises |
|
returned by makePromise now implement "inspect", albeit a default |
|
that reports that the promise has an "unknown" state. 2.) The |
|
implementation of "then/when" is now in "then" instead of "when", so |
|
that the responsibility to "coerce" the given promise rests solely in |
|
the "when" method and the "then" method may assume that "this" is a |
|
promise of the right type. |
|
- Refactors `nextTick` to use an unrolled microtask within Q regardless |
|
of how new ticks a requested. #316 @rkatic |
|
|
|
## 0.9.5 |
|
|
|
- Introduces `inspect` for getting the state of a promise as |
|
`{state: "fulfilled" | "rejected" | "pending", value | reason}`. |
|
- Introduces `allSettled` which produces an array of promises states |
|
for the input promises once they have all "settled". This is in |
|
accordance with a discussion on Promises/A+ that "settled" refers to |
|
a promise that is "fulfilled" or "rejected". "resolved" refers to a |
|
deferred promise that has been "resolved" to another promise, |
|
"sealing its fate" to the fate of the successor promise. |
|
- Long stack traces are now off by default. Set `Q.longStackSupport` |
|
to true to enable long stack traces. |
|
- Long stack traces can now follow the entire asynchronous history of a |
|
promise, not just a single jump. |
|
- Introduces `spawn` for an immediately invoked asychronous generator. |
|
@jlongster |
|
- Support for *experimental* synonyms `mapply`, `mcall`, `nmapply`, |
|
`nmcall` for method invocation. |
|
|
|
## 0.9.4 |
|
|
|
- `isPromise` and `isPromiseAlike` now always returns a boolean |
|
(even for falsy values). #284 @lfac-pt |
|
- Support for ES6 Generators in `async` #288 @andywingo |
|
- Clear duplicate promise rejections from dispatch methods #238 @SLaks |
|
- Unhandled rejection API #296 @domenic |
|
`stopUnhandledRejectionTracking`, `getUnhandledReasons`, |
|
`resetUnhandledRejections`. |
|
|
|
## 0.9.3 |
|
|
|
- Add the ability to give `Q.timeout`'s errors a custom error message. #270 |
|
@jgrenon |
|
- Fix Q's call-stack busting behavior in Node.js 0.10, by switching from |
|
`process.nextTick` to `setImmediate`. #254 #259 |
|
- Fix Q's behavior when used with the Mocha test runner in the browser, since |
|
Mocha introduces a fake `process` global without a `nextTick` property. #267 |
|
- Fix some, but not all, cases wherein Q would give false positives in its |
|
unhandled rejection detection (#252). A fix for other cases (#238) is |
|
hopefully coming soon. |
|
- Made `Q.promise` throw early if given a non-function. |
|
|
|
## 0.9.2 |
|
|
|
- Pass through progress notifications when using `timeout`. #229 @omares |
|
- Pass through progress notifications when using `delay`. |
|
- Fix `nbind` to actually bind the `thisArg`. #232 @davidpadbury |
|
|
|
## 0.9.1 |
|
|
|
- Made the AMD detection compatible with the RequireJS optimizer's `namespace` |
|
option. #225 @terinjokes |
|
- Fix side effects from `valueOf`, and thus from `isFulfilled`, `isRejected`, |
|
and `isPending`. #226 @benjamn |
|
|
|
## 0.9.0 |
|
|
|
This release removes many layers of deprecated methods and brings Q closer to |
|
alignment with Mark Miller’s TC39 [strawman][] for concurrency. At the same |
|
time, it fixes many bugs and adds a few features around error handling. Finally, |
|
it comes with an updated and comprehensive [API Reference][]. |
|
|
|
[strawman]: http://wiki.ecmascript.org/doku.php?id=strawman:concurrency |
|
[API Reference]: https://github.com/kriskowal/q/wiki/API-Reference |
|
|
|
### API Cleanup |
|
|
|
The following deprecated or undocumented methods have been removed. |
|
Their replacements are listed here: |
|
|
|
<table> |
|
<thead> |
|
<tr> |
|
<th>0.8.x method</th> |
|
<th>0.9 replacement</th> |
|
</tr> |
|
</thead> |
|
<tbody> |
|
<tr> |
|
<td><code>Q.ref</code></td> |
|
<td><code>Q</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>call</code>, <code>apply</code>, <code>bind</code> (*)</td> |
|
<td><code>fcall</code>/<code>invoke</code>, <code>fapply</code>/<code>post</code>, <code>fbind</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>ncall</code>, <code>napply</code> (*)</td> |
|
<td><code>nfcall</code>/<code>ninvoke</code>, <code>nfapply</code>/<code>npost</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>end</code></td> |
|
<td><code>done</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>put</code></td> |
|
<td><code>set</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>node</code></td> |
|
<td><code>nbind</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>nend</code></td> |
|
<td><code>nodeify</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>isResolved</code></td> |
|
<td><code>isPending</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>deferred.node</code></td> |
|
<td><code>deferred.makeNodeResolver</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>Method</code>, <code>sender</code></td> |
|
<td><code>dispatcher</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>send</code></td> |
|
<td><code>dispatch</code></td> |
|
</tr> |
|
<tr> |
|
<td><code>view</code>, <code>viewInfo</code></td> |
|
<td>(none)</td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
|
|
|
|
(*) Use of ``thisp`` is discouraged. For calling methods, use ``post`` or |
|
``invoke``. |
|
|
|
### Alignment with the Concurrency Strawman |
|
|
|
- Q now exports a `Q(value)` function, an alias for `resolve`. |
|
`Q.call`, `Q.apply`, and `Q.bind` were removed to make room for the |
|
same methods on the function prototype. |
|
- `invoke` has been aliased to `send` in all its forms. |
|
- `post` with no method name acts like `fapply`. |
|
|
|
### Error Handling |
|
|
|
- Long stack traces can be turned off by setting `Q.stackJumpLimit` to zero. |
|
In the future, this property will be used to fine tune how many stack jumps |
|
are retained in long stack traces; for now, anything nonzero is treated as |
|
one (since Q only tracks one stack jump at the moment, see #144). #168 |
|
- In Node.js, if there are unhandled rejections when the process exits, they |
|
are output to the console. #115 |
|
|
|
### Other |
|
|
|
- `delete` and `set` (née `put`) no longer have a fulfillment value. |
|
- Q promises are no longer frozen, which |
|
[helps with performance](http://code.google.com/p/v8/issues/detail?id=1858). |
|
- `thenReject` is now included, as a counterpart to `thenResolve`. |
|
- The included browser `nextTick` shim is now faster. #195 @rkatic. |
|
|
|
### Bug Fixes |
|
|
|
- Q now works in Internet Explorer 10. #186 @ForbesLindesay |
|
- `fbind` no longer hard-binds the returned function's `this` to `undefined`. |
|
#202 |
|
- `Q.reject` no longer leaks memory. #148 |
|
- `npost` with no arguments now works. #207 |
|
- `allResolved` now works with non-Q promises ("thenables"). #179 |
|
- `keys` behavior is now correct even in browsers without native |
|
`Object.keys`. #192 @rkatic |
|
- `isRejected` and the `exception` property now work correctly if the |
|
rejection reason is falsy. #198 |
|
|
|
### Internals and Advanced |
|
|
|
- The internal interface for a promise now uses |
|
`dispatchPromise(resolve, op, operands)` instead of `sendPromise(op, |
|
resolve, ...operands)`, which reduces the cases where Q needs to do |
|
argument slicing. |
|
- The internal protocol uses different operands. "put" is now "set". |
|
"del" is now "delete". "view" and "viewInfo" have been removed. |
|
- `Q.fulfill` has been added. It is distinct from `Q.resolve` in that |
|
it does not pass promises through, nor coerces promises from other |
|
systems. The promise becomes the fulfillment value. This is only |
|
recommended for use when trying to fulfill a promise with an object that has |
|
a `then` function that is at the same time not a promise. |
|
|
|
## 0.8.12 |
|
- Treat foreign promises as unresolved in `Q.isFulfilled`; this lets `Q.all` |
|
work on arrays containing foreign promises. #154 |
|
- Fix minor incompliances with the [Promises/A+ spec][] and [test suite][]. #157 |
|
#158 |
|
|
|
[Promises/A+ spec]: http://promises-aplus.github.com/promises-spec/ |
|
[test suite]: https://github.com/promises-aplus/promises-tests |
|
|
|
## 0.8.11 |
|
|
|
- Added ``nfcall``, ``nfapply``, and ``nfbind`` as ``thisp``-less versions of |
|
``ncall``, ``napply``, and ``nbind``. The latter are now deprecated. #142 |
|
- Long stack traces no longer cause linearly-growing memory usage when chaining |
|
promises together. #111 |
|
- Inspecting ``error.stack`` in a rejection handler will now give a long stack |
|
trace. #103 |
|
- Fixed ``Q.timeout`` to clear its timeout handle when the promise is rejected; |
|
previously, it kept the event loop alive until the timeout period expired. |
|
#145 @dfilatov |
|
- Added `q/queue` module, which exports an infinite promise queue |
|
constructor. |
|
|
|
## 0.8.10 |
|
|
|
- Added ``done`` as a replacement for ``end``, taking the usual fulfillment, |
|
rejection, and progress handlers. It's essentially equivalent to |
|
``then(f, r, p).end()``. |
|
- Added ``Q.onerror``, a settable error trap that you can use to get full stack |
|
traces for uncaught errors. #94 |
|
- Added ``thenResolve`` as a shortcut for returning a constant value once a |
|
promise is fulfilled. #108 @ForbesLindesay |
|
- Various tweaks to progress notification, including propagation and |
|
transformation of progress values and only forwarding a single progress |
|
object. |
|
- Renamed ``nend`` to ``nodeify``. It no longer returns an always-fulfilled |
|
promise when a Node callback is passed. |
|
- ``deferred.resolve`` and ``deferred.reject`` no longer (sometimes) return |
|
``deferred.promise``. |
|
- Fixed stack traces getting mangled if they hit ``end`` twice. #116 #121 @ef4 |
|
- Fixed ``ninvoke`` and ``npost`` to work on promises for objects with Node |
|
methods. #134 |
|
- Fixed accidental coercion of objects with nontrivial ``valueOf`` methods, |
|
like ``Date``s, by the promise's ``valueOf`` method. #135 |
|
- Fixed ``spread`` not calling the passed rejection handler if given a rejected |
|
promise. |
|
|
|
## 0.8.9 |
|
|
|
- Added ``nend`` |
|
- Added preliminary progress notification support, via |
|
``promise.then(onFulfilled, onRejected, onProgress)``, |
|
``promise.progress(onProgress)``, and ``deferred.notify(...progressData)``. |
|
- Made ``put`` and ``del`` return the object acted upon for easier chaining. |
|
#84 |
|
- Fixed coercion cycles with cooperating promises. #106 |
|
|
|
## 0.8.7 |
|
|
|
- Support [Montage Require](http://github.com/kriskowal/mr) |
|
|
|
## 0.8.6 |
|
|
|
- Fixed ``npost`` and ``ninvoke`` to pass the correct ``thisp``. #74 |
|
- Fixed various cases involving unorthodox rejection reasons. #73 #90 |
|
@ef4 |
|
- Fixed double-resolving of misbehaved custom promises. #75 |
|
- Sped up ``Q.all`` for arrays contain already-resolved promises or scalar |
|
values. @ForbesLindesay |
|
- Made stack trace filtering work when concatenating assets. #93 @ef4 |
|
- Added warnings for deprecated methods. @ForbesLindesay |
|
- Added ``.npmignore`` file so that dependent packages get a slimmer |
|
``node_modules`` directory. |
|
|
|
## 0.8.5 |
|
|
|
- Added preliminary support for long traces (@domenic) |
|
- Added ``fapply``, ``fcall``, ``fbind`` for non-thisp |
|
promised function calls. |
|
- Added ``return`` for async generators, where generators |
|
are implemented. |
|
- Rejected promises now have an "exception" property. If an object |
|
isRejected(object), then object.valueOf().exception will |
|
be the wrapped error. |
|
- Added Jasmine specifications |
|
- Support Internet Explorers 7–9 (with multiple bug fixes @domenic) |
|
- Support Firefox 12 |
|
- Support Safari 5.1.5 |
|
- Support Chrome 18 |
|
|
|
## 0.8.4 |
|
|
|
- WARNING: ``promise.timeout`` is now rejected with an ``Error`` object |
|
and the message now includes the duration of the timeout in |
|
miliseconds. This doesn't constitute (in my opinion) a |
|
backward-incompatibility since it is a change of an undocumented and |
|
unspecified public behavior, but if you happened to depend on the |
|
exception being a string, you will need to revise your code. |
|
- Added ``deferred.makeNodeResolver()`` to replace the more cryptic |
|
``deferred.node()`` method. |
|
- Added experimental ``Q.promise(maker(resolve, reject))`` to make a |
|
promise inside a callback, such that thrown exceptions in the |
|
callback are converted and the resolver and rejecter are arguments. |
|
This is a shorthand for making a deferred directly and inspired by |
|
@gozala’s stream constructor pattern and the Microsoft Windows Metro |
|
Promise constructor interface. |
|
- Added experimental ``Q.begin()`` that is intended to kick off chains |
|
of ``.then`` so that each of these can be reordered without having to |
|
edit the new and former first step. |
|
|
|
## 0.8.3 |
|
|
|
- Added ``isFulfilled``, ``isRejected``, and ``isResolved`` |
|
to the promise prototype. |
|
- Added ``allResolved`` for waiting for every promise to either be |
|
fulfilled or rejected, without propagating an error. @utvara #53 |
|
- Added ``Q.bind`` as a method to transform functions that |
|
return and throw into promise-returning functions. See |
|
[an example](https://gist.github.com/1782808). @domenic |
|
- Renamed ``node`` export to ``nbind``, and added ``napply`` to |
|
complete the set. ``node`` remains as deprecated. @domenic #58 |
|
- Renamed ``Method`` export to ``sender``. ``Method`` |
|
remains as deprecated and will be removed in the next |
|
major version since I expect it has very little usage. |
|
- Added browser console message indicating a live list of |
|
unhandled errors. |
|
- Added support for ``msSetImmediate`` (IE10) or ``setImmediate`` |
|
(available via [polyfill](https://github.com/NobleJS/setImmediate)) |
|
as a browser-side ``nextTick`` implementation. #44 #50 #59 |
|
- Stopped using the event-queue dependency, which was in place for |
|
Narwhal support: now directly using ``process.nextTick``. |
|
- WARNING: EXPERIMENTAL: added ``finally`` alias for ``fin``, ``catch`` |
|
alias for ``fail``, ``try`` alias for ``call``, and ``delete`` alias |
|
for ``del``. These properties are enquoted in the library for |
|
cross-browser compatibility, but may be used as property names in |
|
modern engines. |
|
|
|
## 0.8.2 |
|
|
|
- Deprecated ``ref`` in favor of ``resolve`` as recommended by |
|
@domenic. |
|
- Update event-queue dependency. |
|
|
|
## 0.8.1 |
|
|
|
- Fixed Opera bug. #35 @cadorn |
|
- Fixed ``Q.all([])`` #32 @domenic |
|
|
|
## 0.8.0 |
|
|
|
- WARNING: ``enqueue`` removed. Use ``nextTick`` instead. |
|
This is more consistent with NodeJS and (subjectively) |
|
more explicit and intuitive. |
|
- WARNING: ``def`` removed. Use ``master`` instead. The |
|
term ``def`` was too confusing to new users. |
|
- WARNING: ``spy`` removed in favor of ``fin``. |
|
- WARNING: ``wait`` removed. Do ``all(args).get(0)`` instead. |
|
- WARNING: ``join`` removed. Do ``all(args).spread(callback)`` instead. |
|
- WARNING: Removed the ``Q`` function module.exports alias |
|
for ``Q.ref``. It conflicts with ``Q.apply`` in weird |
|
ways, making it uncallable. |
|
- Revised ``delay`` so that it accepts both ``(value, |
|
timeout)`` and ``(timeout)`` variations based on |
|
arguments length. |
|
- Added ``ref().spread(cb(...args))``, a variant of |
|
``then`` that spreads an array across multiple arguments. |
|
Useful with ``all()``. |
|
- Added ``defer().node()`` Node callback generator. The |
|
callback accepts ``(error, value)`` or ``(error, |
|
...values)``. For multiple value arguments, the |
|
fulfillment value is an array, useful in conjunction with |
|
``spread``. |
|
- Added ``node`` and ``ncall``, both with the signature |
|
``(fun, thisp_opt, ...args)``. The former is a decorator |
|
and the latter calls immediately. ``node`` optional |
|
binds and partially applies. ``ncall`` can bind and pass |
|
arguments. |
|
|
|
## 0.7.2 |
|
|
|
- Fixed thenable promise assimilation. |
|
|
|
## 0.7.1 |
|
|
|
- Stopped shimming ``Array.prototype.reduce``. The |
|
enumerable property has bad side-effects. Libraries that |
|
depend on this (for example, QQ) will need to be revised. |
|
|
|
## 0.7.0 - BACKWARD INCOMPATIBILITY |
|
|
|
- WARNING: Removed ``report`` and ``asap`` |
|
- WARNING: The ``callback`` argument of the ``fin`` |
|
function no longer receives any arguments. Thus, it can |
|
be used to call functions that should not receive |
|
arguments on resolution. Use ``when``, ``then``, or |
|
``fail`` if you need a value. |
|
- IMPORTANT: Fixed a bug in the use of ``MessageChannel`` |
|
for ``nextTick``. |
|
- Renamed ``enqueue`` to ``nextTick``. |
|
- Added experimental ``view`` and ``viewInfo`` for creating |
|
views of promises either when or before they're |
|
fulfilled. |
|
- Shims are now externally applied so subsequent scripts or |
|
dependees can use them. |
|
- Improved minification results. |
|
- Improved readability. |
|
|
|
## 0.6.0 - BACKWARD INCOMPATIBILITY |
|
|
|
- WARNING: In practice, the implementation of ``spy`` and |
|
the name ``fin`` were useful. I've removed the old |
|
``fin`` implementation and renamed/aliased ``spy``. |
|
- The "q" module now exports its ``ref`` function as a "Q" |
|
constructor, with module systems that support exports |
|
assignment including NodeJS, RequireJS, and when used as |
|
a ``<script>`` tag. Notably, strictly compliant CommonJS |
|
does not support this, but UncommonJS does. |
|
- Added ``async`` decorator for generators that use yield |
|
to "trampoline" promises. In engines that support |
|
generators (SpiderMonkey), this will greatly reduce the |
|
need for nested callbacks. |
|
- Made ``when`` chainable. |
|
- Made ``all`` chainable. |
|
|
|
## 0.5.3 |
|
|
|
- Added ``all`` and refactored ``join`` and ``wait`` to use |
|
it. All of these will now reject at the earliest |
|
rejection. |
|
|
|
## 0.5.2 |
|
|
|
- Minor improvement to ``spy``; now waits for resolution of |
|
callback promise. |
|
|
|
## 0.5.1 |
|
|
|
- Made most Q API methods chainable on promise objects, and |
|
turned the previous promise-methods of ``join``, |
|
``wait``, and ``report`` into Q API methods. |
|
- Added ``apply`` and ``call`` to the Q API, and ``apply`` |
|
as a promise handler. |
|
- Added ``fail``, ``fin``, and ``spy`` to Q and the promise |
|
prototype for convenience when observing rejection, |
|
fulfillment and rejection, or just observing without |
|
affecting the resolution. |
|
- Renamed ``def`` (although ``def`` remains shimmed until |
|
the next major release) to ``master``. |
|
- Switched to using ``MessageChannel`` for next tick task |
|
enqueue in browsers that support it. |
|
|
|
## 0.5.0 - MINOR BACKWARD INCOMPATIBILITY |
|
|
|
- Exceptions are no longer reported when consumed. |
|
- Removed ``error`` from the API. Since exceptions are |
|
getting consumed, throwing them in an errback causes the |
|
exception to silently disappear. Use ``end``. |
|
- Added ``end`` as both an API method and a promise-chain |
|
ending method. It causes propagated rejections to be |
|
thrown, which allows Node to write stack traces and |
|
emit ``uncaughtException`` events, and browsers to |
|
likewise emit ``onerror`` and log to the console. |
|
- Added ``join`` and ``wait`` as promise chain functions, |
|
so you can wait for variadic promises, returning your own |
|
promise back, or join variadic promises, resolving with a |
|
callback that receives variadic fulfillment values. |
|
|
|
## 0.4.4 |
|
|
|
- ``end`` no longer returns a promise. It is the end of the |
|
promise chain. |
|
- Stopped reporting thrown exceptions in ``when`` callbacks |
|
and errbacks. These must be explicitly reported through |
|
``.end()``, ``.then(null, Q.error)``, or some other |
|
mechanism. |
|
- Added ``report`` as an API method, which can be used as |
|
an errback to report and propagate an error. |
|
- Added ``report`` as a promise-chain method, so an error |
|
can be reported if it passes such a gate. |
|
|
|
## 0.4.3 |
|
|
|
- Fixed ``<script>`` support that regressed with 0.4.2 |
|
because of "use strict" in the module system |
|
multi-plexer. |
|
|
|
## 0.4.2 |
|
|
|
- Added support for RequireJS (jburke) |
|
|
|
## 0.4.1 |
|
|
|
- Added an "end" method to the promise prototype, |
|
as a shorthand for waiting for the promise to |
|
be resolved gracefully, and failing to do so, |
|
to dump an error message. |
|
|
|
## 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
|
|
|