@kephas/ngx-core
Version:
Provides integration capabilities with Angular 13+.
54 lines (53 loc) • 2.3 kB
TypeScript
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;
}