UNPKG

@rxap/data-source

Version:

Provides a set of classes and decorators for creating and managing data sources in Angular applications, including base classes, static data sources, observable data sources, and method data sources. It also includes a component for displaying data source

72 lines (71 loc) 3.32 kB
import { Signal } from '@angular/core'; import { BaseDefinition, BaseDefinitionMetadata } from '@rxap/definition'; import { ToggleSubject } from '@rxap/rxjs'; import { Constructor } from '@rxap/utilities'; import { Observable, ReplaySubject, Subject, TeardownLogic } from 'rxjs'; import * as i0 from "@angular/core"; export type DataSourceViewerId = string; export interface BaseDataSourceViewer<View = any> { id?: DataSourceViewerId; viewChange?: Observable<View>; /** * Indicates weather the data source should restore the last value from local storage */ restore?: boolean; [key: string]: any; } export interface BaseDataSourceMetadata extends BaseDefinitionMetadata { /** * Indicates weather the data source should restore the last value from local storage */ restore?: boolean; } export declare class BaseDataSource<Data = any, Metadata extends BaseDataSourceMetadata = BaseDataSourceMetadata, Viewer extends BaseDataSourceViewer = BaseDataSourceViewer> extends BaseDefinition<Metadata> { readonly change$: Subject<Data>; /** * Indicates weather the data source is currently loading new data */ loading$: Observable<boolean>; readonly hasError$: ToggleSubject; readonly error$: ReplaySubject<Error>; get lastRefreshed(): Date | null; protected _lastRefreshed: Date | null; protected _connectedViewer: Map<string, Observable<Data>>; protected _connectedViewerTeardown: Map<string, TeardownLogic>; protected _data$: Observable<Data>; /** * a map of viewer to view id. * Allows to create a view id from the viewer object reference * @protected */ protected _viewerIds: Map<Viewer, string>; protected _retry$: Subject<void>; loading?: Signal<boolean>; hasError?: Signal<boolean>; constructor(metadata?: Metadata | null); protected _data?: Data; get data(): Data | undefined; get hasConnections(): boolean; getViewerId(viewer: Viewer): string; connect(viewerOrString: Viewer | DataSourceViewerId): Observable<Data>; attach(viewerId: DataSourceViewerId): Observable<Data>; isConnected(viewerOrId: Viewer | DataSourceViewerId): boolean; disconnect(viewerOrId: Viewer | DataSourceViewerId): void; /** * Creates a connection to tha data source and converts the Observable into a * promise and then disconnects the viewer */ toPromise(viewer: Viewer): Promise<Data>; derive(id: string, metadata?: Partial<BaseDataSourceMetadata>): BaseDataSource<any>; toJSON(): object; refresh(): any; retry(): any; reset(): any; protected _disconnect(viewerId: DataSourceViewerId): void; protected genericRetryFunction(error: any, retryCount: number): Observable<any>; protected handelError(error: any): void; protected _connect(viewer: BaseDataSourceViewer): [Observable<Data>, TeardownLogic] | Observable<Data>; static ɵfac: i0.ɵɵFactoryDeclaration<BaseDataSource<any, any, any>, [{ optional: true; }]>; static ɵprov: i0.ɵɵInjectableDeclaration<BaseDataSource<any, any, any>>; } export declare function RxapDataSource<Metadata extends BaseDataSourceMetadata>(dataSourceIdOrMetadata: string | Metadata, className?: string, packageName?: string): (target: Constructor<BaseDataSource>) => void;