UNPKG

worker-tls

Version:

worker-tls 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。

170 lines 4.04 kB
import type { Optional, AnyFunction } from "type-tls"; /** * 命令执行信息 * @remarks * 命令有两种类型: * * + 函数: * * - 执行命令就是执行函数 * * - 执行命令的返回值就是函数的返回值 * * + 数据: * * - 执行命令就是访问这个数据对象 * * - 执行命令的返回值就这个数据本身 */ export interface Exec { /** * 被执行对象的名字 */ name: string; /** * 函数式命令的参数 * @remarks * 如果传递了该选项,则命令一定会被当作函数来处理 */ args?: Optional<any[]>; /** * 函数式命令的 this 值 * @remarks * 如果传递了该选项,则命令一定会被当作函数来处理 */ this?: any; } /** * 命令执行的记录 */ export interface ExecRecord extends Exec { /** * 本次执行的id */ id: string; } /** * 消息的状态 */ export declare enum MessageState { /** * 消息还没有发完,后续还有 */ Ing = "\u8FDB\u884C\u4E2D", /** * 消息已发完 */ End = "\u7ED3\u675F" } /** * 响应消息的数据类型 */ export interface ResponseMessage<D = any> { /** * 对应的执行记录的 id */ execId: string; /** * 数据 */ data: D; /** * 错误消息 */ error?: any; /** * 消息的状态 */ state: MessageState; } /** * 执行命令 * * @remarks * - 如果目标命令不是函数 且 命令给了 args 参数 或 this,则会以错误结束 * * - 如果目标命令不是函数 且 没有提供 args 参数 和 this,则会返回获取到的命令对象 * * @param exec * @returns */ export declare function execCMD(exec: Exec): ExecResult; /** * 响应信息的类型 */ export type ResponseMessageOptions<D = any> = WindowPostMessageOptions & ResponseMessage<D>; /** * {@link ResponseMessageOptions} 的类型守卫 * * @param response * @returns */ export declare function isResponseMessageOptions<D>(response: ExecResult<D>): response is ResponseMessageOptions<D>; /** * 命令的执行结果 * * @remarks * 一般需要被命令的函数的返回值的类型 */ export type ExecResult<D = any> = ResponseMessageOptions<D> | D; /** * sendMessage 的选项 */ export interface SendMessageOptions extends Partial<Omit<ResponseMessageOptions, "data">> { /** * 用于发送消息的消息端口对象 MessagePort * * @remarks * 当在共享 worker 中时,需要提供该选项 */ port?: Optional<MessagePort>; } /** * 发送消息 * * @remarks * 该方法会将数据通过 postMessage 发送出去 * * 支持发送 异步数据 Promise 和 流 ReadableStream * * @param execResult */ export declare function sendMessage(execResult: ExecResult, options?: SendMessageOptions | null): any; /** * 发送同步消息 * * @remarks * 该方法会将数据通过 postMessage 发送出去 * * @param syncExecResult - 非 Promise 的同步执行结果 */ export declare function sendMessageForSyncResult(syncExecResult: ExecResult, options: SendMessageOptions): void; /** * 用于执行命令的 message 监听器 * @param event */ export declare function messageListener(event: MessageEvent<ExecRecord>): void; /** * 设置命令 * @remarks * 会将命令设置在全局环境 `globalThis` 中;其实就是将命令挂载在 `globalThis` 上; * @param cmdStr - 命令的字符串形式 * @param name - 命令的名字 */ export declare function setCMD(cmdStr: string, name?: string): boolean; /** * 移除命令 * @remarks * 其实就是删除 `globalThis` 上对应的属性 * @param name - 命令的名字 */ export declare function removeCMD(name: string): boolean; /** * 监听 message 消息 * * @remarks * 支持 SharedWorker 和 专用 Worker * @param listener - 监听器 */ export declare function listenMessage(listener: AnyFunction): void; //# sourceMappingURL=dynamicWorkerAPI.d.ts.map