abortable-rx
Version:
Drop-in replacements for RxJS Observable methods and operators that work with AbortSignal
33 lines • 2.16 kB
TypeScript
import { Observable, ObservableInput, OperatorFunction, Subscriber, TeardownLogic } from 'rxjs';
/**
* Creates an Observable just like RxJS `create`, but exposes an AbortSignal in addition to the subscriber
*/
export declare const create: <T>(subscribe?: ((subscriber: Subscriber<T>, signal: AbortSignal) => TeardownLogic) | undefined) => Observable<T>;
/**
* Easiest way to wrap an abortable async function into a Promise.
* The factory is called every time the Observable is subscribed to, and the AbortSignal is aborted on unsubscription.
*/
export declare const defer: <T>(factory: (signal: AbortSignal) => ObservableInput<T>) => Observable<T>;
/**
* Returns a Promise that resolves with the last emission of the given Observable,
* rejects if the Observable errors or rejects with an `AbortError` when the AbortSignal is aborted.
*/
export declare const toPromise: <T>(observable: Observable<T>, signal?: AbortSignal | undefined) => Promise<T>;
/**
* Calls `next` for every emission and returns a Promise that resolves when the Observable completed, rejects if the
* Observable errors or rejects with an `AbortError` when the AbortSignal is aborted.
*/
export declare const forEach: <T>(source: Observable<T>, next: (value: T) => void, signal?: AbortSignal | undefined) => Promise<void>;
/**
* Like RxJS `switchMap`, but passes an AbortSignal that is aborted when the source emits another element.
*/
export declare const switchMap: <T, R>(project: (value: T, index: number, abortSignal: AbortSignal) => ObservableInput<R>) => OperatorFunction<T, R>;
/**
* Like RxJS `concatMap`, but passes an AbortSignal that is aborted when the returned Observable is unsubscribed from.
*/
export declare const concatMap: <T, R>(project: (value: T, index: number, abortSignal: AbortSignal) => ObservableInput<R>) => OperatorFunction<T, R>;
/**
* Like RxJS `mergeMap`, but passes an AbortSignal that is aborted when the returned Observable is unsubscribed from.
*/
export declare const mergeMap: <T, R>(project: (value: T, index: number, abortSignal: AbortSignal) => ObservableInput<R>) => OperatorFunction<T, R>;
//# sourceMappingURL=index.d.ts.map