7.1.0 (2021-05-21)
- returned operator functions from multicast operators
share
,publish
,publishReplay
are now referentially transparent. Meaning if you take the result of callingpublishReplay(3)
and pass it to more than one observable'spipe
method, it will behave the same in each case, rather than having a cumulative effect, which was a regression introduced sometime in version 6. If you required this broken behavior, there is a workaround posted here (#6410) (e2f2e51), closes /github.com/ReactiveX/rxjs/pull/6410#issuecomment-846087374 #5411
- All subjects now have an
observed
property. This will allow users to check whether a subject has current subscribers without us allowing access to theobservers
array, which is going to be made private in future versions. (#6405) (f47425d) - groupBy: Support named arguments, support ObservableInputs for duration selector (#5679) (7a99397)
- share: use another observable to control resets (#6169) (12c3716)
7.0.1 (2021-05-12)
- bindCallback: resulting function now recreated underlying Subject and is reusable once again. (#6369) (abf2bc1)
- retry: properly handles retry counts smaller than
1
. (#6359) (e797bd7) - share: properly closes synchronous "firehose" sources. (#6370) (2271a91)
- Observable teardowns now properly called if
useDeprecatedSynchronousErrorHandling
istrue
. (#6365) (e19e104), closes #6364 - Subscription: properly release parent subscriptions when unsubscribed. (#6352) (88331d2), closes #6351 #6351
- node: do not reference DOM-related imports to assist in node usage. (#6305) (b24818e), closes #6297
7.0.0 (2021-04-29)
- VS code will now properly auto-import operators, et al (#6276) (f43c728), closes #6067
- AjaxResponse: add stricter
type
(AjaxResponseType
) (#6279) (839e192)
7.0.0-rc.3 (2021-04-28)
- finalize behaves well with useDeprecatedSynchronousErrorHandling (#6251) (e4bed2a), closes #6250
- resolve run-time errors when using deprecated sync error handling (#6272) (35daaf7), closes #6271
- resolve issue that made users unable to assert
instanceof AjaxError
. (#6275) (a7c2d29)
- Our very new creation function,
connectable
, now takes a configuration object instead of just theSubject
instance. This was necessary to make sure it covered all use cases for what we were trying to replace in the deprecated multicasting operators. Apologies for the late-in-the-game change, but we know it's not widely used yet (it's new in v7), and we want to get it right.
7.0.0-rc.2 (2021-04-20)
7.0.0-rc.1 (2021-04-19)
- TypeScript: Add typesVersions definition to package.json in order to help VS Code find automatic imports. (#6067) (659a623)
7.0.0-rc.0 (2021-04-19)
- symbol: revert unique symbol in #5874 (#6224) (3c49429), closes #5919 #6178 #6175
- forkJoin/combineLatest return Observable if passed any (#6227) (ce0a2fa), closes #6226
- fromEvent: match targets properly; fix result selector type (#6208) (8412c73)
- merge: single array is not an array of sources (#6211) (4e900dc)
- pipe: Ensure that
unknown
is infered for 9+ arguments. (#6212) (6fa819b)
7.0.0-beta.15 (2021-03-31)
7.0.0-beta.14 (2021-03-30)
- ajax: Now allows configuration of query string parameters, via a
params
option in the request configuration (#6174) (980f4d4) - esm: Added exports within package.json to enable scoped package loading. (#6192) (33a9f06), closes sveltejs/kit#612 nodejs/node#27408
- ReadableStreams: RxJS now supports conversions for ReadableStreams e.g.
from(readableStream)
. (#6163) (19d6502)
7.0.0-beta.13 (2021-03-15)
- fromEvent: throw if passed invalid target (#6136) (317ba0c), closes #5823
- remove misused type parameter from static pipe (#6119) (8dc7d17), closes #5557
- Subscriber: don't leak destination (#6116) (5bba36c)
- combineLatest: POJO signature should match only ObservableInput values (#6103) (d633494)
- forkJoin: POJO signature should match only ObservableInput values (#6095) (566427e)
- predicates that return
any
will now behave property with findIndex (#6097) (c6f73d6) - remove misused type parameter from isObservable (#6083) (f16b634)
- unhandled errors in observers correctly scheduled (#6118) (c02ceb7)
- defaultIfEmpty: Allow
undefined
as an argument, require an argument (4983760), closes #6064 - elementAt: Allow
defaultValue
ofundefined
. (5bc1b3e) - first: Allow
defaultValue
ofundefined
. (62a6bbe) - last: Allow
defaultValue
ofundefined
. (ef3e721)
- defaultIfEmpty:
defaultIfEmpty
requires a value be passed. Will no longer convertundefined
tonull
for no good reason.
7.0.0-beta.12 (2021-02-27)
5bc8e3361 Fix/6052 ajax responseType should default to "json" (#6056)
- ajax:
responseType
is now properly defaulted to"json"
again. (#6056) (5bc8e3361) - Corner case resolved where an error thrown in a completion handler might delay teardown if it happened to be after a completing operator like
take
. (#6062) (a2b9563) - AsyncGenerator support: consumed async generators are now properly finalized. (#6062) (a2b9563), closes #5998
- throttle: no longer emits more than necessary in sync/sync trailing case (#6059) (9da638a), closes #6058
7.0.0-beta.11 (2021-02-24)
- ajax: now errors on forced abort (#6041) (d950921), closes #4251
- buffer: closingNotifier completion does not complete resulting observable (358ae84)
- buffer: Remaining buffer will correctly be emited on source close. (0c667d5), closes #3990 #6035
- debounceTime: improves performance on quick succession of emits (#6049) (9b70861)
- distinctUntilChanged: Ensure reentrant code is compared properly (#6014) (0ebcf17)
- share: Ensure proper memory clean up (1aa400a)
- window: final window stays open until source complete (e8b05ef)
- concat/merge: operators will finalize inners before moving to the next (#6010) (5249a23), closes #3338
- predicates that return
any
will now behave property in TS (#5987) (f5ae97d), closes #5986 publish
variants returningConnectableObservable
not properly utilizing lift (#6003) (9acb950)- Resolve issues with deprecated synchronous error handling and chained operators (#5980) (0ad2802), closes #5979
useDeprecatedSynchronousErrorThrowing
honored for flattened sync sources (#5984) (abd95ce), closes #5983
- ajax: Add option for streaming progress (#6001) (873e52d)
- exhaustAll: renamed
exhaust
toexhaustAll
(#5639) (701c7d4)
- window: The
windowBoundaries
observable no longer completes the result. It was only ever meant to notify of the window boundary. To get the same behavior as the old behavior, you would need to add anendWith
and askipLast(1)
like so:source$.pipe(window(notifier$.pipe(endWith(true))), skipLast(1))
. - buffer: Final buffered values will now always be emitted. To get the same behavior as the previous release, you can use
endWith
andskipLast(1)
, like so:source$.pipe(buffer(notifier$.pipe(endWith(true))), skipLast(1))
- buffer:
closingNotifier
completion no longer completes the result ofbuffer
. If that is truly a desired behavior, then you should usetakeUntil
. Something like:source$.pipe(buffer(notifier$), takeUntil(notifier$.pipe(ignoreElements(), endWith(true))))
, wherenotifier$
is multicast, although there are many ways to compose this behavior.
7.0.0-beta.10 (2021-01-18)
- combineLatest: Ensure
EMPTY
is returned if no observables are passed. (#5963) (157c7e8), closes #5962 - fromEvent: fixed HasEventTargetAddRemove to support EventTarget types (#5945) (5f022d7)
- connect: Adds new
connect
operator. (9d53af0) - connectable: Adds
connectable
creation method (f968a79) - share: Make
share
completely configurable. Also addsSubjectLike
. (2d600c7) - TestScheduler: add
expectObservable(a$).toEqual(b$)
. (3372c72)
- share: The TypeScript type
Subscribable
now only supports what is a valid return for[Symbol.observable]()
. - share: The TypeScript type
Observer
no longer incorrectly has an optionalclosed
property.
7.0.0-beta.9 (2020-12-07)
- audit: don't signal on complete (54cb428)
- bufferToggle: don't signal on complete (65686ff)
- bufferWhen: don't signal on complete (a2ba364)
- debounce: don't signal on complete (c919c68)
- delayWhen: no longer emits if duration selector is empty (#5769) (0872341), closes #3665
- forkJoin: ensure readonly array argument
forkJoin([a$, b$, c$] as const)
result is correct (6baec53) - iif: No longer allow accidental undefined arguments (#5829) (23b98b4)
- sample: don't signal on complete (95e0b70)
- Symbol.observable: properly defined as a
unique symbol
. (#5874) (374138e), closes #5861 #4415 - throttle: don't signal on complete (4af0227)
- windowToggle: don't signal on complete (9cb56c4), closes #5838
- use empty object type in combineLatest/forkJoin sigs (#5832) (22aaaa2)
- withLatestFrom: allow synchronous source (#5828) (adbe65e)
- stopped notification handler (#5750) (cfa267b)
- support emoji in marble diagrams (#5907) (1b4608c)
- filter: improve type inference for filter(Boolean) (#5831) (d2658fa)
- windowToggle: the observable returned by the windowToggle operator's closing selector must emit a next notification to close the window. Complete notifications no longer close the window.
- bufferToggle: the observable returned by the bufferToggle operator's closing selector must emit a next notification to close the buffer. Complete notifications no longer close the buffer.
- bufferWhen: the observable returned by the bufferWhen operator's closing selector must emit a next notification to close the buffer. Complete notifications no longer close the buffer.
- debounce: the observable returned by the debounce operator's duration selector must emit a next notification to end the duration. Complete notifications no longer end the duration.
- throttle: the observable returned by the throttle operator's duration selector must emit a next notification to end the duration. Complete notifications no longer end the duration.
- sample: the sample operator's notifier observable must emit a next notification to effect a sample. Complete notifications no longer effect a sample.
- audit: the observable returned by the audit operator's duration selector must emit a next notification to end the duration. Complete notifications no longer end the duration.
- Symbol.observable:
rxjs@7
is only compatible with@types/[email protected]
or higher and[email protected]
and heigher. Older versions of@types/node
incorrectly definedSymbol.observable
and will be in conflict withrxjs
and[email protected]
. - delayWhen:
delayWhen
will no longer emit if the duration selector simply completes without a value. Notifiers must notify with a value, not a completion. - iif:
iif
will no longer allow result arguments that areundefined
. This was a bad call pattern that was likely an error in most cases. If for some reason you are relying on this behavior, simply substituteEMPTY
in place of theundefined
argument. This ensures that the behavior was intentional and desired, rather than the result of an accidentalundefined
argument.
7.0.0-beta.8 (2020-10-15)
- audit, auditTime: audit and auditTime emit last value after source completes (#5799) (643bc85), closes #5730
- No longer allow invalid "Subscribable" type as valid observable source in
from
and others. (258dddd), closes #4532 - bindNodeCallback: ensure underlying function is not called twice during subscription (#5780) (74aa4b2)
- delay: Now properly handles Date and negative numbers (#5719) (868c02b), closes #5232
- delayWhen: only deprecates when subscriptionDelay presents (#5797) (43d1731)
- every: index properly increments in predicate (5686f83)
- firstValueFrom: now unsubscribes from source after first value is received (#5813) (a321516), closes #5811
- from: objects that are thennable that happen to have a subscribe method will no longer error. (789d6e3)
- fromEvent: now properly types JQuery event targets (b5aa15a)
- mergeScan: no longer emits state again upon completion. (#5805) (68c2894), closes #5372
- throttle: now supports synchronous duration selectors (55e953e), closes #5658
- throttle: trailing values will now emit after source completes (d5fd69c)
- timeout: allows synchronous observable as a source (84c5c0b), closes #5746
- zip: zip now accepts an array of arguments like its counterparts (3123b67)
- ajax: now supports passing custom XSRF cookies in a custom header (#5702) (1a2c2e4), closes #4003
- switchScan: add switchScan() operator (#4442) (73fa910), closes #2931
- mergeScan:
mergeScan
will no longer emit its inner state again upon completion. - pairs:
pairs
will no longer function in IE without a polyfill forObject.entries
.pairs
itself is also deprecated in favor of users just usingfrom(Object.entries(obj))
. - zip: Zipping a single array will now have a different result. This is an extreme corner-case, because it is very unlikely that anyone would want to zip an array with nothing at all. The workaround would be to wrap the array in another array
zip([[1,2,3]])
. But again, that's pretty weird. - count: No longer passes
source
observable as a third argument to the predicate. That feature was rarely used, and of limited value. The workaround is to simply close over the source inside of the function if you need to access it in there.
7.0.0-beta.7 (2020-09-23)
- multicast: and other publish variants will handle errors thrown in a selector appropriately (bde8eda)
- tap: reduce the size of the implementation (1222d5a)
- Subscriber: Massively untangle Subscriber and SafeSubscriber (07902ca)
- Subscriber:
new Subscriber
no longer takes 0-3 arguments. To create aSubscriber
with 0-3 arguments, useSubscriber.create
. However, please note that there is little to no reason that you should be creatingSubscriber
references directly, andSubscriber.create
andnew Subscriber
are both deprecated.
7.0.0-beta.6 (2020-09-23)
- AsyncSubject: fixed reentrancy issue in complete (9e00f11), closes /github.com/ReactiveX/rxjs/pull/5729/files/30d429cf1b791db15c04a61f6a683e189b53fb3e#r492314703
- delay: proper handling of absolute time (
Date
) passed as an argument (8ae89b1) - fromEvent: properly teardown for ArrayLike targets (066de74)
- ReplaySubject: no longer buffers additional values after it's already stopped (#5696) (a08232b)
- scan: proper indexes when seed is not supplied (f93fb9c), closes #4348 #3879
- windowTime: Passing no creation interval will now properly open new window when old one closes (cbd0ac0)
- Massive Size Reduction: reduced the size of all operator implementations as well as other utilities and types (#5729) (4d3fc23)
- onUnhandledError: configuration point added for unhandled errors (#5681) (3485dd5)
- skipLast: counts zero or less will mirror the source (02e113b)
- skipLast:
skipLast
will no longer error when passed a negative number, rather it will simply return the source, as though0
was passed. - map:
thisArg
will now default toundefined
. The previous default ofMapSubscriber
never made any sense. This will only affect code that calls map with afunction
and referencesthis
like so:source.pipe(map(function () { console.log(this); }))
. There wasn't anything useful about doing this, so the breakage is expected to be very minimal. If anything we're no longer leaking an implementation detail. - onUnhandledError: Errors that occur during setup of an observable subscription after the subscription has emitted an error or completed will now throw in their own call stack. Before it would call
console.warn
. This is potentially breaking in edge cases for node applications, which may be configured to terminate for unhandled exceptions. In the unlikely event this affects you, you can configure the behavior toconsole.warn
in the new configuration setting like so:import { config } from 'rxjs'; config.onUnhandledError = (err) => console.warn(err);
7.0.0-beta.5 (2020-09-03)
- ajax: Allow XHR to perform body serialization and set content-type where possible (d8657ed), closes #2837
- ajax: Do not mutate headers passed as arguments (0d66ba4), closes #2801
- bindCallback: now emits errors that happen after callback (2bddd31)
- bindNodeCallback: now emits errors that happen after callback (edc28cf)
- buffer: Ensure notifier is subscribed after source (#5654) (c088b0e), closes #2195 #1754
- catchError: ensure proper handling of async return for synchronous source error handling (#5627) (1b29d4b), closes #5115
- catchError: inner synchronous observables will properly terminate (#5655) (d3fd2fb)
- errors: Custom RxJS errors now all have a call stack (#5686) (9bb046c), closes #4250
- onErrorResumeNext: observables always finalized before moving to next source (#5650) (ff68ad2)
- package.json: change homepage setting to official docs site. (#5669) (e57c402)
- repeat: Ensure teardown happens between repeated synchronous obs… (#5620) (0ca8a65)
- repeatWhen: Ensure teardown happens between repeat subscriptions (#5625) (98356f4)
- retry: Ensure teardown happens before resubscription with synchronous observables (6f90597), closes #5620
- retryWhen: Ensure subscription tears down between retries (#5623) (6752af7)
- throttleTime: ensure the spacing between throttles is always at least the throttled amount (#5687) (ea84fc4), closes #3712 #4864 #2727 #4727 #4429
- zip: zip operators and functions are now able to zip all iterable sources (#5688) (02c3a1b), closes #4304
switchMap
andexhaustMap
behave correctly with re-entrant code. (c289688)- webSocket: close websocket connection attempt on unsubscribe (e1a671c), closes #4446
- ajax: Use simple Observable (17b9add)
- Subscriber: remove _unsubscribeAndRecycle (d879c3f)
- VirtualTimeScheduler: remove sortActions from public API (#5657) (a468f88)
- combineLatest: add N-args signature for observable inputs (#5488) (fcc47e7)
- Subscription:
add
no longer returns unnecessary Subscription reference (#5656) (4de604e) - Subscription:
remove
will now remove any teardown by reference (#5659) (1531152) - throwError: now accepts a factory to create the error (#5647) (dad270a), closes #5617
- useDeprecatedNextContext: Puts deprecated next context behavior behind a flag (dfdef5d)
- support schedulers within run (#5619) (c63de0d)
- SafeSubscriber: avoid using
Object.create
(40a9e77)
- ajax:
ajax
body serialization will now use default XHR behavior in all cases. If the body is aBlob
,ArrayBuffer
, any array buffer view (like a byte sequence, e.g.Uint8Array
, etc),FormData
,URLSearchParams
,string
, orReadableStream
, default handling is use. If thebody
is otherwisetypeof
"object"
, then it will be converted to JSON viaJSON.stringify
, and theContent-Type
header will be set toapplication/json;charset=utf-8
. All other types will emit an error.- The
Content-Type
header passed toajax
configuration no longer has any effect on the serialization behavior of the AJAX request. - For TypeScript users,
AjaxRequest
is no longer the type that should be explicitly used to create anajax
. It is nowAjaxConfig
, although the two types are compatible, onlyAjaxConfig
hasprogressSubscriber
andcreateXHR
.
-
zip:
zip
operators will no longer iterate provided iterables "as needed", instead the iterables will be treated as push-streams just like they would be everywhere else in RxJS. This means that passing an endless iterable will result in the thread locking up, as it will endlessly try to read from that iterable. This puts us in-line with all other Rx implementations. To work around this, it is probably best to usemap
or some combination ofmap
andzip
. For example,zip(source$, iterator)
could besource$.pipe(map(value => [value, iterator.next().value]))
. -
Subscription:
add
no longer returns an unnecessary Subscription reference. This was done to prevent confusion caused by a legacy behavior. You can now add and remove functions and Subscriptions as teardowns to and from aSubscription
usingadd
andremove
directly. Before this,remove
only accepted subscriptions. -
RxJS Error types Tests that are written with naive expectations against errors may fail now that errors have a proper
stack
property. In some testing frameworks, a deep equality check on two error instances will check the values instack
, which could be different. -
Undocumented Behaviors/APIs Removed:
unsubscribe
no longer available via thethis
context of observer functions. To reenable, setconfig.useDeprecatedNextContext = true
on the rxjsconfig
found atimport { config } from 'rxjs';
. Note that enabling this will result in a performance penalty for all consumer subscriptions.- Leaked implementation detail
_unsubscribeAndRecycle
ofSubscriber
has been removed. Just use newSubscription
objects - Removed an undocumented behavior where passing a negative count argument to
retry
would result in an observable that repeats forever. - An undocumented behavior where passing a negative count argument to
repeat
would result in an observable that repeats forever. - The static
sortActions
method onVirtualTimeScheduler
is no longer publicly exposed by our TS types.
-
throwError: In an extreme corner case for usage,
throwError
is no longer able to emit a function as an error directly. If you need to push a function as an error, you will have to use the factory function to return the function like so:throwError(() => functionToEmit)
, in other wordsthrowError(() => () => console.log('called later'))
.
7.0.0-beta.4 (2020-08-02)
- ajax: Partial observers passed to
progressSubscriber
will no longer error (25d279f) - ajax: Unparsable responses will no longer prevent full AjaxError from being thrown (605ee55)
- animationFrames: emit the timestamp from the rAF's callback (#5438) (c980ae6)
- Ensure unsubscriptions/teardowns on internal subscribers are idempotent (#5465) (3e39749), closes #5464
- timeout: defer error creation until timeout occurs (#5497) (3be9840), closes #5491
- ajax: Drop support for IE10 and lower (0eaadd6)
- Observable: Update property and method types (#5572) (144b626)
- combineLatest: support for observable dictionaries (#5022) (#5363) (f5278aa)
- TestScheduler: add an animate "run mode" helper (#5607) (edd6731)
- timeout: One timeout to rule them all (def1d34)
- ajax: In an extreme corner-case... If an error occurs, the responseType is
"json"
, we're in IE, and theresponseType
is not valid JSON, theajax
observable will no longer emit a syntax error, rather it will emit a fullAjaxError
with more details. - ajax: Ajax implementation drops support for IE10 and lower. This puts us in-line with other implementations and helps clean up code in this area
- Observable:
lift
no longer exposed. It was NEVER documented that end users of the library should be creating operators usinglift
. Lift has a variety of issues and was always an internal implementation detail of rxjs that might have been used by a few power users in the early days when it had the most value. The value oflift
, originally, was that subclassedObservable
s would compose through all operators that implemented lift. The reality is that feature is not widely known, used, or supported, and it was never documented as it was very experimental when it was first added. Until the end of v7,lift
will remain on Observable. Standard JavaScript users will notice no difference. However, TypeScript users might see complaints aboutlift
not being a member of observable. To workaround this issue there are two things you can do: 1. Rewrite your operators as outlined in the documentation, such that they returnnew Observable
. or 2. cast your observable asany
and accesslift
that way. Method 1 is recommended if you do not want things to break when we move to version 8.
7.0.0-beta.3 (2020-07-30)
- perf: Ensure unsubscriptions/teardowns on internal subscribers are idempotent (#5465) (3e39749), closes #5464
- timeout: defer error creation until timeout occurs (#5497) (3be9840), closes #5491
- perf: Reduce memory pressure by no longer retaining outer values across the majority of operators. (#5610) (bff1827)
- Observable: Update property and method types (#5572) (144b626)
- Observable:
lift
no longer exposed. It was never documented that end users of the library should be creating operators usinglift
. Lift has a variety of issues and was always an internal implementation detail of rxjs that might have been used by a few power users in the early days when it had the most value. The value oflift
, originally, was that subclassedObservable
s would compose through all operators that implemented lift. The reality is that feature is not widely known, used, or supported, and it was never documented as it was very experimental when it was first added. Until the end of v7,lift
will remain on Observable. Standard JavaScript users will notice no difference. However, TypeScript users might see complaints aboutlift
not being a member of observable. To workaround this issue there are two things you can do: 1. Rewrite your operators as outlined in the documentation, such that they returnnew Observable
. or 2. cast your observable asany
and accesslift
that way. It is recommended that operators be implemented in terms of functions that return(sourcc: Observable<T>) => new Observable<R>(...)
, per the documentation/guide.
7.0.0-beta.2 (2020-07-03)
7.0.0-beta.1 (2020-07-02)
- pluck: operator breaks with null/undefined inputs. (#5524) (c5f6550)
- shareReplay: no longer misses synchronous values from source (92452cc)
- interop: chain interop/safe subscriber unsubscriptions correctly (#5472) (98ad0eb), closes #5469 #5311 #2675
- finalize: chain subscriptions for interop with finalize (#5239) (04ba662), closes #5237 #5237
- animationFrameScheduler: don't execute rescheduled animation frame and asap actions in flush (#5399) (33c9c8c), closes #4972 #5397
- iterables: errors thrown from iterables now properly propagated (#5444) (75d4c2f)
- finalize: callback will be called after the source observable is torn down. (0d7b7c1), closes #5357
- Notification: typing improvements (#5478) (96868ac)
- TestScheduler: support empty subscription marbles (#5502) (e65696e), closes #5499
- expand: now works properly with asynchronous schedulers (294b27e)
- subscribeOn: allow Infinity as valid delay (#5500) (cd7d649)
- Subject: resolve issue where Subject constructor errantly allowed an argument (#5476) (e1d35dc)
- Subject: no default generic (e678e81)
- defer: No longer allows
() => undefined
to observableFactory (#5449) (1ae937a), closes #5449 - single: Corrected behavior for
single(() => false)
on empty observables. (#5325) (27931bc), closes #5325 - take/takeLast: Properly assert number types at runtime (#5326) (5efc474), closes #5326
- Observable: Remove async iteration (#5492) (8f43e71)
- groupBy: Add typeguards support for groupBy (#5441) (da382da)
- raceWith: add raceWith, the renamed
race
operator (#5303) (ca7f370) - fetch: add selector (#5306) (99b5af1), closes #4744
- TimestampProvider: Reduced scheduler footprint for default usage of shareReplay, timeInterval, and timestamp (#4973) (b2e67e3)
-
Notification.createNext(undefined)
will no longer return the exact same reference everytime. -
Type signatures tightened up around
Notification
anddematerialize
, may uncover issues with invalid types passed to those operators. -
Experimental support for
for await
as been removed. Use https://github.com/benlesh/rxjs-for-await instead. -
defer
no longer allows factories to returnvoid
orundefined
. All factories passed to defer must return a properObservableInput
, such asObservable
,Promise
, et al. To get the same behavior as you may have relied on previously,return EMPTY
orreturn of()
from the factory. -
single
operator will now throw for scenarios where values coming in are either not present, or do not match the provided predicate. Error types have thrown have also been updated, please check documentation for changes. -
take
and will now throw runtime error for arguments that are negative or NaN, this includes non-TS calls liketake()
. -
takeLast
now has runtime assertions that throwTypeError
s for invalid arguments. Calling takeLast without arguments or with an argument that isNaN
will throw aTypeError
-
ReplaySubject
no longer schedules emissions when a scheduler is provided. If you need that behavior, please compose inobserveOn
usingpipe
, for example:new ReplaySubject(2, 3000).pipe(observeOn(asap))
-
timestamp
operator accepts aTimestampProvider
, which is any object with anow
method that returns a number. This means pulling in less code for the use of thetimestamp
operator. This may cause issues withTestScheduler
run mode. (Issue here: ReactiveX#5553)
7.0.0-beta.0 (2020-04-03)
- mergeMapTo: remove redundant/unused generic (#5299) (d67b7da)
- ajax: AjaxTimeoutErrorImpl extends AjaxError (#5226) (a8da8dc)
- delay: emit complete notification as soon as possible (63b8797), closes #4249
- endWith: will properly type N arguments (#5246) (81ee1f7)
- fetch: don't leak event listeners added to passed-in signals (#5305) (d4d6c47)
- TestScheduler: Subclassing TestScheduler needs RunHelpers (#5138) (927d5d9)
- pipe: Special handling for 0-arg case. (#4936) (290fa51)
- pluck: fix pluck's catch-all signature for better type safety (#5192) (e0c5b7c)
- pluck: param type now accepts number and symbol (9697b69)
- startWith: accepts N arguments and returns correct type (#5247) (150ed8b)
- combineLatestWith: and zipWith infer types from n-arguments (#5257) (3e282a5)
- race: support N args in static race and ensure observable returned (#5286) (6d901cb)
- toPromise: correct toPromise return type (#5072) (b1c3573)
- fromFetch: don't reassign closed-over parameter in fromFetch (#5234) (37d2d99), closes #5233 #5233
- add
lastValueFrom
andfirstValueFrom
methods (#5295) (e69b765) - RxJS now supports first-class interop with AsyncIterables (4fa9d01)
- combineLatestWith: adds
combineLatestWith
- renamed legacycombineLatest
operator (#5251) (6d7b146) - retry: add config to reset error count on successful emission (#5280) (ab6e9fc)
- zipWith: add
zipWith
which is just a rename of legacyzip
operator (#5249) (86b6a27)
- startWith:
startWith
will return incorrect types when called with more than 7 arguments and a scheduler. Passing scheduler to startWith is deprecated - toPromise: toPromise return type now returns
T | undefined
in TypeScript, which is correct, but may break builds.
7.0.0-alpha.1 (2019-12-27)
- chain subscriptions from observables that belong to other instances of RxJS (e.g. in node_modules) (#5059) (d7f7078)
- clear subscription on
shareReplay
completion (#5044) (35e600f), closes #5034 - closure: Annotate next() for ReplaySubject (#5088) (8687fbd)
- closure: static prop frameTimeFactor being collapsed when compiled with closure. (39872c9)
- docs: remove repetitive op3() in example (#5043) (e17df33)
- filter: Fix overload order for filter to support inferring the generic type (#5024) (8255365)
- fromFetch: passing already aborted signal to init aborts fetch (0e4849a)
7.0.0-alpha.0 (2019-09-18)
- missing package.json in rxjs/fetch (#5001) (f4bee07)
- filter: Resolve TS build failures for certain situations where Boolean is the predicate (77c7dfd)
- pluck: key union type strictness (#4585) (bd5ec2d)
- race: ignore latter sources after first complete or error (#4809) (f31c3df), closes #4808
- scan/reduce: Typings correct for mixed seed/value types (#4858) (b89ebe5)
- scheduled: import from relative paths (#4832) (1d37a87)
- TS: Error impls now properly type
this
(#4978) (7606dc7) - TS: fix type inference for defaultIfEmpty. (#4833) (9b5ce2f)
- types: add Boolean signature to filter (#4961) (259853e), closes #4959 /github.com/ReactiveX/rxjs/issues/4959#issuecomment-520629091
- animationFrames: Adds an observable of animationFrames (#5021) (6a4cd68)
- concat: can infer N types (6c0cbc4)
- of: Update of typings (e8adbb5)
- rxjs-compat: removed for v7 (#4839) (79b1b95)
- TestScheduler: expose
frameTimeFactor
property (#4977) (8c32ed0) - TS: Update to TypeScript 3.5.3 (741a136)
- concat: Generic signature changed. Recommend not explicitly passing generics, just let inference do its job. If you must, cast with
as
. - of: Generic signature changed, do not specify generics, allow them to be inferred or use
as
- of: Use with more than 9 arguments, where the last argument is a
SchedulerLike
may result in the wrong type which includes theSchedulerLike
, even though the run time implementation does not support that. Developers should be usingscheduled
instead - TS: RxJS requires TS 3.5
- rxjs-compat:
rxjs/Rx
is no longer a valid import site. - rxjs-compat:
rxjs-compat
is not published for v7 (yet) - race:
race()
will no longer subscribe to subsequent observables if a provided source synchronously errors or completes. This means side effects that might have occurred during subscription in those rare cases will no longer occur.
6.5.3 (2019-09-03)
- general: Refactor modules so they don't show side effects in some tools (#4769) (9829c5e0)
- defer: restrict allowed factory types (#4835) (40a22096)
6.5.2 (2019-05-10)
- endWith: wrap args - they are not observables - in of before concatenating (#4735) (986be2f)
- forkJoin: test for object literal (#4741) (c11e1b3), closes #4737 #4737
- Notification: replace const enum (#4556) (e460eec), closes #4538
- of: remove deprecation comment to prevent false positive warning (#4724) (da69c16)
- pairwise: make it recursion-proof (#4743) (21ab261)
- scan: fixed declarations to properly support different return types (#4598) (126d2b6)
- Subscription: Return Empty when teardown === null (#4575) (ffc4e68)
- throttleTime: emit single value with trailing enabled (#4564) (fd690a6), closes #2859 #4491
- umd: export fetch namespace (#4738) (7926122)
- fromFetch: don't abort if fetch resolves (#4742 (ed8d771)
6.5.1 (2019-04-23)
- Notification: replace const enum (#4556) (e460eec), closes #4538
- throttleTime: emit single value with trailing enabled (#4564) (fd690a6), closes #2859 #4491
6.5.0 (2019-04-23)
- docs-app: remove stopWordFilter from lunr pipeline (#4536) (9eaebd4)
- dtslint: disable tests that break in TS@next (#4705) (ecc73d2)
- index: export NotificationKind (#4514) (7125355), closes #4513
- race: better typings (#4643) (fb9bc48), closes #4390 #4642
- throwIfEmpty: ensure result is retry-able (c4f44b9)
- types: Fixed signature for onErrorResumeNext (#4603) (4dd0be0)
- combineLatest: deprecated rest argument and scheduler signatures (#4641) (6661c79), closes #4640
- fromFetch: We now export a
fromFetch
static observable creation method fromrxjs/fetch
. Mirrors nativefetch
only it's lazy and cancellable viaObservable
interface. (#4702) (5a1ef86) - forkJoin: accepts a dictionary of sources (#4640) (b5a2ac9)
- partition: new
partition
observable creation function. Oldpartition
operator is deprecated (#4419) (#4685) (d5d6980) - scheduled: Add
scheduled
creation function to use to create scheduled observable of values. Deprecate scheduled versions offrom
,range
, et al. (#4595) (f57e1fc)
6.4.0 (2019-01-30)
- ajax: Fix case-insensitive headers in HTTP request (#4453) (673bf47)
- bundle: closure to not rewrite polyfills for minification (#4487) (a1fedb9)
- bundle: don't export
operators
twice (#4310) (2399f6e) - combineLatest: improve typings for combineLatest (#4470) (40c3d9f)
- compat: remove internal from import locations (#4498) (a6c0017), closes #4070
- endWith: ability to endWith different types (#4183) (#4185) (83533d1)
- fromEventPattern: improve typings for fromEventPattern (#4496) (037f53d)
- Observable: Fix Observable.subscribe to add operator TeardownLogic to returned Subscription. (#4434) (f28955f)
- subscribe: Deprecate null starting parameter signatures for subscribe (#4202) (c85ddf6)
- combineLatest: support passing union types (ffda319)
- from: support passing union types (eb1d596)
- withLatestFrom: support passing union types (1e19a24)
- zip: support passing union types (0d87f52)
- multicast: support returning union types from projection (e9e9041)
- exhaustMap: support returning union types from projection (ff1f5dc)
- merge: support union type inference for merge operators (c2ac39c)
- catchError: support union type returns (8350622)
- switchMap: support union type returns (32d35fd)
- defer: support union types passed (5aea50e)
- race: Update typings to support proper return types (#4465) (0042846)
- VirtualTimeScheduler: rework flush so it won't lose actions (#4433) (d068bc9)
- WebSocketSubject: fix subject failing to close socket (#4446) (dcfa52b)
- shareReplay: Add configuration object for named arguments, and add argument to support unsubscribing from source observable by
refCount
when all resulting subscriptions have unsubscribed. The default behavior is to leave the source subscription running. - mergeScan: Add index to the accumulator function (#4458) (f5e143d), closes #4441
- range: accept one argument (#4360) (a388578)
- takeWhile: add an
inclusive
option to the operator which causes to emit final value (#4115) (6e7f407)
- internal: optimize Subscription#add() for the common case (#4489) (bdd201c)
- internal: use strict equality for isObject() (#4493) (fc84a00)
- Subscription: use
instanceof
to avoid megamorphic LoadIC (#4499) (065b4e3)
6.3.3 (2018-09-25)
- pipe: align static pipe to Observable pipe rest parameters overl… (#4112) (8c607e9), closes #4109 #4109
- RxJS: each instance of RxJS now has a unique Subscriber symbol (0972c56)
- subscribe: report errors that occur in subscribe after the initial error (#4089) (9b4b2bc), closes #3803
- Subscriber: Can no longer subscribe to itself in a circular manner (#4106) (e623ec6), closes #4095
- Subscriber: use only local Subscriber instances (50ee0a7)
- TypeScript: ensure RxJS builds with TS@next as well (f03e790)
6.3.2 (2018-09-04)
6.3.1 (2018-08-31)
6.3.0 (2018-08-30)
- find: unsubscribe from source when found (#3968) (fd01f7b)
- convert @internal comment to JSDoc (#3932) (f8a9d6e)
- AjaxObservable: notify with error if fails to parse json response (#3139) (d8231e2), closes #3138
- catchError: stop listening to a synchronous inner-obervable when unsubscribed (456ef33)
- distinctUntilKeyChanged: improved key typing with keyof T (#3988) (4ec4ff1)
- exhaustMap: stop listening to a synchronous inner-obervable when unsubscribed (ee1a339)
- find: add undefined to return type (#3970) (5a6c90f), closes #3969
- IE10: Remove dependency on Object.setPrototypeOf (#3967) (5c52a73), closes #3966
- mergeAll: add source subscription to composite before actually subscribing (#2479) (40852ff), closes #2476
- mergeScan: stop listening to a synchronous inner-obervable when unsubscribed (c4002f3)
- Observable: forEach will no longer next values after an error (b4bad1f)
- Observable: use more granular Observable exports in compat mode (#3974) (3f75564)
- onErrorResumeNext: stop listening to a synchronous inner-obervable when unsubscribed (1d14277)
- pipe: replace rest parameters overload (#3945) (872b0ec), closes #3841
- skipUntil: stop listening to a synchronous notifier after its first nexted value (1c257db)
- startWith: allow empty type signature and passing a different type (b7866a0)
- subscribable: make subscribe() signature match Observable (#4050) (865d8d7), closes #3891
- subscriber: unsubscribe parents on error/complete (ad8131b)
- switchMap: stop listening to a synchronous inner-obervable when unsubscribed (260d52a)
- takeUntil: takeUntil should subscribe to the source if notifier sync completes without emitting (#4039) (21fd0b4), closes #3504
- testscheduler: type arguments to Observable creation functions (#3928) (0e30ef1)
- delayWhen: add index to the selector function (#2473) (0979d31)
- forEach: deprecating passing promise constructor (5178ab9)
- TestScheduler: Add subscription schedule to expectObservable (#3997) (0d20255)
6.2.2 (2018-07-13)
- first: improved type gaurds for TypeScript (3e12f7a)
- last: improved type gaurds for TypeScript (3e12f7a)
6.2.1 (2018-06-12)
- ci: do not trigger postbuild script on PR (f82c085)
- delayWhen: Emit source value if duration selector completes synchronously (#3664) (2c43af7), closes #3663
- docs: fix broken github links (#3802) (9f9bf9b)
- docs: fix code examples (#3784) (a95441b)
- from: Objects implementing Symbol.observable take precedence over other types (80ceea0)
- fromEvent: Support React Native and node-compatible event sources. (#3821) (1969f18)
- Observable.prototype.pipe: TS typings now more correct for >8 parameters (#3789) (ad010ea)
- subscribe: ignore syncError when deprecated (#3749) (f94560c)
- Symbol.observable: make observable declaration readonly (#3697) (#3773) (e1c203f)
- TypeScript: resolved typings issue for TS 3.0 (bf2cdeb)
- typings: allow bufferCreationInterval null for bufferTime (#3734) (0bda9cd), closes #3728
6.2.0 (2018-05-22)
- ajax: Handle timeouts as errors (#3653) (e4128ea)
- ajax: RxJS v6 TimeoutError is missing name property (576d943)
- isObservable: Fix throwing error when testing isObservable(null) (#3688) (c9acc61)
- range: Range should be same for every subscriber (#3707) (9642133)
- skipUntil: fix skipUntil when innerSubscription is null (#3686) (4226432)
- TestScheduler: restore run changes upon error (27cb9b6)
- TimeoutError: Add name to TimeoutError (44042d0)
- WebSocketSubject: Check to see if WebSocket exists in global scope (#3694) (2db0788)
6.1.0 (2018-05-03)
- audit: will not crash if duration is synchronous (#3608) (76b7e27), closes #2743
- delay: fix memory leak (#3605) (96f05b0)
- isObservable: a new method for checking to see if an object is an RxJS Observable (edb33e5)
6.0.0 (2018-04-24)
- testing: Add testScheduler.run() helper (2d5b3b2)
- testing: testScheduler.run() supports time progression syntax (9322b7d)
- webSocket: UNBREAKING websocket to be named
webSocket
again, just like it was in 5.0. Now you should import fromrxjs/webSocket
6.0.0-uncanny-rc.7 (2018-04-13)
- interop: functions with
[Symbol.observable]
on them will now be accepted in operators likemergeMap
,from
, etc (#3562) (c9570df) - migrations: change the version the migration applies to (#3564) (9217a03)
- rxjs: no longer requires
dom
lib (#3566) (8b33ee2) - throttleTime: emit throttled values when complete if trailing=true (#3559) (3e846f2), closes #3351
- websocket: export WebSocketSubject, WebSocketSubjectConfig from rxjs/websocket (#3557) (c365405)
6.0.0-ucandoit-rc.6 (2018-04-13)
- migrations: make sure collection.json is present (63e10a8)
6.0.0-uber-rc.5 (2018-04-13)
- migrations: deploy compiled JS rather than just the TS files. (9aed72f)
6.0.0-turbo-rc.4 (2018-04-12)
- groupBy: reexporting the GroupedObservable type (#3556) (12d4933), closes #3551
- migrations: build now properly copies migration into package (#3555) (329a145)
6.0.0-terrific-rc.3 (2018-04-11)
- schematics: add migration schematics for schematics users (20a2f07)
6.0.0-tenacious-rc.2 (2018-04-11)
- compat: fix first & last operators so undefined arguments won't create empty values (#3542) (a327db2)
- node/TS: eliminate incompatable types to protected properties (#3544) (21dd3bd)
- NodeJS Dropping support for non-LTS versions of Node.
6.0.0-tactical-rc.1 (2018-04-07)
Why "tactical"? Because I TOTALLY MEANT to ruin the release names by publishing an amazingly funny April Fool's joke about smooshMap. So this was "tactical". Super tactical. So very tactical.
- closure-compiler: adds nocollapse to static members (#3519) (8758a5d)
- closure-compiler: remove internal flag from _isScalar (#3520) (b3a657d)
- closure-compiler: remove top level throws (#3518) (b069473)
- closure-compiler: removes bad [@params](https://github.com/params) comments that caused issues (#3521) (09c874c)
- compat: deprecate Observable.if/throw (#3527) (3116275)
- compat: export TeardownLogic (#3532) (0c76e64), closes #3531
- compat: remove observable/scalar deep import as it wasn't previously available (4566001)
- Scheduler: export but deprecate (#3522) (a3e1fb8)
- skipUntil: properly manages notifier subscription (889f84a), closes #1886
- fix type mismatch in NodeStyleEventEmitter (#3530) (3f51ddd)
- sourcemaps: fix mappings for source maps so they will work (#3523) (32e7f75), closes #3479
- compat: add Observable extension classes with static create() (ecd7f68)
- compat: add rxjs/interfaces exports (ba5c266)
6.0.0-rc.0 (2018-03-31)
- ajax: properly encode body with form data that includes URLs (#3502) (4455d21), closes #2399
- bindNodeCallback: better type inference (932bb7a)
- elementAt: now allows falsy defaultValues (13706e7)
- lint_perf: fix lint issues with newer perf tests (1013754)
- throttle: now properly trailing throttles for individual values (#3505) (3db18d1), closes #2864
- takeUntil: no longer subscribes to source if notifier synchronously emits (#3504) (7b8a3e3), closes #2189
- pluck,bufferTime,asObservable: add performance tests for pluck(), bufferTime() and asObservable() operators (#2491) (24506b3)
- ReplaySubject: slightly improved performance (#2677) (9fea36d)
- throttle: This changes the behavior of throttle, in particular throttling with both leading and trailing behaviors set to true, to more closely match the throttling behavior of lodash and other libraries. Throttling now starts immediately after any emission from the observable, and values will not be double emitted for both leading and trailing values
6.0.0-beta.4 (2018-03-29)
- bindCallback: add better type overloads (#3480) (037cf34)
- compat: add IScheduler to compat/Scheduler (0a67df6)
- compat: add all utilities to internal-compatibility (a9ecfe7)
- websocket: Add serializer/deserializer config settings (#3489) (8d44124)
- websocket: WebSocketSubject will now JSON serialize all messages sent over it by default, to return to the old behavior, pass a config setting of
serializer: x => x
like so:websocket({ url, serializer: x => x })
6.0.0-beta.3 (2018-03-27)
- build: update build-optimizer and point to correct sources (6717a01)
- node: Subscriber no longer trampled if from another copy of rxjs (371b658)
- Observable: empty ctor returns valid Observable (#3464) (58b8ebc)
- subscribeOn: add subscribeOn back to the distribution (d6556f2)
6.0.0-beta.2 (2018-03-24)
- build: update build-optimizer and point to correct sources (6717a01)
- Observable: empty ctor returns valid Observable (#3464) (58b8ebc)
- subscribeOn: add subscribeOn back to the distribution (d6556f2)
6.0.0-beta.1 (2018-03-21)
- remove duplicate Subscribable interface declaration (#3450) (ac78d89)
- compat: add package.json for internal-compatibility package (#3455) (3b306ed)
- config.useDeprecatedSynchronousErrorThrowing: reentrant error throwing no longer trapped (#3449) (0892a2d), closes #3161
- compat: add interfaces export (d8f8122)
- compat: add rxjs/observable/dom/* APIs to compatibility package (d9a618f)
6.0.0-beta.0 (2018-03-16)
- AjaxObservable: 1xx,2xx,3xx requests shouldn't error, only 4xx,5xx (#3438) (2128932)
- compat: adjustments to get rxjs-compat to build correctly (dea6964)
- config: expose configuration via rxjs exports (#3441) (4287424)
- config: make sure that Promise config is undefined initially (#3440) (469afe8)
- ESM: Add [operators|ajax|websocket|testing]/package.json for ESM support, fixes #3227 (#3356) (725dcb4)
- forkJoin: fix forkJoin typings for forkJoin(Observable[]) (#3436) (17c7f8f)
- fromEvent: Defines toString to fix Closure compilations (#3417) (1558b43)
- fromEvent: pass options in unsubscribe (f1872b0), closes #3349
- publishReplay: type inference improved (#3437) (dd7c9f1), closes #3260
- rxjs: add exports for symbols/interfaces that were missing (#3380) (1622ee0)
- rxjs: make sure esm imports from index.js by default, not Rx.js (#3316) (c2b00f4), closes #3315
- rxjs: once again exports custom error types (#3371) (4465a9f)
- rxjs: remove types.ts importing from itself. (#3383) (8fd50ad)
- spec: get tests running using compatibility package (916e968)
- correct internal module paths to be systemjs compatible (#3412) (35abc9d)
- Symbol.iterator: correctly handle case where Symbol constructor itself is not defined (#3394) (6725be1)
- typings: fixed some cases where multicast and publish would not return a ConnectableObservable (#3320) (ddffecc)
- reexport Symbol.observable typings patch (4c4d7b0)
- remove the root operators.ts because it overshadows operators/package.json (184b6d4)
- Observable.if: remove ts hacks from Observable (f46f261)
- Rx.ts: move Rx.ts to internal (#3400) (7ad2119)
- ajax: default to opting into CORS (#3442) (aa3bf57), closes #3273
- bindCallback: remove result selector (2535641)
- bindNodeCallback: remove resultSelector (26e6e5c)
- compat: add compatability package definition (40aca82)
- compat: add concat operator to compatibility layer (6e84e78)
- compat: add legacy reexport compat layer for 'rxjs/Observable' and other top-level symbols (70e562b)
- compat: add Rx.ts to rxjs-compat (df25de1)
- compat: combatability mode for combineLatest (fd86df5)
- compat: compatibility mode for merge operator (ffce980)
- compat: compatibility mode for zip operator (9f131d0)
- compat: make Rx.ts for compatability layer work as the default for rxjs-compat (d43a4c2)
- compat: set up correct imports & get build working for rxjs-comapt (1a0dc97)
- deprecated-error-handling-warning: add console warning when code sets the flag to bad mode (49be56a)
- error-handling: add deprecated sync error handling behind a flag (583cd1d)
- exhaustMap: simplify interface (42589d0)
- first: simplify interface (a011338)
- forkJoin: simplify interface (4d2338b)
- fromEvent: remove resultSelector (197f449)
- fromEvent: will now emit an array when event emits multiple arguments (51b37fd)
- fromEventPattern: removed resultSelector (6b34f9f)
- last: simplify interface (3240419)
- mergeMap|concatMap|concatMapTo: simplified the signatures (d293245)
- mergeMapTo: simplify interface (582c7be)
- never: no longer export
never
function (#3386) (53debc8) - switchMap|switchMapTo: simplify interface (959fb6a)
- Symbol.iterator: no longer polyfilled (#3389) (6319f3c)
- Symbol.observable: is no longer polyfilled (#3387) (4a5aaaf)
- throwIfEmpty: adds throwIfEmpty operator (#3368) (9b21458)
- typings: updated typings for combineAll, mergeAll, concatAll, switch, exhaust, zipAll (#3321) (f7e4c02)
- umd: UMD now mirrors export schema for ESM and CJS (#3426) (556c904)
- ajax: will no longer execute a CORS request by default, you must opt-in with the
crossDomain
flag in the config. - mergeMap|concatMap|concatMapTo: mergeMap, concatMap and concatMapTo no longer support a result selector, if you need to use a result selector, use the following pattern:
source.mergeMap(x => of(x + x).pipe(map(y => y + x))
(the pattern would be the same forconcatMap
). - never: no longer exported. Use the
NEVER
constant instead. - bindCallback: removes result selector, use
map
instead:bindCallback(fn1, fn2)()
becomesbindCallback(fn1)().pipe(map(fn2))
- Rx.ts: importing from
rxjs/Rx
is no longer available. Upcoming backwards compat solution will allow that - Symbol.iterator: We are no longer polyfilling
Symbol.iterator
. That would be done by a proper polyfilling library - Observable.if: TypeScript users using
Observable.if
will have to castObservable
as any to get toif
. It is a better idae to just useiif
directly viaimport { iif } from 'rxjs';
- bindNodeCallback: resultSelector removed, use
map
instead:bindNodeCallback(fn1, fn2)()
becomesbindNodeCallback(fn1)().pipe(map(fn2))
- Symbol.observable: RxJS will no longer be polyfilling Symbol.observable. That should be done by an actual polyfill library. This is to prevent duplication of code, and also to prevent having modules with side-effects in rxjs.
- fromEvent: result selector removed, use
map
instead:fromEvent(target, 'click', fn)
becomesfromEvent(target, 'click').pipe(map(fn))
- last: no longer accepts
resultSelector
argument. To get this same functionality, usemap
. - first: no longer supports
resultSelector
argument. The same functionality can be achieved by simply mapping either before or afterfirst
depending on your use case. - exhaustMap:
resultSelector
no longer supported, to get this functionality use:source.pipe(exhaustMap(x => of(x + x).pipe(map(y => x + y))))
- switchMap|switchMapTo:
switchMap
andswitchMapTo
no longer takeresultSelector
arguments, to get the same functionality useswitchMap
andmap
in combination:source.pipe(switchMap(x => of(x + x).pipe(y => x + y)))
. - mergeMapTo:
mergeMapTo
no longer accepts a resultSelector, to get this functionality, you'll want to usemergeMap
andmap
together:source.pipe(mergeMap(() => inner).pipe(map(y => x + y)))
- fromEventPattern: no longer supports a result selector, use
map
instead:fromEventPattern(fn1, fn2, fn3)
becomesfromEventPattern(fn1, fn2).pipe(map(fn3))
6.0.0-alpha.4 (2018-03-13)
- ESM: Add [operators|ajax|websocket|testing]/package.json for ESM support, fixes #3227 (#3356) (725dcb4)
- fromEvent: Defines toString to fix Closure compilations (#3417) (1558b43)
- fromEvent: pass options in unsubscribe (f1872b0), closes #3349
- rxjs: add exports for symbols/interfaces that were missing (#3380) (1622ee0)
- rxjs: make sure esm imports from index.js by default, not Rx.js (#3316) (c2b00f4), closes #3315
- rxjs: once again exports custom error types (#3371) (4465a9f)
- rxjs: remove types.ts importing from itself. (#3383) (8fd50ad)
- correct internal module paths to be systemjs compatible (#3412) (35abc9d)
- Symbol.iterator: correctly handle case where Symbol constructor itself is not defined (#3394) (6725be1)
- typings: fixed some cases where multicast and publish would not return a ConnectableObservable (#3320) (ddffecc)
- reexport Symbol.observable typings patch (4c4d7b0)
- remove the root operators.ts because it overshadows operators/package.json (184b6d4)
- Observable.if: remove ts hacks from Observable (f46f261)
- Rx.ts: move Rx.ts to internal (#3400) (7ad2119)
- bindCallback: remove result selector (2535641)
- bindNodeCallback: remove resultSelector (26e6e5c)
- exhaustMap: simplify interface (42589d0)
- first: simplify interface (a011338)
- forkJoin: simplify interface (4d2338b)
- fromEvent: remove resultSelector (197f449)
- fromEvent: will now emit an array when event emits multiple arguments (51b37fd)
- fromEventPattern: removed resultSelector (6b34f9f)
- last: simplify interface (3240419)
- mergeMap|concatMap|concatMapTo: simplified the signatures (d293245)
- mergeMapTo: simplify interface (582c7be)
- never: no longer export
never
function (#3386) (53debc8) - switchMap|switchMapTo: simplify interface (959fb6a)
- Symbol.iterator: no longer polyfilled (#3389) (6319f3c)
- Symbol.observable: is no longer polyfilled (#3387) (4a5aaaf)
- throwIfEmpty: adds throwIfEmpty operator (#3368) (9b21458)
- typings: updated typings for combineAll, mergeAll, concatAll, switch, exhaust, zipAll (#3321) (f7e4c02)
- umd: UMD now mirrors export schema for ESM and CJS (#3426) (556c904)
- Symbol.observable: RxJS will no longer be polyfilling Symbol.observable. That should be done by an actual polyfill library. This is to prevent duplication of code, and also to prevent having modules with side-effects in rxjs.
- mergeMap|concatMap|concatMapTo: mergeMap, concatMap and concatMapTo no longer support a result selector, if you need to use a result selector, use the following pattern:
source.mergeMap(x => of(x + x).pipe(map(y => y + x))
(the pattern would be the same forconcatMap
). - bindCallback: removes result selector, use
map
instead:bindCallback(fn1, fn2)()
becomesbindCallback(fn1)().pipe(map(fn2))
- Rx.ts: importing from
rxjs/Rx
is no longer available. Upcoming backwards compat solution will allow that - Symbol.iterator: We are no longer polyfilling
Symbol.iterator
. That would be done by a proper polyfilling library - Observable.if: TypeScript users using
Observable.if
will have to castObservable
as any to get toif
. It is a better idae to just useiif
directly viaimport { iif } from 'rxjs';
- bindNodeCallback: resultSelector removed, use
map
instead:bindNodeCallback(fn1, fn2)()
becomesbindNodeCallback(fn1)().pipe(map(fn2))
- never: no longer exported. Use the
NEVER
constant instead. - fromEvent: result selector removed, use
map
instead:fromEvent(target, 'click', fn)
becomesfromEvent(target, 'click').pipe(map(fn))
- last: no longer accepts
resultSelector
argument. To get this same functionality, usemap
. - first: no longer supports
resultSelector
argument. The same functionality can be achieved by simply mapping either before or afterfirst
depending on your use case. - exhaustMap:
resultSelector
no longer supported, to get this functionality use:source.pipe(exhaustMap(x => of(x + x).pipe(map(y => x + y))))
- switchMap|switchMapTo:
switchMap
andswitchMapTo
no longer takeresultSelector
arguments, to get the same functionality useswitchMap
andmap
in combination:source.pipe(switchMap(x => of(x + x).pipe(y => x + y)))
. - mergeMapTo:
mergeMapTo
no longer accepts a resultSelector, to get this functionality, you'll want to usemergeMap
andmap
together:source.pipe(mergeMap(() => inner).pipe(map(y => x + y)))
- fromEventPattern: no longer supports a result selector, use
map
instead:fromEventPattern(fn1, fn2, fn3)
becomesfromEventPattern(fn1, fn2).pipe(map(fn3))
6.0.0-alpha.3 (2018-02-06)
- animationFrame.spec: spec description fix (#3140) (ab6c325)
- debounce: support scalar selectors (#3236) (1548393), closes #3232
- forkJoin: catch and forward selector errors (#3261) (e57bbb7), closes #3216
- Observable: expose pipe rest parameter overload (#3292) (7ff5bc3)
- onErrorResumeNext: no longer holds onto subscriptions too long (abbbdad), closes #3178
- scheduler: prevent unwanted clearInterval (#3226) (d7cfb42), closes #3042
- timer: multiple subscriptions to timer(Date) behaves correctly (aafa7ff), closes #3252
- typings: correct compilation warnings from missing types in tests (3aad6bc)
- typings: relax debounce selector type (c419ab4), closes #3164
- typings: relax throttle selector type (#3205) (e83fda7), closes #3204
- typings: the return type of factory of defer should be ObservableInput (#3211) (dc41a5e)
- empty: empty() returns the same instance (5c7c749)
- EMPTY: observable constant EMPTY now exported (08fb074)
- never: always return the same instance (#3249) (d57fa52)
- rxjs: move rxjs/create into rxjs (#3299) (6711fe2)
- throwError: functional version of throwError (639236e)
- rxjs:
rxjs/create
items are now exported fromrxjs
- throwError: Observable.throw no longer available in TypeScript without a cast
- empty:
empty()
without a scheduler will return the same instance every time. - empty: In TypeScript,
empty()
no longer accepts a generic argument, as it returnsObservable<never>
- never:
never()
always returns the same instance - never: TypeScript typing for
never()
is nowObservable<never>
and the function no longer requires a generic type.
6.0.0-alpha.2 (2018-01-14)
- build: properly outputs subdirectories like
rxjs/operators
(34fe560)
6.0.0-alpha.1 (2018-01-12)
- Revert "fix(scheduler): prevent unwanted clearInterval (#3044)" (ad5c7c6)
- Revert "fix(scheduler): prevent unwanted clearInterval (#3044)" (64f9285)
- debounceTime: synchronous reentrancy of debounceTime no longer swallows the second value (#3218) (598e9ce), closes #2748
- dependency: move symbol-observable into devdependency (4400628)
- IteratorObservable: get new iterator for each subscription (#2497) (1bd0a58), closes #2496
- Observable.toArray: Fix toArray with multiple subscriptions. (#3134) (3390926)
- SystemJS: avoid node module resolution of pipeable operators (#3025) (0f3cf71), closes #2971 #2996 #3011
- tap: make next optional (#3073) (e659f0c), closes #2534
- TSC: Fixing TSC errors. Fixes #3020 (01d1575)
- typings: the return type of project of mergeScan should be ObservableInput (23fe17d)
- asap: Remove setImmediate polyfill (5eb6af7)
- distinct: Remove Set polyfill (68ee499)
- groupBy: Remove Map polyfill (74b5b1a)
- Observable: unhandled errors are now reported to HostReportErrors (#3062) (cd9626a)
- reorganize: move ./interfaces.ts to internal/types.ts (cfbfaac)
- reorganize: internal utils hidden (70058cd)
- reorganize: add
rxjs/create
exports (c9963bd) - reorganize: ajax observable creator now exported from
rxjs/ajax
(e971c93) - reorganize: all patch operators moved to
internal
directory (7342401) - reorganize: export
noop
andidentity
fromrxjs
(810c4d0) - reorganize: export
Notification
fromrxjs
(8809b48) - reorganize: export schedulers from
rxjs
(abd3b61) - reorganize: export Subject, ReplaySubject, BehaviorSubject from rxjs (bd683ca)
- reorganize: export the
pipe
utility function fromrxjs
(4574310) - reorganize: hid testing implementation details (b981666)
- reorganize: move observable implementations under internal directory (2d5c3f8)
- reorganize: move operator impls under internal directory (207976f)
- reorganize: move top-level impls under internal directory (c3bb705)
- reorganize: moved symbols to be internal (80783ab)
- reorganize: operators all exported from
rxjs/operators
(b1f8bfe) - reorganize: websocket subject creator now exported from
rxjs/websocket
(5ac62c0)
- webSocket:
webSocket
creator function now exported fromrxjs/websocket
aswebsocket
. - IteratorObservable: IteratorObservable no longer share iterator between subscription
- utils: Many internal use utilities like
isArray
are now hidden underrxjs/internal
, they are implementation details and should not be used. - testing observables:
HotObservable
andColdObservable
, and other testing support types are no longer exported directly. - creation functions: All create functions such as
of
,from
,combineLatest
andfromEvent
should now be imported fromrxjs/create
. - types and interfaces: Can no longer explicitly import types from
rxjs/interfaces
, import them fromrxjs
instead - symbols: Symbols are no longer exported directly from modules such as
rxjs/symbol/observable
please useSymbol.observable
andSymbol.iterator
(polyfills may be required) - deep imports: Can no longer deep import top-level types such as
rxjs/Observable
,rxjs/Subject
,rxjs/ReplaySubject
, et al. All imports should be done directly fromrxjs
, for example:import \{ Observable, Subject \} from 'rxjs';
- schedulers: Scheduler instances have changed names to be suffixed with
Scheduler
, (e.g.asap
->asapScheduler
) - operators: Pipeable operators must now be imported from
rxjs
like so:import { map, filter, switchMap } from 'rxjs/operators';
. No deep imports. - ajax: Ajax observable should be imported from
rxjs/ajax
. - Observable: You should no longer deep import custom Observable
implementations such as
ArrayObservable
orForkJoinObservable
. - _throw:
_throw
is now exported asthrowError
- if:
if
is now exported asiif
- operators: Deep imports to
rxjs/operator/*
will no longer work. Again, pipe operators are still where they were. - error handling: Unhandled errors are no longer caught and rethrown, rather they are caught and scheduled to be thrown, which causes them to be reported to window.onerror or process.on('error'), depending on the environment. Consequently, teardown after a synchronous, unhandled, error will no longer occur, as the teardown would not exist, and producer interference cannot occur
- distinct: Using
distinct
requires aSet
implementation and must be polyfilled in older runtimes - asap: Old runtimes must polyfill Promise in order to use ASAP scheduling.
- groupBy: Older runtimes will require Map to be polyfilled to use
groupBy
- TypeScript: IE10 and lower will need to polyfill
Object.setPrototypeOf
- operators removed: Operator versions of static observable creators such as
merge
,concat
,zip
,onErrorResumeNext
, andrace
have been removed. Please use the static versions of those operations. e.g.a.pipe(concat(b, c))
becomesconcat(a, b, c)
.
5.5.6 (2017-12-21)
- Observable: rethrow errors when syncErrorThrowable and inherit it from destination. Fixes #2813 (541b49d)
5.5.5 (2017-12-06)
- Bazel: Add files to support users that want Bazel builds with RxJS (12dac3b)
5.5.4 (2017-12-05)
- scheduler: resolve regression on angular router with zones (#3158) (520b06a)
- publish: re-publish after having built with proper version of TypeScript. (f0ff5bc, closes#3155)
5.5.3 (2017-12-01)
- concatStatic: missing exports for mergeStatic and concatStatic (#2999) (cae5f9b)
- scheduler: prevent unwanted clearInterval (#3044) (7d722d4), closes #3042
- SystemJS: avoid node module resolution of pipeable operators (#3025) (d77e3d7), closes #2971 #2996 #3011
- typings: fix subscribe overloads (#3053) (1a9fd42), closes #3052
5.5.2 (2017-10-25)
- package: fixed import failures in Webpack (#2987) (e16202d)
- typings: improved type inference for arguments to publishReplay (#2992) (0753ff7), closes #2991
- typings: ensure TS types for
zip
andcombineLatest
are properly inferred. (b8e6cf8) - typings: publish variants will properly return ConnectableObservable(#2983) (d563bfa)
5.5.1 (2017-10-24)
- build: Remove
module
andes2015
keys to avoid resolution conflicts (5073139) - ajaxobservable: fix operator import path (d9b62ed)
5.5.0 (2017-10-18)
5.5.0-beta.7 (2017-10-13)
(Due to a publish snafu, there is no 5.5.0-beta.6) (womp womp 👎)
- build: sourceMaps updated to support CJS properly again (75f7f11), closes #2934
- flatMap: reexport flatMap as alias of mergeMap (#2920) (9922c02)
- publish: correct the name and republish to sync packages (464b115)
- shareReplay: no longer exporting function unnecessarily (#2928) (e159578)
- shareReplay: properly uses
lift
(#2924) (3d9cf87), closes #2921 - toPromise: include toPromise in build output (#2923) (f55bfa5), closes #2922
5.5.0-beta.5 (2017-10-06)
- toPromise: now exists as a permanent method on Observable (2e49a5c)
5.5.0-beta.4 (2017-10-06)
- publish: fix selector typings (#2891) (9ee234d), closes #2889
- shareReplay: properly retains history on subscribe (#2910) (accbcd0), closes #2908
- subscribeOn: remove subscribeOn from reexport to support treesha… (#2899) (fb51a02)
5.5.0-beta.3 (2017-10-03)
- build: revert to 5.4.x build output for CJS & add configurable support for ESM (#2878) (167456a)
- concatAll: use higher-order lettable version of concatAll (60c96ab)
- mergeAll: use higher-order lettable version of mergeAll (f0b703b)
5.5.0-beta.2 (2017-09-27)
- build: make CJS references to import X from '../operators' work correctly with SystemJS (#2874) (3dd4cc4)
5.5.0-beta.1 (2017-09-27)
- package: published from a Linux machine to prevent a strange issue where the Observable directory was not showing up when installed on some Linux environments.
- build: fix source maps by adding back sources and fixing path (#2872) (daaf424)
- package: remove src directory and fix typings location (#2866) (c57eea7)
5.5.0-beta.0 (2017-09-22)
Important! Checkout the explanation of the new lettable operators features here
- package: correct errors generated during rollup for UMD generation (#2839) (124cc93)
- partition: update TypeScript signature to match docs and filter operator (#2819) (755df9b)
- subscribeToResult: throw error in subscriber with inner observable (d7bffa9), closes #2618
- ajax: Include the response on instances of AjaxError (3f6553c)
- audit: add higher-order lettable version of audit (e2daefe)
- auditTime: add higher-order lettable version of auditTime (9e963aa)
- buffer: add higher-order lettable version of buffer (d8ca9de)
- bufferCount: add higher-order lettable version of bufferCount (0ae2ed5)
- bufferTime: add higher-order lettable version of bufferTime operator (0377ca6)
- bufferToggle: add higher-order lettable version of bufferToggle (ea1c3ee)
- bufferWhen: add higher-order lettable version of bufferWhen (ec3eceb)
- catchError: add higher-order lettable version of
catch
(408a2af) - combineAll: add higher-order lettable version of combineAll (97704b3)
- combineLatest: add higher-order lettable version of combineLatest (b7154f2)
- concatMap: add higher-order lettable version of concatMap (c4125ff)
- concatMapTo: add higher-order lettable version of concatMapTo (0a6672e)
- count: add higher-order lettable version of count (caf713e)
- debounce: add higher-order lettable version of debounce (cb8ce46)
- debounceTime: add higher-order lettable version of debounceTime (df0d439)
- delay: add higher-order lettable version of delay (7efb803)
- delayWhen: add higher-order lettable version of delayWhen (cb91c3f)
- dematerialize: add higher-ordeer lettable version of dematerialize (b5948f9)
- distinct: add higher-order lettable version of distinct (0429a69)
- distinctUntilChanged: add higher-order lettable version of distinctUntilChanged (b2725e7)
- distinctUntilKeyChanged: add higher-order lettable version of distinctUntilKeyChanged (9db141c)
- elementAt: add higher-order lettable version of elementAt (b8e956b)
- every: add higher-order lettable version of every (13f3503)
- exhaust: add higher-order lettable version of exhaust (b145dca)
- exhaustMap: add higher-order lettable exhaustMap (b134e0c)
- expand: add higher-order lettable expand (6ec8a19)
- filter: add higher-order lettable version of filter (2848556)
- finalize: add higher-order lettable version of finally, called finalize (cfeae9f)
- find: add higher-order lettable version of find (ff6d5af)
- findIndex: add higher-order lettable findIndex (40e680e)
- first: add higher-order lettable first (33eac1e)
- groupBy: add higher-order lettable groupBy (5281229)
- ignoreElements: add higher-order lettable version of ignoreElements (68286d4)
- isEmpty: add higher-order lettable version of isEmpty (aad1833)
- last: add higher-order lettable version of last (bf33b97)
- lettables: add higher-order lettable versions of concat, concatAll, mergeAll (d7e8be7)
- map: add higher-order lettable map operator (ce40b2d)
- mapTo: add higher-order lettable version of mapTo (e97530f)
- materialize: add higher-order lettable materialize operator (ce42477)
- merge: add higher-order lettable version of merge (#2809) (3136403)
- mergeMap: add higher-order lettable version of mergeMap (417efde)
- mergeMapTo: add higher-order lettable version of mergeMapTo (653b47a)
- mergeScan: add higher-order lettable version of mergeScan (fde7205)
- multicast: add higher-order lettable variant of multicast (fb6014d)
- observeOn: add higher-order lettable version of observeOn (feb0f5a)
- onErrorResumeNext: add higher-order lettable version of onErrorResumeNext (badec6a)
- operators: higher-order lettables of reduce, min, max and defaultIfEmpty added (9974fc2)
- package: rxjs distribution now supports main, module and es2015 keys in package.json (988e1af)
- pairwise: add higher-order lettable version of pairwise (bb21a44)
- partition: add higher-order lettable version of partition (595e588)
- pipe: add pipe method ot Observable (9f6312d)
- pipe: add pipe utility function(42f9daf)
- pluck: add higher-order lettable version of pluck (8ab0914)
- publish: add higher-order lettable variant of publish (4ccf794)
- publishBehavior: add higher-order lettable version of publishBehavior (e911aef)
- publishLast: add higher-order lettable version of publishLast (684728c)
- publishReplay: add higher-order lettable version of publishReplay (2958917)
- race: add higher-order lettable version of race (e646851)
- refCount: add higher-order lettable version of refCount (21fba63)
- repeat: add higher-order lettable version of repeat (8473fe5)
- repeatWhen: add higher-order lettable version of repeatWhen (1d1cecd)
- retry: add higher-order lettable version of retry (28e9b13)
- retryWhen: add higher-order lettable version of retryWhen (1290e3c)
- sample: add higher-order lettable version of sample (8c73e6e)
- sampleTime: add higher-order lettable version of sampleTime (ba6a9ce)
- scan: add higher-order lettable version of scan (2cc5d75)
- sequenceEqual: add higher-order lettable version of sequenceEqual (7cd3165)
- share: add higher-order lettable version of share (f10c42e)
- shareReplay: add higher-order lettable version of shareReplay (e8be197)
- single: add higher-order lettable version of single (3bc050a)
- skip: add higher-order lettable version of skip (baed383)
- skipLast: add higher-order lettable version of skipLast (6e1ff3c)
- skipUntil: add higher-order lettable version of skipUntil (6cc2cd6)
- skipWhile: add higher-order lettable version of skipWhile (76d8ffa)
- subscribeOn: add higher-order lettable version of subscribeOn (866af37)
- switchAll: add higher-order lettable version of switch (2f12572)
- switchMap: add higher-order lettable version of switchMap (b6e5b56)
- switchMapTo: add higher-order lettable version of switchMapTo (2640184)
- take: add higher-order lettable version of take (089a5a6)
- takeLast: add higher-order lettable version of takeLast (cd7e7dd)
- takeUntil: add higher-order lettable version of takeUntil (bb2ddaa)
- takeWhile: add higher-order lettable version of takeWhile (f86c862)
- tap: add higher-order lettable version of do (f85c60e)
- throttle: add higher-order lettable version of throttle (e4dd1fd)
- throttleTime: add higher-order lettable version of throttleTime (34a592d)
- timeInterval: add higher-order lettable version of timeInterval (fcad034)
- timeout: add higher-order lettable version of timeout (2546750)
- timeoutWith: add higher-order lettable version of timeoutWith (bd7f5ed)
- timestamp: add higher-order lettable version of timestamp (a780bf2)
- toArray: add higher-order lettable version of toArray (82480cf)
- toArray: add higher-order lettable version of toArray (a03a50c)
- toPromise: add higher-order lettable version of toPromise (1627da2)
- window: add higher-order lettable version of window (9f6373e)
- windowCount: add higher-order lettable version of windowCount (2a9e54c)
- windowTime: add higher-order lettable version of windowTime (29ffa1b)
- windowToggle: add higher-order lettable version of windowToggle (81ec389)
- windowWhen: add higher-order lettable version of windowWhen (0b73208)
- withLatestFrom: add higher-order lettable version of withLatestFrom (509c97c)
- zip: add higher-order lettable version of zip (8a9b9b2)
- zipAll: add higher-order lettable version of zipAll (f6bd51f)
5.4.3 (2017-08-10)
- compilation: compiles under typescript 2.4.2 (#2780) (d2a32f9)
- exports: add exports for missing static operators: generate, (08c4196)
5.4.2 (2017-07-05)
- Notification: Don't reference
this
from static methods. (9f8e375) - Subject: lift signature is now appropriate for stricter TypeScript 2.4 checks (#2722) (9804de7)
5.4.1 (2017-06-14)
- ajax: Only set timeout & responseType if request is asynchronous (#2486) (380fbcf)
- audit: will now properly mirror source if durations are Observable.empty() (#2595) (6ded82e)
- elementAt: will now properly unsubscribe when it completes or errors (#2501) (a400cab)
- ErrorObservable: will now propagate errors properly when used in a
catch
afterfromPromise
. (#2552) (cf88a20) - groupBy: group duration notifiers will now properly unsubscribe and clean up (#2662) (ab92083), closes #2660 #2661
- Observable: errors thrown in observer/handlers without an operator applied will no longer be swallowed (#2626) (c250afc), closes #2565
- reduce: type definitions overloads for TypeScript are now in proper order (#2523) (ccc0647)
- Schedulers: Fix issue where canceling an asap or animationFrame action early could throw (#2638) (fc39043)
5.4.0 (2017-05-09)
- shareReplay: adds
shareReplay
variant ofpublishReplay
(#2443) (5a2266a) - skipLast: add skipLast operator (#2316) (4ffbbe5), closes #1404
- TypeScript: fromPromise accepts PromiseLike object (#2505) (ade1fd5)
5.3.3 (2017-05-09)
- delayWhen: correctly handle synchronous duration observable (#2589) (695f280), closes #2587
- race: allow TypeScript support for array of observables other than rest param (#2548) (ace553c)
- Subscriber: do not call complete with undefined value param (#2559) (3d63de2)
(NOTE: 5.3.2 was a broken release and was removed)
5.3.1 (2017-05-02)
- AsyncAction: rescheduling an action with the same delay before it has executed will now schedule appropriately. (#2580) (281760e)
- closure: make root.ts work with closure (#2546) (0ecf55d)
- tests: add missing babel-polyfill to package.json (b277ce9), closes #2261
- withLatestFrom: change from hot to cold observable in marble test (0c65446), closes #2526
5.3.0 (2017-04-03)
- catch: return type is now the union of input types (#2478) (840def0)
- forEach: fix a temporal dead zone issue in forEach. (#2474) (e9e9801)
- multicast: Ensure ConnectableObservables returned by multicast are state-isolated. (aaa9e6b)
- reduce: proper TypeScript signature overload ordering (#2382) (f6a4951), closes #2338
- SafeSubscriber: SafeSubscriber shouldn't mutate incoming Observers. (a1778e0)
- timeout: Cancels scheduled timeout, if no longer needed (3e9d529), closes #2134 #2244 #2355 #2347 #2353 #2254 #2372 #1301
- zipAll: complete when the source is empty (712fece)
- delayWhen: add index to the selector function (5d6291e)
- symbol exports: symbols now also exported without
$$
prefix to work with Babel UMD exporting (#2435) (747bef6), closes #2415
- smooth:
smooth()
was never really a thing. Sorry, folks. :D
5.2.0 (2017-02-21)
- ajax: will set
withCredentials
afteropen
on XHR for IE10 (#2332) (0ab1d3b) - bindCallback: emit undefined when callback is without arguments (915a2a8)
- bindNodeCallback: emit undefined when callback has no success arguments (8b81fc6), closes #2254
- bindNodeCallback: errors thrown in callback will be scheduled if a scheduler is provided (#2344) (82ec4f1)
- concat: will now return Observable when given a single object implementing Symbol.observable (#2387) (f5d035a)
- ErrorObservable: remove type constraint to error value (2f951cd), closes #2395
- forkJoin: add type signature for single observable with selector (7983b91), closes #2347
- merge: return Observable when called with single lowerCaseO (85752eb)
- mergeAll: introduce variant support <T, R> for mergeMap (656f2b3), closes #2372
- single: predicate function receives indicies starting at 0 (#2396) (c81882f)
- subscribeToResult: accept array-like as result (14685ba)
- webSocket: Add binaryType to config object (86acbd1), closes #2353
- windowTime: maxWindowSize parameter in windowTime operator (381be3f), closes #1301
5.1.1 (2017-02-13)
- bindCallback: input function context can now be properly set via output function (#2319) (cb91c76)
- bindNodeCallback: input function context can now be properly set via output function (#2320) (3ec315d)
- Subscription: fold ChildSubscription logic into Subscriber to prevent operators from leaking ChildSubscriptions. (#2360) (22e4c17), closes #2244 #2355
5.1.0 (2017-02-01)
- catch: update the catch operator to dispose inner subscriptions if the catch subscription is di (#2271) (8a1e089)
- combineLatest: Don't mutate array of observables passed to (#2276) (9b73c46)
- ISubscription: update type definition of ISubscription::closed (#2249) (0c304a2)
- Observable: Ensure the generic type of the Observer passed to Observable's initializer function is the same. (51a0bc1), closes #2166
- Observable: errors thrown during subscription are now properly sent down error channel (#2313) (d4a9aac), closes #1833
- reduce: index will properly start at 1 if no seed is provided, to match native Array reduce behavior (30a4ca4), closes #2290
- repeatWhen: resulting observable will wait for the source to complete, even if a hot notifier completes first. (#2209) (c65a098), closes #2054
- Subject: ensure subject properly throws ObjectUnsubscribedError when unsubscribed then resubscribed to (#2318) (41489eb)
- TestScheduler: helper methods return proper types,
HotObservable
andColdObservable
instead of Observable (#2305) (758aae9) - windowTime: ensure windows created when only a timespan is passed are closed and cleaned up properly. (#2278) (d4533c4)
- fromEventPattern: support optional removeHandler (86960c2)
- fromEventPattern: support pass signal from addHandler to removeHandler (01d0622)
5.0.3 (2017-01-05)
- observeOn: seal memory leak involving old notifications (9664a38), closes #2244
- Subscription:
add
will return Subscription thatremove
s itself when unsubscribed (375d4a5) - TypeScript: interfaces that accepted
Scheduler
now acceptIScheduler
interface (a0d28a8)
5.0.2 (2016-12-23)
- ajax: upload progress is now set correctly (#2200) (1a83041)
- groupBy: Fix groupBy to dispose of outer subscription. (#2201) (2269618)
5.0.1 (2016-12-13)
- TypeScript: pin to TypeScript 2.0.x, fix errors with Error subclassing (300504c)
5.0.0 (2016-12-13)
- race: unsubscribe raced observables with immediate scheduler (#2158) (7dd533b)
- SubscribeOnObservable: Add the source subscription to the action disposable so the source will (64e3815)
5.0.0-rc.5 (2016-12-07)
- AjaxObservable: catch XHR send failures to observer (#2159) (128fb9c)
- distinctKey: Removed accidental leftover reference of
distinctKey
(9fd8096), closes #2161 - errors: Better error message when you return non-observable things, (#2152) (86a909c), closes #215
- event: uses
Object.prototype.toString.call
on objects (#2143) (e036e79) - typings: type guard support for
last
,first
,find
andfilter
. (5f2e849)
- timeout:
timeout
no longer accepts theerrorToSend
argument
related #2141
5.0.0-rc.4 (2016-11-19)
- partition: handles
thisArg
as expected (#2138) (6cf7296) - timeout: throw traceable TimeoutError (#2132) (9ebc46b)
5.0.0-rc.3 (2016-11-15)
- typings: You no longer have to install the type definition for chai (#2112)
- filter: support type guards without casting (68b7922)
- find: support type guards without casting (9058bf6)
- first: support type guards without casting (3aa1988)
- last: support type guards without casting (07ecd5e)
5.0.0-rc.2 (2016-11-05)
- AjaxObservable: remove needless type param R from AjaxObservable.getJSON() (#2069) (0c3d4a4)
- bufferCount: will behave as expected when
startBufferEvery
is less thanbufferSize
(#2076) (d13dbb4), closes #2062 - build_docs: fix doc building (#1974) (1bbbe8b)
- ErrorObservable: Add generic error type for ErrorObservable. (#2071) (9df86ba)
- first: will now only emit one value in recursive cases (#2100) (a047e7a), closes #2098
- fromEvent: Throw if event target is invalid (#2107) (147ce3e)
- IteratorObservable: clarify the return type of IteratorObservable.create() (#2070) (4f0f865)
- IteratorObservable: Observables
from
generators will now finalize when subscription ends (22d286a), closes #1938 - multicast: fix a bug that caused multicast to omit messages after termination (#2021) (44fbc14)
- Notification:
materialize
output will now match Rx4 (#2106) (c83bab9), closes #2105 - Object.assign: stop polyfilling Object assign (#2080) (b5f8ab3)
- Observable/Ajax: mount properties to origin readystatechange fn (#2025) (76a9abb)
- operator/do: fix typings (9a40297)
- reduce/scan: both scan/reduce operators now accepts
undefined
itself as a valid seed (#2050) (fee7585), closes #2047 - ReplaySubject: observer now subscribed prior to running subscription function (#2046) (fea08e9), closes #2044
- sample: source is now subscribed to before the notifier (ffe99e8), closes #2075
- Symbol.iterator: will not polyfill Symbol iterator unless Symbol exists (#2082) (1138c99)
- typings: fixed Subject.lift to have the same shape as Observable.lift (b07f597)
- WebSocketSubject.prototype.multiplex: no longer nulls out socket after first unsubscribe (#2039) (a5e9cfe), closes #2037
- distinct: remove
distinctKey
,distinct
signature change and perf improvements (#2049) (89612b2), closes #2009 - groupBy: Adds subjectSelector argument to groupBy (#2023) (f94ceb9)
- typescript: remove dependency to 3rd party es2015 definition (#2027) (4c31974), closes #2016
- Notification:
Notification.prototype.exception
is nowNotification.prototype.error
to match Rx4 semantics - Symbol.iterator: RxJS will no longer polyfill
Symbol.iterator
ifSymbol
does not exist. This may break code that inadvertently relies on this behavior - Object.assign: RxJS will no longer polyfill
Object.assign
. It does not requireObject.assign
to function, however, your code may be inadvertently relying on this polyfill. - AjaxObservable: Observable.ajax.getJSON() now only supports a single type parameter,
getJSON<T>(url: string, headers?: Object): Observable<T>
. The extra type parameter it accepted previously was superfluous. - distinct:
distinctKey
has been removed. Usedistinct
- distinct:
distinct
operator has changed, first argument is an optionalkeySelector
. The customcompare
function is no longer supported.
5.0.0-rc.1 (2016-10-11)
- AjaxObservable: Fix for #1921 exposed AjaxObservable unsubscription error calling xhr.abort(). (4d23f87)
- AnonymousSubject: is now exposed on Rx namespace (0a6f049), closes #2002
- bufferTime: no errors with take after bufferTime with maxBufferSize (ecec640), closes #1944
- docs: Fix esdoc for Observable.merge spread argument (b794e9b)
- Observer: fix Observable#subscribe() signature to suggest correct usable (459d2a2)
- operator: Fix take to complete when the source is re-entrant. (86615cb)
- root: find global context (window/self/global) in a more safe way (a098132), closes #1930
- schedulers: Queue, Asap, and AnimationFrame Schedulers should be Async if delay > 0 (d5c682c)
- util/toSubscriber: Supplies the Subscriber constructor with emptyObserver as destination if no (8e7e4e3)
- WebSocketSubject: ensure all internal state properly reset when socket is nulled out (62d242e), closes #1863
- cache: remove
cache
operator (1b23ace) - ES2015: stop publishing
rxjs-es
, ES2015 output no longer included in@reactivex/rxjs
package under/dist/es6
(6be9968), closes #1671 - filter: Observable.filter() can take type guard as the predicate function (d62fbf0)
- find: Observable.find() can take type guard as the predicate function (b952718)
- first: Observable.first() can take type guard as the predicate function (f99ca49)
- last: Observable.last() can take type guard as the predicate function (76a8a57)
- operators: Use lift in the operators that don't currently use lift. (68af9ef)
- TypeScript: update TypeScript to v2.0 (3478b0b)
- cache: The .cache() operator has been removed, pending further discussion (1b23ace)
- ES2015:
rxjs-es
is no longer being published - ES2015:
@reactivex/rxjs
no longer has/dist/es6
output
related #2016 related #1992
- package.json: TypeScript definitions are now for TS 2.0 and higher
Even if we use getter for class, they are marked with readonly
properties
in d.ts.
- operators: Removes MulticastObservable subclass in favor of a MulticastOperator.
5.0.0-beta.12 (2016-09-09)
- ajaxObservable: remove implicit dependency to map operator patch (1744ae9), closes #1874
- AjaxObservable: return null value from JSON.Parse (#1904) (6ba374e)
- catch: removed unneeded overload for catch (dd0e586)
- max: do not return comparer values (f454e93), closes #1892
- min: do not return comparer values (222fd17), closes #1892
- operators: export reserved name operators on prototype (34c39dd), closes #1924
- VirtualTimeScheduler: remove default maxFrame limit (1de86f1), closes #1889
- WebSocketSubject: pass constructor errors onto observable (49c7d67)
- operator: Add repeatWhen operator (c288d88)
- sequenceEqual: adds sequenceEqual operator (3c30293), closes #1882
5.0.0-beta.11 (2016-08-09)
- ajaxObservable: only set default Content-Type header when no body is sent (#1830) (5a895e8)
- AjaxObservable: drop resultSelector support in ajax method (7a77437), closes #1783
- AsyncSubject: do not allow change value after complete (801f282), closes #1800
- BoundNodeCallbackObservable: cast to
any
to access to private field insource
(54f342f) - catch: accept selector returns ObservableInput (e55c62d), closes #1857
- combineLatest: emit unique array instances with the default projection (2e30fd1)
- Observable.from: standardise arguments (remove map/context) (aa30af2)
- schedulers: fix asap and animationFrame schedulers to execute across async boundaries. (#182 (548ec2a), closes [(#1820](https://github.com/(/issues/1820) #1814
- subscribeToResult: update subscription to iterables (5d6339a)
- WebSocketSubject: prevent early close (#1831) (848a527), closes [(#1831](https://github.com/(/issues/1831)
- fromEvent: Pass through event listener options (#1845) (8f0dc01)
- PairsObservable: add PairsObservable creation method (26bafff), closes #1804
- Observable.from: - Observable.from no longer supports the optional map function and associated context argument. This change has been reflected in the related constructors and their properties have been standardised.
- AjaxObservable: ajax.*() method no longer support resultSelector, encourage to use
map
instead
5.0.0-beta.10 (2016-07-06)
- AjaxObservable: ignore content-type for formdata (#1746) (43d05e7)
- AjaxObservable: support withCredentials for CORS request (8084572), closes #1732 #1711
- babel: fix an issue where babel could not compile
Scheduler.async
(#1807) (12c5c74), closes [(#1807](https://github.com/(/issues/1807) #1806 - bufferTime: handle closing context when synchronously unsubscribed (4ce4433), closes #1763
- multicast: Fixes multicast with selector to create a new source connection per subscriber. (c3ac852), closes [(#1774](https://github.com/(/issues/1774)
- Subject: allow optional next value in type definition (3e0c6d9), closes #1728
- WebSocketSubject: respect WebSockeCtor, support source/destination arguments in constructor. (#179 (cd8cdd0), closes #1745 #1784
5.0.0-beta.9 (2016-06-14)
- cache: get correct caching behavior (#1765) (cb0b806), closes #1628
- ConnectableObservable: fix ConnectableObservable connection handling issue (41ce80c)
- typings: make HotObservavle._subscribe protected (1c3d6ea)
- WebSocketSubject: WebSocketSubject will now chain operators properly (#1752) (bf54db4), closes #1745
- window: don't track internal window subjects as subscriptions. (f3357b9)
- fromEventPattern: ~3x improvement in speed (3dc1c00)
5.0.0-beta.8 (2016-05-22)
- AnonymousSubject: allow anonymous observers as destination (0e2c28b)
- combineLatest: rxjs/observable/combineLatest is now properly exported (21fab73), closes #1722
- ConnectableObservable: fix race conditions in ConnectableObservable and refCount. (d1412bc)
- Rx: remove kitchenSink and DOM, let Rx export all (f5090b4), closes #1650
- ScalarObservable: set _isScalar to false when initialized with a scheduler (5037b3a)
- Subject: correct Subject behaviors to be more like Rx4 (ba9ef2b)
- subscriptions: fixes bug that tracked subscriber subscriptions twice. (29ff794)
- bufferTime: add
maxBufferSize
optional argument (cf45540), closes #1295 - multicast: subjectfactory allows selectors (32fa3a4)
- onErrorResumeNext: add onErrorResumeNext operator (51e022b), closes #1665
- publish: support optional selectors (0e5991d), closes #1629
- combineLatest: avoid splice and indexOf (33599cd)
- Subject: Subjects no longer duck-type as Subscriptions
- Subject: Subjects will no longer throw when re-subscribed to if they are not unsubscribed
- Subject: Subjects no longer automatically unsubscribe when completed or errored BREAKING CAHNGE: Minor scheduling changes to groupBy to ensure proper emission ordering
- Rx:
Rx.kitchenSink
andRx.DOM
are removed,Rx
export everything.
5.0.0-beta.7 (2016-04-27)
- race: handle observables completes immediately (abac3d1), closes #1615
- scan: accumulator passes current index (a3ec896), closes #1614
- Observable.generate: add generate static creation method (c03434c)
5.0.0-beta.6 (2016-04-12)
- AjaxObservable: support json responseType on IE (bba13d8), closes #1381
- bufferToggle: accepts closing selector returns promise (b1c575c)
- bufferToggle: accepts promise as openings (3d22c7a)
- bufferToggle: handle closingSelector completes immediately (02239fb)
- typings: explictly export typings for arguments to functions that destructure configuration objects (ef305af)
- DeferSubscriber: split up 'tryDefer()' into a method to call a factory function. (566f46b)
5.0.0-beta.5 (2016-04-05)
- take: make 'take' unsubscribe when it reaches the total (9858aa3)
- Operator:
Operator.prototype.call
has been refactored to include both the destination Subscriber, and the source Observable the Operator is now responsible for describing it's own subscription process. (26423f4)
5.0.0-beta.4 (2016-03-29)
- AjaxObservable: enhance compatibility (0ac7e1e)
- Observable.if: accept promise as source (147166e)
- mergeMap: allow concurrent to be set as the second argument for mergeMap and mergeMapTo (c003468)
- observable: ensure the subscriber chain is complete before calling this._subscribe (1631224)
- Symbol: fixed issue where $$observable is not defined (e66b2d8)
- Observable.using: accepts factory returns promise (f8d7d1b)
- windowToggle: handle closingSelector completes immediately (c755587), closes #1487
- ajax: add FormData support in AjaxObservable and add percent encoding for parameters (1f6119c)
- Subscription:
add()
now returns a Subscription reference (a3f4552) - timestamp: add timestamp operator (80b1646), closes #1515
- forkJoin: improve forkJoin perf slightly by removing unnecessary context tracking (280b985)
- Observable:
Observable.fromArray
was removed since it's deprecated on RxJS 4. You should useObservable.from
instead.
5.0.0-beta.3 (2016-03-21)
- AjaxObservable: update type definition for AjaxObservable (3f5c269), closes #1382
- deferObservable: accepts factory returns promise (0cb44e1)
- do: fix do operator to invoke observer message handlers in the right context. (67a2f25)
- exhaustMap: remove innersubscription when it completes (7ca0859)
- forEach: ensure that teardown logic is called when nextHandler throws (c50f528), closes #1411
- forkJoin: accepts observables emitting null or undefined (6279d6b), closes #1362
- forkJoin: dispose the inner subscriptions when the outer subscription is disposed (c7bf30c)
- FutureAction: add support for periodic scheduling with setInterval instead of setTimeout (c4f5408)
- Observable: introduce Subscribable interface that will be used instead of Observable in inpu (2256e7b)
- Observable.prototype.forEach: removed thisArg to match es-observable spec (d5f1bcd)
- package.json: install typings only after packages are installed (a48d796)
- Schedulers: ensure schedulers can be reused after error in execution (202b79a)
- takeLast: fix takeLast behavior to emit correct order (73eb658), closes #1407
- typings: set map function parameter for Observable.from as optional (efa4dc3)
- AsyncScheduler: add AsyncScheduler implementation (4486c1f)
- if: add static Observable.if creation operator. (f7ff7ec)
- let: adds the let operator to Rx.KitchenSink (dca6504)
- using: add static Observable.using creation operator. (6c76593)
- Observable.prototype.forEach: thisArg removed to match es-observable spec
5.0.0-beta.2 (2016-02-10)
- ajax: fixes error in Chrome accessing responseText when responseType isn't text. (f3e2f73)
- benchpress: fix issues with benchmarks (16894bb)
- every: remove eager predicate calls (74c2c44)
- forkJoin: fix forkJoin to complete if sources Array is empty. (412b13b)
- groupBy: does not emit on unsubscribed group (6d08705)
- groupBy: fix groupBy to use lift(), supports composability (815cfae), closes #1085
- merge/concat: passed scalar observables will now complete properly (c01b92f), closes #1150
- MergeMapSubscriber: clarify type definitions for MergeMapSubscriber's members (4ee5f02)
- Observable.forEach: errors thrown in nextHandler reject returned promise (c5ead88), closes #1184
- Observer: fix typing to allow observation via partial observables with PartialObservable<T (7b6da90)
- Subject: align parameter order to match with RxJS4 (44dfa07), closes #1285
- Subject: throw ObjectUnsubscribedError when unsubscribed (29b630b), closes #859
- Subscriber: adds unsubscription when errors are thrown from user-land handlers. (dc67d21)
- Subscription: fix leaks caused by unsubscribe functions that throw (9e88c2e)
- subscriptions: unsubscribe correctly when a Subscriber throws during synchronous dispatch. (b1698fe)
- typings: don't expose PromiseConstructor dependency (f59225b), closes #1270
- typings: remove R from Operator.call, update operators accordingly (f27902d)
- typings: remove redundant generics from call<T, R> and lift<T, R> (603c9eb)
- windowTime: does not emit on unsubscribed window (595f4ef)
- cache: add cache operator (4308a04)
- delayWhen: add delayWhen operator (17122f9)
- distinct: add distinct operator (94a034d)
- distinctKey: add distinctKey operator (fe4d57f)
- from: allow Observable.from to handle array-like objects (7245005)
- MapPolyfill: implement clear interface (e3fbd05)
- operator: adds inspect and inspectTime operators (54f957b)
- OuterSubscriber: notifyNext passes innersubscriber when next emits (1df8928), closes #1250
- Subject: implement asObservable (aca3dd0), closes #1108
- takeLast: adds takeLast operator. (3583cd3)
- catch: remove tryCatch/errorObject for custom tryCatching, 1.3M -> 1.5M ops/sec (35caf74)
- combineLatest: remove tryCatch/errorObject, 156k -> 221k ops/sec (1c7d639)
- count: remove tryCatch/errorObject for custom tryCatching, 1.84M -> 1.97M ops/sec (869718d)
- debounce: remove tryCatch/errorObject for custom tryCatching (90bf3f1)
- distinct: increase perf from 60% of Rx4 to 1000% Rx4 (d026c41)
- do: remove tryCatch/errorObject use, 104k -> 263k ops/sec improvement (ccba39d)
- every: remove tryCatch/errorObject (~1.8x improvement) (14afeb6)
- exhaustMap: remove tryCatch/errorObject (~10% improvement) (a55f459)
- filter: remove tryCatch/errorObject for 2x perf improvement (086c4bf)
- find: remove tryCatch/errorObject (~2x improvement) (aa35b2a)
- first: remove tryCatch/errorObject for custom tryCatching, 970k ops -> 1.27M ops/sec (d8c835a)
- groupBy: remove tryCatch/errorObject for custom tryCatching, 38% faster. (40c43f7)
- last: remove tryCatch/errorObject for custom tryCatching, 960k -> 1.38M ops/sec (243ace3)
- map: 2x increase from removing tryCatch/errorObject (231f729)
- mergeMap: extra 1x factor gains from custom tryCatch member function (c4ce2fb)
- mergeMapTo: remove tryCatch/errorObject (~2x improvement) (42bcced)
- reduce: remove tryCatch/errorObject, optimize calls, 2-3x perf improvement (6186d46)
- scan: remove tryCatch/errorObject for custom tryCatcher 1.75x improvement (338135d)
- single: remove tryCatch/errorObject (~2.5x improvement) (2515cfb)
- skipWhile: remove tryCatch/errorObject (~1.6x improvement) (cf002db)
- Subscriber: double performance adding tryOrUnsub to Subscriber (4e75466)
- switchMap: remove tryCatch/errorObject ~20% improvement (ec0199f)
- switchMapTo: remove tryCatch/errorObject (~2x improvement) (c8cf72a)
- takeWhile: remove tryCatch/errorObject (~6x improvement) (ef6c3c3)
- withLatestFrom: remove tryCatch/errorObject, 92k -> 107k (16% improvement) (e4ccb44)
- zip: extra 1x-2x factor gains from custom tryCatch member function (a1b0e52)
- Subject: Subject.create arguments have been swapped to match Rx 4 signature.
Subject.create(observable, observer)
is nowSubject.create(observer, observable)
- Observable patching: Patch files for static observable methods such as
of
andfrom
can now be found inrxjs/add/observable/of
,rxjs/add/observable/from
, etc. - Observable modules: Observable modules for subclassed Observables like
PromiseObservable
,ArrayObservable
are now in appropriately named files likerxjs/observable/PromiseObservable
andrxjs/observable/ArrayObservable
as opposed torxjs/observable/fromPromise
andrxjs/observable/fromArray
, since they're not patching, they simply house the Observable implementations.
5.0.0-beta.1 (2016-01-13)
- ajax: ensure post sending values (7aae0a3)
- ajax: ensure that headers are set properly (1100bdd)
- ajax: ensure XHR props are set after open (4a6a579)
- ajax: ensure XHR send is being called (c569e3e)
- ajax: remove unnecessary onAbort handling (ed8240e)
- ajax: response properly based off responseType (b2a27a2)
- ajax: should no longer succeed on 300 status (4d4fa32)
- animationFrame: req/cancel animationFrame has to be called within the context of root. (30a11ee)
- debounceTime: align value emit behavior as same as RxJS4 (5ee11e0), closes #1081
- distinctUntilChanged: implement optional keySelector (f6a897c)
- fromEvent: added spread operator for emitters that pass multiple arguments (3f8eabb)
- fromObservable: expand compatibility for iterating string source (8f7924f), closes #1147
- Immediate: update setImmediate compatibility on IE (39e6c0e), closes #1163
- inspect: remove inspect and inspectTime operators (17341a4)
- Readme: update link to bundle on npmcdn (44a8ca7)
- ReplaySubject: Fix case-sensitive import. (de31f32)
- ScalarObservable: fix issue where scalar map fired twice (c18c42e), closes #1142 #1140
- scheduling: Fixes bugs in scheduled actions. (e050f01)
- Subscriber: errors in nextHandler no longer propagate to errorHandler (f42eed2), closes #1135
- WebSocketSubject: ensure error codes passed to WebSocket close method (3b1655e)
- WebSocketSubject: ensure WebSocketSubject can be resubscribed (861a0c1)
- WebSocketSubject: resultSelector and protocols specifications work properly (580f69a)
- ajax: add resultSelector and improve perf (6df755f)
- ajax: adds ajax methods from rx-dom. (2ca4236)
- bindNodeCallback: add Observable.bindNodeCallback (497bb0d), closes #736
- Observable: add let to allow fluent style query building (5a2014c)
- Observable: add pairwise operator (1432e59)
- Operator: Expose the Operator interface to library consumers (29aa3af)
- pluck: add pluck operator (8026906), closes #1134
- race: add race operator (ee3b593)
- scheduler: adds animationFrame scheduler. (e637b78)
- WebSocketSubject: add basic WebSocketSubject implementation (58cd806)
- WebSocketSubject.multiplex: add multiplex operator to WebSocketSubject (904d617)
- inspect:
inspect
andinspectTime
were removed. UsewithLatestFrom
instead. - Subscriber/Observable: errors thrown in nextHandlers by consumer code will no longer propagate to the errorHandler.
5.0.0-beta.0 (2015-12-15)
- micro-perf: rename immediate to queue scheduler (fe56b28), closes #1040
- micro-perf: use the correnct scheduler on current-thread tests (3dff5eb)
- operators: emit declarations for patch modules (676f82d)
- test: make explicit unsubscription for observable (7f67b09)
- test: make explicit unsubscription for observable (65e65e2)
- window: fix window() to dispose window Subjects (5168f73)
- windowCount: fix windowCount to dispose window Subjects (f29ee29)
- windowTime: fix windowTime to dispose window Subjects (b73e260)
- windowToggle: fix windowToggle to dispose window Subjects (15ff3f7)
- windowWhen: fix windowWhen to dispose window Subjects (91c1941)
- inspect: added inspect operator (f9944ae)
- inspectTime: add inspectTime operator (6835dcd)
- sample: readd
sample
operator (e93bffc) - sampleTime: reimplement
sampleTime
with RxJS 4 behavior (6b77e69) - TestScheduler: add createTime() parser to return number (cb8cf6b)
- sampleTime:
sampleTime
now has the same behaviorsample(number, scheduler)
did in RxJS 4 - sample:
sample
behavior returned to RxJS 4 behavior - inspectTime:
sampleTime
is nowinspectTime
- inspect: RxJS 5
sample
behavior is nowinspect
- extended operators: All extended operators are now under the same operator directory as all others. This means that
import "rxjs/add/operator/extended/min"
is nowimport "rxjs/add/operator/min"
5.0.0-alpha.14 (2015-12-09)
- every: handle thisArg for scalar and array observables (eae4b00)
- SymbolShim: ensure for function even if Symbol already exists (e942776), closes #999
- SymbolShim: Symbol polyfill is a function (1f57157), closes #988
- timeoutWith: fix to avoid unnecessary inner subscription (6e63752)
- count: remove thisArg (878a1fd)
- distinctUntilChanged: remove thisArg (bfc52d6)
- exhaust: rename switchFirst operators to exhaust (9b565c9), closes #915
- finally: remove thisArg (d4b02fc)
- forEach: add thisArg (14ffce6), closes #878
- single: remove thisArg (43af805)
- exhaust: switchFirst is now exhaust
- exhaust: switchFirstMap is now exhaustMap
- forEach: Observable.prototype.forEach argument order changed to accommodate thisArg. Optional PromiseCtor argument moved to third arg from second
5.0.0-alpha.13 (2015-12-08)
- Observable: fix circular dependency issue. (b7672f4)
- bufferToggle: fix unsubscriptions of closing Observable (439b641)
- expand: accept scheduler parameter (79e9084), closes #841
- publish: make script generate correct package names (10563d3)
- repeat: preserve Subscriber chain in repeat() (d9a7328)
- retry: preserve Subscriber chain in retry() (b429dac)
- retryWhen: preserve Subscriber chain in retryWhen() (c9cb958)
- AsapScheduler: rename NextTickScheduler to AsapScheduler (3255fb3), closes #838
- BehaviorSubject: add getValue method to access value (33b387b), closes #758
- BehaviorSubject: now throws when getValue is called after unsubscription (1ddf116)
- ObjectUnsubscribedError: add ObjectUnsubscribed error class (39836af)
- Observable: subscribe accepts objects with rxSubscriber symbol (b7672f4)
- QueueScheduler: rename ImmediateScheduler to QueueScheduler (66eb537)
- Rx.Symbol.rxSubscriber: add rxSubscriber symbol (d4f1670)
- Subject: add rxSubscriber symbol (d2e4257)
- Subscriber: add rxSubscriber symbol (7bda360)
- switchFirstMap: rename switchMapFirst to switchFirstMap (eddd4dc)
- AsapScheduler:
Rx.Scheduler.nextTick
(Rx 4's "default" scheduler) is nowRx.Scheduler.asap
- QueueScheduler:
Rx.Scheduler.immediate
(Rx 4's "currentThread" scheduler) is nowRx.Scheduler.queue
related #838 - switchFirstMap:
switchMapFirst
is nowswitchFirstMap
5.0.0-alpha.12 (2015-12-04)
- AsyncSubject: emit value when it's subscribed after complete (ed0eaf6)
- bindCallback: only call function once even while scheduled (8637d47), closes #881
- bufferToggle: fix disposal of subscriptions when errors occur (a20325c)
- catch: fix catch to dispose old subscriptions (280f7ed), closes #763
- catch: fix catch() to preserve Subscriber chain (e1447ac)
- concat: accept scheduler parameter (8859702)
- ConnectableObservable: fix ConnectableObservable connectability and refCounting (aef9578), closes #678
- debounce: Fix debounce to unsubscribe duration Observables (dea7847)
- expand: fix expand's concurrency behavior (01f86e5)
- expand: terminate recursive call when destination completes (3b8cf94)
- Observable: Subjects no longer wrapped in Subscriber (5cb0f2b), closes #825 #748
- Observer: anonymous observers now allow missing handlers (a11c763), closes #723
- operators: Remove shareReplay and shareBehavior (536a6a6), closes #710
- publish: copy readme and license, remove scripts (439a2f3), closes #845
- throttleTime: fix and rename throttleTime operator (3b0c1f3)
- TimerObservable: accepts absolute date for dueTime (e284fb8), closes #648
- AsyncSubject: add AsyncSubject (34c05fe)
- bindCallback: remove thisArg (feea9a1)
- bindCallback: rename fromCallback to bindCallback (305d66d), closes #876
- callback: Add Observable.fromCallback (9f751e7)
- combineLatest: accept array of observable as parameter (2edd92c), closes #594
- forkJoin: accept array of observable as parameter (d45f672)
- mergeScan: support concurrency parameter for mergeScan (fe0eb37), closes #868
- usage: add auto-patching operators (1ab3508), closes #860
- skipWhile: add skipWhile operator (a2244e0)
- switchFirst: add switchFirst and switchMapFirst (71e3dd1)
- publishLast: add publishLast operator (9bef228), closes #883
- takeWhile: add takeWhile operator (48e53ea), closes #695
- takeWhile: remove thisArg (b5219a4)
- throttle: add throttle operator with durationSelector (c3bf3e7), closes #496
5.0.0-alpha.11 (2015-12-01)
- catch: fix catch to dispose old subscriptions (280f7ed), closes #763
- concat: accept scheduler parameter (8859702)
- ConnectableObservable: fix ConnectableObservable connectability and refCounting (aef9578), closes #678
- debounce: Fix debounce to unsubscribe duration Observables (dea7847)
- expand: fix expand's concurrency behavior (01f86e5)
- expand: terminate recursive call when destination completes (3b8cf94)
- Observer: anonymous observers now allow missing handlers (a11c763), closes #723
- operators: Remove shareReplay and shareBehavior (536a6a6), closes #710
- test: make explicit unsubscription for observable (505f5b7)
- throttleTime: fix and rename throttleTime operator (3b0c1f3)
- TimerObservable: accepts absolute date for dueTime (e284fb8), closes #648
- callback: Add Observable.fromCallback (9f751e7)
- combineLatest: accept array of observable as parameter (2edd92c), closes #594
- forkJoin: accept array of observable as parameter (d45f672)
- operator: add skipWhile operator (a2244e0)
- operator: add switchFirst and switchMapFirst (71e3dd1)
- takeWhile: add takeWhile operator (48e53ea), closes #695
- throttle: add throttle operator with durationSelector (c3bf3e7), closes #496
5.0.0-alpha.10 (2015-11-10)
5.0.0-alpha.9 (2015-11-10)
- util: incorrect Symbol.iterator for es6-shim (15bf32c)
5.0.0-alpha.8 (2015-11-06)
- concat: handle a given scheduler correctly (8745216)
- package.json: loosen the engines/npm semver range to prevent false warnings (df791c6)
- skipUntil: unsubscribe source when it completes (8a4162b), closes #577
- take: deal with total <= 0 and add tests (c5cc06f)
- windowWhen: fix windowWhen with regard to unsubscriptions (8174947)
- mergeScan: add new mergeScan operator. (0ebb5bd)
- multicast: support both Subject and subjectFactory arguments (f779027)
- publish: reverted to RxJS 4 behavior
- publishBehavior: reverted to RxJS 4 behavior
- publishReplay: reverted to RxJS 4 behavior
- shareBehavior: removed
- shareReplay: removed
5.0.0-alpha.7 (2015-10-27)
- NextTickAction: fix unsubscription behavior (3d8264c), closes #582
- buffer: cleanup notifier subscription when unsubscribed (1b30aa9)
- delay: accepts absolute time delay (b109100)
- mergeMapTo: mergeMapTo result should complete (6f9859e)
- operator: update type definitions for union types (9d90c75), closes #581
- repeat: fix inner subscription semantics for repeat (f67a596), closes #554
- switchMapTo: reimplement switchMapTo to pass tests (d4789cd)
- takeUntil: unsubscribe notifier when it completes (9415196)
- operator: add max operator (7fda036)
- operator: add min operator (79cb6cf)
- shareBehavior: add shareBehavior and its tests (97ff1ec)
5.0.0-alpha.6 (2015-10-17)
5.0.0-alpha.5 (2015-10-16)
- bufferToggle: fix bugs in order to pass tests (949fa31)
- mergeAll: fix mergeAll micro performance tests to use mapTo instead of map. (616e86e)
- package: correct typings path (a501b06)
- repeat: add additional resubscription behavior (4f9f33b), closes #516
- retry: fix internal unsubscriptions for retry (cc92f45), closes #546
- windowToggle: fix window closing and unsubscription semantics (0cb21e6)
5.0.0-alpha.4 (2015-10-15)
- Subject: fix missing unsubscribe call (9dd27d6)
- Subscriber: avoid implicit any (08faaa9)
- bufferWhen: onComplete of closings determine buffers (5d28a38)
- fromEvent: make selector argument optional in fromEvent static method (71d90b4)
- skipUntil: update skipUntil behavior with error, completion (6f0d98f), closes #518
- windowCount: fix windowCount window opening times (908ae56), closes #273
- operator: add debounce operator (a1e652f), closes #493
- operator: add debounceTime operator (dd2ba40)
- ScalarObservable: add fast-path for mapping scalar observables (7b0d3dc)
- count: fast-path for counting over scalars (c35a120)
- filter: add fast-path for filtering scalar observables (e2e8954)
- reduce: add fast-path for reducing over scalar observables (4c65136)
- scan: fast-path for scanning scalars (0201b92)
- skip: fast-path for skip over scalar observable (9b49936)
- take: add fast-path for take over scalars (33053b1)
5.0.0-alpha.3 (2015-10-13)
- Observable: fix type signature of some static operators (e5364de)
- Subject.create: ensure operator property not required for Observable subscription (2259de2), closes #483
- TestScheduler: stop sorting actual results (51db0b8), closes #422
- benchpress: update benchpress dependencies and config (8513eaa), closes #348
- buffer: change behavior of buffer to more closely match RxJS 4 (b66592d)
- combineLatest: fix type signature (a3e6deb)
- defer: fix type signature (11327b9)
- empty: fix type signature (893cb7e)
- fromPromise: fix type signature (17415fa)
- groupBy: durationSelector cannot keep source alive (57e4207)
- groupBy: fix bugs related to group resets (23a7574)
- groupBy: fix bugs with groupBy (86992c6)
- interval: fix signature type (9c238c0)
- operator: startWith operator accepts scheduler, multiple values (d1d339a)
- operators: reorder signature of resultSelectors (fc1724d)
- range: fix type signature (9237d0b)
- timeout: fix absolute timeout behavior (8ec06cf)
- timeout: update behavior of timeout, timeoutWith (16bd691)
- timer: fix type signature (fffb96c)
- window: handle closingNotifier errors/completes (42beff1)
- TestScheduler: support unsubscription marbles (ffb0bb9)
- count: add predicate support in count() (42d1add), closes #425
- dematerialize: add dematerialize operator (0a8b074), closes #475
- do: do will now handle an observer as an argument (c1a4994), closes #476
- first: add resultSelector (3c20fcc), closes #417
- last: add resultSelector argument (5a4896c), closes #418
- operator: add every operator (d11f32e)
- operator: add timeInterval operator (6cc0615)
- share: add the share operator (c36f2be), closes #439
- shareReplay: add the shareReplay() operator (65c84ea)
- ReplaySubject: remove unnecessary computation (488ac2e)
- operators with resultSelectors (mergeMap, concatMap, switchMap, etc): The function signature of resultSelectors used to be (innerValue, outerValue, innerIndex, outerIndex) but this commits changes it to be (outerValue, innerValue, outerIndex, innerIndex), to match signatures in RxJS 4.
5.0.0-alpha.2 (2015-09-30)
- concat: let observable concat instead of merge (c17e832)
- operator: add find, findIndex operator (7c6cc9d)
- operator: add first operator (274c233)
- operator: add ignoreElements operator (fe1a952)
- zip: zip now supports never-ending iterables (a5684ba), closes #397
5.0.0-alpha.1 (2015-09-23)
- Promises: escape promise error trap (c69088a)
- TestScheduler: ensure TestScheduler subscribes to expectations before hot subjects (b9b2ba5)
- TestScheduler: properly schedule actions added dynamically (069ede4)
- buffer: do not emit empty buffer when completes (252fccb)
- bufferTime: inner intervals will now clean up properly (4ef41b0)
- expand: Fix expand to stay open until the source Observable completes. (20ef785)
- expand: fix expand operator to match Rx3 (67f9623)
- last: emit value matches with predicate instead of result of predicate (0f635ee)
- merge: fix issues with async in merge (7a15304)
- mergeAll: merge all will properly handle async observables (43b63cc)
- package: specify supported npm version (f72e622)
- switchAll: switch all will properly handle async observables (c2e2d29)
- switchAll/switchLatest: inner subscriptions should now properly unsub (38a45f8), closes #302
- combineLatest: supports promises, iterables, lowercase-o observables and Observables (ce76e4e)
- config: add global configuration of Promise capability (e7eb5d7), closes #115
- expand: now handles promises, iterables and lowercase-o observables (c5239e9)
- mergeAll: now supports promises, iterables and lowercase-o observables (4c16aa6)
- operator: add elementAt operator (cd562c4)
- operator: add isEmpty operator (80f72c5)
- operator: add last operator (d841b11), closes #304 #306
- operator: add single operator (49484a2)
- switch: add promise, iterable and array support (24fdd34)
- withLatestFrom: default array output, handle other types (cb393dc)
- zip: supports promises, iterables and lowercase-o observables (d332a0e)
0.0.0-prealpha.3 (2015-09-11)
- root: use self as the root object when available (0428a85)
0.0.0-prealpha.2 (2015-09-11)
- bufferCount: set default value for skip argument, do not emit empty buffer at the end (2c1a9dc)
- windowCount: set default value for skip argument, do not emit empty buffer at the end (a513dbb)
- Observable: add static create method (e0d27ba), closes #255
- TestScheduler: add TestScheduler (b23daf1), closes #270
- VirtualTimeScheduler: add VirtualTimeScheduler (96f9386), closes #269
- operator: add sample and sampleTime (9e62789), closes #178
0.0.0-prealpha.1 (2015-09-02)
- combineLatest: check for limits higher than total observable count (81e5dfb)
- rx: add hack to export global until better global build exists (1a543b0)
- subscription-ref: add setter for isDisposed (6fe5427)
- take: complete on limit reached (801a711)
- benchpress: add benchpress config and flatmap spec (0441dea)
- catch: add catch operator, related to #141, closes #130 (94b4c01), closes #130
- from: let from handle any "observablesque" (526d4c3), closes #156 #236
- index: add index module which requires commonjs build (379d2d1), closes #117
- observable: add Observable.all (forkJoin) (44a4ee1)
- operator: Add count operator. (30dd894)
- operator: Add distinctUntilChanged and distinctUntilKeyChanged (f9ba4da)
- operator: Add do operator. (7d9b52b)
- operator: Add expand operator. (47b178b)
- operator: Add minimal delay operator. (7851885)
- operator: add buffer operators: buffer, bufferWhen, bufferTime, bufferCount, and bufferTog (9f8347f), closes #207
- operator: add debounce (f03adaf), closes #193
- operator: add defaultIfEmpty (c80688b)
- operator: add finally (526e4c9)
- operator: add fromEventPattern creator function (1095d4c)
- operator: add groupBy (1e13aea), closes #165
- operator: add materialize. closes #132 (6d9f6ae), closes #132
- operator: add publishBehavior operator and spec (249ab8d)
- operator: add publishReplay operator and spec (a0c47d6)
- operator: add retry (4451db5)
- operator: add retryWhen operator. closes #129 (65eb50e), closes #129
- operator: add skipUntil (ef2620e), closes #180
- operator: add throttle (1d735b9), closes #191
- operator: add timeout and timeoutWith (bb440ad), closes #244
- operator: add toPromise operator. closes #159 (361a53b), closes #159
- operator: add window operators: window, windowWhen, windowTime, windowCount, windowToggle (9f5d510), closes #195
- operator: add withLatestFrom (322218a), closes #209
- operator: implement startWith(). (1f36d99)