Skip to content

dyve-agency/rxjs-util

Repository files navigation

@zeit-dev/rxjs-util

size npm license github codeclimate coverage

This is a small and incoherent collection of RxJS operators we commonly use across our projects.

Installation

npm add @zeit-dev/rxjs-util

or

yarn add @zeit-dev/rxjs-util

Operators

Complete documentation here

allTrue

Combine several boolean observables, and return true if all latest values are true, false otherwise.

  allTrue(of(false), of(true)).subscribe((x) => console.log(x))
  // => false

filterTruthy

This is basically just filter(x => !!x) with the added benefit of collapsing an input type of T | undefined to just T

  of(true, false, '', 0, null, undefined, true, 'a', 1).pipe(filterTruthy()).subscribe((x) => console.log(x));
  // => true, true, 'a', 1

flip

Just a shortcut for map(x => !x)

  of(true).pipe(flip()).subscribe((x) => console.log(x));
  // => false

log

This is a debug tool, that taps into the observable stream, and uses console.log to output each event, and console.error for errors. To identify the log output, you can specify a log category/tag:

  interval(1000).pipe(log('Here')).subscribe()
  // => Here 1, Here 2, Here 3

mapVoid

Casts observable to Observable<void>.

replayWhile

Replays the last value every n miliseconds until the next value arrives. Stops replaying when predicate evaluates to false.

returnToZone

Helper to return to the Angular zone (NgZone), when an event arrives. Useful if you have external async sources.

  // inject ngZone: NgZone
  from(someExternalPromise).pipe(returnToZone(ngZone))

switchCombine

SwitchMap to an inner observable and carry the current value into the output. Same as

  switchMap((x) => innerObservable.pipe(map((y) => [x, y])))

takeWhileInclusive

Same as takeWhile but emits the last event as well.