react-application-core
Version:
A react-based application core for the business applications.
77 lines (76 loc) • 2.67 kB
TypeScript
import { AnyT, IChannelWrapper, IConnectedWrapper, IDataWrapper, IIpWrapper, IMessagesWrapper, INameWrapper } from '../definitions.interface';
import { IFluxEntity } from './flux-definition.interface';
import { PayloadWrapper } from '../channel/protocol/payload.wrapper';
/**
* @entity
* @stable [12.06.2020]
*/
export interface IChannelMessageEntity<TData = AnyT> extends IDataWrapper<TData>, IIpWrapper, IMessagesWrapper<any>, INameWrapper {
}
/**
* @flux-entity
* @stable [06.11.2020]
*/
export interface IFluxChannelMessageEntity<TData = AnyT> extends IFluxEntity<IChannelMessageEntity<TData>> {
}
/**
* @redux-entity
* @stable [12.06.2020]
*/
export interface IReduxChannelMessageEntity<TMessage = AnyT> extends IIpWrapper, INameWrapper, IDataWrapper<TMessage> {
uuid?: string;
}
/**
* @redux-entity
* @stable [12.06.2020]
*/
export interface IReduxChannelEntity extends IMessagesWrapper<IReduxChannelMessageEntity[]>, IConnectedWrapper {
}
/**
* @redux-entity
* @stable [12.06.2020]
*/
export interface IReduxChannelsEntity extends Record<string, IReduxChannelEntity> {
}
/**
* @redux-holder-entity
* @stable [12.06.2020]
*/
export interface IReduxChannelHolderEntity<TEntity = IReduxChannelsEntity> extends IChannelWrapper<TEntity> {
}
/**
* @service
* @stable [06.11.2020]
*/
export interface IChannelClient {
close(): Promise<void>;
emit(event: string, ...args: unknown[]): Promise<void>;
on(event: string, callback: (...args: AnyT[]) => void): Promise<void>;
}
/**
* @service
* @stable [06.11.2020]
*/
export interface IChannel<TConfig = {}, TMessage = unknown> {
connect(ip: string, config?: TConfig): Promise<void>;
disconnect(ip: any): Promise<void>;
emitChannelEvent(ip: string, ...args: TMessage[]): Promise<void>;
emitEvent(ip: string, event: string, ...args: TMessage[]): Promise<void>;
emitRequestPayload(ip: string, requestPayload: PayloadWrapper): Promise<void>;
hasClient(ip: any): boolean;
onConnect(ip: string, client: IChannelClient): void;
onDisconnect(ip: string, client: IChannelClient): void;
onMessage(ip: string, messageName?: string, payload?: string): void;
}
/**
* @initial-redux-entity
* @stable [31.07.2020]
*/
export declare const INITIAL_REDUX_CHANNELS_ENTITY: Readonly<IReduxChannelsEntity>;
/**
* @stable [06.11.2020]
*/
export declare const $CHANNEL_RECEIVE_MESSAGE_ACTION_TYPE: string;
export declare const $CHANNEL_REPLACE_MESSAGES_ACTION_TYPE: string;
export declare const CHANNEL_CONNECT_EVENT = "connect";
export declare const CHANNEL_DISCONNECT_EVENT = "disconnect";