UNPKG

sc4

Version:

A command line utility for automating SimCity 4 modding tasks & modifying savegames

44 lines (43 loc) 1.25 kB
import { AsyncResource } from 'node:async_hooks'; import { EventEmitter } from 'node:events'; import { Worker } from 'node:worker_threads'; import type { StructuredCloneable } from 'type-fest'; export type WorkerPoolOptions = { url?: string | URL; n?: number; script?: string | null; ts?: boolean; }; type TaskCallback = (...args: any[]) => any; type Task = { task: StructuredCloneable; callback: TaskCallback; }; type WorkerWithTaskInfo = Worker & { [kTaskInfo]: { [id: string]: WorkerPoolTaskInfo; }; }; declare const kTaskInfo: unique symbol; declare class WorkerPoolTaskInfo extends AsyncResource { callback: TaskCallback; constructor(callback: TaskCallback); done(err: Error | null, result: any): void; } export default class WorkerPool extends EventEmitter { url: string | undefined; ts: boolean; script: string | null; numThreads: number; workers: WorkerWithTaskInfo[]; freeWorkers: WorkerWithTaskInfo[]; tasks: Task[]; constructor(opts?: WorkerPoolOptions | string | URL); private addNewWorker; private runCallback; private runInThread; run(task: StructuredCloneable): Promise<unknown>; getUsage(): number[]; close(): void; } export {};