UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

71 lines (70 loc) 2.37 kB
/** * @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 {};