@alauda-fe/common
Version:
Alauda frontend team common codes.
71 lines (70 loc) • 2.37 kB
TypeScript
/**
* @packageDocumentation
* @module k8s-resource-list
*/
import { HttpErrorResponse } from '@angular/common/http';
import { ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs';
import { WatchAPIResponse } from '../api/types';
import { StringMap, KubernetesResource, KubernetesResourceList, Status } from '../core/public-api';
import { K8SResourceList } from './k8s-resource-list';
export type Watcher<R extends KubernetesResource, Q> = (seedVersion: string, params?: Q) => Observable<WatchAPIResponse<R>>;
export type InsertFn<R> = (items: R[], res: R, hasMore: boolean) => R[];
export interface WatcherParams<R extends KubernetesResource, Q> {
list: K8SResourceList<R>;
watcher: Watcher<R, Q>;
insertFn?: InsertFn<R>;
}
interface BaseConfig<R extends KubernetesResource, Q> {
watcher?: Watcher<R, Q>;
insertFn?: InsertFn<R>;
limit?: number;
polling?: number;
}
export type ItemsScanner<R> = (items: R[]) => R[];
export interface ConfigWithRoute<R, Q, P> extends BaseConfig<R, Q> {
fetcher: (params: P) => Observable<KubernetesResourceList<R>>;
activatedRoute?: ActivatedRoute;
}
export interface ConfigWithParams<R, Q, P> extends BaseConfig<R, Q> {
fetcher: (params: P) => Observable<KubernetesResourceList<R>>;
fetchParams$?: Observable<Q>;
}
export declare enum LoadAction {
Reload = "Reload",
SilentReload = "SilentReload",
LoadMore = "LoadMore"
}
export interface LoadState<R> {
action?: LoadAction;
rawResponse?: R;
loading?: boolean;
loadingError?: HttpErrorResponse | Status;
}
export interface ListParams extends StringMap {
limit: string;
continue: string;
}
export interface StreamListLoader<R, T> {
loadState$: Observable<LoadState<R>>;
loading$: Observable<boolean>;
loadingError$: Observable<HttpErrorResponse | Status>;
hasMore$: Observable<boolean>;
rawResponse$: Observable<R>;
items$: Observable<T[]>;
snapshot: StreamListLoaderSnapshot<R, T>;
loadMore(): void;
reload(): void;
}
export interface StreamListLoaderSnapshot<R, T> {
rawResponse?: R;
loading?: boolean;
loadingError?: HttpErrorResponse | Status;
hasMore?: boolean;
continueToken?: string;
items?: T[];
}
export interface LoadSnapshot<R, T, Q> extends StreamListLoaderSnapshot<R, T> {
queryParams?: Q;
}
export {};