js-broadcast-channel
Version:
40 lines (38 loc) • 1.4 kB
text/typescript
interface IBroadcastJS {
close: VoidFunction;
postMessage: (message: Message) => void;
onMessage: (messageName: string, onReceive: (message: Message) => void) => void;
canBrowserSupportBroadcastJS: () => boolean;
hasListeners: (messageName: string) => boolean;
}
interface Message<T = unknown> {
message: string;
data: T;
isInternal?: boolean;
}
interface BroadcastHandlers {
onBeforeSendMessage?: (message: Message) => void;
onAfterSendMessage?: (message: Message) => void;
onBeforePostMessage?: (message: Message) => void;
onAfterPostMessage?: (message: Message) => void;
onBeforeClose?: VoidFunction;
onAfterClose?: VoidFunction;
onError?: (message: Message) => void;
}
declare class BroadcastJS implements IBroadcastJS {
private static bcInstance;
private static bcJSInstance;
private static messageCallbacks;
private static handlers;
constructor(name: string, handlers?: BroadcastHandlers);
close(): void;
postMessage(message: Message): void;
onMessage<T>(messageName: string, onRecieve: (message: Message<T>) => void): void;
removeMessage(messageName: string): void;
canBrowserSupportBroadcastJS(): boolean;
hasListeners(messageName: string): boolean;
private static internalMessage;
private createMessage;
private createSerializedMessage;
}
export { BroadcastJS, type Message };