UNPKG

pandora-hub

Version:

pandora.js messenge hub

128 lines (107 loc) 2.76 kB
import {MessengerClient} from 'pandora-messenger'; import {ObjectConsumer} from './object-proxying/ObjectConsumer'; import {HubClient} from './hub/HubClient'; export interface Location { initialization?: boolean; appName?: string; processName?: string; pid?: string; clientId?: string; } export interface Selector extends Location { objectName?: string; objectTag?: string; } export const selectorSchema = [ 'clientId', 'appName', 'processName', 'pid', 'objectName', 'tag' ]; export interface ObjectMessage extends HubMessage { propertyName: string; } export interface SubscribeMessage extends HubMessage { register: string; } export interface HubMessage extends MessagePackage { action: string; } export interface MessagePackage { needReply?: boolean; broadcast?: boolean; host?: Selector; remote?: Selector; data?: any; timeout?: number; } export interface ReplyPackage extends MessagePackage { success?: boolean; error?: any; batchReply?: Array<ReplyPackage>; } export interface PublishPackage extends MessagePackage { broadcast?: null; remote?: null; data: { selector: Selector }; } export interface LookupPackage extends MessagePackage { broadcast?: null; remote?: null; data: { selector: Selector }; } export interface ForceReplyFn { (ReplyPackage): void; } export interface SelectedInfo { client: MessengerClient; selector: Selector; } export interface DispatchHandler { dispatch(message: HubMessage): Promise<any> | any } export interface ObjectDescription { name: string; tag?: string; } export interface Introspection { properties: Array<{ name: string; type: string; }>; methods: Array<{ type: string; name: string; length: number; }>; } export interface ObjectProxyBehaviour { host: { invoke (host: any, method: string, params: any[]): Promise<any>; getProperty (host: any, name: string): Promise<any>; introspect(host: any): Introspection; subscribe(hub: HubClient, objectDescription: ObjectDescription, host: any, register: string): Promise<any>; unsubscribe(hub: HubClient, objectDescription: ObjectDescription, host: any, register: string): Promise<any>; }; proxy: { invoke (proxy: any, consumer: ObjectConsumer, method: string, params: any[]): Promise<any> getProperty (proxy: any, consumer: ObjectConsumer, name: string): Promise<any>; subscribe(proxy, consumer: ObjectConsumer, register: string, fn); unsubscribe(proxy, consumer: ObjectConsumer, register: string, fn?); }; } export interface ClientOptions { location: Location; logger?: any; } export interface FacadeSetupOptions extends ClientOptions { } export interface ConsumerExtInfo { timeout: number; }