worker-tls
Version:
worker-tls 提供了 动态Worker 功能 和 其它一些 Worker 场景下有用的工具集;让开发者可以像调用对象方法一样动态地调用Worker中的方法,也可以随时地往 Worker 中动态地添加函数 等等。
137 lines • 3.91 kB
TypeScript
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