@alauda-fe/common
Version:
Alauda frontend team common codes.
30 lines (29 loc) • 936 B
TypeScript
/**
* @packageDocumentation
* @module async-data
*/
import { HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Status } from '../core/public-api';
export interface DataStateAdapter<D> {
rawData$: Observable<D>;
data$: Observable<D>;
loading$: Observable<boolean>;
error$: Observable<DataError>;
reload: () => void;
}
export type Fetcher<D, P> = (params: P) => Observable<D>;
export interface LoaderConfig<D, P> {
fetcher: Fetcher<D, P>;
params$?: Observable<P>;
params?: P;
dataFilter?: (data: D, index: number) => boolean;
silent?: boolean;
}
export interface LoaderConfigWithInterval<D, P> extends LoaderConfig<D, P> {
interval: number;
intervalFilter?: (index: number) => boolean;
compare: string[] | ((a: D, b: D) => boolean);
}
export type DataError = Partial<HttpErrorResponse & Status>;
export type DataMapper<D> = (data: D) => D;