ngx-remotedata
Version:
RemoteData: Slaying a UI Antipattern with Angular
43 lines (42 loc) • 2.25 kB
TypeScript
import { Observable } from 'rxjs';
export interface NotAsked {
readonly tag: 'NotAsked';
}
export interface InProgress<T> {
readonly tag: 'InProgress';
readonly value: T | undefined;
}
export interface Failure<E, T> {
readonly tag: 'Failure';
readonly value: T | undefined;
error: E;
}
export interface Success<T> {
readonly tag: 'Success';
readonly value: T;
}
export declare const notAsked: <T, E = string>() => RemoteData<T, E>;
export declare const inProgress: <T, E = string>(value?: T | undefined) => RemoteData<T, E>;
export declare const failure: <T, E = string>(error: E, value?: T | undefined) => RemoteData<T, E>;
export declare const success: <T, E = string>(value: T) => RemoteData<T, E>;
export declare const isNotAsked: <T, E>(value: unknown) => value is NotAsked;
export declare const isInProgress: <T, E>(value: unknown) => value is InProgress<T>;
export declare const isFailure: <T, E>(value: unknown) => value is Failure<E, T>;
export declare const isSuccess: <T, E>(value: unknown) => value is Success<T>;
export declare const isRemoteData: <T, E = string>(value: unknown) => value is RemoteData<T, E>;
export declare const fold: <T, E>(onNotAsked: () => T, onInProgress: (value: T | undefined) => T, onFailure: (error: E, value: T | undefined) => T, onSuccess: (value: T) => T, rd: RemoteData<T, E>) => T;
export declare const getOrElse: <T, E>(rd: RemoteData<T, E>, defaultValue: T) => T;
export declare const map: <A, B, E>(fn: (a: A) => B, rd: RemoteData<A, E>) => RemoteData<B, E>;
export declare const mapFailure: <A, E, F>(fn: (e: E) => F, rd: RemoteData<A, E>) => RemoteData<A, F>;
export declare const chain: <A, B, E>(fn: (a: A) => RemoteData<B, E>, rd: RemoteData<A, E>) => RemoteData<B, E>;
/**
* Emits only when source Observable is a Success
* @returns Success<T>
*/
export declare function filterSuccess(): <T, E>(source: Observable<RemoteData<T, E>>) => Observable<Success<T>>;
/**
* Emits only when source Observable is a Failure
* @returns Failure<E, T>
*/
export declare function filterFailure(): <T, E>(source: Observable<RemoteData<T, E>>) => Observable<Failure<E, T>>;
export declare type RemoteData<T, E = string> = NotAsked | InProgress<T> | Failure<E, T> | Success<T>;