sc4
Version:
A command line utility for automating SimCity 4 modding tasks & modifying savegames
44 lines (43 loc) • 1.25 kB
TypeScript
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 {};