@lcap/nasl
Version:
NetEase Application Specific Language
93 lines • 2.5 kB
TypeScript
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