UNPKG

@kephas/ngx-core

Version:

Provides integration capabilities with Angular 13+.

54 lines (53 loc) 2.3 kB
import { Observable, BehaviorSubject } from 'rxjs'; import { MessageProcessorClient, ResponseMessage } from '@kephas/messaging'; import { Expando } from '@kephas/core'; export interface MessageState<TMessage> extends Expando { message?: TMessage; } /** * Observable based on a message query. * * @export * @abstract * @class MessageQuery * @extends {BehaviorSubject<TValue>} * @template TMessage * @template TResponseMessage * @template TValue */ export declare abstract class MessageQuery<TMessage, TResponseMessage extends ResponseMessage, TValue> extends BehaviorSubject<TValue> { #private; protected readonly processor: MessageProcessorClient; protected resultMap?: ((r: TResponseMessage, state?: MessageState<TMessage> | undefined) => TValue) | undefined; protected messageMap?: ((m: TMessage, state?: MessageState<TMessage> | undefined) => TMessage) | undefined; protected emptyResult: TValue; /** * Creates an instance of MessageQuery. * @param {MessageProcessorClient} processor * @param {(r: TResponseMessage, state?: MessageState<TMessage>) => TValue} [resultMap] * @param {(m: TMessage, state?: MessageState<TMessage>) => TMessage} [messageMap] * @param {TValue} [emptyResult={} as TValue] * @memberof MessageQuery */ constructor(processor: MessageProcessorClient, resultMap?: ((r: TResponseMessage, state?: MessageState<TMessage> | undefined) => TValue) | undefined, messageMap?: ((m: TMessage, state?: MessageState<TMessage> | undefined) => TMessage) | undefined, emptyResult?: TValue); /** * Gets a value indicating whether the query is executing. * * @readonly * @type {boolean} * @memberof CommandQuery */ get loading(): boolean; /** * Gets the last error executing this query. * * @readonly * @type {*} * @memberof CommandQuery */ get lastError(): any; execute(state?: MessageState<TMessage>): void; protected fetch(message: any, state?: MessageState<TMessage>): Observable<TValue>; protected mapResponse(response: TResponseMessage, state?: MessageState<TMessage>): TValue; protected mapMessage(message: TMessage, state?: MessageState<TMessage>): TMessage; }