UNPKG

worker-tls

Version:

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

85 lines 4.35 kB
import { DynamicWorker, DynamicWorkerCodes, DynamicWorkerOptions } from "./DynamicWorker"; import { DynamicWorkerPool } from "./DynamicWorkerPool"; import type { AnyFunction, Optional, PickMethod } from "type-tls"; import type { INamedFunctionMap, IWorkerCodes } from "./createWorkerURL"; import type { WorkerClient } from "./WorkerClient"; import type { CallOptions } from "./type"; /** * 提取 ExecRes<D> 中的 D 的类型 * @remarks * 用于提取 ExecResult 类型中的 D 的类型 */ export type GetExecResultData<ExecRes> = ExecRes extends { data: infer D; } ? D : ExecRes; /** * 提取 函数 Fun 的返回类型 ExecRes<D> 中的 D 的类型 */ export type GetExecFunResultData<Fun extends (...args: any) => any> = GetExecResultData<Awaited<ReturnType<Fun>>>; /** * 异步函数的参数类型 */ export type AsyncFunArgs<Fun extends (...args: any) => any> = Parameters<Fun> | [CallOptions<Parameters<Fun>>]; /** * 把函数转为异步函数 */ export type AsyncFun<Fun extends (...args: any) => any> = GetExecFunResultData<Fun> extends ReadableStream ? (...args: AsyncFunArgs<Fun>) => GetExecFunResultData<Fun> : (...args: AsyncFunArgs<Fun>) => Promise<GetExecFunResultData<Fun>>; /** * 将所有方法都 转为 异步方法 * * @remarks * 所有的方法的入参不变,返回参数都变为解决值为对应类型的 Promise * * @typeParam Methods - 包含方法的对象 */ export type ToAsyncMethods<Methods extends INamedFunctionMap> = { [N in keyof Methods]: AsyncFun<Methods[N]>; }; /** * 将所有成员都 转为 异步h命令 * * @remarks * 所有的方法的入参不变,返回参数都变为解决值为对应类型的 Promise * 所有的属性都变为返回解决值为对应类型的 Promise 的方法 */ export type MembersToAsyncCMD<Target> = { [N in keyof Target]: AsyncCMD<Target[N]>; }; /** * 转为异步的命令 * @remarks * 函数的入参不变,返回参数都变为解决值为对应类型的 Promise * 其它非函数的值都变为返回解决值为对应类型的 Promise 的函数 */ export type AsyncCMD<Value> = Value extends AnyFunction ? AsyncFun<Value> : (() => Promise<Awaited<Value>>); /** * 创建Worker客户端的代理 * @param client * @returns */ export declare function createWorkerClientProxy<WClient extends WorkerClient<AbstractWorker>>(client: WClient): any; /** * 创建动态 Worker * * @param worker - worker实例 * @param name - worker中运行的js文件的url * @param url - Worker 中所包含的初始代码 * @param code - Worker 中所包含的初始代码 * @param workerOptions - Worker 相关的选项 * @returns */ export declare function createDynamicWorker<Members, W extends AbstractWorker = Worker>(noCode?: undefined | null, workerOptions?: Optional<DynamicWorkerOptions<W>>): MembersToAsyncCMD<Members> & DynamicWorker<W>; export declare function createDynamicWorker<Members, W extends AbstractWorker = Worker>(worker: W, name?: string): MembersToAsyncCMD<Members> & DynamicWorker<W>; export declare function createDynamicWorker<Members, W extends AbstractWorker = Worker>(url: string, workerOptions?: Optional<Omit<DynamicWorkerOptions<W>, "noDep">>): MembersToAsyncCMD<Members> & DynamicWorker<W>; export declare function createDynamicWorker<Members extends Record<string | number, any>, W extends AbstractWorker = Worker>(code: DynamicWorkerCodes<PickMethod<Members>>, workerOptions?: Optional<DynamicWorkerOptions<W>>): MembersToAsyncCMD<Members> & DynamicWorker<W>; export declare function createDynamicWorker<Members extends Record<string | number, any>, W extends AbstractWorker = Worker>(codeOptions?: Optional<DynamicWorkerCodes<Members> | string | W>, workerOptions?: Optional<DynamicWorkerOptions<W> | string>): MembersToAsyncCMD<Members> & DynamicWorker<W>; /** * 创建动态 Worker 池 * * @param workerNum - Worker池 中 workder 的个数 * @param codeOptions - Worker 中所包含的初始代码 * @param workerOptions - Worker 相关的选项 * @returns */ export declare function createDynamicWorkerPool<Members extends Record<string | number, any>, W extends AbstractWorker = Worker>(workerNum: number, codeOptions?: Optional<IWorkerCodes | string>, workerOptions?: Optional<DynamicWorkerOptions<W>>): MembersToAsyncCMD<Members> & DynamicWorkerPool<W>; //# sourceMappingURL=createDynamicWorker.d.ts.map