-export default class WorkerFactory {
- public static getWorkerImpl(workerScript: string, workerProcessType: WorkerProcessType, options?: WorkerOptions): Wrk {
- if (Utils.isUndefined(options)) {
- options = {} as WorkerOptions;
+const DEFAULT_WORKER_OPTIONS: WorkerOptions = {
+ workerStartDelay: WorkerConstants.DEFAULT_WORKER_START_DELAY,
+ elementStartDelay: WorkerConstants.DEFAULT_ELEMENT_START_DELAY,
+ poolMinSize: WorkerConstants.DEFAULT_POOL_MIN_SIZE,
+ poolMaxSize: WorkerConstants.DEFAULT_POOL_MAX_SIZE,
+ elementsPerWorker: WorkerConstants.DEFAULT_ELEMENTS_PER_WORKER,
+ poolOptions: {},
+};
+
+export class WorkerFactory {
+ private constructor() {
+ // This is intentional
+ }
+
+ public static getWorkerImplementation<T extends WorkerData>(
+ workerScript: string,
+ workerProcessType: WorkerProcessType,
+ workerOptions?: WorkerOptions,
+ ): WorkerAbstract<T> | null {
+ if (!isMainThread) {
+ throw new Error('Cannot get a worker implementation outside the main thread');