@labelbox/message-bus
Version:
Distributed messaging in Typescript
22 lines (21 loc) • 1.04 kB
TypeScript
import { Transport } from './Transport';
import { Handler } from './Handler';
export declare type LazyCallback = (param: string) => void;
export declare type Unsubscribe = () => void;
interface SlotConfig {
noBuffer?: boolean;
isCommand?: boolean;
throwIfNoHandler?: boolean;
}
export interface Slot<RequestData = null, ResponseData = void> {
(param: string, requestData: RequestData): Promise<ResponseData>;
(requestData: RequestData): Promise<ResponseData>;
on(param: string, handler: Handler<RequestData, ResponseData>): Unsubscribe;
on(handler: Handler<RequestData, ResponseData>): Unsubscribe;
lazy(connect: LazyCallback, disconnect: LazyCallback): Unsubscribe;
config?: SlotConfig;
slotName: string;
}
export declare function slot<RequestData = void, ResponseData = void>(config?: SlotConfig): Slot<RequestData, ResponseData>;
export declare function connectSlot<T = void, T2 = void>(slotName: string, transports: Transport[], config?: SlotConfig): Slot<T, T2>;
export {};