Blame view
node_modules/q/CHANGES.md
29.1 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 |
## 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 |