UNPKG

worker-tls

Version:

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

137 lines 3.91 kB
import { IWorkerCodes, INamedFunctionMap, INamedFunctionList } from "./createWorkerURL"; import type { Optional, AnyFunction } from "type-tls"; import { WorkerClient, type DWorker } from "./WorkerClient"; /** * worker 的信息 */ export interface WorkerInfo { /** * worker 要加载的代码的url */ url: string; /** * worker 的名字 */ name: string; /** * worker 客户端 的 id */ clientId: number; /** * worker 的 id */ id: number; } /** * 获取 Worker 的回调函数 * @remarks * 这个函数就是用来根据回调的入参创建 worker 实例的 * * @param url - 用于创建 Worker 的 url; * @param name - Worker 的名字 */ export type GetWorker<W extends AbstractWorker = Worker> = (info: WorkerInfo) => W; /** * 默认的 getWorker * @param url * @param name * @returns */ export declare function getWorker_Default(info: WorkerInfo): Worker; /** * 动态 Worker 的初始配置 code */ export type DynamicWorkerCodes<Methods extends INamedFunctionMap> = Omit<IWorkerCodes, "named"> & { named?: Optional<Methods | INamedFunctionList>; }; /** * 动态 Worker 的选项 */ export interface DynamicWorkerOptions<W extends AbstractWorker = Worker> { /** * 获取 Worker 实例的方法 * @defaultValue 默认会创建私有 Worker */ getWorker?: Optional<GetWorker<W>>; /** * worker 的名字 */ name?: string; /** * 是否是不自动添加 动态 worker 依赖的环境代码 * 如果明确指定为 true,则不会包含 动态 worker 依赖的环境代码 * @defaultValue true */ noDep?: boolean; } /** * 从 worker 实例创建 动态 Worker 的选项 */ export interface DynamicWorkerFromInstOptions<W extends AbstractWorker = Worker> { /** * Worker 实例 */ worker: W; /** * worker 的名字 */ name?: string; } /** * 动态Worker * * @remarks * 动态 Worker 具备以下特点: * * - 往 Worker 中添加函数、全局变量 等 * * - 调用 Worker 中的任意全局函数 或 全局变量 * * - 像调用本地方法一样调用 Worker 里的方法 * * - 会自动给实例自身添加快捷命令 * * - 支持异步、流 * * - 支持异步和流互相嵌套 */ export declare class DynamicWorker<W extends AbstractWorker = Worker> extends WorkerClient<W> { /** * * @param worker 已创建好的 worker 实例 * @param name */ constructor(); constructor(worker: W, name?: string); constructor(url: string, workerOptions?: Optional<Omit<DynamicWorkerOptions<W>, "noDep">>); constructor(code: IWorkerCodes, workerOptions?: Optional<DynamicWorkerOptions<W>>); constructor(codeOrUrlOrWorker?: Optional<IWorkerCodes | string | W>, workerOptionsOrName?: Optional<DynamicWorkerOptions<W> | string>); /** * Worker 的实例 */ worker: DWorker<W>; /** * 正在执行中的任务数 */ get executingCount(): number; /** * 设置命令 * @remarks * 会在Worker中添加一条命令,并且也会在实例自身上添加一个快捷命令(快捷方法 或 快捷属性) * * @param cmd * @param name - 命令的命名;默认会取 `cmd.name` 作为名字;当 cmd 是字符串时,name 是必须的 * @param isProperty - 添加到实例自身的快捷命令是否作为属性;如果是 true,则会在实例自身上生成快捷属性 * @returns */ setCMD(cmd: string | AnyFunction, name?: Optional<string>, isProperty?: Optional<boolean>): Promise<boolean>; /** * 移除命令 * @remarks * 会将 Worker 中的命令 和 自己实例上的对应快捷方法都给移除 * @param name * @returns */ removeCMD(name: string): Promise<boolean>; } //# sourceMappingURL=DynamicWorker.d.ts.map