@actualwave/messageport-dispatcher
Version:
Cross-domain EventDispatcher for MessagePort interface
29 lines (28 loc) • 1.86 kB
TypeScript
import { type IEventDispatcher, type EventType, type EventListener, type EventProcessor } from '@actualwave/event-dispatcher';
export interface MessagePortLike {
postMessage(data: unknown, targetOrigin: string, transferList?: Transferable[]): void;
addEventListener(type: string, handler: (event: any) => void): void;
}
type PostMessageHandler = (this: MessagePortDispatcher, data: unknown, targetOrigin: string, transferList?: Transferable[]) => void;
export declare class MessagePortDispatcher {
dispatcherId: string;
targetOrigin: string;
target: MessagePortLike;
customPostMessageHandler: PostMessageHandler | null;
senderEventPreprocessor: EventProcessor | null;
sender: IEventDispatcher;
receiver: IEventDispatcher;
constructor(target?: MessagePortLike | null, customPostMessageHandler?: PostMessageHandler | null, receiverEventPreprocessor?: EventProcessor | null, senderEventPreprocessor?: EventProcessor | null);
addEventListener(eventType: string, listener: EventListener, priority?: number): void;
hasEventListener(eventType: string): boolean;
removeEventListener(eventType: string, listener: EventListener): void;
removeAllEventListeners(eventType: string): void;
dispatchEvent(eventType: EventType, data?: unknown, transferList?: Transferable[]): void;
private _postMessageHandler;
private _postMessageListener;
}
export declare const createMessagePortDispatcher: (target?: MessagePortLike | null, customPostMessageHandler?: PostMessageHandler | null, receiverEventPreprocessor?: EventProcessor | null, senderEventPreprocessor?: EventProcessor | null) => MessagePortDispatcher;
export declare const getForSelf: () => MessagePortDispatcher;
export declare const getForParent: () => MessagePortDispatcher;
export declare const getForTop: () => MessagePortDispatcher;
export {};