UNPKG

js-broadcast-channel

Version:
72 lines (70 loc) 2.33 kB
interface IBroadcastJS { close: () => void; 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?: () => void; onAfterClose?: () => void; 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); /** * Closes the broadcast channel. * * @returns {void} * * @example * const broadcast = new BroadcastJS("channelName"); * broadcast.close(); */ close(): void; /** * Posts a message to the broadcast channel. * * @param {Message} message - The message to post. * @returns {void} * * @example * const broadcast = new BroadcastJS("channelName"); * broadcast.postMessage({ message: "message", data: { count: 0 } }); */ postMessage(message: Message): void; /** * Calls a callback when a message is received. * * @param {string} messageName - The name of the message to call the callback for. * @param {function} onRecieve - The callback to call when a message is received. * @returns {void} * * @example * const broadcast = new BroadcastJS("channelName"); * broadcast.onMessage("name", (message) => { * console.log(message); * }); */ 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 };