poolifier 2.7.4 → 2.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/pools/pool.ts","../src/pools/worker.ts","../src/utils.ts","../src/pools/selection-strategies/selection-strategies-types.ts","../src/pools/utils.ts","../src/worker/worker-options.ts","../src/pools/selection-strategies/abstract-worker-choice-strategy.ts","../src/pools/selection-strategies/fair-share-worker-choice-strategy.ts","../src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts","../src/pools/selection-strategies/least-busy-worker-choice-strategy.ts","../src/pools/selection-strategies/least-used-worker-choice-strategy.ts","../src/pools/selection-strategies/least-elu-worker-choice-strategy.ts","../src/pools/selection-strategies/round-robin-worker-choice-strategy.ts","../src/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.ts","../src/pools/selection-strategies/worker-choice-strategy-context.ts","../src/circular-array.ts","../src/deque.ts","../src/pools/worker-node.ts","../src/pools/abstract-pool.ts","../src/pools/version.ts","../src/pools/cluster/fixed.ts","../src/pools/thread/fixed.ts","../src/worker/utils.ts","../src/worker/abstract-worker.ts","../src/worker/cluster-worker.ts","../src/pools/cluster/dynamic.ts","../src/pools/thread/dynamic.ts","../src/worker/thread-worker.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["PoolTypes","Object","freeze","fixed","dynamic","PoolEvents","ready","busy","full","destroy","error","taskError","backPressure","WorkerTypes","thread","cluster","DEFAULT_TASK_NAME","EMPTY_FUNCTION","DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS","retries","runTime","median","waitTime","elu","DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS","aggregate","average","getWorkerType","worker","ThreadWorker","ClusterWorker","getWorkerId","threadId","id","dataSet","Array","isArray","length","reduce","accumulator","number","sortedDataSet","slice","sort","a","b","round","num","scale","rounder","Math","pow","Number","EPSILON","isPlainObject","obj","constructor","prototype","toString","call","isKillBehavior","killBehavior","value","isAsyncFunction","fn","name","secureRandom","webcrypto","getRandomValues","Uint32Array","min","args","minimum","Infinity","max","maximum","WorkerChoiceStrategies","ROUND_ROBIN","LEAST_USED","LEAST_BUSY","LEAST_ELU","FAIR_SHARE","WEIGHTED_ROUND_ROBIN","INTERLEAVED_WEIGHTED_ROUND_ROBIN","Measurements","checkDynamicPoolSize","TypeError","isSafeInteger","RangeError","checkValidWorkerChoiceStrategy","workerChoiceStrategy","values","includes","Error","checkValidTasksQueueOptions","tasksQueueOptions","concurrency","size","updateMeasurementStatistics","measurementStatistics","measurementRequirements","measurementValue","history","push","KillBehaviors","SOFT","HARD","AbstractWorkerChoiceStrategy","pool","opts","nextWorkerNodeKey","previousWorkerNodeKey","strategyPolicy","dynamicWorkerUsage","dynamicWorkerReady","taskStatisticsRequirements","this","choose","bind","setTaskStatisticsRequirements","toggleMedianMeasurementStatisticsRequirements","measurementStatisticsRequirements","toggleMedian","resetWorkerNodeKeyProperties","setOptions","isWorkerNodeReady","workerNodeKey","workerNodes","info","hasWorkerNodeBackPressure","isWorkerNodeEligible","getWorkerNodeTaskRunTime","usage","getWorkerNodeTaskWaitTime","getWorkerNodeTaskElu","active","setPreviousWorkerNodeKey","checkNextWorkerNodeEligibility","computeDefaultWorkerWeight","cpusCycleTimeWeight","cpu","cpus","numberOfDigits","speed","FairShareWorkerChoiceStrategy","super","reset","workerNode","strategyData","virtualTaskEndTimestamp","update","computeWorkerNodeVirtualTaskEndTimestamp","fairShareNextWorkerNodeKey","remove","minWorkerNodeKey","getWorkerNodeVirtualTaskEndTimestamp","getWorkerNodeVirtualTaskStartTimestamp","workerNodeVirtualTaskStartTimestamp","measurement","now","performance","InterleavedWeightedRoundRobinWorkerChoiceStrategy","roundId","defaultWorkerWeight","roundWeights","workerNodeId","workerNodeVirtualTaskRunTime","getRoundWeights","roundIndex","workerWeight","weights","interleavedWeightedRoundRobinNextWorkerNodeId","Set","LeastBusyWorkerChoiceStrategy","leastBusyNextWorkerNodeKey","LeastUsedWorkerChoiceStrategy","leastUsedNextWorkerNodeKey","tasks","executed","executing","queued","LeastEluWorkerChoiceStrategy","leastEluNextWorkerNodeKey","RoundRobinWorkerChoiceStrategy","chosenWorkerNodeKey","roundRobinNextWorkerNodeKey","WeightedRoundRobinWorkerChoiceStrategy","weightedRoundRobinNextWorkerNodeKey","WorkerChoiceStrategyContext","workerChoiceStrategies","retriesCount","execute","Map","getStrategyPolicy","get","getTaskStatisticsRequirements","setWorkerChoiceStrategy","CircularArray","items","checkSize","arguments","splice","unshift","concat","concatenatedCircularArray","start","deleteCount","itemsRemoved","itemsOverflowing","resize","i","pop","empty","Node","data","next","prev","Deque","head","tail","maxSize","clear","node","incrementSize","shift","peekFirst","peekLast","Symbol","iterator","undefined","done","ret","backward","WorkerNode","messageChannel","tasksQueueBackPressureSize","onBackPressure","onEmptyQueue","tasksQueue","onBackPressureStarted","onEmptyQueueCount","taskFunctionsUsage","checkWorkerNodeArguments","initWorkerInfo","initWorkerUsage","type","MessageChannel","tasksQueueSize","enqueueTask","task","hasBackPressure","unshiftTask","dequeueTask","startOnEmptyQueue","catch","popTask","clearTasksQueue","resetUsage","closeChannel","port1","unref","port2","close","getTaskFunctionWorkerUsage","taskFunctionNames","has","set","initTaskFunctionWorkerUsage","deleteTaskFunctionWorkerUsage","delete","async","ms","Promise","resolve","setTimeout","sleep","retryNumber","delayFactor","delay","exponentialDelay","getTasksQueueSize","getTasksQueueMaxSize","maxQueued","stolen","failed","idle","getTaskFunctionQueueSize","taskFunctionQueueSize","AbstractPool","numberOfWorkers","filePath","emitter","promiseResponseMap","workerChoiceStrategyContext","taskFunctions","started","starting","startTimestamp","isMain","trim","existsSync","checkFilePath","checkNumberOfWorkers","checkPoolOptions","chooseWorkerNode","executeTask","enableEvents","initializeEventEmitter","workerChoiceStrategyOptions","setupHook","startWorkers","checkValidWorkerChoiceStrategyOptions","restartWorkerOnError","enableTasksQueue","buildTasksQueueOptions","keys","EventEmitterAsyncResource","version","strategy","minSize","utilization","idleWorkerNodes","busyWorkerNodes","executedTasks","executingTasks","queuedTasks","maxQueuedTasks","stolenTasks","failedTasks","map","poolTimeCapacity","checkMessageWorkerId","message","workerId","getWorkerNodeKeyByWorkerId","getWorkerNodeKeyByWorker","findIndex","setWorkerChoiceStrategyOptions","entries","sendStatisticsMessageToWorker","enable","unsetTaskStealing","unsetTasksStealingOnBackPressure","flushTasksQueues","setTasksQueueOptions","setTasksQueueSize","taskStealing","setTaskStealing","tasksStealingOnBackPressure","setTasksStealingOnBackPressure","taskStealingOnEmptyQueue","internalBusy","sendTaskFunctionOperationToWorker","reject","taskFunctionOperationListener","getWorkerInfo","taskFunctionOperationStatus","taskFunctionOperation","workerError","deregisterWorkerMessageListener","registerWorkerMessageListener","sendToWorker","sendTaskFunctionOperationToWorkers","responsesReceived","taskFunctionOperationsListener","every","some","errorResponse","find","response","hasTaskFunction","addTaskFunction","opResult","taskFunctionName","taskFunction","removeTaskFunction","deleteTaskFunctionWorkerUsages","listTaskFunctionNames","setDefaultTaskFunction","shallExecuteTask","transferList","timestamp","taskId","randomUUID","createAndSetupWorkerNode","all","_","destroyWorkerNode","emit","emitDestroy","sendKillMessageToWorker","kill","beforeTaskExecutionHook","workerUsage","updateWaitTimeWorkerUsage","shallUpdateTaskFunctionWorkerUsage","taskFunctionWorkerUsage","afterTaskExecutionHook","updateTaskStatisticsWorkerUsage","updateRunTimeWorkerUsage","updateEluWorkerUsage","taskPerformance","workerInfo","workerTaskStatistics","taskWaitTime","eluTaskStatisticsRequirements","shallCreateDynamicWorker","createAndSetupDynamicWorkerNode","createWorker","on","onlineHandler","messageHandler","errorHandler","redistributeQueuedTasks","exitHandler","once","removeWorkerNode","addWorkerNode","afterWorkerNodeSetup","localWorkerNodeKey","checkActive","checkAndEmitDynamicWorkerCreationEvents","workerListener","sendStartupMessageToWorker","statistics","destinationWorkerNodeKey","updateTaskStolenStatisticsWorkerUsage","taskName","sourceWorkerNode","workerNodeA","workerNodeB","handleWorkerReadyResponse","handleTaskExecutionResponse","promiseResponse","checkAndEmitTaskExecutionEvents","checkAndEmitTaskQueuingEvents","flushTasksQueue","FixedClusterPool","setupPrimary","settings","exec","isPrimary","waitWorkerExit","disconnect","send","listener","registerOnceWorkerMessageListener","off","fork","env","FixedThreadPool","numberOfThreads","isMainThread","terminate","postMessage","port","Worker","SHARE_ENV","workerOptions","checkValidTaskFunctionEntry","checkTaskFunctionName","DEFAULT_MAX_INACTIVE_TIME","DEFAULT_WORKER_OPTIONS","maxInactiveTime","killHandler","AbstractWorker","AsyncResource","mainWorker","lastTaskTimestamp","activeInterval","checkTaskFunctions","checkWorkerOptions","getMainWorker","handleReadyMessage","checkValidWorkerOptions","boundFn","firstEntry","status","sendTaskFunctionNamesToMainWorker","deleteStatus","names","defaultTaskFunctionName","indexOf","filter","messageListener","startCheckActive","stopCheckActive","handleTaskFunctionOperationMessage","run","handleKillMessage","Function","sendToMainWorker","handleError","then","finally","setInterval","clearInterval","runInAsyncScope","runAsync","runSync","beginTaskPerformance","res","endTaskPerformance","updateLastTaskTimestamp","checkStatistics","eventLoopUtilization","parentPort","availableParallelism","os"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/pools/pool.ts","../src/pools/worker.ts","../src/utils.ts","../src/pools/selection-strategies/selection-strategies-types.ts","../src/pools/utils.ts","../src/worker/worker-options.ts","../src/pools/selection-strategies/abstract-worker-choice-strategy.ts","../src/pools/selection-strategies/fair-share-worker-choice-strategy.ts","../src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts","../src/pools/selection-strategies/least-busy-worker-choice-strategy.ts","../src/pools/selection-strategies/least-used-worker-choice-strategy.ts","../src/pools/selection-strategies/least-elu-worker-choice-strategy.ts","../src/pools/selection-strategies/round-robin-worker-choice-strategy.ts","../src/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.ts","../src/pools/selection-strategies/worker-choice-strategy-context.ts","../src/circular-array.ts","../src/deque.ts","../src/pools/worker-node.ts","../src/pools/abstract-pool.ts","../src/pools/version.ts","../src/pools/cluster/fixed.ts","../src/pools/thread/fixed.ts","../src/worker/utils.ts","../src/worker/abstract-worker.ts","../src/worker/cluster-worker.ts","../src/pools/cluster/dynamic.ts","../src/pools/thread/dynamic.ts","../src/worker/thread-worker.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["PoolTypes","Object","freeze","fixed","dynamic","PoolEvents","ready","busy","full","destroy","error","taskError","backPressure","WorkerTypes","thread","cluster","DEFAULT_TASK_NAME","EMPTY_FUNCTION","DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS","retries","runTime","median","waitTime","elu","DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS","aggregate","average","getWorkerType","worker","ThreadWorker","ClusterWorker","getWorkerId","threadId","id","dataSet","Array","isArray","length","reduce","accumulator","number","sortedDataSet","slice","sort","a","b","round","num","scale","rounder","Math","pow","Number","EPSILON","isPlainObject","obj","constructor","prototype","toString","call","isKillBehavior","killBehavior","value","isAsyncFunction","fn","name","secureRandom","webcrypto","getRandomValues","Uint32Array","min","args","minimum","Infinity","max","maximum","WorkerChoiceStrategies","ROUND_ROBIN","LEAST_USED","LEAST_BUSY","LEAST_ELU","FAIR_SHARE","WEIGHTED_ROUND_ROBIN","INTERLEAVED_WEIGHTED_ROUND_ROBIN","Measurements","checkDynamicPoolSize","TypeError","isSafeInteger","RangeError","checkValidWorkerChoiceStrategy","workerChoiceStrategy","values","includes","Error","checkValidTasksQueueOptions","tasksQueueOptions","concurrency","size","updateMeasurementStatistics","measurementStatistics","measurementRequirements","measurementValue","history","push","KillBehaviors","SOFT","HARD","AbstractWorkerChoiceStrategy","pool","opts","nextWorkerNodeKey","previousWorkerNodeKey","strategyPolicy","dynamicWorkerUsage","dynamicWorkerReady","taskStatisticsRequirements","this","choose","bind","setTaskStatisticsRequirements","toggleMedianMeasurementStatisticsRequirements","measurementStatisticsRequirements","toggleMedian","resetWorkerNodeKeyProperties","setOptions","isWorkerNodeReady","workerNodeKey","workerNodes","info","hasWorkerNodeBackPressure","isWorkerNodeEligible","getWorkerNodeTaskRunTime","usage","getWorkerNodeTaskWaitTime","getWorkerNodeTaskElu","active","setPreviousWorkerNodeKey","checkNextWorkerNodeEligibility","computeDefaultWorkerWeight","cpusCycleTimeWeight","cpu","cpus","numberOfDigits","speed","FairShareWorkerChoiceStrategy","super","reset","workerNode","strategyData","virtualTaskEndTimestamp","update","computeWorkerNodeVirtualTaskEndTimestamp","fairShareNextWorkerNodeKey","remove","minWorkerNodeKey","getWorkerNodeVirtualTaskEndTimestamp","getWorkerNodeVirtualTaskStartTimestamp","workerNodeVirtualTaskStartTimestamp","measurement","now","performance","InterleavedWeightedRoundRobinWorkerChoiceStrategy","roundId","defaultWorkerWeight","roundWeights","workerNodeId","workerNodeVirtualTaskRunTime","getRoundWeights","roundIndex","workerWeight","weights","interleavedWeightedRoundRobinNextWorkerNodeId","Set","LeastBusyWorkerChoiceStrategy","leastBusyNextWorkerNodeKey","LeastUsedWorkerChoiceStrategy","leastUsedNextWorkerNodeKey","tasks","executed","executing","queued","LeastEluWorkerChoiceStrategy","leastEluNextWorkerNodeKey","RoundRobinWorkerChoiceStrategy","chosenWorkerNodeKey","roundRobinNextWorkerNodeKey","WeightedRoundRobinWorkerChoiceStrategy","weightedRoundRobinNextWorkerNodeKey","WorkerChoiceStrategyContext","workerChoiceStrategies","retriesCount","execute","Map","getStrategyPolicy","get","getTaskStatisticsRequirements","setWorkerChoiceStrategy","CircularArray","items","checkSize","arguments","splice","unshift","concat","concatenatedCircularArray","start","deleteCount","itemsRemoved","itemsOverflowing","resize","i","pop","empty","Node","data","next","prev","Deque","head","tail","maxSize","clear","node","incrementSize","shift","peekFirst","peekLast","Symbol","iterator","undefined","done","ret","backward","WorkerNode","messageChannel","tasksQueueBackPressureSize","onBackPressure","onEmptyQueue","tasksQueue","onBackPressureStarted","onEmptyQueueCount","taskFunctionsUsage","checkWorkerNodeArguments","initWorkerInfo","initWorkerUsage","type","MessageChannel","tasksQueueSize","enqueueTask","task","hasBackPressure","unshiftTask","dequeueTask","startOnEmptyQueue","catch","popTask","clearTasksQueue","resetUsage","closeChannel","port1","unref","port2","close","getTaskFunctionWorkerUsage","taskFunctionNames","has","set","initTaskFunctionWorkerUsage","deleteTaskFunctionWorkerUsage","delete","async","ms","Promise","resolve","setTimeout","sleep","retryNumber","delayFactor","delay","exponentialDelay","getTasksQueueSize","getTasksQueueMaxSize","maxQueued","stolen","failed","idle","getTaskFunctionQueueSize","taskFunctionQueueSize","AbstractPool","numberOfWorkers","filePath","emitter","promiseResponseMap","workerChoiceStrategyContext","taskFunctions","started","starting","startTimestamp","isMain","trim","existsSync","checkFilePath","checkNumberOfWorkers","checkPoolOptions","chooseWorkerNode","executeTask","enableEvents","initializeEventEmitter","workerChoiceStrategyOptions","setupHook","startWorkers","checkValidWorkerChoiceStrategyOptions","restartWorkerOnError","enableTasksQueue","buildTasksQueueOptions","keys","EventEmitterAsyncResource","version","strategy","minSize","utilization","idleWorkerNodes","busyWorkerNodes","executedTasks","executingTasks","queuedTasks","maxQueuedTasks","stolenTasks","failedTasks","map","poolTimeCapacity","checkMessageWorkerId","message","workerId","getWorkerNodeKeyByWorkerId","getWorkerNodeKeyByWorker","findIndex","setWorkerChoiceStrategyOptions","entries","sendStatisticsMessageToWorker","enable","unsetTaskStealing","unsetTasksStealingOnBackPressure","flushTasksQueues","setTasksQueueOptions","setTasksQueueSize","taskStealing","setTaskStealing","tasksStealingOnBackPressure","setTasksStealingOnBackPressure","taskStealingOnEmptyQueue","internalBusy","sendTaskFunctionOperationToWorker","reject","taskFunctionOperationListener","getWorkerInfo","taskFunctionOperationStatus","taskFunctionOperation","workerError","deregisterWorkerMessageListener","registerWorkerMessageListener","sendToWorker","sendTaskFunctionOperationToWorkers","responsesReceived","taskFunctionOperationsListener","every","some","errorResponse","find","response","hasTaskFunction","addTaskFunction","opResult","taskFunctionName","taskFunction","removeTaskFunction","deleteTaskFunctionWorkerUsages","listTaskFunctionNames","setDefaultTaskFunction","shallExecuteTask","transferList","timestamp","taskId","randomUUID","createAndSetupWorkerNode","all","_","destroyWorkerNode","emit","emitDestroy","sendKillMessageToWorker","kill","beforeTaskExecutionHook","workerUsage","updateWaitTimeWorkerUsage","shallUpdateTaskFunctionWorkerUsage","taskFunctionWorkerUsage","afterTaskExecutionHook","updateTaskStatisticsWorkerUsage","updateRunTimeWorkerUsage","updateEluWorkerUsage","taskPerformance","workerInfo","workerTaskStatistics","taskWaitTime","eluTaskStatisticsRequirements","shallCreateDynamicWorker","createAndSetupDynamicWorkerNode","createWorker","on","onlineHandler","messageHandler","errorHandler","redistributeQueuedTasks","exitHandler","once","removeWorkerNode","addWorkerNode","afterWorkerNodeSetup","localWorkerNodeKey","checkActive","checkAndEmitDynamicWorkerCreationEvents","workerListener","sendStartupMessageToWorker","statistics","destinationWorkerNodeKey","updateTaskStolenStatisticsWorkerUsage","taskName","sourceWorkerNode","workerNodeA","workerNodeB","handleWorkerReadyResponse","handleTaskExecutionResponse","promiseResponse","checkAndEmitTaskExecutionEvents","checkAndEmitTaskQueuingEvents","flushTasksQueue","FixedClusterPool","setupPrimary","settings","exec","isPrimary","waitWorkerExit","disconnect","send","listener","registerOnceWorkerMessageListener","off","fork","env","FixedThreadPool","numberOfThreads","isMainThread","terminate","postMessage","port","Worker","SHARE_ENV","workerOptions","checkValidTaskFunctionEntry","checkTaskFunctionName","DEFAULT_MAX_INACTIVE_TIME","DEFAULT_WORKER_OPTIONS","maxInactiveTime","killHandler","AbstractWorker","AsyncResource","mainWorker","lastTaskTimestamp","activeInterval","checkTaskFunctions","checkWorkerOptions","getMainWorker","handleReadyMessage","checkValidWorkerOptions","boundFn","firstEntry","status","sendTaskFunctionNamesToMainWorker","deleteStatus","names","defaultTaskFunctionName","indexOf","filter","messageListener","startCheckActive","stopCheckActive","handleTaskFunctionOperationMessage","run","handleKillMessage","Function","sendToMainWorker","handleError","then","finally","setInterval","clearInterval","runInAsyncScope","runAsync","runSync","beginTaskPerformance","res","endTaskPerformance","updateLastTaskTimestamp","checkStatistics","eventLoopUtilization","parentPort","availableParallelism","os"],"mappings":"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"}
package/lib/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{existsSync as e}from"node:fs";import*as t from"node:os";import{cpus as s}from"node:os";import{webcrypto as r,randomUUID as i}from"node:crypto";import o,{Worker as n}from"node:cluster";import{Worker as a,MessageChannel as u,isMainThread as h,SHARE_ENV as k,parentPort as c,threadId as d}from"node:worker_threads";import{performance as l}from"node:perf_hooks";import{EventEmitterAsyncResource as g}from"node:events";import{AsyncResource as m}from"node:async_hooks";const p=Object.freeze({fixed:"fixed",dynamic:"dynamic"}),w=Object.freeze({ready:"ready",busy:"busy",full:"full",destroy:"destroy",error:"error",taskError:"taskError",backPressure:"backPressure"}),y=Object.freeze({thread:"thread",cluster:"cluster"}),T="default",f=Object.freeze((()=>{})),N={retries:6,runTime:{median:!1},waitTime:{median:!1},elu:{median:!1}},W={aggregate:!1,average:!1,median:!1},S=()=>{let e=1;try{e=t.availableParallelism()}catch{const s=t.cpus();Array.isArray(s)&&s.length>0&&(e=s.length)}return e},x=e=>e instanceof a?y.thread:e instanceof n?y.cluster:void 0,E=e=>e instanceof a?e.threadId:e instanceof n?e.id:void 0,v=e=>Array.isArray(e)&&0===e.length?0:Array.isArray(e)&&1===e.length?e[0]:e.reduce(((e,t)=>e+t),0)/e.length,I=e=>{if(Array.isArray(e)&&0===e.length)return 0;if(Array.isArray(e)&&1===e.length)return e[0];const t=e.slice().sort(((e,t)=>e-t));return(t[t.length-1>>1]+t[t.length>>1])/2},b=(e,t=2)=>{const s=Math.pow(10,t);return Math.round(e*s*(1+Number.EPSILON))/s},F=e=>"object"==typeof e&&null!==e&&e?.constructor===Object&&"[object Object]"===Object.prototype.toString.call(e),C=(e,t)=>t===e,O=e=>"function"==typeof e&&"AsyncFunction"===e.constructor.name,R=()=>r.getRandomValues(new Uint32Array(1))[0]/4294967296,z=(...e)=>e.reduce(((e,t)=>e<t?e:t),1/0),Q=(...e)=>e.reduce(((e,t)=>e>t?e:t),-1/0),M=Object.freeze({ROUND_ROBIN:"ROUND_ROBIN",LEAST_USED:"LEAST_USED",LEAST_BUSY:"LEAST_BUSY",LEAST_ELU:"LEAST_ELU",FAIR_SHARE:"FAIR_SHARE",WEIGHTED_ROUND_ROBIN:"WEIGHTED_ROUND_ROBIN",INTERLEAVED_WEIGHTED_ROUND_ROBIN:"INTERLEAVED_WEIGHTED_ROUND_ROBIN"}),P=Object.freeze({runTime:"runTime",waitTime:"waitTime",elu:"elu"}),K=(e,t)=>{if(null==t)throw new TypeError("Cannot instantiate a dynamic pool without specifying the maximum pool size");if(!Number.isSafeInteger(t))throw new TypeError("Cannot instantiate a dynamic pool with a non safe integer maximum pool size");if(e>t)throw new RangeError("Cannot instantiate a dynamic pool with a maximum pool size inferior to the minimum pool size");if(0===t)throw new RangeError("Cannot instantiate a dynamic pool with a maximum pool size equal to zero");if(e===t)throw new RangeError("Cannot instantiate a dynamic pool with a minimum pool size equal to the maximum pool size. Use a fixed pool instead")},B=e=>{if(null!=e&&!Object.values(M).includes(e))throw new Error(`Invalid worker choice strategy '${e}'`)},q=e=>{if(null!=e&&!F(e))throw new TypeError("Invalid tasks queue options: must be a plain object");if(null!=e?.concurrency&&!Number.isSafeInteger(e.concurrency))throw new TypeError("Invalid worker node tasks concurrency: must be an integer");if(null!=e?.concurrency&&e.concurrency<=0)throw new RangeError(`Invalid worker node tasks concurrency: ${e.concurrency} is a negative integer or zero`);if(null!=e?.size&&!Number.isSafeInteger(e.size))throw new TypeError("Invalid worker node tasks queue size: must be an integer");if(null!=e?.size&&e.size<=0)throw new RangeError(`Invalid worker node tasks queue size: ${e.size} is a negative integer or zero`)},U=(e,t,s)=>{t.aggregate&&(e.aggregate=(e.aggregate??0)+s,e.minimum=z(s,e.minimum??1/0),e.maximum=Q(s,e.maximum??-1/0),(t.average||t.median)&&null!=s&&(e.history.push(s),t.average?e.average=v(e.history):null!=e.average&&delete e.average,t.median?e.median=I(e.history):null!=e.median&&delete e.median))},A=Object.freeze({SOFT:"SOFT",HARD:"HARD"});class D{pool;opts;nextWorkerNodeKey=0;previousWorkerNodeKey=0;strategyPolicy={dynamicWorkerUsage:!1,dynamicWorkerReady:!0};taskStatisticsRequirements={runTime:W,waitTime:W,elu:W};constructor(e,t=N){this.pool=e,this.opts=t,this.opts={...N,...t},this.choose=this.choose.bind(this)}setTaskStatisticsRequirements(e){this.toggleMedianMeasurementStatisticsRequirements(this.taskStatisticsRequirements.runTime,e.runTime?.median),this.toggleMedianMeasurementStatisticsRequirements(this.taskStatisticsRequirements.waitTime,e.waitTime?.median),this.toggleMedianMeasurementStatisticsRequirements(this.taskStatisticsRequirements.elu,e.elu?.median)}toggleMedianMeasurementStatisticsRequirements(e,t){e.average&&t&&(e.average=!1,e.median=t),e.median&&!t&&(e.average=!0,e.median=t)}resetWorkerNodeKeyProperties(){this.nextWorkerNodeKey=0,this.previousWorkerNodeKey=0}setOptions(e){this.opts={...N,...e},this.setTaskStatisticsRequirements(this.opts)}isWorkerNodeReady(e){return this.pool.workerNodes[e].info.ready}hasWorkerNodeBackPressure(e){return this.pool.hasWorkerNodeBackPressure(e)}isWorkerNodeEligible(e){return this.isWorkerNodeReady(e)&&!this.hasWorkerNodeBackPressure(e)}getWorkerNodeTaskRunTime(e){return this.taskStatisticsRequirements.runTime.median?this.pool.workerNodes[e].usage.runTime.median??0:this.pool.workerNodes[e].usage.runTime.average??0}getWorkerNodeTaskWaitTime(e){return this.taskStatisticsRequirements.waitTime.median?this.pool.workerNodes[e].usage.waitTime.median??0:this.pool.workerNodes[e].usage.waitTime.average??0}getWorkerNodeTaskElu(e){return this.taskStatisticsRequirements.elu.median?this.pool.workerNodes[e].usage.elu.active.median??0:this.pool.workerNodes[e].usage.elu.active.average??0}setPreviousWorkerNodeKey(e){this.previousWorkerNodeKey=e??this.previousWorkerNodeKey}checkNextWorkerNodeEligibility(){this.isWorkerNodeEligible(this.nextWorkerNodeKey)||delete this.nextWorkerNodeKey}computeDefaultWorkerWeight(){let e=0;for(const t of s()){const s=t.speed.toString().length-1;e+=1/(t.speed/Math.pow(10,s))*Math.pow(10,s)}return Math.round(e/s().length)}}class L extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:W,elu:{aggregate:!0,average:!0,median:!1}};constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){for(const e of this.pool.workerNodes)delete e.strategyData?.virtualTaskEndTimestamp;return!0}update(e){return this.pool.workerNodes[e].strategyData={virtualTaskEndTimestamp:this.computeWorkerNodeVirtualTaskEndTimestamp(e)},!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.fairShareNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}fairShareNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>(null==t.strategyData?.virtualTaskEndTimestamp&&(t.strategyData={virtualTaskEndTimestamp:this.computeWorkerNodeVirtualTaskEndTimestamp(s)}),t.strategyData.virtualTaskEndTimestamp<r[e].strategyData.virtualTaskEndTimestamp?s:e)),0)}computeWorkerNodeVirtualTaskEndTimestamp(e){return this.getWorkerNodeVirtualTaskEndTimestamp(e,this.getWorkerNodeVirtualTaskStartTimestamp(e))}getWorkerNodeVirtualTaskEndTimestamp(e,t){return t+(this.opts.measurement===P.elu?this.getWorkerNodeTaskElu(e):this.getWorkerNodeTaskRunTime(e))}getWorkerNodeVirtualTaskStartTimestamp(e){const t=this.pool.workerNodes[e]?.strategyData?.virtualTaskEndTimestamp,s=performance.now();return s<(t??-1/0)?t:s}}class _ extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:W,elu:W};roundId=0;defaultWorkerWeight;roundWeights;workerNodeId=0;workerNodeVirtualTaskRunTime=0;constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts),this.defaultWorkerWeight=this.computeDefaultWorkerWeight(),this.roundWeights=this.getRoundWeights()}reset(){return this.resetWorkerNodeKeyProperties(),this.roundId=0,this.workerNodeId=0,this.workerNodeVirtualTaskRunTime=0,!0}update(){return!0}choose(){for(let e=this.roundId;e<this.roundWeights.length;e++){this.roundId=e;for(let t=this.workerNodeId;t<this.pool.workerNodes.length;t++){this.workerNodeId=t,this.workerNodeId!==this.nextWorkerNodeKey&&0!==this.workerNodeVirtualTaskRunTime&&(this.workerNodeVirtualTaskRunTime=0);const s=this.opts.weights?.[t]??this.defaultWorkerWeight;if(s>=this.roundWeights[e]&&this.workerNodeVirtualTaskRunTime<s)return this.workerNodeVirtualTaskRunTime=this.workerNodeVirtualTaskRunTime+this.getWorkerNodeTaskRunTime(t),this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=t,this.nextWorkerNodeKey}}this.interleavedWeightedRoundRobinNextWorkerNodeId()}interleavedWeightedRoundRobinNextWorkerNodeId(){this.roundId===this.roundWeights.length-1&&this.workerNodeId===this.pool.workerNodes.length-1?(this.roundId=0,this.workerNodeId=0):this.workerNodeId===this.pool.workerNodes.length-1?(this.roundId=this.roundId+1,this.workerNodeId=0):this.workerNodeId=this.workerNodeId+1}remove(e){return 0===this.pool.workerNodes.length&&this.reset(),this.workerNodeId===e&&this.workerNodeId>this.pool.workerNodes.length-1&&(this.workerNodeId=this.pool.workerNodes.length-1),this.previousWorkerNodeKey===e&&this.previousWorkerNodeKey>this.pool.workerNodes.length-1&&(this.previousWorkerNodeKey=this.pool.workerNodes.length-1),!0}setOptions(e){super.setOptions(e),this.roundWeights=this.getRoundWeights()}getRoundWeights(){return null==this.opts.weights?[this.defaultWorkerWeight]:[...new Set(Object.values(this.opts.weights).slice().sort(((e,t)=>e-t)))]}}class H extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!1,median:!1},waitTime:{aggregate:!0,average:!1,median:!1},elu:W};constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.leastBusyNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}leastBusyNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>(t.usage.runTime.aggregate??0)+(t.usage.waitTime.aggregate??0)<(r[e].usage.runTime.aggregate??0)+(r[e].usage.waitTime.aggregate??0)?s:e),0)}}class j extends D{constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.leastUsedNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}leastUsedNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>t.usage.tasks.executed+t.usage.tasks.executing+t.usage.tasks.queued<r[e].usage.tasks.executed+r[e].usage.tasks.executing+r[e].usage.tasks.queued?s:e),0)}}class V extends D{taskStatisticsRequirements={runTime:W,waitTime:W,elu:{aggregate:!0,average:!1,median:!1}};constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.leastEluNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}leastEluNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>(t.usage.elu.active.aggregate??0)<(r[e].usage.elu.active.aggregate??0)?s:e),0)}}class $ extends D{constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return this.resetWorkerNodeKeyProperties(),!0}update(){return!0}choose(){const e=this.nextWorkerNodeKey;return this.setPreviousWorkerNodeKey(e),this.roundRobinNextWorkerNodeKey(),e}remove(e){return 0===this.pool.workerNodes.length&&this.reset(),this.nextWorkerNodeKey===e&&this.nextWorkerNodeKey>this.pool.workerNodes.length-1&&(this.nextWorkerNodeKey=this.pool.workerNodes.length-1),this.previousWorkerNodeKey===e&&this.previousWorkerNodeKey>this.pool.workerNodes.length-1&&(this.previousWorkerNodeKey=this.pool.workerNodes.length-1),!0}roundRobinNextWorkerNodeKey(){return this.nextWorkerNodeKey=this.nextWorkerNodeKey===this.pool.workerNodes.length-1?0:(this.nextWorkerNodeKey??this.previousWorkerNodeKey)+1,this.nextWorkerNodeKey}}class G extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:W,elu:W};defaultWorkerWeight;workerNodeVirtualTaskRunTime=0;constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts),this.defaultWorkerWeight=this.computeDefaultWorkerWeight()}reset(){return this.resetWorkerNodeKeyProperties(),this.workerNodeVirtualTaskRunTime=0,!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.weightedRoundRobinNextWorkerNodeKey()}remove(e){return 0===this.pool.workerNodes.length&&this.reset(),this.nextWorkerNodeKey===e&&(this.workerNodeVirtualTaskRunTime=0,this.nextWorkerNodeKey>this.pool.workerNodes.length-1&&(this.nextWorkerNodeKey=this.pool.workerNodes.length-1)),this.previousWorkerNodeKey===e&&this.previousWorkerNodeKey>this.pool.workerNodes.length-1&&(this.previousWorkerNodeKey=this.pool.workerNodes.length-1),!0}weightedRoundRobinNextWorkerNodeKey(){const e=this.opts.weights?.[this.nextWorkerNodeKey??this.previousWorkerNodeKey]??this.defaultWorkerWeight;return this.workerNodeVirtualTaskRunTime<e?this.workerNodeVirtualTaskRunTime=this.workerNodeVirtualTaskRunTime+this.getWorkerNodeTaskRunTime(this.nextWorkerNodeKey??this.previousWorkerNodeKey):(this.nextWorkerNodeKey=this.nextWorkerNodeKey===this.pool.workerNodes.length-1?0:(this.nextWorkerNodeKey??this.previousWorkerNodeKey)+1,this.workerNodeVirtualTaskRunTime=0),this.nextWorkerNodeKey}}class Y{workerChoiceStrategy;opts;workerChoiceStrategies;retriesCount=0;constructor(e,t=M.ROUND_ROBIN,s=N){this.workerChoiceStrategy=t,this.opts=s,this.opts={...N,...s},this.execute=this.execute.bind(this),this.workerChoiceStrategies=new Map([[M.ROUND_ROBIN,new($.bind(this))(e,s)],[M.LEAST_USED,new(j.bind(this))(e,s)],[M.LEAST_BUSY,new(H.bind(this))(e,s)],[M.LEAST_ELU,new(V.bind(this))(e,s)],[M.FAIR_SHARE,new(L.bind(this))(e,s)],[M.WEIGHTED_ROUND_ROBIN,new(G.bind(this))(e,s)],[M.INTERLEAVED_WEIGHTED_ROUND_ROBIN,new(_.bind(this))(e,s)]])}getStrategyPolicy(){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).strategyPolicy}getTaskStatisticsRequirements(){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).taskStatisticsRequirements}setWorkerChoiceStrategy(e){this.workerChoiceStrategy!==e&&(this.workerChoiceStrategy=e),this.workerChoiceStrategies.get(this.workerChoiceStrategy)?.reset()}update(e){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).update(e)}execute(){const e=this.workerChoiceStrategies.get(this.workerChoiceStrategy).choose();if(null==e&&this.retriesCount<this.opts.retries)return this.retriesCount++,this.execute();if(null==e)throw new Error(`Worker node key chosen is null or undefined after ${this.retriesCount} retries`);return this.retriesCount=0,e}remove(e){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).remove(e)}setOptions(e){this.opts={...N,...e};for(const t of this.workerChoiceStrategies.values())t.setOptions(e)}}class J extends Array{size;constructor(e=1024,...t){super(),this.checkSize(e),this.size=e,arguments.length>1&&this.push(...t)}push(...e){const t=super.push(...e);return t>this.size&&super.splice(0,t-this.size),this.length}unshift(...e){return super.unshift(...e)>this.size&&super.splice(this.size,e.length),this.length}concat(...e){const t=super.concat(e);return t.size=this.size,t.length>t.size&&t.splice(0,t.length-t.size),t}splice(e,t,...s){let r=[];if(arguments.length>=3&&null!=t){if(r=super.splice(e,t,...s),this.length>this.size){const e=super.splice(0,this.length-this.size);r=new J(r.length+e.length,...r,...e)}}else r=2===arguments.length?super.splice(e,t):super.splice(e);return r}resize(e){if(this.checkSize(e),0===e)this.length=0;else if(e<this.size)for(let t=e;t<this.size;t++)super.pop();this.size=e}empty(){return 0===this.length}full(){return this.length===this.size}checkSize(e){if(!Number.isSafeInteger(e))throw new TypeError(`Invalid circular array size: ${e} is not a safe integer`);if(e<0)throw new RangeError(`Invalid circular array size: ${e} < 0`)}}class X{data;next;prev;constructor(e){this.data=e}}class Z{head;tail;size;maxSize;constructor(){this.clear()}push(e){const t=new X(e);return null==this.tail?this.head=this.tail=t:(t.prev=this.tail,this.tail=this.tail.next=t),this.incrementSize()}unshift(e){const t=new X(e);return null==this.head?this.head=this.tail=t:(t.next=this.head,this.head=this.head.prev=t),this.incrementSize()}pop(){if(null==this.head)return;const e=this.tail;return this.tail=this.tail.prev,null==this.tail?delete this.head:delete this.tail.next,--this.size,e?.data}shift(){if(null==this.head)return;const e=this.head;return this.head=this.head.next,null==this.head?delete this.tail:delete this.head.prev,--this.size,e?.data}peekFirst(){return this.head?.data}peekLast(){return this.tail?.data}clear(){delete this.head,delete this.tail,this.size=0,this.maxSize=0}[Symbol.iterator](){let e=this.head;return{next:()=>{if(null==e)return{value:void 0,done:!0};const t={value:e.data,done:!1};return e=e.next,t}}}backward(){return{[Symbol.iterator]:()=>{let e=this.tail;return{next:()=>{if(null==e)return{value:void 0,done:!0};const t={value:e.data,done:!1};return e=e.prev,t}}}}}incrementSize(){return++this.size,this.size>this.maxSize&&(this.maxSize=this.size),this.size}}class ee{worker;info;usage;strategyData;messageChannel;tasksQueueBackPressureSize;onBackPressure;onEmptyQueue;tasksQueue;onBackPressureStarted;onEmptyQueueCount;taskFunctionsUsage;constructor(e,t){((e,t)=>{if(null==e)throw new TypeError("Cannot construct a worker node without a worker");if(null==t)throw new TypeError("Cannot construct a worker node without a tasks queue back pressure size");if(!Number.isSafeInteger(t))throw new TypeError("Cannot construct a worker node with a tasks queue back pressure size that is not an integer");if(t<=0)throw new RangeError("Cannot construct a worker node with a tasks queue back pressure size that is not a positive integer")})(e,t),this.worker=e,this.info=this.initWorkerInfo(e),this.usage=this.initWorkerUsage(),this.info.type===y.thread&&(this.messageChannel=new u),this.tasksQueueBackPressureSize=t,this.tasksQueue=new Z,this.onBackPressureStarted=!1,this.onEmptyQueueCount=0,this.taskFunctionsUsage=new Map}tasksQueueSize(){return this.tasksQueue.size}enqueueTask(e){const t=this.tasksQueue.push(e);return null!=this.onBackPressure&&this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.onBackPressure(this.info.id),this.onBackPressureStarted=!1),t}unshiftTask(e){const t=this.tasksQueue.unshift(e);return null!=this.onBackPressure&&this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.onBackPressure(this.info.id),this.onBackPressureStarted=!1),t}dequeueTask(){const e=this.tasksQueue.shift();return null!=this.onEmptyQueue&&0===this.tasksQueue.size&&0===this.onEmptyQueueCount&&this.startOnEmptyQueue().catch(f),e}popTask(){const e=this.tasksQueue.pop();return null!=this.onEmptyQueue&&0===this.tasksQueue.size&&0===this.onEmptyQueueCount&&this.startOnEmptyQueue().catch(f),e}clearTasksQueue(){this.tasksQueue.clear()}hasBackPressure(){return this.tasksQueue.size>=this.tasksQueueBackPressureSize}resetUsage(){this.usage=this.initWorkerUsage(),this.taskFunctionsUsage.clear()}closeChannel(){null!=this.messageChannel&&(this.messageChannel?.port1.unref(),this.messageChannel?.port2.unref(),this.messageChannel?.port1.close(),this.messageChannel?.port2.close(),delete this.messageChannel)}getTaskFunctionWorkerUsage(e){if(!Array.isArray(this.info.taskFunctionNames))throw new Error(`Cannot get task function worker usage for task function name '${e}' when task function names list is not yet defined`);if(Array.isArray(this.info.taskFunctionNames)&&this.info.taskFunctionNames.length<3)throw new Error(`Cannot get task function worker usage for task function name '${e}' when task function names list has less than 3 elements`);return e===T&&(e=this.info.taskFunctionNames[1]),this.taskFunctionsUsage.has(e)||this.taskFunctionsUsage.set(e,this.initTaskFunctionWorkerUsage(e)),this.taskFunctionsUsage.get(e)}deleteTaskFunctionWorkerUsage(e){return this.taskFunctionsUsage.delete(e)}async startOnEmptyQueue(){this.onEmptyQueueCount>0&&(this.usage.tasks.executing>0||this.tasksQueue.size>0)?this.onEmptyQueueCount=0:(++this.onEmptyQueueCount,this.onEmptyQueue?.(this.info.id),await(async e=>{await new Promise((t=>{setTimeout(t,e)}))})(((e=0,t=100)=>{const s=Math.pow(2,e)*t;return s+.2*s*R()})(this.onEmptyQueueCount)),await this.startOnEmptyQueue())}initWorkerInfo(e){return{id:E(e),type:x(e),dynamic:!1,ready:!1}}initWorkerUsage(){const e=()=>this.tasksQueue.size,t=()=>this.tasksQueue.maxSize;return{tasks:{executed:0,executing:0,get queued(){return e()},get maxQueued(){return t()},stolen:0,failed:0},runTime:{history:new J},waitTime:{history:new J},elu:{idle:{history:new J},active:{history:new J}}}}initTaskFunctionWorkerUsage(e){const t=()=>{let t=0;for(const s of this.tasksQueue)(s.name===T&&e===this.info.taskFunctionNames[1]||s.name!==T&&e===s.name)&&++t;return t};return{tasks:{executed:0,executing:0,get queued(){return t()},stolen:0,failed:0},runTime:{history:new J},waitTime:{history:new J},elu:{idle:{history:new J},active:{history:new J}}}}}class te{numberOfWorkers;filePath;opts;workerNodes=[];emitter;promiseResponseMap=new Map;workerChoiceStrategyContext;max;taskFunctions;started;starting;startTimestamp;constructor(t,s,r){if(this.numberOfWorkers=t,this.filePath=s,this.opts=r,!this.isMain())throw new Error("Cannot start a pool from a worker with the same type as the pool");(t=>{if(null==t||"string"!=typeof t||"string"==typeof t&&0===t.trim().length)throw new Error("Please specify a file with a worker implementation");if(!e(t))throw new Error(`Cannot find the worker file '${t}'`)})(this.filePath),this.checkNumberOfWorkers(this.numberOfWorkers),this.checkPoolOptions(this.opts),this.chooseWorkerNode=this.chooseWorkerNode.bind(this),this.executeTask=this.executeTask.bind(this),this.enqueueTask=this.enqueueTask.bind(this),!0===this.opts.enableEvents&&this.initializeEventEmitter(),this.workerChoiceStrategyContext=new Y(this,this.opts.workerChoiceStrategy,this.opts.workerChoiceStrategyOptions),this.setupHook(),this.taskFunctions=new Map,this.started=!1,this.starting=!1,!0===this.opts.startWorkers&&this.start(),this.startTimestamp=l.now()}checkNumberOfWorkers(e){if(null==e)throw new Error("Cannot instantiate a pool without specifying the number of workers");if(!Number.isSafeInteger(e))throw new TypeError("Cannot instantiate a pool with a non safe integer number of workers");if(e<0)throw new RangeError("Cannot instantiate a pool with a negative number of workers");if(this.type===p.fixed&&0===e)throw new RangeError("Cannot instantiate a fixed pool with zero worker")}checkPoolOptions(e){if(!F(e))throw new TypeError("Invalid pool options: must be a plain object");this.opts.startWorkers=e.startWorkers??!0,B(e.workerChoiceStrategy),this.opts.workerChoiceStrategy=e.workerChoiceStrategy??M.ROUND_ROBIN,this.checkValidWorkerChoiceStrategyOptions(e.workerChoiceStrategyOptions),this.opts.workerChoiceStrategyOptions={...N,...e.workerChoiceStrategyOptions},this.opts.restartWorkerOnError=e.restartWorkerOnError??!0,this.opts.enableEvents=e.enableEvents??!0,this.opts.enableTasksQueue=e.enableTasksQueue??!1,this.opts.enableTasksQueue&&(q(e.tasksQueueOptions),this.opts.tasksQueueOptions=this.buildTasksQueueOptions(e.tasksQueueOptions))}checkValidWorkerChoiceStrategyOptions(e){if(null!=e&&!F(e))throw new TypeError("Invalid worker choice strategy options: must be a plain object");if(null!=e?.retries&&!Number.isSafeInteger(e.retries))throw new TypeError("Invalid worker choice strategy options: retries must be an integer");if(null!=e?.retries&&e.retries<0)throw new RangeError(`Invalid worker choice strategy options: retries '${e.retries}' must be greater or equal than zero`);if(null!=e?.weights&&Object.keys(e.weights).length!==this.maxSize)throw new Error("Invalid worker choice strategy options: must have a weight for each worker node");if(null!=e?.measurement&&!Object.values(P).includes(e.measurement))throw new Error(`Invalid worker choice strategy options: invalid measurement '${e.measurement}'`)}initializeEventEmitter(){this.emitter=new g({name:`poolifier:${this.type}-${this.worker}-pool`})}get info(){return{version:"2.7.4",type:this.type,worker:this.worker,started:this.started,ready:this.ready,strategy:this.opts.workerChoiceStrategy,minSize:this.minSize,maxSize:this.maxSize,...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate&&this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.aggregate&&{utilization:b(this.utilization)},workerNodes:this.workerNodes.length,idleWorkerNodes:this.workerNodes.reduce(((e,t)=>0===t.usage.tasks.executing?e+1:e),0),busyWorkerNodes:this.workerNodes.reduce(((e,t)=>t.usage.tasks.executing>0?e+1:e),0),executedTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.executed),0),executingTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.executing),0),...!0===this.opts.enableTasksQueue&&{queuedTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.queued),0)},...!0===this.opts.enableTasksQueue&&{maxQueuedTasks:this.workerNodes.reduce(((e,t)=>e+(t.usage.tasks?.maxQueued??0)),0)},...!0===this.opts.enableTasksQueue&&{backPressure:this.hasBackPressure()},...!0===this.opts.enableTasksQueue&&{stolenTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.stolen),0)},failedTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.failed),0),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate&&{runTime:{minimum:b(z(...this.workerNodes.map((e=>e.usage.runTime?.minimum??1/0)))),maximum:b(Q(...this.workerNodes.map((e=>e.usage.runTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.average&&{average:b(v(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median&&{median:b(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))}}},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.aggregate&&{waitTime:{minimum:b(z(...this.workerNodes.map((e=>e.usage.waitTime?.minimum??1/0)))),maximum:b(Q(...this.workerNodes.map((e=>e.usage.waitTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.average&&{average:b(v(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.waitTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.median&&{median:b(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.waitTime.history)),[])))}}}}}get ready(){return this.workerNodes.reduce(((e,t)=>!t.info.dynamic&&t.info.ready?e+1:e),0)>=this.minSize}get utilization(){const e=(l.now()-this.startTimestamp)*this.maxSize;return(this.workerNodes.reduce(((e,t)=>e+(t.usage.runTime?.aggregate??0)),0)+this.workerNodes.reduce(((e,t)=>e+(t.usage.waitTime?.aggregate??0)),0))/e}get minSize(){return this.numberOfWorkers}get maxSize(){return this.max??this.numberOfWorkers}checkMessageWorkerId(e){if(null==e.workerId)throw new Error("Worker message received without worker id");if(null!=e.workerId&&-1===this.getWorkerNodeKeyByWorkerId(e.workerId))throw new Error(`Worker message received from unknown worker '${e.workerId}'`)}getWorkerNodeKeyByWorker(e){return this.workerNodes.findIndex((t=>t.worker===e))}getWorkerNodeKeyByWorkerId(e){return this.workerNodes.findIndex((t=>t.info.id===e))}setWorkerChoiceStrategy(e,t){B(e),this.opts.workerChoiceStrategy=e,this.workerChoiceStrategyContext.setWorkerChoiceStrategy(this.opts.workerChoiceStrategy),null!=t&&this.setWorkerChoiceStrategyOptions(t);for(const[e,t]of this.workerNodes.entries())t.resetUsage(),this.sendStatisticsMessageToWorker(e)}setWorkerChoiceStrategyOptions(e){this.checkValidWorkerChoiceStrategyOptions(e),this.opts.workerChoiceStrategyOptions={...N,...e},this.workerChoiceStrategyContext.setOptions(this.opts.workerChoiceStrategyOptions)}enableTasksQueue(e,t){!0!==this.opts.enableTasksQueue||e||(this.unsetTaskStealing(),this.unsetTasksStealingOnBackPressure(),this.flushTasksQueues()),this.opts.enableTasksQueue=e,this.setTasksQueueOptions(t)}setTasksQueueOptions(e){!0===this.opts.enableTasksQueue?(q(e),this.opts.tasksQueueOptions=this.buildTasksQueueOptions(e),this.setTasksQueueSize(this.opts.tasksQueueOptions.size),!0===this.opts.tasksQueueOptions.taskStealing?this.setTaskStealing():this.unsetTaskStealing(),!0===this.opts.tasksQueueOptions.tasksStealingOnBackPressure?this.setTasksStealingOnBackPressure():this.unsetTasksStealingOnBackPressure()):null!=this.opts.tasksQueueOptions&&delete this.opts.tasksQueueOptions}buildTasksQueueOptions(e){return{size:Math.pow(this.maxSize,2),concurrency:1,taskStealing:!0,tasksStealingOnBackPressure:!0,...e}}setTasksQueueSize(e){for(const t of this.workerNodes)t.tasksQueueBackPressureSize=e}setTaskStealing(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].onEmptyQueue=this.taskStealingOnEmptyQueue.bind(this)}unsetTaskStealing(){for(const[e]of this.workerNodes.entries())delete this.workerNodes[e].onEmptyQueue}setTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].onBackPressure=this.tasksStealingOnBackPressure.bind(this)}unsetTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())delete this.workerNodes[e].onBackPressure}get full(){return this.workerNodes.length>=this.maxSize}internalBusy(){return!0===this.opts.enableTasksQueue?-1===this.workerNodes.findIndex((e=>e.info.ready&&e.usage.tasks.executing<this.opts.tasksQueueOptions?.concurrency)):-1===this.workerNodes.findIndex((e=>e.info.ready&&0===e.usage.tasks.executing))}async sendTaskFunctionOperationToWorker(e,t){return await new Promise(((s,r)=>{const i=t=>{this.checkMessageWorkerId(t);const o=this.getWorkerInfo(e).id;null!=t.taskFunctionOperationStatus&&t.workerId===o&&(t.taskFunctionOperationStatus?s(!0):t.taskFunctionOperationStatus||r(new Error(`Task function operation '${t.taskFunctionOperation}' failed on worker ${t.workerId} with error: '${t.workerError?.message}'`)),this.deregisterWorkerMessageListener(this.getWorkerNodeKeyByWorkerId(t.workerId),i))};this.registerWorkerMessageListener(e,i),this.sendToWorker(e,t)}))}async sendTaskFunctionOperationToWorkers(e){return await new Promise(((t,s)=>{const r=new Array,i=e=>{if(this.checkMessageWorkerId(e),null!=e.taskFunctionOperationStatus&&(r.push(e),r.length===this.workerNodes.length)){if(r.every((e=>!0===e.taskFunctionOperationStatus)))t(!0);else if(r.some((e=>!1===e.taskFunctionOperationStatus))){const t=r.find((e=>!1===e.taskFunctionOperationStatus));s(new Error(`Task function operation '${e.taskFunctionOperation}' failed on worker ${t?.workerId} with error: '${t?.workerError?.message}'`))}this.deregisterWorkerMessageListener(this.getWorkerNodeKeyByWorkerId(e.workerId),i)}};for(const[t]of this.workerNodes.entries())this.registerWorkerMessageListener(t,i),this.sendToWorker(t,e)}))}hasTaskFunction(e){for(const t of this.workerNodes)if(Array.isArray(t.info.taskFunctionNames)&&t.info.taskFunctionNames.includes(e))return!0;return!1}async addTaskFunction(e,t){if("string"!=typeof e)throw new TypeError("name argument must be a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("name argument must not be an empty string");if("function"!=typeof t)throw new TypeError("fn argument must be a function");const s=await this.sendTaskFunctionOperationToWorkers({taskFunctionOperation:"add",taskFunctionName:e,taskFunction:t.toString()});return this.taskFunctions.set(e,t),s}async removeTaskFunction(e){if(!this.taskFunctions.has(e))throw new Error("Cannot remove a task function not handled on the pool side");const t=await this.sendTaskFunctionOperationToWorkers({taskFunctionOperation:"remove",taskFunctionName:e});return this.deleteTaskFunctionWorkerUsages(e),this.taskFunctions.delete(e),t}listTaskFunctionNames(){for(const e of this.workerNodes)if(Array.isArray(e.info.taskFunctionNames)&&e.info.taskFunctionNames.length>0)return e.info.taskFunctionNames;return[]}async setDefaultTaskFunction(e){return await this.sendTaskFunctionOperationToWorkers({taskFunctionOperation:"default",taskFunctionName:e})}deleteTaskFunctionWorkerUsages(e){for(const t of this.workerNodes)t.deleteTaskFunctionWorkerUsage(e)}shallExecuteTask(e){return 0===this.tasksQueueSize(e)&&this.workerNodes[e].usage.tasks.executing<this.opts.tasksQueueOptions?.concurrency}async execute(e,t,s){return await new Promise(((r,o)=>{if(!this.started)return void o(new Error("Cannot execute a task on not started pool"));if(null!=t&&"string"!=typeof t)return void o(new TypeError("name argument must be a string"));if(null!=t&&"string"==typeof t&&0===t.trim().length)return void o(new TypeError("name argument must not be an empty string"));if(null!=s&&!Array.isArray(s))return void o(new TypeError("transferList argument must be an array"));const n=l.now(),a=this.chooseWorkerNode(),u={name:t??T,data:e??{},transferList:s,timestamp:n,taskId:i()};this.promiseResponseMap.set(u.taskId,{resolve:r,reject:o,workerNodeKey:a}),!1===this.opts.enableTasksQueue||!0===this.opts.enableTasksQueue&&this.shallExecuteTask(a)?this.executeTask(a,u):this.enqueueTask(a,u)}))}start(){for(this.starting=!0;this.workerNodes.reduce(((e,t)=>t.info.dynamic?e:e+1),0)<this.numberOfWorkers;)this.createAndSetupWorkerNode();this.starting=!1,this.started=!0}async destroy(){await Promise.all(this.workerNodes.map((async(e,t)=>{await this.destroyWorkerNode(t)}))),this.emitter?.emit(w.destroy,this.info),this.emitter instanceof g&&this.emitter?.emitDestroy(),this.started=!1}async sendKillMessageToWorker(e){await new Promise(((t,s)=>{this.registerWorkerMessageListener(e,(e=>{this.checkMessageWorkerId(e),"success"===e.kill?t():"failure"===e.kill&&s(new Error(`Kill message handling failed on worker ${e.workerId}`))})),this.sendToWorker(e,{kill:!0})}))}setupHook(){}beforeTaskExecutionHook(e,t){if(null!=this.workerNodes[e]?.usage){const s=this.workerNodes[e].usage;++s.tasks.executing,this.updateWaitTimeWorkerUsage(s,t)}if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=this.workerNodes[e].getTaskFunctionWorkerUsage(t.name)){const s=this.workerNodes[e].getTaskFunctionWorkerUsage(t.name);++s.tasks.executing,this.updateWaitTimeWorkerUsage(s,t)}}afterTaskExecutionHook(e,t){if(null!=this.workerNodes[e]?.usage){const s=this.workerNodes[e].usage;this.updateTaskStatisticsWorkerUsage(s,t),this.updateRunTimeWorkerUsage(s,t),this.updateEluWorkerUsage(s,t)}if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=this.workerNodes[e].getTaskFunctionWorkerUsage(t.taskPerformance?.name)){const s=this.workerNodes[e].getTaskFunctionWorkerUsage(t.taskPerformance?.name);this.updateTaskStatisticsWorkerUsage(s,t),this.updateRunTimeWorkerUsage(s,t),this.updateEluWorkerUsage(s,t)}}shallUpdateTaskFunctionWorkerUsage(e){const t=this.getWorkerInfo(e);return null!=t&&Array.isArray(t.taskFunctionNames)&&t.taskFunctionNames.length>2}updateTaskStatisticsWorkerUsage(e,t){const s=e.tasks;null!=s.executing&&s.executing>0&&--s.executing,null==t.workerError?++s.executed:++s.failed}updateRunTimeWorkerUsage(e,t){null==t.workerError&&U(e.runTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime,t.taskPerformance?.runTime??0)}updateWaitTimeWorkerUsage(e,t){const s=l.now(),r=s-(t.timestamp??s);U(e.waitTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime,r)}updateEluWorkerUsage(e,t){if(null!=t.workerError)return;const s=this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu;U(e.elu.active,s,t.taskPerformance?.elu?.active??0),U(e.elu.idle,s,t.taskPerformance?.elu?.idle??0),s.aggregate&&null!=t.taskPerformance?.elu&&(null!=e.elu.utilization?e.elu.utilization=(e.elu.utilization+t.taskPerformance.elu.utilization)/2:e.elu.utilization=t.taskPerformance.elu.utilization)}chooseWorkerNode(){if(this.shallCreateDynamicWorker()){const e=this.createAndSetupDynamicWorkerNode();if(this.workerChoiceStrategyContext.getStrategyPolicy().dynamicWorkerUsage)return e}return this.workerChoiceStrategyContext.execute()}shallCreateDynamicWorker(){return this.type===p.dynamic&&!this.full&&this.internalBusy()}createAndSetupWorkerNode(){const e=this.createWorker();e.on("online",this.opts.onlineHandler??f),e.on("message",this.opts.messageHandler??f),e.on("error",this.opts.errorHandler??f),e.on("error",(t=>{const s=this.getWorkerNodeKeyByWorker(e),r=this.getWorkerInfo(s);r.ready=!1,this.workerNodes[s].closeChannel(),this.emitter?.emit(w.error,t),this.started&&!this.starting&&!0===this.opts.restartWorkerOnError&&(r.dynamic?this.createAndSetupDynamicWorkerNode():this.createAndSetupWorkerNode()),this.started&&!0===this.opts.enableTasksQueue&&this.redistributeQueuedTasks(s)})),e.on("exit",this.opts.exitHandler??f),e.once("exit",(()=>{this.removeWorkerNode(e)}));const t=this.addWorkerNode(e);return this.afterWorkerNodeSetup(t),t}createAndSetupDynamicWorkerNode(){const e=this.createAndSetupWorkerNode();this.registerWorkerMessageListener(e,(e=>{this.checkMessageWorkerId(e);const t=this.getWorkerNodeKeyByWorkerId(e.workerId),s=this.workerNodes[t].usage;(C(A.HARD,e.kill)||C(A.SOFT,e.kill)&&(!1===this.opts.enableTasksQueue&&0===s.tasks.executing||!0===this.opts.enableTasksQueue&&0===s.tasks.executing&&0===this.tasksQueueSize(t)))&&this.destroyWorkerNode(t).catch((e=>{this.emitter?.emit(w.error,e)}))}));const t=this.getWorkerInfo(e);if(this.sendToWorker(e,{checkActive:!0}),this.taskFunctions.size>0)for(const[t,s]of this.taskFunctions)this.sendTaskFunctionOperationToWorker(e,{taskFunctionOperation:"add",taskFunctionName:t,taskFunction:s.toString()}).catch((e=>{this.emitter?.emit(w.error,e)}));return t.dynamic=!0,(this.workerChoiceStrategyContext.getStrategyPolicy().dynamicWorkerReady||this.workerChoiceStrategyContext.getStrategyPolicy().dynamicWorkerUsage)&&(t.ready=!0),this.checkAndEmitDynamicWorkerCreationEvents(),e}afterWorkerNodeSetup(e){this.registerWorkerMessageListener(e,this.workerListener()),this.sendStartupMessageToWorker(e),this.sendStatisticsMessageToWorker(e),!0===this.opts.enableTasksQueue&&(!0===this.opts.tasksQueueOptions?.taskStealing&&(this.workerNodes[e].onEmptyQueue=this.taskStealingOnEmptyQueue.bind(this)),!0===this.opts.tasksQueueOptions?.tasksStealingOnBackPressure&&(this.workerNodes[e].onBackPressure=this.tasksStealingOnBackPressure.bind(this)))}sendStatisticsMessageToWorker(e){this.sendToWorker(e,{statistics:{runTime:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate,elu:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu.aggregate}})}redistributeQueuedTasks(e){for(;this.tasksQueueSize(e)>0;){const t=this.workerNodes.reduce(((e,t,s,r)=>t.info.ready&&t.usage.tasks.queued<r[e].usage.tasks.queued?s:e),0),s=this.dequeueTask(e);this.shallExecuteTask(t)?this.executeTask(t,s):this.enqueueTask(t,s)}}updateTaskStolenStatisticsWorkerUsage(e,t){const s=this.workerNodes[e];if(null!=s?.usage&&++s.usage.tasks.stolen,this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=s.getTaskFunctionWorkerUsage(t)){++s.getTaskFunctionWorkerUsage(t).tasks.stolen}}taskStealingOnEmptyQueue(e){const t=this.getWorkerNodeKeyByWorkerId(e),s=this.workerNodes.slice().sort(((e,t)=>t.usage.tasks.queued-e.usage.tasks.queued)).find((t=>t.info.ready&&t.info.id!==e&&t.usage.tasks.queued>0));if(null!=s){const e=s.popTask();this.shallExecuteTask(t)?this.executeTask(t,e):this.enqueueTask(t,e),this.updateTaskStolenStatisticsWorkerUsage(t,e.name)}}tasksStealingOnBackPressure(e){if(this.opts.tasksQueueOptions?.size<=1)return;const t=this.workerNodes[this.getWorkerNodeKeyByWorkerId(e)],s=this.workerNodes.slice().sort(((e,t)=>e.usage.tasks.queued-t.usage.tasks.queued));for(const[r,i]of s.entries())if(t.usage.tasks.queued>0&&i.info.ready&&i.info.id!==e&&i.usage.tasks.queued<this.opts.tasksQueueOptions?.size-1){const e=t.popTask();this.shallExecuteTask(r)?this.executeTask(r,e):this.enqueueTask(r,e),this.updateTaskStolenStatisticsWorkerUsage(r,e.name)}}workerListener(){return e=>{this.checkMessageWorkerId(e),null!=e.ready&&null!=e.taskFunctionNames?this.handleWorkerReadyResponse(e):null!=e.taskId?this.handleTaskExecutionResponse(e):null!=e.taskFunctionNames&&(this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(e.workerId)).taskFunctionNames=e.taskFunctionNames)}}handleWorkerReadyResponse(e){if(!1===e.ready)throw new Error(`Worker ${e.workerId} failed to initialize`);const t=this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(e.workerId));t.ready=e.ready,t.taskFunctionNames=e.taskFunctionNames,this.ready&&this.emitter?.emit(w.ready,this.info)}handleTaskExecutionResponse(e){const{taskId:t,workerError:s,data:r}=e,i=this.promiseResponseMap.get(t);if(null!=i){null!=s?(this.emitter?.emit(w.taskError,s),i.reject(s.message)):i.resolve(r);const o=i.workerNodeKey;this.afterTaskExecutionHook(o,e),this.workerChoiceStrategyContext.update(o),this.promiseResponseMap.delete(t),!0===this.opts.enableTasksQueue&&this.tasksQueueSize(o)>0&&this.workerNodes[o].usage.tasks.executing<this.opts.tasksQueueOptions?.concurrency&&this.executeTask(o,this.dequeueTask(o))}}checkAndEmitTaskExecutionEvents(){this.busy&&this.emitter?.emit(w.busy,this.info)}checkAndEmitTaskQueuingEvents(){this.hasBackPressure()&&this.emitter?.emit(w.backPressure,this.info)}checkAndEmitDynamicWorkerCreationEvents(){this.type===p.dynamic&&this.full&&this.emitter?.emit(w.full,this.info)}getWorkerInfo(e){return this.workerNodes[e].info}addWorkerNode(e){const t=new ee(e,this.opts.tasksQueueOptions?.size??Math.pow(this.maxSize,2));this.starting&&(t.info.ready=!0),this.workerNodes.push(t);const s=this.getWorkerNodeKeyByWorker(e);if(-1===s)throw new Error("Worker added not found in worker nodes");return s}removeWorkerNode(e){const t=this.getWorkerNodeKeyByWorker(e);-1!==t&&(this.workerNodes.splice(t,1),this.workerChoiceStrategyContext.remove(t))}hasWorkerNodeBackPressure(e){return!0===this.opts.enableTasksQueue&&this.workerNodes[e].hasBackPressure()}hasBackPressure(){return!0===this.opts.enableTasksQueue&&-1===this.workerNodes.findIndex((e=>!e.hasBackPressure()))}executeTask(e,t){this.beforeTaskExecutionHook(e,t),this.sendToWorker(e,t,t.transferList),this.checkAndEmitTaskExecutionEvents()}enqueueTask(e,t){const s=this.workerNodes[e].enqueueTask(t);return this.checkAndEmitTaskQueuingEvents(),s}dequeueTask(e){return this.workerNodes[e].dequeueTask()}tasksQueueSize(e){return this.workerNodes[e].tasksQueueSize()}flushTasksQueue(e){for(;this.tasksQueueSize(e)>0;)this.executeTask(e,this.dequeueTask(e));this.workerNodes[e].clearTasksQueue()}flushTasksQueues(){for(const[e]of this.workerNodes.entries())this.flushTasksQueue(e)}}class se extends te{opts;constructor(e,t,s={}){super(e,t,s),this.opts=s}setupHook(){o.setupPrimary({...this.opts.settings,exec:this.filePath})}isMain(){return o.isPrimary}async destroyWorkerNode(e){this.flushTasksQueue(e);const t=this.workerNodes[e].worker,s=new Promise((e=>{t.once("exit",(()=>{e()}))}));t.once("disconnect",(()=>{t.kill()})),await this.sendKillMessageToWorker(e),t.disconnect(),await s}sendToWorker(e,t){this.workerNodes[e].worker.send({...t,workerId:this.workerNodes[e].info.id})}sendStartupMessageToWorker(e){this.sendToWorker(e,{ready:!1})}registerWorkerMessageListener(e,t){this.workerNodes[e].worker.on("message",t)}registerOnceWorkerMessageListener(e,t){this.workerNodes[e].worker.once("message",t)}deregisterWorkerMessageListener(e,t){this.workerNodes[e].worker.off("message",t)}createWorker(){return o.fork(this.opts.env)}get type(){return p.fixed}get worker(){return y.cluster}get busy(){return this.internalBusy()}}class re extends se{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,K(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}class ie extends te{opts;constructor(e,t,s={}){super(e,t,s),this.opts=s}isMain(){return h}async destroyWorkerNode(e){this.flushTasksQueue(e);const t=this.workerNodes[e],s=t.worker,r=new Promise((e=>{s.once("exit",(()=>{e()}))}));await this.sendKillMessageToWorker(e),t.closeChannel(),await s.terminate(),await r}sendToWorker(e,t,s){this.workerNodes[e].messageChannel.port1.postMessage({...t,workerId:this.workerNodes[e].info.id},s)}sendStartupMessageToWorker(e){const t=this.workerNodes[e],s=t.messageChannel.port2;t.worker.postMessage({ready:!1,workerId:t.info.id,port:s},[s])}registerWorkerMessageListener(e,t){this.workerNodes[e].messageChannel.port1.on("message",t)}registerOnceWorkerMessageListener(e,t){this.workerNodes[e].messageChannel.port1.once("message",t)}deregisterWorkerMessageListener(e,t){this.workerNodes[e].messageChannel.port1.off("message",t)}createWorker(){return new a(this.filePath,{env:k,...this.opts.workerOptions})}get type(){return p.fixed}get worker(){return y.thread}get busy(){return this.internalBusy()}}class oe extends ie{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,K(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}const ne=(e,t)=>{if("string"!=typeof e)throw new TypeError("A taskFunctions parameter object key is not a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("A taskFunctions parameter object key is an empty string");if("function"!=typeof t)throw new TypeError("A taskFunctions parameter object value is not a function")},ae=e=>{if("string"!=typeof e)throw new TypeError("name parameter is not a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("name parameter is an empty string")},ue=6e4,he={killBehavior:A.SOFT,maxInactiveTime:ue,killHandler:f};class ke extends m{isMain;mainWorker;opts;taskFunctions;lastTaskTimestamp;statistics;activeInterval;constructor(e,t,s,r,i=he){if(super(e),this.isMain=t,this.mainWorker=s,this.opts=i,null==this.isMain)throw new Error("isMain parameter is mandatory");this.checkTaskFunctions(r),this.checkWorkerOptions(this.opts),this.isMain||this.getMainWorker().on("message",this.handleReadyMessage.bind(this))}checkWorkerOptions(e){(e=>{if(null!=e&&!F(e))throw new TypeError("opts worker options parameter is not a plain object");if(null!=e?.killBehavior&&!Object.values(A).includes(e.killBehavior))throw new TypeError(`killBehavior option '${e.killBehavior}' is not valid`);if(null!=e?.maxInactiveTime&&!Number.isSafeInteger(e.maxInactiveTime))throw new TypeError("maxInactiveTime option is not an integer");if(null!=e?.maxInactiveTime&&e.maxInactiveTime<5)throw new TypeError("maxInactiveTime option is not a positive integer greater or equal than 5");if(null!=e?.killHandler&&"function"!=typeof e.killHandler)throw new TypeError("killHandler option is not a function");if(null!=e?.async)throw new Error("async option is deprecated")})(e),this.opts={...he,...e}}checkTaskFunctions(e){if(null==e)throw new Error("taskFunctions parameter is mandatory");if(this.taskFunctions=new Map,"function"==typeof e){const t=e.bind(this);this.taskFunctions.set(T,t),this.taskFunctions.set("string"==typeof e.name&&e.name.trim().length>0?e.name:"fn1",t)}else{if(!F(e))throw new TypeError("taskFunctions parameter is not a function or a plain object");{let t=!0;for(const[s,r]of Object.entries(e)){ne(s,r);const e=r.bind(this);t&&(this.taskFunctions.set(T,e),t=!1),this.taskFunctions.set(s,e)}if(t)throw new Error("taskFunctions parameter object is empty")}}}hasTaskFunction(e){try{ae(e)}catch(e){return{status:!1,error:e}}return{status:this.taskFunctions.has(e)}}addTaskFunction(e,t){try{if(ae(e),e===T)throw new Error("Cannot add a task function with the default reserved name");if("function"!=typeof t)throw new TypeError("fn parameter is not a function");const s=t.bind(this);return this.taskFunctions.get(e)===this.taskFunctions.get(T)&&this.taskFunctions.set(T,s),this.taskFunctions.set(e,s),this.sendTaskFunctionNamesToMainWorker(),{status:!0}}catch(e){return{status:!1,error:e}}}removeTaskFunction(e){try{if(ae(e),e===T)throw new Error("Cannot remove the task function with the default reserved name");if(this.taskFunctions.get(e)===this.taskFunctions.get(T))throw new Error("Cannot remove the task function used as the default task function");const t=this.taskFunctions.delete(e);return this.sendTaskFunctionNamesToMainWorker(),{status:t}}catch(e){return{status:!1,error:e}}}listTaskFunctionNames(){const e=[...this.taskFunctions.keys()];let t=T;for(const[e,s]of this.taskFunctions)if(e!==T&&s===this.taskFunctions.get(T)){t=e;break}return[e[e.indexOf(T)],t,...e.filter((e=>e!==T&&e!==t))]}setDefaultTaskFunction(e){try{if(ae(e),e===T)throw new Error("Cannot set the default task function reserved name as the default task function");if(!this.taskFunctions.has(e))throw new Error("Cannot set the default task function to a non-existing task function");return this.taskFunctions.set(T,this.taskFunctions.get(e)),this.sendTaskFunctionNamesToMainWorker(),{status:!0}}catch(e){return{status:!1,error:e}}}messageListener(e){this.checkMessageWorkerId(e),null!=e.statistics?this.statistics=e.statistics:null!=e.checkActive?e.checkActive?this.startCheckActive():this.stopCheckActive():null!=e.taskFunctionOperation?this.handleTaskFunctionOperationMessage(e):null!=e.taskId&&null!=e.data?this.run(e):!0===e.kill&&this.handleKillMessage(e)}handleTaskFunctionOperationMessage(e){const{taskFunctionOperation:t,taskFunctionName:s,taskFunction:r}=e;let i;switch(t){case"add":i=this.addTaskFunction(s,new Function(`return ${r}`)());break;case"remove":i=this.removeTaskFunction(s);break;case"default":i=this.setDefaultTaskFunction(s);break;default:i={status:!1,error:new Error("Unknown task operation")}}this.sendToMainWorker({taskFunctionOperation:t,taskFunctionOperationStatus:i.status,taskFunctionName:s,...!i.status&&null!=i?.error&&{workerError:{name:s,message:this.handleError(i.error)}}})}handleKillMessage(e){if(this.stopCheckActive(),O(this.opts.killHandler))(this.opts.killHandler?.()).then((()=>(this.sendToMainWorker({kill:"success"}),null))).catch((()=>{this.sendToMainWorker({kill:"failure"})})).finally((()=>{this.emitDestroy()})).catch(f);else try{this.opts.killHandler?.(),this.sendToMainWorker({kill:"success"})}catch{this.sendToMainWorker({kill:"failure"})}finally{this.emitDestroy()}}checkMessageWorkerId(e){if(null==e.workerId)throw new Error("Message worker id is not set");if(null!=e.workerId&&e.workerId!==this.id)throw new Error(`Message worker id ${e.workerId} does not match the worker id ${this.id}`)}startCheckActive(){this.lastTaskTimestamp=l.now(),this.activeInterval=setInterval(this.checkActive.bind(this),(this.opts.maxInactiveTime??ue)/2)}stopCheckActive(){null!=this.activeInterval&&(clearInterval(this.activeInterval),delete this.activeInterval)}checkActive(){l.now()-this.lastTaskTimestamp>(this.opts.maxInactiveTime??ue)&&this.sendToMainWorker({kill:this.opts.killBehavior})}getMainWorker(){if(null==this.mainWorker)throw new Error("Main worker not set");return this.mainWorker}sendTaskFunctionNamesToMainWorker(){this.sendToMainWorker({taskFunctionNames:this.listTaskFunctionNames()})}handleError(e){return e instanceof Error?e.message:e}run(e){const{name:t,taskId:s,data:r}=e,i=this.taskFunctions.get(t??T);null!=i?O(i)?this.runInAsyncScope(this.runAsync.bind(this),this,i,e):this.runInAsyncScope(this.runSync.bind(this),this,i,e):this.sendToMainWorker({workerError:{name:t,message:`Task function '${t}' not found`,data:r},taskId:s})}runSync(e,t){const{name:s,taskId:r,data:i}=t;try{let t=this.beginTaskPerformance(s);const o=e(i);t=this.endTaskPerformance(t),this.sendToMainWorker({data:o,taskPerformance:t,taskId:r})}catch(e){this.sendToMainWorker({workerError:{name:s,message:this.handleError(e),data:i},taskId:r})}finally{this.updateLastTaskTimestamp()}}runAsync(e,t){const{name:s,taskId:r,data:i}=t;let o=this.beginTaskPerformance(s);e(i).then((e=>{o=this.endTaskPerformance(o),this.sendToMainWorker({data:e,taskPerformance:o,taskId:r})})).catch((e=>{this.sendToMainWorker({workerError:{name:s,message:this.handleError(e),data:i},taskId:r})})).finally((()=>{this.updateLastTaskTimestamp()})).catch(f)}beginTaskPerformance(e){return this.checkStatistics(),{name:e??T,timestamp:l.now(),...this.statistics.elu&&{elu:l.eventLoopUtilization()}}}endTaskPerformance(e){return this.checkStatistics(),{...e,...this.statistics.runTime&&{runTime:l.now()-e.timestamp},...this.statistics.elu&&{elu:l.eventLoopUtilization(e.elu)}}}checkStatistics(){if(null==this.statistics)throw new Error("Performance statistics computation requirements not set")}updateLastTaskTimestamp(){null!=this.activeInterval&&(this.lastTaskTimestamp=l.now())}}class ce extends ke{constructor(e,t={}){super("poolifier:cluster-worker",o.isPrimary,o.worker,e,t)}handleReadyMessage(e){if(e.workerId===this.id&&!1===e.ready)try{this.getMainWorker().on("message",this.messageListener.bind(this)),this.sendToMainWorker({ready:!0,taskFunctionNames:this.listTaskFunctionNames()})}catch{this.sendToMainWorker({ready:!1,taskFunctionNames:this.listTaskFunctionNames()})}}get id(){return this.getMainWorker().id}sendToMainWorker(e){this.getMainWorker().send({...e,workerId:this.id})}}class de extends ke{port;constructor(e,t={}){super("poolifier:thread-worker",h,c,e,t)}handleReadyMessage(e){if(e.workerId===this.id&&!1===e.ready&&null!=e.port)try{this.port=e.port,this.port.on("message",this.messageListener.bind(this)),this.sendToMainWorker({ready:!0,taskFunctionNames:this.listTaskFunctionNames()})}catch{this.sendToMainWorker({ready:!1,taskFunctionNames:this.listTaskFunctionNames()})}}handleKillMessage(e){super.handleKillMessage(e),this.port?.unref(),this.port?.close()}get id(){return d}sendToMainWorker(e){this.port.postMessage({...e,workerId:this.id})}handleError(e){return e}}export{ce as ClusterWorker,re as DynamicClusterPool,oe as DynamicThreadPool,se as FixedClusterPool,ie as FixedThreadPool,A as KillBehaviors,P as Measurements,w as PoolEvents,p as PoolTypes,de as ThreadWorker,M as WorkerChoiceStrategies,y as WorkerTypes,S as availableParallelism};
1
+ import{existsSync as e}from"node:fs";import*as t from"node:os";import{cpus as s}from"node:os";import{webcrypto as r,randomUUID as i}from"node:crypto";import o,{Worker as n}from"node:cluster";import{Worker as a,MessageChannel as u,isMainThread as h,SHARE_ENV as k,parentPort as c,threadId as d}from"node:worker_threads";import{performance as l}from"node:perf_hooks";import{EventEmitterAsyncResource as g}from"node:events";import{AsyncResource as m}from"node:async_hooks";const p=Object.freeze({fixed:"fixed",dynamic:"dynamic"}),w=Object.freeze({ready:"ready",busy:"busy",full:"full",destroy:"destroy",error:"error",taskError:"taskError",backPressure:"backPressure"}),y=Object.freeze({thread:"thread",cluster:"cluster"}),T="default",f=Object.freeze((()=>{})),N={retries:6,runTime:{median:!1},waitTime:{median:!1},elu:{median:!1}},W={aggregate:!1,average:!1,median:!1},S=()=>{let e=1;try{e=t.availableParallelism()}catch{const s=t.cpus();Array.isArray(s)&&s.length>0&&(e=s.length)}return e},x=e=>e instanceof a?y.thread:e instanceof n?y.cluster:void 0,E=e=>e instanceof a?e.threadId:e instanceof n?e.id:void 0,v=e=>Array.isArray(e)&&0===e.length?0:Array.isArray(e)&&1===e.length?e[0]:e.reduce(((e,t)=>e+t),0)/e.length,I=e=>{if(Array.isArray(e)&&0===e.length)return 0;if(Array.isArray(e)&&1===e.length)return e[0];const t=e.slice().sort(((e,t)=>e-t));return(t[t.length-1>>1]+t[t.length>>1])/2},b=(e,t=2)=>{const s=Math.pow(10,t);return Math.round(e*s*(1+Number.EPSILON))/s},F=e=>"object"==typeof e&&null!==e&&e?.constructor===Object&&"[object Object]"===Object.prototype.toString.call(e),C=(e,t)=>t===e,O=e=>"function"==typeof e&&"AsyncFunction"===e.constructor.name,R=()=>r.getRandomValues(new Uint32Array(1))[0]/4294967296,z=(...e)=>e.reduce(((e,t)=>e<t?e:t),1/0),Q=(...e)=>e.reduce(((e,t)=>e>t?e:t),-1/0),M=Object.freeze({ROUND_ROBIN:"ROUND_ROBIN",LEAST_USED:"LEAST_USED",LEAST_BUSY:"LEAST_BUSY",LEAST_ELU:"LEAST_ELU",FAIR_SHARE:"FAIR_SHARE",WEIGHTED_ROUND_ROBIN:"WEIGHTED_ROUND_ROBIN",INTERLEAVED_WEIGHTED_ROUND_ROBIN:"INTERLEAVED_WEIGHTED_ROUND_ROBIN"}),P=Object.freeze({runTime:"runTime",waitTime:"waitTime",elu:"elu"}),K=(e,t)=>{if(null==t)throw new TypeError("Cannot instantiate a dynamic pool without specifying the maximum pool size");if(!Number.isSafeInteger(t))throw new TypeError("Cannot instantiate a dynamic pool with a non safe integer maximum pool size");if(e>t)throw new RangeError("Cannot instantiate a dynamic pool with a maximum pool size inferior to the minimum pool size");if(0===t)throw new RangeError("Cannot instantiate a dynamic pool with a maximum pool size equal to zero");if(e===t)throw new RangeError("Cannot instantiate a dynamic pool with a minimum pool size equal to the maximum pool size. Use a fixed pool instead")},B=e=>{if(null!=e&&!Object.values(M).includes(e))throw new Error(`Invalid worker choice strategy '${e}'`)},q=e=>{if(null!=e&&!F(e))throw new TypeError("Invalid tasks queue options: must be a plain object");if(null!=e?.concurrency&&!Number.isSafeInteger(e.concurrency))throw new TypeError("Invalid worker node tasks concurrency: must be an integer");if(null!=e?.concurrency&&e.concurrency<=0)throw new RangeError(`Invalid worker node tasks concurrency: ${e.concurrency} is a negative integer or zero`);if(null!=e?.size&&!Number.isSafeInteger(e.size))throw new TypeError("Invalid worker node tasks queue size: must be an integer");if(null!=e?.size&&e.size<=0)throw new RangeError(`Invalid worker node tasks queue size: ${e.size} is a negative integer or zero`)},U=(e,t,s)=>{t.aggregate&&(e.aggregate=(e.aggregate??0)+s,e.minimum=z(s,e.minimum??1/0),e.maximum=Q(s,e.maximum??-1/0),(t.average||t.median)&&null!=s&&(e.history.push(s),t.average?e.average=v(e.history):null!=e.average&&delete e.average,t.median?e.median=I(e.history):null!=e.median&&delete e.median))},A=Object.freeze({SOFT:"SOFT",HARD:"HARD"});class D{pool;opts;nextWorkerNodeKey=0;previousWorkerNodeKey=0;strategyPolicy={dynamicWorkerUsage:!1,dynamicWorkerReady:!0};taskStatisticsRequirements={runTime:W,waitTime:W,elu:W};constructor(e,t=N){this.pool=e,this.opts=t,this.opts={...N,...t},this.choose=this.choose.bind(this)}setTaskStatisticsRequirements(e){this.toggleMedianMeasurementStatisticsRequirements(this.taskStatisticsRequirements.runTime,e.runTime?.median),this.toggleMedianMeasurementStatisticsRequirements(this.taskStatisticsRequirements.waitTime,e.waitTime?.median),this.toggleMedianMeasurementStatisticsRequirements(this.taskStatisticsRequirements.elu,e.elu?.median)}toggleMedianMeasurementStatisticsRequirements(e,t){e.average&&t&&(e.average=!1,e.median=t),e.median&&!t&&(e.average=!0,e.median=t)}resetWorkerNodeKeyProperties(){this.nextWorkerNodeKey=0,this.previousWorkerNodeKey=0}setOptions(e){this.opts={...N,...e},this.setTaskStatisticsRequirements(this.opts)}isWorkerNodeReady(e){return this.pool.workerNodes[e].info.ready}hasWorkerNodeBackPressure(e){return this.pool.hasWorkerNodeBackPressure(e)}isWorkerNodeEligible(e){return this.isWorkerNodeReady(e)&&!this.hasWorkerNodeBackPressure(e)}getWorkerNodeTaskRunTime(e){return this.taskStatisticsRequirements.runTime.median?this.pool.workerNodes[e].usage.runTime.median??0:this.pool.workerNodes[e].usage.runTime.average??0}getWorkerNodeTaskWaitTime(e){return this.taskStatisticsRequirements.waitTime.median?this.pool.workerNodes[e].usage.waitTime.median??0:this.pool.workerNodes[e].usage.waitTime.average??0}getWorkerNodeTaskElu(e){return this.taskStatisticsRequirements.elu.median?this.pool.workerNodes[e].usage.elu.active.median??0:this.pool.workerNodes[e].usage.elu.active.average??0}setPreviousWorkerNodeKey(e){this.previousWorkerNodeKey=e??this.previousWorkerNodeKey}checkNextWorkerNodeEligibility(){this.isWorkerNodeEligible(this.nextWorkerNodeKey)||delete this.nextWorkerNodeKey}computeDefaultWorkerWeight(){let e=0;for(const t of s()){const s=t.speed.toString().length-1;e+=1/(t.speed/Math.pow(10,s))*Math.pow(10,s)}return Math.round(e/s().length)}}class L extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:W,elu:{aggregate:!0,average:!0,median:!1}};constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){for(const e of this.pool.workerNodes)delete e.strategyData?.virtualTaskEndTimestamp;return!0}update(e){return this.pool.workerNodes[e].strategyData={virtualTaskEndTimestamp:this.computeWorkerNodeVirtualTaskEndTimestamp(e)},!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.fairShareNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}fairShareNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>(null==t.strategyData?.virtualTaskEndTimestamp&&(t.strategyData={virtualTaskEndTimestamp:this.computeWorkerNodeVirtualTaskEndTimestamp(s)}),t.strategyData.virtualTaskEndTimestamp<r[e].strategyData.virtualTaskEndTimestamp?s:e)),0)}computeWorkerNodeVirtualTaskEndTimestamp(e){return this.getWorkerNodeVirtualTaskEndTimestamp(e,this.getWorkerNodeVirtualTaskStartTimestamp(e))}getWorkerNodeVirtualTaskEndTimestamp(e,t){return t+(this.opts.measurement===P.elu?this.getWorkerNodeTaskElu(e):this.getWorkerNodeTaskRunTime(e))}getWorkerNodeVirtualTaskStartTimestamp(e){const t=this.pool.workerNodes[e]?.strategyData?.virtualTaskEndTimestamp,s=performance.now();return s<(t??-1/0)?t:s}}class _ extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:W,elu:W};roundId=0;defaultWorkerWeight;roundWeights;workerNodeId=0;workerNodeVirtualTaskRunTime=0;constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts),this.defaultWorkerWeight=this.computeDefaultWorkerWeight(),this.roundWeights=this.getRoundWeights()}reset(){return this.resetWorkerNodeKeyProperties(),this.roundId=0,this.workerNodeId=0,this.workerNodeVirtualTaskRunTime=0,!0}update(){return!0}choose(){for(let e=this.roundId;e<this.roundWeights.length;e++){this.roundId=e;for(let t=this.workerNodeId;t<this.pool.workerNodes.length;t++){this.workerNodeId=t,this.workerNodeId!==this.nextWorkerNodeKey&&0!==this.workerNodeVirtualTaskRunTime&&(this.workerNodeVirtualTaskRunTime=0);const s=this.opts.weights?.[t]??this.defaultWorkerWeight;if(s>=this.roundWeights[e]&&this.workerNodeVirtualTaskRunTime<s)return this.workerNodeVirtualTaskRunTime=this.workerNodeVirtualTaskRunTime+this.getWorkerNodeTaskRunTime(t),this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=t,this.nextWorkerNodeKey}}this.interleavedWeightedRoundRobinNextWorkerNodeId()}interleavedWeightedRoundRobinNextWorkerNodeId(){this.roundId===this.roundWeights.length-1&&this.workerNodeId===this.pool.workerNodes.length-1?(this.roundId=0,this.workerNodeId=0):this.workerNodeId===this.pool.workerNodes.length-1?(this.roundId=this.roundId+1,this.workerNodeId=0):this.workerNodeId=this.workerNodeId+1}remove(e){return 0===this.pool.workerNodes.length&&this.reset(),this.workerNodeId===e&&this.workerNodeId>this.pool.workerNodes.length-1&&(this.workerNodeId=this.pool.workerNodes.length-1),this.previousWorkerNodeKey===e&&this.previousWorkerNodeKey>this.pool.workerNodes.length-1&&(this.previousWorkerNodeKey=this.pool.workerNodes.length-1),!0}setOptions(e){super.setOptions(e),this.roundWeights=this.getRoundWeights()}getRoundWeights(){return null==this.opts.weights?[this.defaultWorkerWeight]:[...new Set(Object.values(this.opts.weights).slice().sort(((e,t)=>e-t)))]}}class H extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!1,median:!1},waitTime:{aggregate:!0,average:!1,median:!1},elu:W};constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.leastBusyNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}leastBusyNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>(t.usage.runTime.aggregate??0)+(t.usage.waitTime.aggregate??0)<(r[e].usage.runTime.aggregate??0)+(r[e].usage.waitTime.aggregate??0)?s:e),0)}}class j extends D{constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.leastUsedNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}leastUsedNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>t.usage.tasks.executed+t.usage.tasks.executing+t.usage.tasks.queued<r[e].usage.tasks.executed+r[e].usage.tasks.executing+r[e].usage.tasks.queued?s:e),0)}}class V extends D{taskStatisticsRequirements={runTime:W,waitTime:W,elu:{aggregate:!0,average:!1,median:!1}};constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.nextWorkerNodeKey=this.leastEluNextWorkerNodeKey(),this.nextWorkerNodeKey}remove(){return!0}leastEluNextWorkerNodeKey(){return this.pool.workerNodes.reduce(((e,t,s,r)=>(t.usage.elu.active.aggregate??0)<(r[e].usage.elu.active.aggregate??0)?s:e),0)}}class $ extends D{constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts)}reset(){return this.resetWorkerNodeKeyProperties(),!0}update(){return!0}choose(){const e=this.nextWorkerNodeKey;return this.setPreviousWorkerNodeKey(e),this.roundRobinNextWorkerNodeKey(),e}remove(e){return 0===this.pool.workerNodes.length&&this.reset(),this.nextWorkerNodeKey===e&&this.nextWorkerNodeKey>this.pool.workerNodes.length-1&&(this.nextWorkerNodeKey=this.pool.workerNodes.length-1),this.previousWorkerNodeKey===e&&this.previousWorkerNodeKey>this.pool.workerNodes.length-1&&(this.previousWorkerNodeKey=this.pool.workerNodes.length-1),!0}roundRobinNextWorkerNodeKey(){return this.nextWorkerNodeKey=this.nextWorkerNodeKey===this.pool.workerNodes.length-1?0:(this.nextWorkerNodeKey??this.previousWorkerNodeKey)+1,this.nextWorkerNodeKey}}class G extends D{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:W,elu:W};defaultWorkerWeight;workerNodeVirtualTaskRunTime=0;constructor(e,t=N){super(e,t),this.setTaskStatisticsRequirements(this.opts),this.defaultWorkerWeight=this.computeDefaultWorkerWeight()}reset(){return this.resetWorkerNodeKeyProperties(),this.workerNodeVirtualTaskRunTime=0,!0}update(){return!0}choose(){return this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey),this.weightedRoundRobinNextWorkerNodeKey()}remove(e){return 0===this.pool.workerNodes.length&&this.reset(),this.nextWorkerNodeKey===e&&(this.workerNodeVirtualTaskRunTime=0,this.nextWorkerNodeKey>this.pool.workerNodes.length-1&&(this.nextWorkerNodeKey=this.pool.workerNodes.length-1)),this.previousWorkerNodeKey===e&&this.previousWorkerNodeKey>this.pool.workerNodes.length-1&&(this.previousWorkerNodeKey=this.pool.workerNodes.length-1),!0}weightedRoundRobinNextWorkerNodeKey(){const e=this.opts.weights?.[this.nextWorkerNodeKey??this.previousWorkerNodeKey]??this.defaultWorkerWeight;return this.workerNodeVirtualTaskRunTime<e?this.workerNodeVirtualTaskRunTime=this.workerNodeVirtualTaskRunTime+this.getWorkerNodeTaskRunTime(this.nextWorkerNodeKey??this.previousWorkerNodeKey):(this.nextWorkerNodeKey=this.nextWorkerNodeKey===this.pool.workerNodes.length-1?0:(this.nextWorkerNodeKey??this.previousWorkerNodeKey)+1,this.workerNodeVirtualTaskRunTime=0),this.nextWorkerNodeKey}}class Y{workerChoiceStrategy;opts;workerChoiceStrategies;retriesCount=0;constructor(e,t=M.ROUND_ROBIN,s=N){this.workerChoiceStrategy=t,this.opts=s,this.opts={...N,...s},this.execute=this.execute.bind(this),this.workerChoiceStrategies=new Map([[M.ROUND_ROBIN,new($.bind(this))(e,s)],[M.LEAST_USED,new(j.bind(this))(e,s)],[M.LEAST_BUSY,new(H.bind(this))(e,s)],[M.LEAST_ELU,new(V.bind(this))(e,s)],[M.FAIR_SHARE,new(L.bind(this))(e,s)],[M.WEIGHTED_ROUND_ROBIN,new(G.bind(this))(e,s)],[M.INTERLEAVED_WEIGHTED_ROUND_ROBIN,new(_.bind(this))(e,s)]])}getStrategyPolicy(){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).strategyPolicy}getTaskStatisticsRequirements(){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).taskStatisticsRequirements}setWorkerChoiceStrategy(e){this.workerChoiceStrategy!==e&&(this.workerChoiceStrategy=e),this.workerChoiceStrategies.get(this.workerChoiceStrategy)?.reset()}update(e){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).update(e)}execute(){const e=this.workerChoiceStrategies.get(this.workerChoiceStrategy).choose();if(null==e&&this.retriesCount<this.opts.retries)return this.retriesCount++,this.execute();if(null==e)throw new Error(`Worker node key chosen is null or undefined after ${this.retriesCount} retries`);return this.retriesCount=0,e}remove(e){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).remove(e)}setOptions(e){this.opts={...N,...e};for(const t of this.workerChoiceStrategies.values())t.setOptions(e)}}class J extends Array{size;constructor(e=1024,...t){super(),this.checkSize(e),this.size=e,arguments.length>1&&this.push(...t)}push(...e){const t=super.push(...e);return t>this.size&&super.splice(0,t-this.size),this.length}unshift(...e){return super.unshift(...e)>this.size&&super.splice(this.size,e.length),this.length}concat(...e){const t=super.concat(e);return t.size=this.size,t.length>t.size&&t.splice(0,t.length-t.size),t}splice(e,t,...s){let r=[];if(arguments.length>=3&&null!=t){if(r=super.splice(e,t,...s),this.length>this.size){const e=super.splice(0,this.length-this.size);r=new J(r.length+e.length,...r,...e)}}else r=2===arguments.length?super.splice(e,t):super.splice(e);return r}resize(e){if(this.checkSize(e),0===e)this.length=0;else if(e<this.size)for(let t=e;t<this.size;t++)super.pop();this.size=e}empty(){return 0===this.length}full(){return this.length===this.size}checkSize(e){if(!Number.isSafeInteger(e))throw new TypeError(`Invalid circular array size: ${e} is not a safe integer`);if(e<0)throw new RangeError(`Invalid circular array size: ${e} < 0`)}}class X{data;next;prev;constructor(e){this.data=e}}class Z{head;tail;size;maxSize;constructor(){this.clear()}push(e){const t=new X(e);return null==this.tail?this.head=this.tail=t:(t.prev=this.tail,this.tail=this.tail.next=t),this.incrementSize()}unshift(e){const t=new X(e);return null==this.head?this.head=this.tail=t:(t.next=this.head,this.head=this.head.prev=t),this.incrementSize()}pop(){if(null==this.head)return;const e=this.tail;return this.tail=this.tail.prev,null==this.tail?delete this.head:delete this.tail.next,--this.size,e?.data}shift(){if(null==this.head)return;const e=this.head;return this.head=this.head.next,null==this.head?delete this.tail:delete this.head.prev,--this.size,e?.data}peekFirst(){return this.head?.data}peekLast(){return this.tail?.data}clear(){delete this.head,delete this.tail,this.size=0,this.maxSize=0}[Symbol.iterator](){let e=this.head;return{next:()=>{if(null==e)return{value:void 0,done:!0};const t={value:e.data,done:!1};return e=e.next,t}}}backward(){return{[Symbol.iterator]:()=>{let e=this.tail;return{next:()=>{if(null==e)return{value:void 0,done:!0};const t={value:e.data,done:!1};return e=e.prev,t}}}}}incrementSize(){return++this.size,this.size>this.maxSize&&(this.maxSize=this.size),this.size}}class ee{worker;info;usage;strategyData;messageChannel;tasksQueueBackPressureSize;onBackPressure;onEmptyQueue;tasksQueue;onBackPressureStarted;onEmptyQueueCount;taskFunctionsUsage;constructor(e,t){((e,t)=>{if(null==e)throw new TypeError("Cannot construct a worker node without a worker");if(null==t)throw new TypeError("Cannot construct a worker node without a tasks queue back pressure size");if(!Number.isSafeInteger(t))throw new TypeError("Cannot construct a worker node with a tasks queue back pressure size that is not an integer");if(t<=0)throw new RangeError("Cannot construct a worker node with a tasks queue back pressure size that is not a positive integer")})(e,t),this.worker=e,this.info=this.initWorkerInfo(e),this.usage=this.initWorkerUsage(),this.info.type===y.thread&&(this.messageChannel=new u),this.tasksQueueBackPressureSize=t,this.tasksQueue=new Z,this.onBackPressureStarted=!1,this.onEmptyQueueCount=0,this.taskFunctionsUsage=new Map}tasksQueueSize(){return this.tasksQueue.size}enqueueTask(e){const t=this.tasksQueue.push(e);return null!=this.onBackPressure&&this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.onBackPressure(this.info.id),this.onBackPressureStarted=!1),t}unshiftTask(e){const t=this.tasksQueue.unshift(e);return null!=this.onBackPressure&&this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.onBackPressure(this.info.id),this.onBackPressureStarted=!1),t}dequeueTask(){const e=this.tasksQueue.shift();return null!=this.onEmptyQueue&&0===this.tasksQueue.size&&0===this.onEmptyQueueCount&&this.startOnEmptyQueue().catch(f),e}popTask(){const e=this.tasksQueue.pop();return null!=this.onEmptyQueue&&0===this.tasksQueue.size&&0===this.onEmptyQueueCount&&this.startOnEmptyQueue().catch(f),e}clearTasksQueue(){this.tasksQueue.clear()}hasBackPressure(){return this.tasksQueue.size>=this.tasksQueueBackPressureSize}resetUsage(){this.usage=this.initWorkerUsage(),this.taskFunctionsUsage.clear()}closeChannel(){null!=this.messageChannel&&(this.messageChannel?.port1.unref(),this.messageChannel?.port2.unref(),this.messageChannel?.port1.close(),this.messageChannel?.port2.close(),delete this.messageChannel)}getTaskFunctionWorkerUsage(e){if(!Array.isArray(this.info.taskFunctionNames))throw new Error(`Cannot get task function worker usage for task function name '${e}' when task function names list is not yet defined`);if(Array.isArray(this.info.taskFunctionNames)&&this.info.taskFunctionNames.length<3)throw new Error(`Cannot get task function worker usage for task function name '${e}' when task function names list has less than 3 elements`);return e===T&&(e=this.info.taskFunctionNames[1]),this.taskFunctionsUsage.has(e)||this.taskFunctionsUsage.set(e,this.initTaskFunctionWorkerUsage(e)),this.taskFunctionsUsage.get(e)}deleteTaskFunctionWorkerUsage(e){return this.taskFunctionsUsage.delete(e)}async startOnEmptyQueue(){this.onEmptyQueueCount>0&&(this.usage.tasks.executing>0||this.tasksQueue.size>0)?this.onEmptyQueueCount=0:(++this.onEmptyQueueCount,this.onEmptyQueue?.(this.info.id),await(async e=>{await new Promise((t=>{setTimeout(t,e)}))})(((e=0,t=100)=>{const s=Math.pow(2,e)*t;return s+.2*s*R()})(this.onEmptyQueueCount)),await this.startOnEmptyQueue())}initWorkerInfo(e){return{id:E(e),type:x(e),dynamic:!1,ready:!1}}initWorkerUsage(){const e=()=>this.tasksQueue.size,t=()=>this.tasksQueue.maxSize;return{tasks:{executed:0,executing:0,get queued(){return e()},get maxQueued(){return t()},stolen:0,failed:0},runTime:{history:new J},waitTime:{history:new J},elu:{idle:{history:new J},active:{history:new J}}}}initTaskFunctionWorkerUsage(e){const t=()=>{let t=0;for(const s of this.tasksQueue)(s.name===T&&e===this.info.taskFunctionNames[1]||s.name!==T&&e===s.name)&&++t;return t};return{tasks:{executed:0,executing:0,get queued(){return t()},stolen:0,failed:0},runTime:{history:new J},waitTime:{history:new J},elu:{idle:{history:new J},active:{history:new J}}}}}class te{numberOfWorkers;filePath;opts;workerNodes=[];emitter;promiseResponseMap=new Map;workerChoiceStrategyContext;max;taskFunctions;started;starting;startTimestamp;constructor(t,s,r){if(this.numberOfWorkers=t,this.filePath=s,this.opts=r,!this.isMain())throw new Error("Cannot start a pool from a worker with the same type as the pool");(t=>{if(null==t||"string"!=typeof t||"string"==typeof t&&0===t.trim().length)throw new Error("Please specify a file with a worker implementation");if(!e(t))throw new Error(`Cannot find the worker file '${t}'`)})(this.filePath),this.checkNumberOfWorkers(this.numberOfWorkers),this.checkPoolOptions(this.opts),this.chooseWorkerNode=this.chooseWorkerNode.bind(this),this.executeTask=this.executeTask.bind(this),this.enqueueTask=this.enqueueTask.bind(this),!0===this.opts.enableEvents&&this.initializeEventEmitter(),this.workerChoiceStrategyContext=new Y(this,this.opts.workerChoiceStrategy,this.opts.workerChoiceStrategyOptions),this.setupHook(),this.taskFunctions=new Map,this.started=!1,this.starting=!1,!0===this.opts.startWorkers&&this.start(),this.startTimestamp=l.now()}checkNumberOfWorkers(e){if(null==e)throw new Error("Cannot instantiate a pool without specifying the number of workers");if(!Number.isSafeInteger(e))throw new TypeError("Cannot instantiate a pool with a non safe integer number of workers");if(e<0)throw new RangeError("Cannot instantiate a pool with a negative number of workers");if(this.type===p.fixed&&0===e)throw new RangeError("Cannot instantiate a fixed pool with zero worker")}checkPoolOptions(e){if(!F(e))throw new TypeError("Invalid pool options: must be a plain object");this.opts.startWorkers=e.startWorkers??!0,B(e.workerChoiceStrategy),this.opts.workerChoiceStrategy=e.workerChoiceStrategy??M.ROUND_ROBIN,this.checkValidWorkerChoiceStrategyOptions(e.workerChoiceStrategyOptions),this.opts.workerChoiceStrategyOptions={...N,...e.workerChoiceStrategyOptions},this.opts.restartWorkerOnError=e.restartWorkerOnError??!0,this.opts.enableEvents=e.enableEvents??!0,this.opts.enableTasksQueue=e.enableTasksQueue??!1,this.opts.enableTasksQueue&&(q(e.tasksQueueOptions),this.opts.tasksQueueOptions=this.buildTasksQueueOptions(e.tasksQueueOptions))}checkValidWorkerChoiceStrategyOptions(e){if(null!=e&&!F(e))throw new TypeError("Invalid worker choice strategy options: must be a plain object");if(null!=e?.retries&&!Number.isSafeInteger(e.retries))throw new TypeError("Invalid worker choice strategy options: retries must be an integer");if(null!=e?.retries&&e.retries<0)throw new RangeError(`Invalid worker choice strategy options: retries '${e.retries}' must be greater or equal than zero`);if(null!=e?.weights&&Object.keys(e.weights).length!==this.maxSize)throw new Error("Invalid worker choice strategy options: must have a weight for each worker node");if(null!=e?.measurement&&!Object.values(P).includes(e.measurement))throw new Error(`Invalid worker choice strategy options: invalid measurement '${e.measurement}'`)}initializeEventEmitter(){this.emitter=new g({name:`poolifier:${this.type}-${this.worker}-pool`})}get info(){return{version:"2.7.5",type:this.type,worker:this.worker,started:this.started,ready:this.ready,strategy:this.opts.workerChoiceStrategy,minSize:this.minSize,maxSize:this.maxSize,...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate&&this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.aggregate&&{utilization:b(this.utilization)},workerNodes:this.workerNodes.length,idleWorkerNodes:this.workerNodes.reduce(((e,t)=>0===t.usage.tasks.executing?e+1:e),0),busyWorkerNodes:this.workerNodes.reduce(((e,t)=>t.usage.tasks.executing>0?e+1:e),0),executedTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.executed),0),executingTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.executing),0),...!0===this.opts.enableTasksQueue&&{queuedTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.queued),0)},...!0===this.opts.enableTasksQueue&&{maxQueuedTasks:this.workerNodes.reduce(((e,t)=>e+(t.usage.tasks?.maxQueued??0)),0)},...!0===this.opts.enableTasksQueue&&{backPressure:this.hasBackPressure()},...!0===this.opts.enableTasksQueue&&{stolenTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.stolen),0)},failedTasks:this.workerNodes.reduce(((e,t)=>e+t.usage.tasks.failed),0),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate&&{runTime:{minimum:b(z(...this.workerNodes.map((e=>e.usage.runTime?.minimum??1/0)))),maximum:b(Q(...this.workerNodes.map((e=>e.usage.runTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.average&&{average:b(v(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median&&{median:b(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))}}},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.aggregate&&{waitTime:{minimum:b(z(...this.workerNodes.map((e=>e.usage.waitTime?.minimum??1/0)))),maximum:b(Q(...this.workerNodes.map((e=>e.usage.waitTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.average&&{average:b(v(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.waitTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.median&&{median:b(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.waitTime.history)),[])))}}}}}get ready(){return this.workerNodes.reduce(((e,t)=>!t.info.dynamic&&t.info.ready?e+1:e),0)>=this.minSize}get utilization(){const e=(l.now()-this.startTimestamp)*this.maxSize;return(this.workerNodes.reduce(((e,t)=>e+(t.usage.runTime?.aggregate??0)),0)+this.workerNodes.reduce(((e,t)=>e+(t.usage.waitTime?.aggregate??0)),0))/e}get minSize(){return this.numberOfWorkers}get maxSize(){return this.max??this.numberOfWorkers}checkMessageWorkerId(e){if(null==e.workerId)throw new Error("Worker message received without worker id");if(null!=e.workerId&&-1===this.getWorkerNodeKeyByWorkerId(e.workerId))throw new Error(`Worker message received from unknown worker '${e.workerId}'`)}getWorkerNodeKeyByWorker(e){return this.workerNodes.findIndex((t=>t.worker===e))}getWorkerNodeKeyByWorkerId(e){return this.workerNodes.findIndex((t=>t.info.id===e))}setWorkerChoiceStrategy(e,t){B(e),this.opts.workerChoiceStrategy=e,this.workerChoiceStrategyContext.setWorkerChoiceStrategy(this.opts.workerChoiceStrategy),null!=t&&this.setWorkerChoiceStrategyOptions(t);for(const[e,t]of this.workerNodes.entries())t.resetUsage(),this.sendStatisticsMessageToWorker(e)}setWorkerChoiceStrategyOptions(e){this.checkValidWorkerChoiceStrategyOptions(e),this.opts.workerChoiceStrategyOptions={...N,...e},this.workerChoiceStrategyContext.setOptions(this.opts.workerChoiceStrategyOptions)}enableTasksQueue(e,t){!0!==this.opts.enableTasksQueue||e||(this.unsetTaskStealing(),this.unsetTasksStealingOnBackPressure(),this.flushTasksQueues()),this.opts.enableTasksQueue=e,this.setTasksQueueOptions(t)}setTasksQueueOptions(e){!0===this.opts.enableTasksQueue?(q(e),this.opts.tasksQueueOptions=this.buildTasksQueueOptions(e),this.setTasksQueueSize(this.opts.tasksQueueOptions.size),!0===this.opts.tasksQueueOptions.taskStealing?this.setTaskStealing():this.unsetTaskStealing(),!0===this.opts.tasksQueueOptions.tasksStealingOnBackPressure?this.setTasksStealingOnBackPressure():this.unsetTasksStealingOnBackPressure()):null!=this.opts.tasksQueueOptions&&delete this.opts.tasksQueueOptions}buildTasksQueueOptions(e){return{size:Math.pow(this.maxSize,2),concurrency:1,taskStealing:!0,tasksStealingOnBackPressure:!0,...e}}setTasksQueueSize(e){for(const t of this.workerNodes)t.tasksQueueBackPressureSize=e}setTaskStealing(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].onEmptyQueue=this.taskStealingOnEmptyQueue.bind(this)}unsetTaskStealing(){for(const[e]of this.workerNodes.entries())delete this.workerNodes[e].onEmptyQueue}setTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].onBackPressure=this.tasksStealingOnBackPressure.bind(this)}unsetTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())delete this.workerNodes[e].onBackPressure}get full(){return this.workerNodes.length>=this.maxSize}internalBusy(){return!0===this.opts.enableTasksQueue?-1===this.workerNodes.findIndex((e=>e.info.ready&&e.usage.tasks.executing<this.opts.tasksQueueOptions?.concurrency)):-1===this.workerNodes.findIndex((e=>e.info.ready&&0===e.usage.tasks.executing))}async sendTaskFunctionOperationToWorker(e,t){return await new Promise(((s,r)=>{const i=t=>{this.checkMessageWorkerId(t);const o=this.getWorkerInfo(e).id;null!=t.taskFunctionOperationStatus&&t.workerId===o&&(t.taskFunctionOperationStatus?s(!0):t.taskFunctionOperationStatus||r(new Error(`Task function operation '${t.taskFunctionOperation}' failed on worker ${t.workerId} with error: '${t.workerError?.message}'`)),this.deregisterWorkerMessageListener(this.getWorkerNodeKeyByWorkerId(t.workerId),i))};this.registerWorkerMessageListener(e,i),this.sendToWorker(e,t)}))}async sendTaskFunctionOperationToWorkers(e){return await new Promise(((t,s)=>{const r=new Array,i=e=>{if(this.checkMessageWorkerId(e),null!=e.taskFunctionOperationStatus&&(r.push(e),r.length===this.workerNodes.length)){if(r.every((e=>!0===e.taskFunctionOperationStatus)))t(!0);else if(r.some((e=>!1===e.taskFunctionOperationStatus))){const t=r.find((e=>!1===e.taskFunctionOperationStatus));s(new Error(`Task function operation '${e.taskFunctionOperation}' failed on worker ${t?.workerId} with error: '${t?.workerError?.message}'`))}this.deregisterWorkerMessageListener(this.getWorkerNodeKeyByWorkerId(e.workerId),i)}};for(const[t]of this.workerNodes.entries())this.registerWorkerMessageListener(t,i),this.sendToWorker(t,e)}))}hasTaskFunction(e){for(const t of this.workerNodes)if(Array.isArray(t.info.taskFunctionNames)&&t.info.taskFunctionNames.includes(e))return!0;return!1}async addTaskFunction(e,t){if("string"!=typeof e)throw new TypeError("name argument must be a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("name argument must not be an empty string");if("function"!=typeof t)throw new TypeError("fn argument must be a function");const s=await this.sendTaskFunctionOperationToWorkers({taskFunctionOperation:"add",taskFunctionName:e,taskFunction:t.toString()});return this.taskFunctions.set(e,t),s}async removeTaskFunction(e){if(!this.taskFunctions.has(e))throw new Error("Cannot remove a task function not handled on the pool side");const t=await this.sendTaskFunctionOperationToWorkers({taskFunctionOperation:"remove",taskFunctionName:e});return this.deleteTaskFunctionWorkerUsages(e),this.taskFunctions.delete(e),t}listTaskFunctionNames(){for(const e of this.workerNodes)if(Array.isArray(e.info.taskFunctionNames)&&e.info.taskFunctionNames.length>0)return e.info.taskFunctionNames;return[]}async setDefaultTaskFunction(e){return await this.sendTaskFunctionOperationToWorkers({taskFunctionOperation:"default",taskFunctionName:e})}deleteTaskFunctionWorkerUsages(e){for(const t of this.workerNodes)t.deleteTaskFunctionWorkerUsage(e)}shallExecuteTask(e){return 0===this.tasksQueueSize(e)&&this.workerNodes[e].usage.tasks.executing<this.opts.tasksQueueOptions?.concurrency}async execute(e,t,s){return await new Promise(((r,o)=>{if(!this.started)return void o(new Error("Cannot execute a task on not started pool"));if(null!=t&&"string"!=typeof t)return void o(new TypeError("name argument must be a string"));if(null!=t&&"string"==typeof t&&0===t.trim().length)return void o(new TypeError("name argument must not be an empty string"));if(null!=s&&!Array.isArray(s))return void o(new TypeError("transferList argument must be an array"));const n=l.now(),a=this.chooseWorkerNode(),u={name:t??T,data:e??{},transferList:s,timestamp:n,taskId:i()};this.promiseResponseMap.set(u.taskId,{resolve:r,reject:o,workerNodeKey:a}),!1===this.opts.enableTasksQueue||!0===this.opts.enableTasksQueue&&this.shallExecuteTask(a)?this.executeTask(a,u):this.enqueueTask(a,u)}))}start(){for(this.starting=!0;this.workerNodes.reduce(((e,t)=>t.info.dynamic?e:e+1),0)<this.numberOfWorkers;)this.createAndSetupWorkerNode();this.starting=!1,this.started=!0}async destroy(){await Promise.all(this.workerNodes.map((async(e,t)=>{await this.destroyWorkerNode(t)}))),this.emitter?.emit(w.destroy,this.info),this.emitter?.emitDestroy(),this.started=!1}async sendKillMessageToWorker(e){await new Promise(((t,s)=>{this.registerWorkerMessageListener(e,(e=>{this.checkMessageWorkerId(e),"success"===e.kill?t():"failure"===e.kill&&s(new Error(`Kill message handling failed on worker ${e.workerId}`))})),this.sendToWorker(e,{kill:!0})}))}setupHook(){}beforeTaskExecutionHook(e,t){if(null!=this.workerNodes[e]?.usage){const s=this.workerNodes[e].usage;++s.tasks.executing,this.updateWaitTimeWorkerUsage(s,t)}if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=this.workerNodes[e].getTaskFunctionWorkerUsage(t.name)){const s=this.workerNodes[e].getTaskFunctionWorkerUsage(t.name);++s.tasks.executing,this.updateWaitTimeWorkerUsage(s,t)}}afterTaskExecutionHook(e,t){if(null!=this.workerNodes[e]?.usage){const s=this.workerNodes[e].usage;this.updateTaskStatisticsWorkerUsage(s,t),this.updateRunTimeWorkerUsage(s,t),this.updateEluWorkerUsage(s,t)}if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=this.workerNodes[e].getTaskFunctionWorkerUsage(t.taskPerformance?.name)){const s=this.workerNodes[e].getTaskFunctionWorkerUsage(t.taskPerformance?.name);this.updateTaskStatisticsWorkerUsage(s,t),this.updateRunTimeWorkerUsage(s,t),this.updateEluWorkerUsage(s,t)}}shallUpdateTaskFunctionWorkerUsage(e){const t=this.getWorkerInfo(e);return null!=t&&Array.isArray(t.taskFunctionNames)&&t.taskFunctionNames.length>2}updateTaskStatisticsWorkerUsage(e,t){const s=e.tasks;null!=s.executing&&s.executing>0&&--s.executing,null==t.workerError?++s.executed:++s.failed}updateRunTimeWorkerUsage(e,t){null==t.workerError&&U(e.runTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime,t.taskPerformance?.runTime??0)}updateWaitTimeWorkerUsage(e,t){const s=l.now(),r=s-(t.timestamp??s);U(e.waitTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime,r)}updateEluWorkerUsage(e,t){if(null!=t.workerError)return;const s=this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu;U(e.elu.active,s,t.taskPerformance?.elu?.active??0),U(e.elu.idle,s,t.taskPerformance?.elu?.idle??0),s.aggregate&&null!=t.taskPerformance?.elu&&(null!=e.elu.utilization?e.elu.utilization=(e.elu.utilization+t.taskPerformance.elu.utilization)/2:e.elu.utilization=t.taskPerformance.elu.utilization)}chooseWorkerNode(){if(this.shallCreateDynamicWorker()){const e=this.createAndSetupDynamicWorkerNode();if(this.workerChoiceStrategyContext.getStrategyPolicy().dynamicWorkerUsage)return e}return this.workerChoiceStrategyContext.execute()}shallCreateDynamicWorker(){return this.type===p.dynamic&&!this.full&&this.internalBusy()}createAndSetupWorkerNode(){const e=this.createWorker();e.on("online",this.opts.onlineHandler??f),e.on("message",this.opts.messageHandler??f),e.on("error",this.opts.errorHandler??f),e.on("error",(t=>{const s=this.getWorkerNodeKeyByWorker(e),r=this.getWorkerInfo(s);r.ready=!1,this.workerNodes[s].closeChannel(),this.emitter?.emit(w.error,t),this.started&&!this.starting&&!0===this.opts.restartWorkerOnError&&(r.dynamic?this.createAndSetupDynamicWorkerNode():this.createAndSetupWorkerNode()),this.started&&!0===this.opts.enableTasksQueue&&this.redistributeQueuedTasks(s)})),e.on("exit",this.opts.exitHandler??f),e.once("exit",(()=>{this.removeWorkerNode(e)}));const t=this.addWorkerNode(e);return this.afterWorkerNodeSetup(t),t}createAndSetupDynamicWorkerNode(){const e=this.createAndSetupWorkerNode();this.registerWorkerMessageListener(e,(e=>{this.checkMessageWorkerId(e);const t=this.getWorkerNodeKeyByWorkerId(e.workerId),s=this.workerNodes[t].usage;(C(A.HARD,e.kill)||C(A.SOFT,e.kill)&&(!1===this.opts.enableTasksQueue&&0===s.tasks.executing||!0===this.opts.enableTasksQueue&&0===s.tasks.executing&&0===this.tasksQueueSize(t)))&&this.destroyWorkerNode(t).catch((e=>{this.emitter?.emit(w.error,e)}))}));const t=this.getWorkerInfo(e);if(this.sendToWorker(e,{checkActive:!0}),this.taskFunctions.size>0)for(const[t,s]of this.taskFunctions)this.sendTaskFunctionOperationToWorker(e,{taskFunctionOperation:"add",taskFunctionName:t,taskFunction:s.toString()}).catch((e=>{this.emitter?.emit(w.error,e)}));return t.dynamic=!0,(this.workerChoiceStrategyContext.getStrategyPolicy().dynamicWorkerReady||this.workerChoiceStrategyContext.getStrategyPolicy().dynamicWorkerUsage)&&(t.ready=!0),this.checkAndEmitDynamicWorkerCreationEvents(),e}afterWorkerNodeSetup(e){this.registerWorkerMessageListener(e,this.workerListener()),this.sendStartupMessageToWorker(e),this.sendStatisticsMessageToWorker(e),!0===this.opts.enableTasksQueue&&(!0===this.opts.tasksQueueOptions?.taskStealing&&(this.workerNodes[e].onEmptyQueue=this.taskStealingOnEmptyQueue.bind(this)),!0===this.opts.tasksQueueOptions?.tasksStealingOnBackPressure&&(this.workerNodes[e].onBackPressure=this.tasksStealingOnBackPressure.bind(this)))}sendStatisticsMessageToWorker(e){this.sendToWorker(e,{statistics:{runTime:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate,elu:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu.aggregate}})}redistributeQueuedTasks(e){for(;this.tasksQueueSize(e)>0;){const t=this.workerNodes.reduce(((e,t,s,r)=>t.info.ready&&t.usage.tasks.queued<r[e].usage.tasks.queued?s:e),0),s=this.dequeueTask(e);this.shallExecuteTask(t)?this.executeTask(t,s):this.enqueueTask(t,s)}}updateTaskStolenStatisticsWorkerUsage(e,t){const s=this.workerNodes[e];if(null!=s?.usage&&++s.usage.tasks.stolen,this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=s.getTaskFunctionWorkerUsage(t)){++s.getTaskFunctionWorkerUsage(t).tasks.stolen}}taskStealingOnEmptyQueue(e){const t=this.getWorkerNodeKeyByWorkerId(e),s=this.workerNodes.slice().sort(((e,t)=>t.usage.tasks.queued-e.usage.tasks.queued)).find((t=>t.info.ready&&t.info.id!==e&&t.usage.tasks.queued>0));if(null!=s){const e=s.popTask();this.shallExecuteTask(t)?this.executeTask(t,e):this.enqueueTask(t,e),this.updateTaskStolenStatisticsWorkerUsage(t,e.name)}}tasksStealingOnBackPressure(e){if(this.opts.tasksQueueOptions?.size<=1)return;const t=this.workerNodes[this.getWorkerNodeKeyByWorkerId(e)],s=this.workerNodes.slice().sort(((e,t)=>e.usage.tasks.queued-t.usage.tasks.queued));for(const[r,i]of s.entries())if(t.usage.tasks.queued>0&&i.info.ready&&i.info.id!==e&&i.usage.tasks.queued<this.opts.tasksQueueOptions?.size-1){const e=t.popTask();this.shallExecuteTask(r)?this.executeTask(r,e):this.enqueueTask(r,e),this.updateTaskStolenStatisticsWorkerUsage(r,e.name)}}workerListener(){return e=>{this.checkMessageWorkerId(e),null!=e.ready&&null!=e.taskFunctionNames?this.handleWorkerReadyResponse(e):null!=e.taskId?this.handleTaskExecutionResponse(e):null!=e.taskFunctionNames&&(this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(e.workerId)).taskFunctionNames=e.taskFunctionNames)}}handleWorkerReadyResponse(e){if(!1===e.ready)throw new Error(`Worker ${e.workerId} failed to initialize`);const t=this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(e.workerId));t.ready=e.ready,t.taskFunctionNames=e.taskFunctionNames,this.ready&&this.emitter?.emit(w.ready,this.info)}handleTaskExecutionResponse(e){const{taskId:t,workerError:s,data:r}=e,i=this.promiseResponseMap.get(t);if(null!=i){null!=s?(this.emitter?.emit(w.taskError,s),i.reject(s.message)):i.resolve(r);const o=i.workerNodeKey;this.afterTaskExecutionHook(o,e),this.workerChoiceStrategyContext.update(o),this.promiseResponseMap.delete(t),!0===this.opts.enableTasksQueue&&this.tasksQueueSize(o)>0&&this.workerNodes[o].usage.tasks.executing<this.opts.tasksQueueOptions?.concurrency&&this.executeTask(o,this.dequeueTask(o))}}checkAndEmitTaskExecutionEvents(){this.busy&&this.emitter?.emit(w.busy,this.info)}checkAndEmitTaskQueuingEvents(){this.hasBackPressure()&&this.emitter?.emit(w.backPressure,this.info)}checkAndEmitDynamicWorkerCreationEvents(){this.type===p.dynamic&&this.full&&this.emitter?.emit(w.full,this.info)}getWorkerInfo(e){return this.workerNodes[e].info}addWorkerNode(e){const t=new ee(e,this.opts.tasksQueueOptions?.size??Math.pow(this.maxSize,2));this.starting&&(t.info.ready=!0),this.workerNodes.push(t);const s=this.getWorkerNodeKeyByWorker(e);if(-1===s)throw new Error("Worker added not found in worker nodes");return s}removeWorkerNode(e){const t=this.getWorkerNodeKeyByWorker(e);-1!==t&&(this.workerNodes.splice(t,1),this.workerChoiceStrategyContext.remove(t))}hasWorkerNodeBackPressure(e){return!0===this.opts.enableTasksQueue&&this.workerNodes[e].hasBackPressure()}hasBackPressure(){return!0===this.opts.enableTasksQueue&&-1===this.workerNodes.findIndex((e=>!e.hasBackPressure()))}executeTask(e,t){this.beforeTaskExecutionHook(e,t),this.sendToWorker(e,t,t.transferList),this.checkAndEmitTaskExecutionEvents()}enqueueTask(e,t){const s=this.workerNodes[e].enqueueTask(t);return this.checkAndEmitTaskQueuingEvents(),s}dequeueTask(e){return this.workerNodes[e].dequeueTask()}tasksQueueSize(e){return this.workerNodes[e].tasksQueueSize()}flushTasksQueue(e){for(;this.tasksQueueSize(e)>0;)this.executeTask(e,this.dequeueTask(e));this.workerNodes[e].clearTasksQueue()}flushTasksQueues(){for(const[e]of this.workerNodes.entries())this.flushTasksQueue(e)}}class se extends te{opts;constructor(e,t,s={}){super(e,t,s),this.opts=s}setupHook(){o.setupPrimary({...this.opts.settings,exec:this.filePath})}isMain(){return o.isPrimary}async destroyWorkerNode(e){this.flushTasksQueue(e);const t=this.workerNodes[e].worker,s=new Promise((e=>{t.once("exit",(()=>{e()}))}));t.once("disconnect",(()=>{t.kill()})),await this.sendKillMessageToWorker(e),t.disconnect(),await s}sendToWorker(e,t){this.workerNodes[e].worker.send({...t,workerId:this.workerNodes[e].info.id})}sendStartupMessageToWorker(e){this.sendToWorker(e,{ready:!1})}registerWorkerMessageListener(e,t){this.workerNodes[e].worker.on("message",t)}registerOnceWorkerMessageListener(e,t){this.workerNodes[e].worker.once("message",t)}deregisterWorkerMessageListener(e,t){this.workerNodes[e].worker.off("message",t)}createWorker(){return o.fork(this.opts.env)}get type(){return p.fixed}get worker(){return y.cluster}get busy(){return this.internalBusy()}}class re extends se{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,K(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}class ie extends te{opts;constructor(e,t,s={}){super(e,t,s),this.opts=s}isMain(){return h}async destroyWorkerNode(e){this.flushTasksQueue(e);const t=this.workerNodes[e],s=t.worker,r=new Promise((e=>{s.once("exit",(()=>{e()}))}));await this.sendKillMessageToWorker(e),t.closeChannel(),await s.terminate(),await r}sendToWorker(e,t,s){this.workerNodes[e].messageChannel.port1.postMessage({...t,workerId:this.workerNodes[e].info.id},s)}sendStartupMessageToWorker(e){const t=this.workerNodes[e],s=t.messageChannel.port2;t.worker.postMessage({ready:!1,workerId:t.info.id,port:s},[s])}registerWorkerMessageListener(e,t){this.workerNodes[e].messageChannel.port1.on("message",t)}registerOnceWorkerMessageListener(e,t){this.workerNodes[e].messageChannel.port1.once("message",t)}deregisterWorkerMessageListener(e,t){this.workerNodes[e].messageChannel.port1.off("message",t)}createWorker(){return new a(this.filePath,{env:k,...this.opts.workerOptions})}get type(){return p.fixed}get worker(){return y.thread}get busy(){return this.internalBusy()}}class oe extends ie{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,K(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}const ne=(e,t)=>{if("string"!=typeof e)throw new TypeError("A taskFunctions parameter object key is not a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("A taskFunctions parameter object key is an empty string");if("function"!=typeof t)throw new TypeError("A taskFunctions parameter object value is not a function")},ae=e=>{if("string"!=typeof e)throw new TypeError("name parameter is not a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("name parameter is an empty string")},ue=6e4,he={killBehavior:A.SOFT,maxInactiveTime:ue,killHandler:f};class ke extends m{isMain;mainWorker;opts;taskFunctions;lastTaskTimestamp;statistics;activeInterval;constructor(e,t,s,r,i=he){if(super(e),this.isMain=t,this.mainWorker=s,this.opts=i,null==this.isMain)throw new Error("isMain parameter is mandatory");this.checkTaskFunctions(r),this.checkWorkerOptions(this.opts),this.isMain||this.getMainWorker().on("message",this.handleReadyMessage.bind(this))}checkWorkerOptions(e){(e=>{if(null!=e&&!F(e))throw new TypeError("opts worker options parameter is not a plain object");if(null!=e?.killBehavior&&!Object.values(A).includes(e.killBehavior))throw new TypeError(`killBehavior option '${e.killBehavior}' is not valid`);if(null!=e?.maxInactiveTime&&!Number.isSafeInteger(e.maxInactiveTime))throw new TypeError("maxInactiveTime option is not an integer");if(null!=e?.maxInactiveTime&&e.maxInactiveTime<5)throw new TypeError("maxInactiveTime option is not a positive integer greater or equal than 5");if(null!=e?.killHandler&&"function"!=typeof e.killHandler)throw new TypeError("killHandler option is not a function");if(null!=e?.async)throw new Error("async option is deprecated")})(e),this.opts={...he,...e}}checkTaskFunctions(e){if(null==e)throw new Error("taskFunctions parameter is mandatory");if(this.taskFunctions=new Map,"function"==typeof e){const t=e.bind(this);this.taskFunctions.set(T,t),this.taskFunctions.set("string"==typeof e.name&&e.name.trim().length>0?e.name:"fn1",t)}else{if(!F(e))throw new TypeError("taskFunctions parameter is not a function or a plain object");{let t=!0;for(const[s,r]of Object.entries(e)){ne(s,r);const e=r.bind(this);t&&(this.taskFunctions.set(T,e),t=!1),this.taskFunctions.set(s,e)}if(t)throw new Error("taskFunctions parameter object is empty")}}}hasTaskFunction(e){try{ae(e)}catch(e){return{status:!1,error:e}}return{status:this.taskFunctions.has(e)}}addTaskFunction(e,t){try{if(ae(e),e===T)throw new Error("Cannot add a task function with the default reserved name");if("function"!=typeof t)throw new TypeError("fn parameter is not a function");const s=t.bind(this);return this.taskFunctions.get(e)===this.taskFunctions.get(T)&&this.taskFunctions.set(T,s),this.taskFunctions.set(e,s),this.sendTaskFunctionNamesToMainWorker(),{status:!0}}catch(e){return{status:!1,error:e}}}removeTaskFunction(e){try{if(ae(e),e===T)throw new Error("Cannot remove the task function with the default reserved name");if(this.taskFunctions.get(e)===this.taskFunctions.get(T))throw new Error("Cannot remove the task function used as the default task function");const t=this.taskFunctions.delete(e);return this.sendTaskFunctionNamesToMainWorker(),{status:t}}catch(e){return{status:!1,error:e}}}listTaskFunctionNames(){const e=[...this.taskFunctions.keys()];let t=T;for(const[e,s]of this.taskFunctions)if(e!==T&&s===this.taskFunctions.get(T)){t=e;break}return[e[e.indexOf(T)],t,...e.filter((e=>e!==T&&e!==t))]}setDefaultTaskFunction(e){try{if(ae(e),e===T)throw new Error("Cannot set the default task function reserved name as the default task function");if(!this.taskFunctions.has(e))throw new Error("Cannot set the default task function to a non-existing task function");return this.taskFunctions.set(T,this.taskFunctions.get(e)),this.sendTaskFunctionNamesToMainWorker(),{status:!0}}catch(e){return{status:!1,error:e}}}messageListener(e){this.checkMessageWorkerId(e),null!=e.statistics?this.statistics=e.statistics:null!=e.checkActive?e.checkActive?this.startCheckActive():this.stopCheckActive():null!=e.taskFunctionOperation?this.handleTaskFunctionOperationMessage(e):null!=e.taskId&&null!=e.data?this.run(e):!0===e.kill&&this.handleKillMessage(e)}handleTaskFunctionOperationMessage(e){const{taskFunctionOperation:t,taskFunctionName:s,taskFunction:r}=e;let i;switch(t){case"add":i=this.addTaskFunction(s,new Function(`return ${r}`)());break;case"remove":i=this.removeTaskFunction(s);break;case"default":i=this.setDefaultTaskFunction(s);break;default:i={status:!1,error:new Error("Unknown task operation")}}this.sendToMainWorker({taskFunctionOperation:t,taskFunctionOperationStatus:i.status,taskFunctionName:s,...!i.status&&null!=i?.error&&{workerError:{name:s,message:this.handleError(i.error)}}})}handleKillMessage(e){if(this.stopCheckActive(),O(this.opts.killHandler))(this.opts.killHandler?.()).then((()=>{this.sendToMainWorker({kill:"success"})})).catch((()=>{this.sendToMainWorker({kill:"failure"})})).finally((()=>{this.emitDestroy()})).catch(f);else try{this.opts.killHandler?.(),this.sendToMainWorker({kill:"success"})}catch{this.sendToMainWorker({kill:"failure"})}finally{this.emitDestroy()}}checkMessageWorkerId(e){if(null==e.workerId)throw new Error("Message worker id is not set");if(null!=e.workerId&&e.workerId!==this.id)throw new Error(`Message worker id ${e.workerId} does not match the worker id ${this.id}`)}startCheckActive(){this.lastTaskTimestamp=l.now(),this.activeInterval=setInterval(this.checkActive.bind(this),(this.opts.maxInactiveTime??ue)/2)}stopCheckActive(){null!=this.activeInterval&&(clearInterval(this.activeInterval),delete this.activeInterval)}checkActive(){l.now()-this.lastTaskTimestamp>(this.opts.maxInactiveTime??ue)&&this.sendToMainWorker({kill:this.opts.killBehavior})}getMainWorker(){if(null==this.mainWorker)throw new Error("Main worker not set");return this.mainWorker}sendTaskFunctionNamesToMainWorker(){this.sendToMainWorker({taskFunctionNames:this.listTaskFunctionNames()})}handleError(e){return e instanceof Error?e.message:e}run(e){const{name:t,taskId:s,data:r}=e,i=this.taskFunctions.get(t??T);null!=i?O(i)?this.runInAsyncScope(this.runAsync.bind(this),this,i,e):this.runInAsyncScope(this.runSync.bind(this),this,i,e):this.sendToMainWorker({workerError:{name:t,message:`Task function '${t}' not found`,data:r},taskId:s})}runSync(e,t){const{name:s,taskId:r,data:i}=t;try{let t=this.beginTaskPerformance(s);const o=e(i);t=this.endTaskPerformance(t),this.sendToMainWorker({data:o,taskPerformance:t,taskId:r})}catch(e){this.sendToMainWorker({workerError:{name:s,message:this.handleError(e),data:i},taskId:r})}finally{this.updateLastTaskTimestamp()}}runAsync(e,t){const{name:s,taskId:r,data:i}=t;let o=this.beginTaskPerformance(s);e(i).then((e=>{o=this.endTaskPerformance(o),this.sendToMainWorker({data:e,taskPerformance:o,taskId:r})})).catch((e=>{this.sendToMainWorker({workerError:{name:s,message:this.handleError(e),data:i},taskId:r})})).finally((()=>{this.updateLastTaskTimestamp()})).catch(f)}beginTaskPerformance(e){return this.checkStatistics(),{name:e??T,timestamp:l.now(),...this.statistics.elu&&{elu:l.eventLoopUtilization()}}}endTaskPerformance(e){return this.checkStatistics(),{...e,...this.statistics.runTime&&{runTime:l.now()-e.timestamp},...this.statistics.elu&&{elu:l.eventLoopUtilization(e.elu)}}}checkStatistics(){if(null==this.statistics)throw new Error("Performance statistics computation requirements not set")}updateLastTaskTimestamp(){null!=this.activeInterval&&(this.lastTaskTimestamp=l.now())}}class ce extends ke{constructor(e,t={}){super("poolifier:cluster-worker",o.isPrimary,o.worker,e,t)}handleReadyMessage(e){if(e.workerId===this.id&&!1===e.ready)try{this.getMainWorker().on("message",this.messageListener.bind(this)),this.sendToMainWorker({ready:!0,taskFunctionNames:this.listTaskFunctionNames()})}catch{this.sendToMainWorker({ready:!1,taskFunctionNames:this.listTaskFunctionNames()})}}get id(){return this.getMainWorker().id}sendToMainWorker(e){this.getMainWorker().send({...e,workerId:this.id})}}class de extends ke{port;constructor(e,t={}){super("poolifier:thread-worker",h,c,e,t)}handleReadyMessage(e){if(e.workerId===this.id&&!1===e.ready&&null!=e.port)try{this.port=e.port,this.port.on("message",this.messageListener.bind(this)),this.sendToMainWorker({ready:!0,taskFunctionNames:this.listTaskFunctionNames()})}catch{this.sendToMainWorker({ready:!1,taskFunctionNames:this.listTaskFunctionNames()})}}handleKillMessage(e){super.handleKillMessage(e),this.port?.unref(),this.port?.close()}get id(){return d}sendToMainWorker(e){this.port.postMessage({...e,workerId:this.id})}handleError(e){return e}}export{ce as ClusterWorker,re as DynamicClusterPool,oe as DynamicThreadPool,se as FixedClusterPool,ie as FixedThreadPool,A as KillBehaviors,P as Measurements,w as PoolEvents,p as PoolTypes,de as ThreadWorker,M as WorkerChoiceStrategies,y as WorkerTypes,S as availableParallelism};
2
2
  //# sourceMappingURL=index.mjs.map