abort-controller-x-rxjs

Abortable helpers for RxJS.

Usage no npm install needed!

<script type="module">
  import abortControllerXRxjs from 'https://cdn.skypack.dev/abort-controller-x-rxjs';
</script>

README

abort-controller-x-rxjs npm version

Abortable helpers for RxJS.

This is a companion package of abort-controller-x.

Installation

yarn add abort-controller-x-rxjs

API

defer

function defer<R extends ObservableInput<any> | void>(
  observableFactory: (signal: AbortSignal) => R,
): Observable<ObservedValueOf<R>>;

Like original defer from RxJS, but aborts passed function when unsubscribed.

firstValueFrom

function firstValueFrom<T, D>(
  signal: AbortSignal,
  source: Observable<T>,
  config: FirstValueFromConfig<D>,
): Promise<T | D>;
function firstValueFrom<T>(
  signal: AbortSignal,
  source: Observable<T>,
): Promise<T>;

interface FirstValueFromConfig<T> {
  defaultValue: T;
}

Like original firstValueFrom from RxJS, but accepts AbortSignal. When that signal is aborted, unsubscribes from the observable and throws AbortError.

lastValueFrom

function lastValueFrom<T, D>(
  signal: AbortSignal,
  source: Observable<T>,
  config: LastValueFromConfig<D>,
): Promise<T | D>;
function lastValueFrom<T>(
  signal: AbortSignal,
  source: Observable<T>,
): Promise<T>;

interface LastValueFromConfig<T> {
  defaultValue: T;
}

Like original lastValueFrom from RxJS, but accepts AbortSignal. When that signal is aborted, unsubscribes from the observable and throws AbortError.

fromAsyncGenerator

function fromAsyncGenerator<T>(
  fn: (signal: AbortSignal) => AsyncIterable<T>,
): Observable<T>;

Turns abortable async generator to observable.