UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

93 lines 2.5 kB
export interface Message { id?: string; protocol: string; sender: string; type: 'send' | 'request' | 'response'; command?: string; args?: Array<any>; data?: any; result?: any; error?: any; res?: (value: unknown) => void; rej?: (value: unknown) => void; [prop: string]: any; } export interface Options { protocol?: string; sender?: string; logLevel?: string; timeout?: number; onlySend?: boolean; context: any; /** * 获取目标 Window * @example iframe.contentWindow * @example window.parent */ getSender?: () => Window | Worker; getReceiver?: () => Window | Worker; /** * 处理接收的数据 * @override */ handleMessage?: (message: Message) => void; } /** * 用于两个 window 之间通信 * 除了基本的发送消息,提供了如命令式等更多方法 */ export default class Messager { options: Options; requests: Map<string, Message>; constructor(options: Options); destroy(): void; /** * 发送信息 * 所有下面方法的基础方法 * 比较原生,直接给目标 window 中 postMessage */ sendMessage(message: Message): void; /** * 发送数据 * 包装了协议和发送者。Window 的 message 可能来自不同地方,统一格式区分。 * @param data 数据 */ sendData(data: any): void; /** * 发送命令 * 直接发送一个命令 * 包装了协议和发送者。Window 的 message 可能来自不同地方,统一格式区分。 * @param command 命令名 * @param args 参数 */ sendCommand(command: string, ...args: any[]): void; /** * 请求信息 * 与 send 系列的区别是接收返回数据 */ requestMessage(message: Message, options?: { id?: string | number; }): Promise<any>; /** * 请求数据 * 与 sendData 系列的区别是接收返回数据 */ requestData(data: any): Promise<any>; /** * 请求命令 * 与 sendCommand 系列的区别是接收返回数据 */ requestCommand<T = void>(command: string, ...args: any[]): Promise<T>; /** * 内置处理接收的 MessageEvent 事件 * @override */ onMessageReceived(e: MessageEvent): void; count: number; /** * 内置处理接收的数据 * @override */ onDataReceived(data: any): Promise<void>; } //# sourceMappingURL=Messager.d.ts.map