poolifier 3.0.12 → 3.0.13

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","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","checkNextWorkerNodeReadiness","getWorkerNodeTaskRunTime","usage","getWorkerNodeTaskWaitTime","getWorkerNodeTaskElu","active","setPreviousWorkerNodeKey","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","EventEmitter","messageChannel","tasksQueueBackPressureSize","tasksQueue","onBackPressureStarted","taskFunctionsUsage","checkWorkerNodeArguments","initWorkerInfo","initWorkerUsage","type","MessageChannel","tasksQueueSize","enqueueTask","task","hasBackPressure","emit","workerId","unshiftTask","dequeueTask","popTask","clearTasksQueue","resetUsage","closeChannel","port1","unref","port2","close","getTaskFunctionWorkerUsage","taskFunctionNames","has","set","initTaskFunctionWorkerUsage","deleteTaskFunctionWorkerUsage","delete","getTasksQueueSize","getTasksQueueMaxSize","maxQueued","sequentiallyStolen","stolen","failed","idle","getTaskFunctionQueueSize","taskFunctionQueueSize","AbstractPool","numberOfWorkers","filePath","emitter","promiseResponseMap","workerChoiceStrategyContext","taskFunctions","started","starting","destroying","readyEventEmitted","startTimestamp","isMain","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","getWorkerNodeKeyByWorkerId","getWorkerNodeKeyByWorker","findIndex","setWorkerChoiceStrategyOptions","entries","sendStatisticsMessageToWorker","enable","unsetTaskStealing","unsetTasksStealingOnBackPressure","flushTasksQueues","setTasksQueueOptions","setTasksQueueSize","taskStealing","setTaskStealing","tasksStealingOnBackPressure","setTasksStealingOnBackPressure","on","handleIdleWorkerNodeEvent","off","handleBackPressureEvent","internalBusy","sendTaskFunctionOperationToWorker","Promise","resolve","reject","taskFunctionOperationListener","getWorkerInfo","taskFunctionOperationStatus","taskFunctionOperation","workerError","deregisterWorkerMessageListener","registerWorkerMessageListener","sendToWorker","sendTaskFunctionOperationToWorkers","responsesReceived","taskFunctionOperationsListener","every","some","errorResponse","find","response","hasTaskFunction","addTaskFunction","trim","opResult","taskFunctionName","taskFunction","removeTaskFunction","deleteTaskFunctionWorkerUsages","listTaskFunctionNames","setDefaultTaskFunction","shallExecuteTask","transferList","timestamp","taskId","randomUUID","asyncResource","AsyncResource","triggerAsyncId","asyncId","requireManualDestroy","createAndSetupWorkerNode","all","async","_workerNode","destroyWorkerNode","emitDestroy","removeAllListeners","sendKillMessageToWorker","kill","beforeTaskExecutionHook","workerUsage","updateWaitTimeWorkerUsage","shallUpdateTaskFunctionWorkerUsage","taskFunctionWorkerUsage","afterTaskExecutionHook","updateTaskStatisticsWorkerUsage","updateRunTimeWorkerUsage","updateEluWorkerUsage","taskPerformance","workerInfo","workerTaskStatistics","taskWaitTime","eluTaskStatisticsRequirements","shallCreateDynamicWorker","createAndSetupDynamicWorkerNode","createWorker","onlineHandler","messageHandler","errorHandler","flagWorkerNodeAsNotReady","redistributeQueuedTasks","exitHandler","once","removeWorkerNode","addWorkerNode","afterWorkerNodeSetup","localWorkerNodeKey","catch","checkActive","checkAndEmitDynamicWorkerCreationEvents","workerMessageListener","sendStartupMessageToWorker","statistics","destinationWorkerNodeKey","updateTaskStolenStatisticsWorkerUsage","taskName","updateTaskSequentiallyStolenStatisticsWorkerUsage","updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage","resetTaskSequentiallyStolenStatisticsWorkerUsage","resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage","eventDetail","previousStolenTask","workerNodeTasksUsage","stolenTask","workerNodeStealTask","taskFunctionTasksWorkerUsage","ms","setTimeout","sleep","retryNumber","delayFactor","delay","exponentialDelay","then","sourceWorkerNode","workerNodeA","workerNodeB","sourceWorkerNodeKey","handleWorkerReadyResponse","handleTaskExecutionResponse","promiseResponse","runInAsyncScope","checkAndEmitTaskExecutionEvents","checkAndEmitTaskQueuingEvents","hasWorkerNodeBackPressure","flushTasksQueue","FixedClusterPool","setupPrimary","settings","exec","isPrimary","waitWorkerExit","disconnect","send","listener","registerOnceWorkerMessageListener","fork","env","FixedThreadPool","numberOfThreads","isMainThread","terminate","postMessage","port","Worker","SHARE_ENV","workerOptions","checkValidTaskFunctionEntry","checkTaskFunctionName","DEFAULT_MAX_INACTIVE_TIME","DEFAULT_WORKER_OPTIONS","maxInactiveTime","killHandler","AbstractWorker","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","_message","setInterval","clearInterval","runAsync","runSync","beginTaskPerformance","res","endTaskPerformance","updateLastTaskTimestamp","finally","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","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","hasPoolWorkerNodesReady","workerNodes","some","workerNode","info","isWorkerNodeReady","workerNodeKey","checkNextWorkerNodeReadiness","getWorkerNodeTaskRunTime","usage","getWorkerNodeTaskWaitTime","getWorkerNodeTaskElu","active","setPreviousWorkerNodeKey","computeDefaultWorkerWeight","cpusCycleTimeWeight","cpu","cpus","numberOfDigits","speed","FairShareWorkerChoiceStrategy","super","reset","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","execute","Map","getStrategyPolicy","get","getTaskStatisticsRequirements","setWorkerChoiceStrategy","maxExecutionCount","executionCount","chooseCount","retriesCount","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","EventEmitter","messageChannel","tasksQueueBackPressureSize","tasksQueue","onBackPressureStarted","taskFunctionsUsage","checkWorkerNodeArguments","initWorkerInfo","initWorkerUsage","type","MessageChannel","tasksQueueSize","enqueueTask","task","hasBackPressure","emit","workerId","unshiftTask","dequeueTask","popTask","clearTasksQueue","resetUsage","closeChannel","port1","unref","port2","close","getTaskFunctionWorkerUsage","taskFunctionNames","has","set","initTaskFunctionWorkerUsage","deleteTaskFunctionWorkerUsage","delete","getTasksQueueSize","getTasksQueueMaxSize","maxQueued","sequentiallyStolen","stolen","failed","idle","getTaskFunctionQueueSize","taskFunctionQueueSize","AbstractPool","numberOfWorkers","filePath","emitter","promiseResponseMap","workerChoiceStrategyContext","taskFunctions","started","starting","destroying","readyEventEmitted","startTimestamp","isMain","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","getWorkerNodeKeyByWorkerId","getWorkerNodeKeyByWorker","findIndex","setWorkerChoiceStrategyOptions","entries","sendStatisticsMessageToWorker","enable","unsetTaskStealing","unsetTasksStealingOnBackPressure","flushTasksQueues","setTasksQueueOptions","setTasksQueueSize","taskStealing","setTaskStealing","tasksStealingOnBackPressure","setTasksStealingOnBackPressure","on","handleIdleWorkerNodeEvent","off","handleBackPressureEvent","internalBusy","sendTaskFunctionOperationToWorker","Promise","resolve","reject","taskFunctionOperationListener","getWorkerInfo","taskFunctionOperationStatus","taskFunctionOperation","workerError","deregisterWorkerMessageListener","registerWorkerMessageListener","sendToWorker","sendTaskFunctionOperationToWorkers","responsesReceived","taskFunctionOperationsListener","every","errorResponse","find","response","hasTaskFunction","addTaskFunction","trim","opResult","taskFunctionName","taskFunction","removeTaskFunction","deleteTaskFunctionWorkerUsages","listTaskFunctionNames","setDefaultTaskFunction","shallExecuteTask","transferList","timestamp","taskId","randomUUID","asyncResource","AsyncResource","triggerAsyncId","asyncId","requireManualDestroy","createAndSetupWorkerNode","all","async","_workerNode","destroyWorkerNode","emitDestroy","removeAllListeners","sendKillMessageToWorker","kill","beforeTaskExecutionHook","workerUsage","updateWaitTimeWorkerUsage","shallUpdateTaskFunctionWorkerUsage","taskFunctionWorkerUsage","afterTaskExecutionHook","updateTaskStatisticsWorkerUsage","updateRunTimeWorkerUsage","updateEluWorkerUsage","taskPerformance","workerInfo","workerTaskStatistics","taskWaitTime","eluTaskStatisticsRequirements","shallCreateDynamicWorker","createAndSetupDynamicWorkerNode","createWorker","onlineHandler","messageHandler","errorHandler","flagWorkerNodeAsNotReady","redistributeQueuedTasks","exitHandler","once","removeWorkerNode","addWorkerNode","afterWorkerNodeSetup","localWorkerNodeKey","catch","checkActive","checkAndEmitDynamicWorkerCreationEvents","workerMessageListener","sendStartupMessageToWorker","statistics","destinationWorkerNodeKey","updateTaskStolenStatisticsWorkerUsage","taskName","updateTaskSequentiallyStolenStatisticsWorkerUsage","updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage","resetTaskSequentiallyStolenStatisticsWorkerUsage","resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage","eventDetail","previousStolenTask","workerNodeTasksUsage","stolenTask","workerNodeStealTask","taskFunctionTasksWorkerUsage","ms","setTimeout","sleep","retryNumber","delayFactor","delay","exponentialDelay","then","sourceWorkerNode","workerNodeA","workerNodeB","sourceWorkerNodeKey","handleWorkerReadyResponse","handleTaskExecutionResponse","promiseResponse","runInAsyncScope","checkAndEmitTaskExecutionEvents","checkAndEmitTaskQueuingEvents","hasWorkerNodeBackPressure","flushTasksQueue","FixedClusterPool","setupPrimary","settings","exec","isPrimary","waitWorkerExit","disconnect","send","listener","registerOnceWorkerMessageListener","fork","env","FixedThreadPool","numberOfThreads","isMainThread","terminate","postMessage","port","Worker","SHARE_ENV","workerOptions","checkValidTaskFunctionEntry","checkTaskFunctionName","DEFAULT_MAX_INACTIVE_TIME","DEFAULT_WORKER_OPTIONS","maxInactiveTime","killHandler","AbstractWorker","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","_message","setInterval","clearInterval","runAsync","runSync","beginTaskPerformance","res","endTaskPerformance","updateLastTaskTimestamp","finally","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{getRandomValues 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 d,threadId as c}from"node:worker_threads";import{performance as l}from"node:perf_hooks";import{EventEmitter as g,EventEmitterAsyncResource as m}from"node:events";import{AsyncResource as w}from"node:async_hooks";const p=Object.freeze({fixed:"fixed",dynamic:"dynamic"}),y=Object.freeze({ready:"ready",busy:"busy",full:"full",destroy:"destroy",error:"error",taskError:"taskError",backPressure:"backPressure"}),T=Object.freeze({thread:"thread",cluster:"cluster"}),f="default",N=Object.freeze((()=>{})),W={retries:6,runTime:{median:!1},waitTime:{median:!1},elu:{median:!1}},S={aggregate:!1,average:!1,median:!1},x=()=>{let e=1;try{e=t.availableParallelism()}catch{const s=t.cpus();Array.isArray(s)&&s.length>0&&(e=s.length)}return e},v=e=>e instanceof a?T.thread:e instanceof n?T.cluster:void 0,E=e=>e instanceof a?e.threadId:e instanceof n?e.id:void 0,I=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,F=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},R=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,z=()=>r(new Uint32Array(1))[0]/4294967296,M=(...e)=>e.reduce(((e,t)=>e<t?e:t),1/0),K=(...e)=>e.reduce(((e,t)=>e>t?e:t),-1/0),q=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"}),U=(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")},A=e=>{if(null!=e&&!Object.values(q).includes(e))throw new Error(`Invalid worker choice strategy '${e}'`)},Q=e=>{if(null!=e&&!R(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`)},B=(e,t,s)=>{t.aggregate&&(e.aggregate=(e.aggregate??0)+s,e.minimum=M(s,e.minimum??1/0),e.maximum=K(s,e.maximum??-1/0),(t.average||t.median)&&null!=s&&(e.history.push(s),t.average?e.average=I(e.history):null!=e.average&&delete e.average,t.median?e.median=F(e.history):null!=e.median&&delete e.median))},D=Object.freeze({SOFT:"SOFT",HARD:"HARD"});class L{pool;opts;nextWorkerNodeKey=0;previousWorkerNodeKey=0;strategyPolicy={dynamicWorkerUsage:!1,dynamicWorkerReady:!0};taskStatisticsRequirements={runTime:S,waitTime:S,elu:S};constructor(e,t=W){this.pool=e,this.opts=t,this.opts={...W,...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={...W,...e},this.setTaskStatisticsRequirements(this.opts)}isWorkerNodeReady(e){return this.pool.workerNodes[e]?.info?.ready??!1}checkNextWorkerNodeReadiness(){this.isWorkerNodeReady(this.nextWorkerNodeKey)||delete this.nextWorkerNodeKey}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}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 _ extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:S,elu:{aggregate:!0,average:!0,median:!1}};constructor(e,t=W){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)}),this.isWorkerNodeReady(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 H extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:S,elu:S};roundId=0;defaultWorkerWeight;roundWeights;workerNodeId=0;workerNodeVirtualTaskRunTime=0;constructor(e,t=W){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(this.isWorkerNodeReady(t)&&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 j extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!1,median:!1},waitTime:{aggregate:!0,average:!1,median:!1},elu:S};constructor(e,t=W){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)=>this.isWorkerNodeReady(s)&&(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 V extends L{constructor(e,t=W){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)=>this.isWorkerNodeReady(s)&&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 $ extends L{taskStatisticsRequirements={runTime:S,waitTime:S,elu:{aggregate:!0,average:!1,median:!1}};constructor(e,t=W){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)=>this.isWorkerNodeReady(s)&&(t.usage.elu.active.aggregate??0)<(r[e].usage.elu.active.aggregate??0)?s:e),0)}}class G extends L{constructor(e,t=W){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(),this.checkNextWorkerNodeReadiness(),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 Y extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:S,elu:S};defaultWorkerWeight;workerNodeVirtualTaskRunTime=0;constructor(e,t=W){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(),this.checkNextWorkerNodeReadiness(),this.nextWorkerNodeKey}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 J{workerChoiceStrategy;opts;workerChoiceStrategies;retriesCount=0;constructor(e,t=q.ROUND_ROBIN,s=W){this.workerChoiceStrategy=t,this.opts=s,this.opts={...W,...s},this.execute=this.execute.bind(this),this.workerChoiceStrategies=new Map([[q.ROUND_ROBIN,new(G.bind(this))(e,s)],[q.LEAST_USED,new(V.bind(this))(e,s)],[q.LEAST_BUSY,new(j.bind(this))(e,s)],[q.LEAST_ELU,new($.bind(this))(e,s)],[q.FAIR_SHARE,new(_.bind(this))(e,s)],[q.WEIGHTED_ROUND_ROBIN,new(Y.bind(this))(e,s)],[q.INTERLEAVED_WEIGHTED_ROUND_ROBIN,new(H.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||this.opts.retries===1/0))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={...W,...e};for(const t of this.workerChoiceStrategies.values())t.setOptions(e)}}class X 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 X(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 Z{data;next;prev;constructor(e){this.data=e}}class ee{head;tail;size;maxSize;constructor(){this.clear()}push(e){const t=new Z(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 Z(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 te extends g{worker;info;usage;strategyData;messageChannel;tasksQueueBackPressureSize;tasksQueue;onBackPressureStarted;taskFunctionsUsage;constructor(e,t){super(),((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===T.thread&&(this.messageChannel=new u),this.tasksQueueBackPressureSize=t,this.tasksQueue=new ee,this.onBackPressureStarted=!1,this.taskFunctionsUsage=new Map}tasksQueueSize(){return this.tasksQueue.size}enqueueTask(e){const t=this.tasksQueue.push(e);return this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.emit("backPressure",{workerId:this.info.id}),this.onBackPressureStarted=!1),t}unshiftTask(e){const t=this.tasksQueue.unshift(e);return this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.emit("backPressure",{workerId:this.info.id}),this.onBackPressureStarted=!1),t}dequeueTask(){return this.tasksQueue.shift()}popTask(){return this.tasksQueue.pop()}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===f&&(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)}initWorkerInfo(e){return{id:E(e),type:v(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()},sequentiallyStolen:0,stolen:0,failed:0},runTime:{history:new X},waitTime:{history:new X},elu:{idle:{history:new X},active:{history:new X}}}}initTaskFunctionWorkerUsage(e){const t=()=>{let t=0;for(const s of this.tasksQueue)(s.name===f&&e===this.info.taskFunctionNames[1]||s.name!==f&&e===s.name)&&++t;return t};return{tasks:{executed:0,executing:0,get queued(){return t()},sequentiallyStolen:0,stolen:0,failed:0},runTime:{history:new X},waitTime:{history:new X},elu:{idle:{history:new X},active:{history:new X}}}}}class se{numberOfWorkers;filePath;opts;workerNodes=[];emitter;max;promiseResponseMap=new Map;workerChoiceStrategyContext;taskFunctions;started;starting;destroying;readyEventEmitted;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(!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 J(this,this.opts.workerChoiceStrategy,this.opts.workerChoiceStrategyOptions),this.setupHook(),this.taskFunctions=new Map,this.started=!1,this.starting=!1,this.destroying=!1,this.readyEventEmitted=!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(!R(e))throw new TypeError("Invalid pool options: must be a plain object");this.opts.startWorkers=e.startWorkers??!0,A(e.workerChoiceStrategy),this.opts.workerChoiceStrategy=e.workerChoiceStrategy??q.ROUND_ROBIN,this.checkValidWorkerChoiceStrategyOptions(e.workerChoiceStrategyOptions),this.opts.workerChoiceStrategyOptions={...W,...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&&!R(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 m({name:`poolifier:${this.type}-${this.worker}-pool`})}get info(){return{version:"3.0.12",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(M(...this.workerNodes.map((e=>e.usage.runTime?.minimum??1/0)))),maximum:b(K(...this.workerNodes.map((e=>e.usage.runTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.average&&{average:b(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median&&{median:b(F(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))}}},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.aggregate&&{waitTime:{minimum:b(M(...this.workerNodes.map((e=>e.usage.waitTime?.minimum??1/0)))),maximum:b(K(...this.workerNodes.map((e=>e.usage.waitTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.average&&{average:b(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.waitTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.median&&{median:b(F(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(-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){A(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={...W,...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.unsetTaskStealing(),this.setTaskStealing()):this.unsetTaskStealing(),!0===this.opts.tasksQueueOptions.tasksStealingOnBackPressure?(this.unsetTasksStealingOnBackPressure(),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].on("idleWorkerNode",this.handleIdleWorkerNodeEvent)}unsetTaskStealing(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].off("idleWorkerNode",this.handleIdleWorkerNodeEvent)}setTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].on("backPressure",this.handleBackPressureEvent)}unsetTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].off("backPressure",this.handleBackPressureEvent)}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(this.destroying)return void o(new Error("Cannot execute a task on destroying 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??f,data:e??{},transferList:s,timestamp:n,taskId:i()};this.promiseResponseMap.set(u.taskId,{resolve:r,reject:o,workerNodeKey:a,...null!=this.emitter&&{asyncResource:new w("poolifier:task",{triggerAsyncId:this.emitter.asyncId,requireManualDestroy:!0})}}),!1===this.opts.enableTasksQueue||!0===this.opts.enableTasksQueue&&this.shallExecuteTask(a)?this.executeTask(a,u):this.enqueueTask(a,u)}))}start(){if(this.started)throw new Error("Cannot start an already started pool");if(this.starting)throw new Error("Cannot start an already starting pool");if(this.destroying)throw new Error("Cannot start a destroying pool");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(){if(!this.started)throw new Error("Cannot destroy an already destroyed pool");if(this.starting)throw new Error("Cannot destroy an starting pool");if(this.destroying)throw new Error("Cannot destroy an already destroying pool");this.destroying=!0,await Promise.all(this.workerNodes.map((async(e,t)=>{await this.destroyWorkerNode(t)}))),this.emitter?.emit(y.destroy,this.info),this.emitter?.emitDestroy(),this.emitter?.removeAllListeners(),this.readyEventEmitted=!1,this.destroying=!1,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&&B(e.runTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime,t.taskPerformance?.runTime??0)}updateWaitTimeWorkerUsage(e,t){const s=l.now(),r=s-(t.timestamp??s);B(e.waitTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime,r)}updateEluWorkerUsage(e,t){if(null!=t.workerError)return;const s=this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu;B(e.elu.active,s,t.taskPerformance?.elu?.active??0),B(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??N),e.on("message",this.opts.messageHandler??N),e.on("error",this.opts.errorHandler??N),e.on("error",(t=>{const s=this.getWorkerNodeKeyByWorker(e);this.flagWorkerNodeAsNotReady(s);const r=this.getWorkerInfo(s);this.emitter?.emit(y.error,t),this.workerNodes[s].closeChannel(),!this.started||this.starting||this.destroying||!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??N),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(D.HARD,e.kill)||C(D.SOFT,e.kill)&&(!1===this.opts.enableTasksQueue&&0===s.tasks.executing||!0===this.opts.enableTasksQueue&&0===s.tasks.executing&&0===this.tasksQueueSize(t)))&&(this.flagWorkerNodeAsNotReady(t),this.destroyWorkerNode(t).catch((e=>{this.emitter?.emit(y.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(y.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.workerMessageListener),this.sendStartupMessageToWorker(e),this.sendStatisticsMessageToWorker(e),!0===this.opts.enableTasksQueue&&(!0===this.opts.tasksQueueOptions?.taskStealing&&this.workerNodes[e].on("idleWorkerNode",this.handleIdleWorkerNodeEvent),!0===this.opts.tasksQueueOptions?.tasksStealingOnBackPressure&&this.workerNodes[e].on("backPressure",this.handleBackPressureEvent))}sendStatisticsMessageToWorker(e){this.sendToWorker(e,{statistics:{runTime:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate,elu:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu.aggregate}})}redistributeQueuedTasks(e){if(!(this.workerNodes.length<=1))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}}updateTaskSequentiallyStolenStatisticsWorkerUsage(e){const t=this.workerNodes[e];null!=t?.usage&&++t.usage.tasks.sequentiallyStolen}updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(e,t){const s=this.workerNodes[e];if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=s.getTaskFunctionWorkerUsage(t)){++s.getTaskFunctionWorkerUsage(t).tasks.sequentiallyStolen}}resetTaskSequentiallyStolenStatisticsWorkerUsage(e){const t=this.workerNodes[e];null!=t?.usage&&(t.usage.tasks.sequentiallyStolen=0)}resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(e,t){const s=this.workerNodes[e];if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=s.getTaskFunctionWorkerUsage(t)){s.getTaskFunctionWorkerUsage(t).tasks.sequentiallyStolen=0}}handleIdleWorkerNodeEvent=(e,t)=>{if(this.workerNodes.length<=1)return;const{workerNodeKey:s}=e;if(null==s)throw new Error("WorkerNode event detail workerNodeKey attribute must be defined");const r=this.workerNodes[s].usage.tasks;if(null!=t&&r.sequentiallyStolen>0&&(r.executing>0||this.tasksQueueSize(s)>0)){for(const e of this.workerNodes[s].info.taskFunctionNames)this.resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(s,e);return void this.resetTaskSequentiallyStolenStatisticsWorkerUsage(s)}const i=this.workerNodeStealTask(s);if(this.shallUpdateTaskFunctionWorkerUsage(s)&&null!=i){const e=this.workerNodes[s].getTaskFunctionWorkerUsage(i.name)?.tasks;0===e.sequentiallyStolen||null!=t&&t.name===i.name&&e.sequentiallyStolen>0?this.updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(s,i.name):this.resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(s,i.name)}(async e=>{await new Promise((t=>{setTimeout(t,e)}))})(((e=0,t=100)=>{const s=Math.pow(2,e)*t;return s+.2*s*z()})(r.sequentiallyStolen)).then((()=>{this.handleIdleWorkerNodeEvent(e,i)})).catch(N)};workerNodeStealTask=e=>{const t=this.workerNodes.slice().sort(((e,t)=>t.usage.tasks.queued-e.usage.tasks.queued)).find(((t,s)=>t.info.ready&&s!==e&&t.usage.tasks.queued>0));if(null!=t){const s=t.popTask();return this.shallExecuteTask(e)?this.executeTask(e,s):this.enqueueTask(e,s),this.updateTaskSequentiallyStolenStatisticsWorkerUsage(e),this.updateTaskStolenStatisticsWorkerUsage(e,s.name),s}};handleBackPressureEvent=e=>{if(this.workerNodes.length<=1)return;const{workerId:t}=e;if(this.opts.tasksQueueOptions?.size<=1)return;const s=this.workerNodes[this.getWorkerNodeKeyByWorkerId(t)],r=this.workerNodes.slice().sort(((e,t)=>e.usage.tasks.queued-t.usage.tasks.queued));for(const[e,i]of r.entries())if(s.usage.tasks.queued>0&&i.info.ready&&i.info.id!==t&&i.usage.tasks.queued<this.opts.tasksQueueOptions?.size-1){const t=s.popTask();this.shallExecuteTask(e)?this.executeTask(e,t):this.enqueueTask(e,t),this.updateTaskStolenStatisticsWorkerUsage(e,t.name)}};workerMessageListener=e=>{this.checkMessageWorkerId(e);const{workerId:t,ready:s,taskId:r,taskFunctionNames:i}=e;null!=s&&null!=i?this.handleWorkerReadyResponse(e):null!=r?this.handleTaskExecutionResponse(e):null!=i&&(this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(t)).taskFunctionNames=i)};handleWorkerReadyResponse(e){const{workerId:t,ready:s,taskFunctionNames:r}=e;if(!1===s)throw new Error(`Worker ${t} failed to initialize`);const i=this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(t));i.ready=s,i.taskFunctionNames=r,!this.readyEventEmitted&&this.ready&&(this.readyEventEmitted=!0,this.emitter?.emit(y.ready,this.info))}handleTaskExecutionResponse(e){const{workerId:t,taskId:s,workerError:r,data:i}=e,o=this.promiseResponseMap.get(s);if(null!=o){const{resolve:n,reject:a,workerNodeKey:u,asyncResource:h}=o;if(null!=r?(this.emitter?.emit(y.taskError,r),null!=h?h.runInAsyncScope(a,this.emitter,r.message):a(r.message)):null!=h?h.runInAsyncScope(n,this.emitter,i):n(i),h?.emitDestroy(),this.afterTaskExecutionHook(u,e),this.workerChoiceStrategyContext.update(u),this.promiseResponseMap.delete(s),!0===this.opts.enableTasksQueue){const e=this.workerNodes[u].usage.tasks;this.tasksQueueSize(u)>0&&e.executing<this.opts.tasksQueueOptions?.concurrency&&this.executeTask(u,this.dequeueTask(u)),0===e.executing&&0===this.tasksQueueSize(u)&&0===e.sequentiallyStolen&&this.workerNodes[u].emit("idleWorkerNode",{workerId:t,workerNodeKey:u})}}}checkAndEmitTaskExecutionEvents(){this.busy&&this.emitter?.emit(y.busy,this.info)}checkAndEmitTaskQueuingEvents(){this.hasBackPressure()&&this.emitter?.emit(y.backPressure,this.info)}checkAndEmitDynamicWorkerCreationEvents(){this.type===p.dynamic&&this.full&&this.emitter?.emit(y.full,this.info)}getWorkerInfo(e){return this.workerNodes[e]?.info}addWorkerNode(e){const t=new te(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))}flagWorkerNodeAsNotReady(e){this.getWorkerInfo(e).ready=!1}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 re extends se{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.flagWorkerNodeAsNotReady(e),this.flushTasksQueue(e);const t=this.workerNodes[e],s=t.worker,r=new Promise((e=>{s.once("exit",(()=>{e()}))}));s.once("disconnect",(()=>{s.kill()})),await this.sendKillMessageToWorker(e),t.removeAllListeners(),s.disconnect(),await r}sendToWorker(e,t){this.workerNodes[e].worker.send({...t,workerId:this.getWorkerInfo(e).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 T.cluster}get busy(){return this.internalBusy()}}class ie extends re{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,U(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}class oe extends se{opts;constructor(e,t,s={}){super(e,t,s),this.opts=s}isMain(){return h}async destroyWorkerNode(e){this.flagWorkerNodeAsNotReady(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(),t.removeAllListeners(),await s.terminate(),await r}sendToWorker(e,t,s){this.workerNodes[e]?.messageChannel?.port1?.postMessage({...t,workerId:this.getWorkerInfo(e).id},s)}sendStartupMessageToWorker(e){const t=this.workerNodes[e],s=t.messageChannel.port2;t.worker.postMessage({ready:!1,workerId:this.getWorkerInfo(e).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 T.thread}get busy(){return this.internalBusy()}}class ne extends oe{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,U(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}const ae=(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")},ue=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")},he=6e4,ke={killBehavior:D.SOFT,maxInactiveTime:he,killHandler:N};class de{isMain;mainWorker;opts;taskFunctions;lastTaskTimestamp;statistics;activeInterval;constructor(e,t,s,r=ke){if(this.isMain=e,this.mainWorker=t,this.opts=r,null==this.isMain)throw new Error("isMain parameter is mandatory");this.checkTaskFunctions(s),this.checkWorkerOptions(this.opts),this.isMain||this.getMainWorker().on("message",this.handleReadyMessage.bind(this))}checkWorkerOptions(e){(e=>{if(null!=e&&!R(e))throw new TypeError("opts worker options parameter is not a plain object");if(null!=e?.killBehavior&&!Object.values(D).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")})(e),this.opts={...ke,...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(f,t),this.taskFunctions.set("string"==typeof e.name&&e.name.trim().length>0?e.name:"fn1",t)}else{if(!R(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)){ae(s,r);const e=r.bind(this);t&&(this.taskFunctions.set(f,e),t=!1),this.taskFunctions.set(s,e)}if(t)throw new Error("taskFunctions parameter object is empty")}}}hasTaskFunction(e){try{ue(e)}catch(e){return{status:!1,error:e}}return{status:this.taskFunctions.has(e)}}addTaskFunction(e,t){try{if(ue(e),e===f)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(f)&&this.taskFunctions.set(f,s),this.taskFunctions.set(e,s),this.sendTaskFunctionNamesToMainWorker(),{status:!0}}catch(e){return{status:!1,error:e}}}removeTaskFunction(e){try{if(ue(e),e===f)throw new Error("Cannot remove the task function with the default reserved name");if(this.taskFunctions.get(e)===this.taskFunctions.get(f))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=f;for(const[e,s]of this.taskFunctions)if(e!==f&&s===this.taskFunctions.get(f)){t=e;break}return[e[e.indexOf(f)],t,...e.filter((e=>e!==f&&e!==t))]}setDefaultTaskFunction(e){try{if(ue(e),e===f)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(f,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"})}));else try{this.opts.killHandler?.(),this.sendToMainWorker({kill:"success"})}catch{this.sendToMainWorker({kill:"failure"})}}checkMessageWorkerId(e){if(null==e.workerId)throw new Error("Message worker id is not set");if(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??he)/2)}stopCheckActive(){null!=this.activeInterval&&(clearInterval(this.activeInterval),delete this.activeInterval)}checkActive(){l.now()-this.lastTaskTimestamp>(this.opts.maxInactiveTime??he)&&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=t??f;if(!this.taskFunctions.has(i))return void this.sendToMainWorker({workerError:{name:t,message:`Task function '${t}' not found`,data:r},taskId:s});const o=this.taskFunctions.get(i);O(o)?this.runAsync(o,e):this.runSync(o,e)};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(N)};beginTaskPerformance(e){return this.checkStatistics(),{name:e??f,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 de{constructor(e,t={}){super(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 le extends de{port;constructor(e,t={}){super(h,d,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 c}sendToMainWorker=e=>{this.port?.postMessage({...e,workerId:this.id})};handleError(e){return e}}export{ce as ClusterWorker,ie as DynamicClusterPool,ne as DynamicThreadPool,re as FixedClusterPool,oe as FixedThreadPool,D as KillBehaviors,P as Measurements,y as PoolEvents,p as PoolTypes,le as ThreadWorker,q as WorkerChoiceStrategies,T as WorkerTypes,x as availableParallelism};
1
+ import{existsSync as e}from"node:fs";import*as t from"node:os";import{cpus as s}from"node:os";import{getRandomValues 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 d,threadId as c}from"node:worker_threads";import{performance as l}from"node:perf_hooks";import{EventEmitter as g,EventEmitterAsyncResource as m}from"node:events";import{AsyncResource as w}from"node:async_hooks";const p=Object.freeze({fixed:"fixed",dynamic:"dynamic"}),y=Object.freeze({ready:"ready",busy:"busy",full:"full",destroy:"destroy",error:"error",taskError:"taskError",backPressure:"backPressure"}),T=Object.freeze({thread:"thread",cluster:"cluster"}),f="default",N=Object.freeze((()=>{})),W={retries:6,runTime:{median:!1},waitTime:{median:!1},elu:{median:!1}},S={aggregate:!1,average:!1,median:!1},x=()=>{let e=1;try{e=t.availableParallelism()}catch{const s=t.cpus();Array.isArray(s)&&s.length>0&&(e=s.length)}return e},v=e=>e instanceof a?T.thread:e instanceof n?T.cluster:void 0,E=e=>e instanceof a?e.threadId:e instanceof n?e.id:void 0,I=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,F=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},R=(e,t=2)=>{const s=Math.pow(10,t);return Math.round(e*s*(1+Number.EPSILON))/s},b=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,z=()=>r(new Uint32Array(1))[0]/4294967296,M=(...e)=>e.reduce(((e,t)=>e<t?e:t),1/0),K=(...e)=>e.reduce(((e,t)=>e>t?e:t),-1/0),q=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"}),U=(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")},A=e=>{if(null!=e&&!Object.values(q).includes(e))throw new Error(`Invalid worker choice strategy '${e}'`)},Q=e=>{if(null!=e&&!b(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`)},B=(e,t,s)=>{t.aggregate&&(e.aggregate=(e.aggregate??0)+s,e.minimum=M(s,e.minimum??1/0),e.maximum=K(s,e.maximum??-1/0),(t.average||t.median)&&null!=s&&(e.history.push(s),t.average?e.average=I(e.history):null!=e.average&&delete e.average,t.median?e.median=F(e.history):null!=e.median&&delete e.median))},D=Object.freeze({SOFT:"SOFT",HARD:"HARD"});class L{pool;opts;nextWorkerNodeKey=0;previousWorkerNodeKey=0;strategyPolicy={dynamicWorkerUsage:!1,dynamicWorkerReady:!0};taskStatisticsRequirements={runTime:S,waitTime:S,elu:S};constructor(e,t=W){this.pool=e,this.opts=t,this.opts={...W,...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={...W,...e},this.setTaskStatisticsRequirements(this.opts)}hasPoolWorkerNodesReady(){return this.pool.workerNodes.some((e=>e.info.ready))}isWorkerNodeReady(e){return this.pool.workerNodes[e]?.info?.ready??!1}checkNextWorkerNodeReadiness(){this.isWorkerNodeReady(this.nextWorkerNodeKey)||delete this.nextWorkerNodeKey}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}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 _ extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:S,elu:{aggregate:!0,average:!0,median:!1}};constructor(e,t=W){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)}),this.isWorkerNodeReady(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 H extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:S,elu:S};roundId=0;defaultWorkerWeight;roundWeights;workerNodeId=0;workerNodeVirtualTaskRunTime=0;constructor(e,t=W){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(this.isWorkerNodeReady(t)&&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 j extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!1,median:!1},waitTime:{aggregate:!0,average:!1,median:!1},elu:S};constructor(e,t=W){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)=>this.isWorkerNodeReady(s)&&(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 V extends L{constructor(e,t=W){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)=>this.isWorkerNodeReady(s)&&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 $ extends L{taskStatisticsRequirements={runTime:S,waitTime:S,elu:{aggregate:!0,average:!1,median:!1}};constructor(e,t=W){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)=>this.isWorkerNodeReady(s)&&(t.usage.elu.active.aggregate??0)<(r[e].usage.elu.active.aggregate??0)?s:e),0)}}class G extends L{constructor(e,t=W){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(),this.checkNextWorkerNodeReadiness(),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 Y extends L{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:S,elu:S};defaultWorkerWeight;workerNodeVirtualTaskRunTime=0;constructor(e,t=W){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(),this.checkNextWorkerNodeReadiness(),this.nextWorkerNodeKey}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 J{workerChoiceStrategy;opts;workerChoiceStrategies;constructor(e,t=q.ROUND_ROBIN,s=W){this.workerChoiceStrategy=t,this.opts=s,this.opts={...W,...s},this.execute=this.execute.bind(this),this.workerChoiceStrategies=new Map([[q.ROUND_ROBIN,new(G.bind(this))(e,s)],[q.LEAST_USED,new(V.bind(this))(e,s)],[q.LEAST_BUSY,new(j.bind(this))(e,s)],[q.LEAST_ELU,new($.bind(this))(e,s)],[q.FAIR_SHARE,new(_.bind(this))(e,s)],[q.WEIGHTED_ROUND_ROBIN,new(Y.bind(this))(e,s)],[q.INTERLEAVED_WEIGHTED_ROUND_ROBIN,new(H.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);let t;const s=1e4;let r=0,i=0,o=0;do{e.hasPoolWorkerNodesReady()&&(t=e.choose(),i>0&&o++,i++),r++}while(r<s&&(!e.hasPoolWorkerNodesReady()||null==t&&o<this.opts.retries));if(r>=s)throw new RangeError("Worker choice strategy consecutive executions has exceeded the maximum of 10000");if(null==t)throw new Error(`Worker node key chosen is null or undefined after ${o} retries`);return t}remove(e){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).remove(e)}setOptions(e){this.opts={...W,...e};for(const t of this.workerChoiceStrategies.values())t.setOptions(e)}}class X 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 X(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 Z{data;next;prev;constructor(e){this.data=e}}class ee{head;tail;size;maxSize;constructor(){this.clear()}push(e){const t=new Z(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 Z(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 te extends g{worker;info;usage;strategyData;messageChannel;tasksQueueBackPressureSize;tasksQueue;onBackPressureStarted;taskFunctionsUsage;constructor(e,t){super(),((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===T.thread&&(this.messageChannel=new u),this.tasksQueueBackPressureSize=t,this.tasksQueue=new ee,this.onBackPressureStarted=!1,this.taskFunctionsUsage=new Map}tasksQueueSize(){return this.tasksQueue.size}enqueueTask(e){const t=this.tasksQueue.push(e);return this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.emit("backPressure",{workerId:this.info.id}),this.onBackPressureStarted=!1),t}unshiftTask(e){const t=this.tasksQueue.unshift(e);return this.hasBackPressure()&&!this.onBackPressureStarted&&(this.onBackPressureStarted=!0,this.emit("backPressure",{workerId:this.info.id}),this.onBackPressureStarted=!1),t}dequeueTask(){return this.tasksQueue.shift()}popTask(){return this.tasksQueue.pop()}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===f&&(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)}initWorkerInfo(e){return{id:E(e),type:v(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()},sequentiallyStolen:0,stolen:0,failed:0},runTime:{history:new X},waitTime:{history:new X},elu:{idle:{history:new X},active:{history:new X}}}}initTaskFunctionWorkerUsage(e){const t=()=>{let t=0;for(const s of this.tasksQueue)(s.name===f&&e===this.info.taskFunctionNames[1]||s.name!==f&&e===s.name)&&++t;return t};return{tasks:{executed:0,executing:0,get queued(){return t()},sequentiallyStolen:0,stolen:0,failed:0},runTime:{history:new X},waitTime:{history:new X},elu:{idle:{history:new X},active:{history:new X}}}}}class se{numberOfWorkers;filePath;opts;workerNodes=[];emitter;max;promiseResponseMap=new Map;workerChoiceStrategyContext;taskFunctions;started;starting;destroying;readyEventEmitted;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(!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 J(this,this.opts.workerChoiceStrategy,this.opts.workerChoiceStrategyOptions),this.setupHook(),this.taskFunctions=new Map,this.started=!1,this.starting=!1,this.destroying=!1,this.readyEventEmitted=!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(!b(e))throw new TypeError("Invalid pool options: must be a plain object");this.opts.startWorkers=e.startWorkers??!0,A(e.workerChoiceStrategy),this.opts.workerChoiceStrategy=e.workerChoiceStrategy??q.ROUND_ROBIN,this.checkValidWorkerChoiceStrategyOptions(e.workerChoiceStrategyOptions),this.opts.workerChoiceStrategyOptions={...W,...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&&!b(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 m({name:`poolifier:${this.type}-${this.worker}-pool`})}get info(){return{version:"3.0.13",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:R(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:R(M(...this.workerNodes.map((e=>e.usage.runTime?.minimum??1/0)))),maximum:R(K(...this.workerNodes.map((e=>e.usage.runTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.average&&{average:R(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.median&&{median:R(F(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))}}},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.aggregate&&{waitTime:{minimum:R(M(...this.workerNodes.map((e=>e.usage.waitTime?.minimum??1/0)))),maximum:R(K(...this.workerNodes.map((e=>e.usage.waitTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.average&&{average:R(I(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.waitTime.history)),[])))},...this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime.median&&{median:R(F(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(-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){A(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={...W,...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.unsetTaskStealing(),this.setTaskStealing()):this.unsetTaskStealing(),!0===this.opts.tasksQueueOptions.tasksStealingOnBackPressure?(this.unsetTasksStealingOnBackPressure(),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].on("idleWorkerNode",this.handleIdleWorkerNodeEvent)}unsetTaskStealing(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].off("idleWorkerNode",this.handleIdleWorkerNodeEvent)}setTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].on("backPressure",this.handleBackPressureEvent)}unsetTasksStealingOnBackPressure(){for(const[e]of this.workerNodes.entries())this.workerNodes[e].off("backPressure",this.handleBackPressureEvent)}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(this.destroying)return void o(new Error("Cannot execute a task on destroying 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??f,data:e??{},transferList:s,timestamp:n,taskId:i()};this.promiseResponseMap.set(u.taskId,{resolve:r,reject:o,workerNodeKey:a,...null!=this.emitter&&{asyncResource:new w("poolifier:task",{triggerAsyncId:this.emitter.asyncId,requireManualDestroy:!0})}}),!1===this.opts.enableTasksQueue||!0===this.opts.enableTasksQueue&&this.shallExecuteTask(a)?this.executeTask(a,u):this.enqueueTask(a,u)}))}start(){if(this.started)throw new Error("Cannot start an already started pool");if(this.starting)throw new Error("Cannot start an already starting pool");if(this.destroying)throw new Error("Cannot start a destroying pool");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(){if(!this.started)throw new Error("Cannot destroy an already destroyed pool");if(this.starting)throw new Error("Cannot destroy an starting pool");if(this.destroying)throw new Error("Cannot destroy an already destroying pool");this.destroying=!0,await Promise.all(this.workerNodes.map((async(e,t)=>{await this.destroyWorkerNode(t)}))),this.emitter?.emit(y.destroy,this.info),this.emitter?.emitDestroy(),this.emitter?.removeAllListeners(),this.readyEventEmitted=!1,this.destroying=!1,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&&B(e.runTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime,t.taskPerformance?.runTime??0)}updateWaitTimeWorkerUsage(e,t){const s=l.now(),r=s-(t.timestamp??s);B(e.waitTime,this.workerChoiceStrategyContext.getTaskStatisticsRequirements().waitTime,r)}updateEluWorkerUsage(e,t){if(null!=t.workerError)return;const s=this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu;B(e.elu.active,s,t.taskPerformance?.elu?.active??0),B(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??N),e.on("message",this.opts.messageHandler??N),e.on("error",this.opts.errorHandler??N),e.on("error",(t=>{const s=this.getWorkerNodeKeyByWorker(e);this.flagWorkerNodeAsNotReady(s);const r=this.getWorkerInfo(s);this.emitter?.emit(y.error,t),this.workerNodes[s].closeChannel(),!this.started||this.starting||this.destroying||!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??N),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(D.HARD,e.kill)||C(D.SOFT,e.kill)&&(!1===this.opts.enableTasksQueue&&0===s.tasks.executing||!0===this.opts.enableTasksQueue&&0===s.tasks.executing&&0===this.tasksQueueSize(t)))&&(this.flagWorkerNodeAsNotReady(t),this.destroyWorkerNode(t).catch((e=>{this.emitter?.emit(y.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(y.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.workerMessageListener),this.sendStartupMessageToWorker(e),this.sendStatisticsMessageToWorker(e),!0===this.opts.enableTasksQueue&&(!0===this.opts.tasksQueueOptions?.taskStealing&&this.workerNodes[e].on("idleWorkerNode",this.handleIdleWorkerNodeEvent),!0===this.opts.tasksQueueOptions?.tasksStealingOnBackPressure&&this.workerNodes[e].on("backPressure",this.handleBackPressureEvent))}sendStatisticsMessageToWorker(e){this.sendToWorker(e,{statistics:{runTime:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().runTime.aggregate,elu:this.workerChoiceStrategyContext.getTaskStatisticsRequirements().elu.aggregate}})}redistributeQueuedTasks(e){if(!(this.workerNodes.length<=1))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}}updateTaskSequentiallyStolenStatisticsWorkerUsage(e){const t=this.workerNodes[e];null!=t?.usage&&++t.usage.tasks.sequentiallyStolen}updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(e,t){const s=this.workerNodes[e];if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=s.getTaskFunctionWorkerUsage(t)){++s.getTaskFunctionWorkerUsage(t).tasks.sequentiallyStolen}}resetTaskSequentiallyStolenStatisticsWorkerUsage(e){const t=this.workerNodes[e];null!=t?.usage&&(t.usage.tasks.sequentiallyStolen=0)}resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(e,t){const s=this.workerNodes[e];if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=s.getTaskFunctionWorkerUsage(t)){s.getTaskFunctionWorkerUsage(t).tasks.sequentiallyStolen=0}}handleIdleWorkerNodeEvent=(e,t)=>{if(this.workerNodes.length<=1)return;const{workerNodeKey:s}=e;if(null==s)throw new Error("WorkerNode event detail workerNodeKey attribute must be defined");const r=this.workerNodes[s].usage.tasks;if(null!=t&&r.sequentiallyStolen>0&&(r.executing>0||this.tasksQueueSize(s)>0)){for(const e of this.workerNodes[s].info.taskFunctionNames)this.resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(s,e);return void this.resetTaskSequentiallyStolenStatisticsWorkerUsage(s)}const i=this.workerNodeStealTask(s);if(this.shallUpdateTaskFunctionWorkerUsage(s)&&null!=i){const e=this.workerNodes[s].getTaskFunctionWorkerUsage(i.name)?.tasks;0===e.sequentiallyStolen||null!=t&&t.name===i.name&&e.sequentiallyStolen>0?this.updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(s,i.name):this.resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(s,i.name)}(async e=>{await new Promise((t=>{setTimeout(t,e)}))})(((e=0,t=100)=>{const s=Math.pow(2,e)*t;return s+.2*s*z()})(r.sequentiallyStolen)).then((()=>{this.handleIdleWorkerNodeEvent(e,i)})).catch(N)};workerNodeStealTask=e=>{const t=this.workerNodes.slice().sort(((e,t)=>t.usage.tasks.queued-e.usage.tasks.queued)).find(((t,s)=>t.info.ready&&s!==e&&t.usage.tasks.queued>0));if(null!=t){const s=t.popTask();return this.shallExecuteTask(e)?this.executeTask(e,s):this.enqueueTask(e,s),this.updateTaskSequentiallyStolenStatisticsWorkerUsage(e),this.updateTaskStolenStatisticsWorkerUsage(e,s.name),s}};handleBackPressureEvent=e=>{if(this.workerNodes.length<=1)return;const{workerId:t}=e;if(this.opts.tasksQueueOptions?.size<=1)return;const s=this.workerNodes[this.getWorkerNodeKeyByWorkerId(t)],r=this.workerNodes.slice().sort(((e,t)=>e.usage.tasks.queued-t.usage.tasks.queued));for(const[e,i]of r.entries())if(s.usage.tasks.queued>0&&i.info.ready&&i.info.id!==t&&i.usage.tasks.queued<this.opts.tasksQueueOptions?.size-1){const t=s.popTask();this.shallExecuteTask(e)?this.executeTask(e,t):this.enqueueTask(e,t),this.updateTaskStolenStatisticsWorkerUsage(e,t.name)}};workerMessageListener=e=>{this.checkMessageWorkerId(e);const{workerId:t,ready:s,taskId:r,taskFunctionNames:i}=e;null!=s&&null!=i?this.handleWorkerReadyResponse(e):null!=r?this.handleTaskExecutionResponse(e):null!=i&&(this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(t)).taskFunctionNames=i)};handleWorkerReadyResponse(e){const{workerId:t,ready:s,taskFunctionNames:r}=e;if(!1===s)throw new Error(`Worker ${t} failed to initialize`);const i=this.getWorkerInfo(this.getWorkerNodeKeyByWorkerId(t));i.ready=s,i.taskFunctionNames=r,!this.readyEventEmitted&&this.ready&&(this.readyEventEmitted=!0,this.emitter?.emit(y.ready,this.info))}handleTaskExecutionResponse(e){const{workerId:t,taskId:s,workerError:r,data:i}=e,o=this.promiseResponseMap.get(s);if(null!=o){const{resolve:n,reject:a,workerNodeKey:u,asyncResource:h}=o;if(null!=r?(this.emitter?.emit(y.taskError,r),null!=h?h.runInAsyncScope(a,this.emitter,r.message):a(r.message)):null!=h?h.runInAsyncScope(n,this.emitter,i):n(i),h?.emitDestroy(),this.afterTaskExecutionHook(u,e),this.workerChoiceStrategyContext.update(u),this.promiseResponseMap.delete(s),!0===this.opts.enableTasksQueue){const e=this.workerNodes[u].usage.tasks;this.tasksQueueSize(u)>0&&e.executing<this.opts.tasksQueueOptions?.concurrency&&this.executeTask(u,this.dequeueTask(u)),0===e.executing&&0===this.tasksQueueSize(u)&&0===e.sequentiallyStolen&&this.workerNodes[u].emit("idleWorkerNode",{workerId:t,workerNodeKey:u})}}}checkAndEmitTaskExecutionEvents(){this.busy&&this.emitter?.emit(y.busy,this.info)}checkAndEmitTaskQueuingEvents(){this.hasBackPressure()&&this.emitter?.emit(y.backPressure,this.info)}checkAndEmitDynamicWorkerCreationEvents(){this.type===p.dynamic&&this.full&&this.emitter?.emit(y.full,this.info)}getWorkerInfo(e){return this.workerNodes[e]?.info}addWorkerNode(e){const t=new te(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))}flagWorkerNodeAsNotReady(e){this.getWorkerInfo(e).ready=!1}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 re extends se{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.flagWorkerNodeAsNotReady(e),this.flushTasksQueue(e);const t=this.workerNodes[e],s=t.worker,r=new Promise((e=>{s.once("exit",(()=>{e()}))}));s.once("disconnect",(()=>{s.kill()})),await this.sendKillMessageToWorker(e),t.removeAllListeners(),s.disconnect(),await r}sendToWorker(e,t){this.workerNodes[e].worker.send({...t,workerId:this.getWorkerInfo(e).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 T.cluster}get busy(){return this.internalBusy()}}class ie extends re{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,U(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}class oe extends se{opts;constructor(e,t,s={}){super(e,t,s),this.opts=s}isMain(){return h}async destroyWorkerNode(e){this.flagWorkerNodeAsNotReady(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(),t.removeAllListeners(),await s.terminate(),await r}sendToWorker(e,t,s){this.workerNodes[e]?.messageChannel?.port1?.postMessage({...t,workerId:this.getWorkerInfo(e).id},s)}sendStartupMessageToWorker(e){const t=this.workerNodes[e],s=t.messageChannel.port2;t.worker.postMessage({ready:!1,workerId:this.getWorkerInfo(e).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 T.thread}get busy(){return this.internalBusy()}}class ne extends oe{max;constructor(e,t,s,r={}){super(e,s,r),this.max=t,U(this.numberOfWorkers,this.max)}get type(){return p.dynamic}get busy(){return this.full&&this.internalBusy()}}const ae=(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")},ue=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")},he=6e4,ke={killBehavior:D.SOFT,maxInactiveTime:he,killHandler:N};class de{isMain;mainWorker;opts;taskFunctions;lastTaskTimestamp;statistics;activeInterval;constructor(e,t,s,r=ke){if(this.isMain=e,this.mainWorker=t,this.opts=r,null==this.isMain)throw new Error("isMain parameter is mandatory");this.checkTaskFunctions(s),this.checkWorkerOptions(this.opts),this.isMain||this.getMainWorker().on("message",this.handleReadyMessage.bind(this))}checkWorkerOptions(e){(e=>{if(null!=e&&!b(e))throw new TypeError("opts worker options parameter is not a plain object");if(null!=e?.killBehavior&&!Object.values(D).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")})(e),this.opts={...ke,...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(f,t),this.taskFunctions.set("string"==typeof e.name&&e.name.trim().length>0?e.name:"fn1",t)}else{if(!b(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)){ae(s,r);const e=r.bind(this);t&&(this.taskFunctions.set(f,e),t=!1),this.taskFunctions.set(s,e)}if(t)throw new Error("taskFunctions parameter object is empty")}}}hasTaskFunction(e){try{ue(e)}catch(e){return{status:!1,error:e}}return{status:this.taskFunctions.has(e)}}addTaskFunction(e,t){try{if(ue(e),e===f)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(f)&&this.taskFunctions.set(f,s),this.taskFunctions.set(e,s),this.sendTaskFunctionNamesToMainWorker(),{status:!0}}catch(e){return{status:!1,error:e}}}removeTaskFunction(e){try{if(ue(e),e===f)throw new Error("Cannot remove the task function with the default reserved name");if(this.taskFunctions.get(e)===this.taskFunctions.get(f))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=f;for(const[e,s]of this.taskFunctions)if(e!==f&&s===this.taskFunctions.get(f)){t=e;break}return[e[e.indexOf(f)],t,...e.filter((e=>e!==f&&e!==t))]}setDefaultTaskFunction(e){try{if(ue(e),e===f)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(f,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"})}));else try{this.opts.killHandler?.(),this.sendToMainWorker({kill:"success"})}catch{this.sendToMainWorker({kill:"failure"})}}checkMessageWorkerId(e){if(null==e.workerId)throw new Error("Message worker id is not set");if(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??he)/2)}stopCheckActive(){null!=this.activeInterval&&(clearInterval(this.activeInterval),delete this.activeInterval)}checkActive(){l.now()-this.lastTaskTimestamp>(this.opts.maxInactiveTime??he)&&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=t??f;if(!this.taskFunctions.has(i))return void this.sendToMainWorker({workerError:{name:t,message:`Task function '${t}' not found`,data:r},taskId:s});const o=this.taskFunctions.get(i);O(o)?this.runAsync(o,e):this.runSync(o,e)};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(N)};beginTaskPerformance(e){return this.checkStatistics(),{name:e??f,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 de{constructor(e,t={}){super(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 le extends de{port;constructor(e,t={}){super(h,d,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 c}sendToMainWorker=e=>{this.port?.postMessage({...e,workerId:this.id})};handleError(e){return e}}export{ce as ClusterWorker,ie as DynamicClusterPool,ne as DynamicThreadPool,re as FixedClusterPool,oe as FixedThreadPool,D as KillBehaviors,P as Measurements,y as PoolEvents,p as PoolTypes,le as ThreadWorker,q as WorkerChoiceStrategies,T as WorkerTypes,x as availableParallelism};
2
2
  //# sourceMappingURL=index.mjs.map