UNPKG

process-worker-executor

Version:

将多进程和多线程封装为统一的 Async/Await 调用方式, 简化 IPC 消息通信的复杂性

81 lines (70 loc) 2.45 kB
export type Executor = 'Process' | 'Worker' export interface ExecutorOptions { /** * 执行器存活时间(毫秒)。 * 所有任务完成后,经过此时间未新任务则释放资源 * @default 60000 (1分钟) */ ttl?: number /** * 属性代理筛选器。 * 返回 true 则代理该属性 * @default (prop, value) => true */ predicate?: (prop: string, value: unknown) => boolean /** * 日志目录路径(需确保有写入权限) * @remarks 与 `logFile` 同时设置时生效 */ logPath?: string /** * 日志文件名(无需后缀,自动追加 `.txt`) * @example "log" → 生成 `log.txt` * @remarks 与 `logPath` 同时设置时生效 */ logFile?: string /** * 代理对象的目标脚本路径(必须为绝对路径) * @required 当使用 `requireObject()` 时必须指定 */ scriptPath?: string /** * 元数据,可通过 `this._metadata` 在子进程/线程中访问 */ metedata?: Record<string, unknown> } /** * 异步代理对象类型 * @remarks 所有被代理方法均返回 Promise,支持通过最后一个 `boolean` 参数控制同步/异步模式 */ export interface AsyncProxy<T> { /** 终止执行器并释放资源 */ _dispose: () => Promise<void> /** 原始对象的代理方法 */ [key: string]: (...args: [...unknown[], boolean]) => Promise<unknown> } /** * 为对象创建跨进程/线程代理 * @param object - 需代理的原始对象(需导出对象/函数) * @param executor - 执行器类型(进程或线程) * @param options - 配置项(必须提供 `scriptPath`) * @returns 异步代理对象 */ declare function requireObject<T extends object>( object: T, executor: Executor, options: ExecutorOptions & { scriptPath: string } ): AsyncProxy<T> /** * 加载脚本文件并创建跨进程/线程代理 * @param scriptPath - 脚本绝对路径(需导出对象/函数) * @param executor - 执行器类型(进程或线程) * @param options - 配置项(可选提供 `scriptPath`) * @returns 异步代理对象 */ declare function requireScript<T extends object>( scriptPath: string, executor: Executor, options?: ExecutorOptions ): AsyncProxy<T> export { requireObject, requireScript }