poolifier 3.1.11 → 3.1.12-0
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/README.md +2 -4
- package/lib/index.cjs +2 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +8 -7
- package/lib/index.js +0 -2
- package/lib/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -90,8 +90,7 @@ npm install poolifier --save
|
|
|
90
90
|
You can implement a [worker_threads](https://nodejs.org/api/worker_threads.html#class-worker) worker in a simple way by extending the class _ThreadWorker_:
|
|
91
91
|
|
|
92
92
|
```js
|
|
93
|
-
|
|
94
|
-
const { ThreadWorker } = require('poolifier')
|
|
93
|
+
import { ThreadWorker } from 'poolifier'
|
|
95
94
|
|
|
96
95
|
function yourFunction(data) {
|
|
97
96
|
// this will be executed in the worker thread,
|
|
@@ -107,8 +106,7 @@ module.exports = new ThreadWorker(yourFunction, {
|
|
|
107
106
|
Instantiate your pool based on your needs :
|
|
108
107
|
|
|
109
108
|
```js
|
|
110
|
-
|
|
111
|
-
const { DynamicThreadPool, FixedThreadPool, PoolEvents, availableParallelism } = require('poolifier')
|
|
109
|
+
import { DynamicThreadPool, FixedThreadPool, PoolEvents, availableParallelism } from 'poolifier'
|
|
112
110
|
|
|
113
111
|
// a fixed worker_threads pool
|
|
114
112
|
const pool = new FixedThreadPool(availableParallelism(), './yourWorker.js', {
|
package/lib/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("node:fs"),t=require("node:cluster"),s=require("node:worker_threads"),r=require("node:process"),i=require("node:os"),o=require("node:crypto"),n=require("node:perf_hooks"),a=require("node:events"),u=require("node:async_hooks");function h(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(s){if("default"!==s){var r=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,r.get?r:{enumerable:!0,get:function(){return e[s]}})}})),t.default=e,Object.freeze(t)}var k=h(i);const d=Object.freeze({thread:"thread",cluster:"cluster"}),c="default",l=Object.freeze((()=>{})),m={aggregate:!1,average:!1,median:!1},g=e=>e instanceof s.Worker?d.thread:e instanceof t.Worker?d.cluster:void 0,p=e=>e instanceof s.Worker?e.threadId:e instanceof t.Worker?e.id:void 0,w=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,y=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},f=(e,t=2)=>{const s=Math.pow(10,t);return Math.round(e*s*(1+Number.EPSILON))/s},T=e=>"object"==typeof e&&null!==e&&e?.constructor===Object&&"[object Object]"===Object.prototype.toString.call(e),N=(e,t)=>t===e,W=e=>"function"==typeof e&&"AsyncFunction"===e.constructor.name,S=()=>o.getRandomValues(new Uint32Array(1))[0]/4294967296,x=(...e)=>e.reduce(((e,t)=>e<t?e:t),1/0),v=(...e)=>e.reduce(((e,t)=>e>t?e:t),-1/0),E=(e,t)=>{var s,r;return s=t??{},t=JSON.parse(JSON.stringify(s)),null==t?.weights&&(t.weights=b(e)),{...(r=e+Object.keys(t.weights).length,{retries:r,runTime:{median:!1},waitTime:{median:!1},elu:{median:!1}}),...t}},b=(e,t)=>{t=t??O();const s={};for(let r=0;r<e;r++)s[r]=t;return s},O=()=>{const e=o.randomInt(500,2500);let t=0;for(const s of i.cpus()){null!=s.speed&&0!==s.speed||(s.speed=i.cpus().find((e=>null!=e.speed&&0!==e.speed))?.speed??e);const r=s.speed.toString().length-1;t+=1/(s.speed/Math.pow(10,r))*Math.pow(10,r)}return Math.round(t/i.cpus().length)},I=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"}),F=Object.freeze({runTime:"runTime",waitTime:"waitTime",elu:"elu"}),C=e=>({size:Math.pow(e,2),concurrency:1,taskStealing:!0,tasksStealingOnBackPressure:!0,tasksFinishedTimeout:2e3}),R=t=>{if(null==t)throw new TypeError("The worker file path must be specified");if("string"!=typeof t)throw new TypeError("The worker file path must be a string");if(!e.existsSync(t))throw new Error(`Cannot find the worker file '${t}'`)},z=(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")},M=e=>{if(null!=e&&!Object.values(I).includes(e))throw new Error(`Invalid worker choice strategy '${e}'`)},P=e=>{if(null!=e&&!T(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`)},q=(e,t,s)=>{t.aggregate&&(e.aggregate=(e.aggregate??0)+s,e.minimum=x(s,e.minimum??1/0),e.maximum=v(s,e.maximum??-1/0),(t.average||t.median)&&null!=s&&(e.history.push(s),t.average?e.average=w(e.history):null!=e.average&&delete e.average,t.median?e.median=y(e.history):null!=e.median&&delete e.median))};"test"===r.env.NODE_ENV&&(exports.updateMeasurementStatistics=q);const K=(e,t,s)=>{const r=performance.now(),i=r-(s.timestamp??r);q(t.waitTime,e.getTaskStatisticsRequirements().waitTime,i)},Q=(e,t)=>{const s=e.tasks;null!=s.executing&&s.executing>0&&--s.executing,null==t.workerError?++s.executed:++s.failed},A=(e,t,s)=>{null==s.workerError&&q(t.runTime,e.getTaskStatisticsRequirements().runTime,s.taskPerformance?.runTime??0)},U=(e,t,s)=>{if(null!=s.workerError)return;const r=e.getTaskStatisticsRequirements().elu;q(t.elu.active,r,s.taskPerformance?.elu?.active??0),q(t.elu.idle,r,s.taskPerformance?.elu?.idle??0),r.aggregate&&null!=s.taskPerformance?.elu&&(null!=t.elu.utilization?t.elu.utilization=(t.elu.utilization+s.taskPerformance.elu.utilization)/2:t.elu.utilization=s.taskPerformance.elu.utilization)},B=Object.freeze({fixed:"fixed",dynamic:"dynamic"}),D=Object.freeze({ready:"ready",busy:"busy",full:"full",destroy:"destroy",error:"error",taskError:"taskError",backPressure:"backPressure"}),L=Object.freeze({SOFT:"SOFT",HARD:"HARD"});class H{pool;opts;nextWorkerNodeKey=0;previousWorkerNodeKey=0;strategyPolicy={dynamicWorkerUsage:!1,dynamicWorkerReady:!0};taskStatisticsRequirements={runTime:m,waitTime:m,elu:m};constructor(e,t){this.pool=e,this.opts=t,this.opts=E(this.pool.info.maxSize,this.opts),this.setTaskStatisticsRequirements(this.opts),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=E(this.pool.info.maxSize,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}}class j extends H{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:m,elu:{aggregate:!0,average:!0,median:!1}};constructor(e,t){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===F.elu?this.getWorkerNodeTaskElu(e):this.getWorkerNodeTaskRunTime(e))}getWorkerNodeVirtualTaskStartTimestamp(e){const t=this.pool.workerNodes[e]?.strategyData?.virtualTaskEndTimestamp,s=performance.now();return s<(t??-1/0)?t:s}}class _ extends H{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:m,elu:m};roundId=0;roundWeights;workerNodeId=0;workerNodeVirtualTaskRunTime=0;constructor(e,t){super(e,t),this.setTaskStatisticsRequirements(this.opts),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];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[...new Set(Object.values(this.opts.weights).slice().sort(((e,t)=>e-t)))]}}class V extends H{taskStatisticsRequirements={runTime:{aggregate:!0,average:!1,median:!1},waitTime:{aggregate:!0,average:!1,median:!1},elu:m};constructor(e,t){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 $ extends H{constructor(e,t){super(e,t)}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 G extends H{taskStatisticsRequirements={runTime:m,waitTime:m,elu:{aggregate:!0,average:!1,median:!1}};constructor(e,t){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 Y extends H{constructor(e,t){super(e,t)}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 J extends H{taskStatisticsRequirements={runTime:{aggregate:!0,average:!0,median:!1},waitTime:m,elu:m};workerNodeVirtualTaskRunTime=0;constructor(e,t){super(e,t),this.setTaskStatisticsRequirements(this.opts)}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];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 X{workerChoiceStrategy;opts;workerChoiceStrategies;constructor(e,t=I.ROUND_ROBIN,s){this.workerChoiceStrategy=t,this.opts=s,this.opts=E(e.info.maxSize,this.opts),this.execute=this.execute.bind(this),this.workerChoiceStrategies=new Map([[I.ROUND_ROBIN,new(Y.bind(this))(e,this.opts)],[I.LEAST_USED,new($.bind(this))(e,this.opts)],[I.LEAST_BUSY,new(V.bind(this))(e,this.opts)],[I.LEAST_ELU,new(G.bind(this))(e,this.opts)],[I.FAIR_SHARE,new(j.bind(this))(e,this.opts)],[I.WEIGHTED_ROUND_ROBIN,new(J.bind(this))(e,this.opts)],[I.INTERLEAVED_WEIGHTED_ROUND_ROBIN,new(_.bind(this))(e,this.opts)]])}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);return e.hasPoolWorkerNodesReady()?this.executeStrategy(e):this.execute()}executeStrategy(e){let t,s=0,r=0;do{t=e.choose(),null==t&&s>0&&r++,s++}while(null==t&&r<this.opts?.retries);if(null==t)throw new Error(`Worker node key chosen is null or undefined after ${r} retries`);return t}remove(e){return this.workerChoiceStrategies.get(this.workerChoiceStrategy).remove(e)}setOptions(e,t){this.opts=E(e.info.maxSize,t);for(const e of this.workerChoiceStrategies.values())e.setOptions(this.opts)}}class Z 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 Z(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 ee{data;next;prev;constructor(e){this.data=e}}class te{head;tail;size;maxSize;constructor(){this.clear()}push(e){const t=new ee(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 ee(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 se extends a.EventEmitter{worker;info;usage;strategyData;messageChannel;tasksQueueBackPressureSize;tasksQueue;onBackPressureStarted;taskFunctionsUsage;constructor(e,r,i){super(),((e,t,s)=>{if(null==e)throw new TypeError("Cannot construct a worker node without a worker type");if(!Object.values(d).includes(e))throw new TypeError(`Cannot construct a worker node with an invalid worker type '${e}'`);if(R(t),null==s)throw new TypeError("Cannot construct a worker node without worker node options");if(!T(s))throw new TypeError("Cannot construct a worker node with invalid options: must be a plain object");if(null==s.tasksQueueBackPressureSize)throw new TypeError("Cannot construct a worker node without a tasks queue back pressure size option");if(!Number.isSafeInteger(s.tasksQueueBackPressureSize))throw new TypeError("Cannot construct a worker node with a tasks queue back pressure size option that is not an integer");if(s.tasksQueueBackPressureSize<=0)throw new RangeError("Cannot construct a worker node with a tasks queue back pressure size option that is not a positive integer")})(e,r,i),this.worker=((e,r,i)=>{switch(e){case d.thread:return new s.Worker(r,{env:s.SHARE_ENV,...i?.workerOptions});case d.cluster:return t.fork(i?.env);default:throw new Error(`Unknown worker type '${e}'`)}})(e,r,{env:i.env,workerOptions:i.workerOptions}),this.info=this.initWorkerInfo(this.worker),this.usage=this.initWorkerUsage(),this.info.type===d.thread&&(this.messageChannel=new s.MessageChannel),this.tasksQueueBackPressureSize=i.tasksQueueBackPressureSize,this.tasksQueue=new te,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()}async terminate(){const e=new Promise((e=>{this.registerOnceWorkerEventHandler("exit",(()=>{e()}))}));switch(this.closeMessageChannel(),this.removeAllListeners(),this.info.type){case d.thread:await(this.worker.terminate?.());break;case d.cluster:this.registerOnceWorkerEventHandler("disconnect",(()=>{this.worker.kill?.()})),this.worker.disconnect?.()}await e}registerWorkerEventHandler(e,t){this.worker.on(e,t)}registerOnceWorkerEventHandler(e,t){this.worker.once(e,t)}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===c&&(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)}closeMessageChannel(){null!=this.messageChannel&&(this.messageChannel.port1.unref(),this.messageChannel.port2.unref(),this.messageChannel.port1.close(),this.messageChannel.port2.close(),delete this.messageChannel)}initWorkerInfo(e){return{id:p(e),type:g(e),dynamic:!1,ready:!1,stealing:!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 Z},waitTime:{history:new Z},elu:{idle:{history:new Z},active:{history:new Z}}}}initTaskFunctionWorkerUsage(e){const t=()=>{let t=0;for(const s of this.tasksQueue)(s.name===c&&e===this.info.taskFunctionNames[1]||s.name!==c&&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 Z},waitTime:{history:new Z},elu:{idle:{history:new Z},active:{history:new Z}}}}}class re{minimumNumberOfWorkers;filePath;opts;maximumNumberOfWorkers;workerNodes=[];emitter;promiseResponseMap=new Map;workerChoiceStrategyContext;taskFunctions;started;starting;destroying;readyEventEmitted;startTimestamp;constructor(e,t,s,r){if(this.minimumNumberOfWorkers=e,this.filePath=t,this.opts=s,this.maximumNumberOfWorkers=r,!this.isMain())throw new Error("Cannot start a pool from a worker with the same type as the pool");this.checkPoolType(),R(this.filePath),this.checkMinimumNumberOfWorkers(this.minimumNumberOfWorkers),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 X(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=n.performance.now()}checkPoolType(){if(this.type===B.fixed&&null!=this.maximumNumberOfWorkers)throw new Error("Cannot instantiate a fixed pool with a maximum number of workers specified at initialization")}checkMinimumNumberOfWorkers(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===B.fixed&&0===e)throw new RangeError("Cannot instantiate a fixed pool with zero worker")}checkPoolOptions(e){if(!T(e))throw new TypeError("Invalid pool options: must be a plain object");this.opts.startWorkers=e.startWorkers??!0,M(e.workerChoiceStrategy),this.opts.workerChoiceStrategy=e.workerChoiceStrategy??I.ROUND_ROBIN,this.checkValidWorkerChoiceStrategyOptions(e.workerChoiceStrategyOptions),null!=e.workerChoiceStrategyOptions&&(this.opts.workerChoiceStrategyOptions=e.workerChoiceStrategyOptions),this.opts.restartWorkerOnError=e.restartWorkerOnError??!0,this.opts.enableEvents=e.enableEvents??!0,this.opts.enableTasksQueue=e.enableTasksQueue??!1,this.opts.enableTasksQueue&&(P(e.tasksQueueOptions),this.opts.tasksQueueOptions=this.buildTasksQueueOptions(e.tasksQueueOptions))}checkValidWorkerChoiceStrategyOptions(e){if(null!=e&&!T(e))throw new TypeError("Invalid worker choice strategy options: must be a plain object");if(null!=e?.weights&&Object.keys(e.weights).length!==(this.maximumNumberOfWorkers??this.minimumNumberOfWorkers))throw new Error("Invalid worker choice strategy options: must have a weight for each worker node");if(null!=e?.measurement&&!Object.values(F).includes(e.measurement))throw new Error(`Invalid worker choice strategy options: invalid measurement '${e.measurement}'`)}initializeEventEmitter(){this.emitter=new a.EventEmitterAsyncResource({name:`poolifier:${this.type}-${this.worker}-pool`})}get info(){return{version:"3.1.12-0",type:this.type,worker:this.worker,started:this.started,ready:this.ready,strategy:this.opts.workerChoiceStrategy,minSize:this.minimumNumberOfWorkers,maxSize:this.maximumNumberOfWorkers??this.minimumNumberOfWorkers,...this.workerChoiceStrategyContext?.getTaskStatisticsRequirements().runTime.aggregate&&this.workerChoiceStrategyContext?.getTaskStatisticsRequirements().waitTime.aggregate&&{utilization:f(this.utilization)},workerNodes:this.workerNodes.length,idleWorkerNodes:this.workerNodes.reduce(((e,t)=>0===t.usage.tasks.executing?e+1:e),0),...!0===this.opts.enableTasksQueue&&{stealingWorkerNodes:this.workerNodes.reduce(((e,t)=>t.info.stealing?e+1:e),0)},busyWorkerNodes:this.workerNodes.reduce(((e,t,s)=>this.isWorkerNodeBusy(s)?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:f(x(...this.workerNodes.map((e=>e.usage.runTime?.minimum??1/0)))),maximum:f(v(...this.workerNodes.map((e=>e.usage.runTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext?.getTaskStatisticsRequirements().runTime.average&&{average:f(w(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))},...this.workerChoiceStrategyContext?.getTaskStatisticsRequirements().runTime.median&&{median:f(y(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.runTime.history)),[])))}}},...this.workerChoiceStrategyContext?.getTaskStatisticsRequirements().waitTime.aggregate&&{waitTime:{minimum:f(x(...this.workerNodes.map((e=>e.usage.waitTime?.minimum??1/0)))),maximum:f(v(...this.workerNodes.map((e=>e.usage.waitTime?.maximum??-1/0)))),...this.workerChoiceStrategyContext?.getTaskStatisticsRequirements().waitTime.average&&{average:f(w(this.workerNodes.reduce(((e,t)=>e.concat(t.usage.waitTime.history)),[])))},...this.workerChoiceStrategyContext?.getTaskStatisticsRequirements().waitTime.median&&{median:f(y(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.minimumNumberOfWorkers}get utilization(){const e=(n.performance.now()-this.startTimestamp)*(this.maximumNumberOfWorkers??this.minimumNumberOfWorkers);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}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}'`)}getWorkerNodeKeyByWorkerId(e){return this.workerNodes.findIndex((t=>t.info.id===e))}setWorkerChoiceStrategy(e,t){M(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),null!=e&&(this.opts.workerChoiceStrategyOptions=e),this.workerChoiceStrategyContext.setOptions(this,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?(P(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{...C(this.maximumNumberOfWorkers??this.minimumNumberOfWorkers),...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.maximumNumberOfWorkers??this.minimumNumberOfWorkers)}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))}isWorkerNodeBusy(e){return!0===this.opts.enableTasksQueue?this.workerNodes[e].usage.tasks.executing>=this.opts.tasksQueueOptions?.concurrency:this.workerNodes[e].usage.tasks.executing>0}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,i)=>{if(!this.started)return void i(new Error("Cannot execute a task on not started pool"));if(this.destroying)return void i(new Error("Cannot execute a task on destroying pool"));if(null!=t&&"string"!=typeof t)return void i(new TypeError("name argument must be a string"));if(null!=t&&"string"==typeof t&&0===t.trim().length)return void i(new TypeError("name argument must not be an empty string"));if(null!=s&&!Array.isArray(s))return void i(new TypeError("transferList argument must be an array"));const a=n.performance.now(),h=this.chooseWorkerNode(),k={name:t??c,data:e??{},transferList:s,timestamp:a,taskId:o.randomUUID()};this.promiseResponseMap.set(k.taskId,{resolve:r,reject:i,workerNodeKey:h,...null!=this.emitter&&{asyncResource:new u.AsyncResource("poolifier:task",{triggerAsyncId:this.emitter.asyncId,requireManualDestroy:!0})}}),!1===this.opts.enableTasksQueue||!0===this.opts.enableTasksQueue&&this.shallExecuteTask(h)?this.executeTask(h,k):this.enqueueTask(h,k)}))}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.minimumNumberOfWorkers;)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(D.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)=>{if(null==this.workerNodes?.[e])return void t();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})}))}async destroyWorkerNode(e){this.flagWorkerNodeAsNotReady(e);const t=this.flushTasksQueue(e),s=this.workerNodes[e];await(async(e,t,s,r)=>await new Promise((i=>{let o=0;0!==s?(e.on(t,(()=>{++o,o===s&&i(o)})),r>=0&&setTimeout((()=>{i(o)}),r)):i(o)})))(s,"taskFinished",t,this.opts.tasksQueueOptions?.tasksFinishedTimeout??C(this.maximumNumberOfWorkers??this.minimumNumberOfWorkers).tasksFinishedTimeout),await this.sendKillMessageToWorker(e),await s.terminate()}setupHook(){}beforeTaskExecutionHook(e,t){if(null!=this.workerNodes[e]?.usage){const s=this.workerNodes[e].usage;++s.tasks.executing,K(this.workerChoiceStrategyContext,s,t)}if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=this.workerNodes[e].getTaskFunctionWorkerUsage(t.name)){const s=this.workerNodes[e].getTaskFunctionWorkerUsage(t.name);++s.tasks.executing,K(this.workerChoiceStrategyContext,s,t)}}afterTaskExecutionHook(e,t){let s=!1;if(null!=this.workerNodes[e]?.usage){const r=this.workerNodes[e].usage;Q(r,t),A(this.workerChoiceStrategyContext,r,t),U(this.workerChoiceStrategyContext,r,t),s=!0}if(this.shallUpdateTaskFunctionWorkerUsage(e)&&null!=this.workerNodes[e].getTaskFunctionWorkerUsage(t.taskPerformance?.name)){const r=this.workerNodes[e].getTaskFunctionWorkerUsage(t.taskPerformance?.name);Q(r,t),A(this.workerChoiceStrategyContext,r,t),U(this.workerChoiceStrategyContext,r,t),s=!0}s&&this.workerChoiceStrategyContext.update(e)}shallUpdateTaskFunctionWorkerUsage(e){const t=this.getWorkerInfo(e);return null!=t&&Array.isArray(t.taskFunctionNames)&&t.taskFunctionNames.length>2}chooseWorkerNode(){if(this.shallCreateDynamicWorker()){const e=this.createAndSetupDynamicWorkerNode();if(this.workerChoiceStrategyContext.getStrategyPolicy().dynamicWorkerUsage)return e}return this.workerChoiceStrategyContext.execute()}createAndSetupWorkerNode(){const e=this.createWorkerNode();e.registerWorkerEventHandler("online",this.opts.onlineHandler??l),e.registerWorkerEventHandler("message",this.opts.messageHandler??l),e.registerWorkerEventHandler("error",this.opts.errorHandler??l),e.registerWorkerEventHandler("error",(t=>{e.info.ready=!1,this.emitter?.emit(D.error,t),this.started&&!this.destroying&&!0===this.opts.restartWorkerOnError&&(e.info.dynamic?this.createAndSetupDynamicWorkerNode():this.createAndSetupWorkerNode()),this.started&&!this.destroying&&!0===this.opts.enableTasksQueue&&this.redistributeQueuedTasks(this.workerNodes.indexOf(e)),e?.terminate().catch((e=>{this.emitter?.emit(D.error,e)}))})),e.registerWorkerEventHandler("exit",this.opts.exitHandler??l),e.registerOnceWorkerEventHandler("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;(N(L.HARD,e.kill)||N(L.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(D.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(D.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}})}cannotStealTask(){return this.workerNodes.length<=1||0===this.info.queuedTasks}handleTask(e,t){this.shallExecuteTask(e)?this.executeTask(e,t):this.enqueueTask(e,t)}redistributeQueuedTasks(e){if(-1!==e&&!this.cannotStealTask())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);this.handleTask(t,this.dequeueTask(e))}}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)=>{const{workerNodeKey:s}=e;if(null==s)throw new Error("WorkerNode event detail workerNodeKey property must be defined");if(this.cannotStealTask()||this.info.stealingWorkerNodes>Math.floor(this.workerNodes.length/2))return void(null!=t&&(this.getWorkerInfo(s).stealing=!1));const r=this.workerNodes[s].usage.tasks;if(null!=t&&r.sequentiallyStolen>0&&(r.executing>0||this.tasksQueueSize(s)>0)){this.getWorkerInfo(s).stealing=!1;for(const e of this.workerNodes[s].info.taskFunctionNames)this.resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage(s,e);return void this.resetTaskSequentiallyStolenStatisticsWorkerUsage(s)}this.getWorkerInfo(s).stealing=!0;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*S()})(r.sequentiallyStolen)).then((()=>{this.handleIdleWorkerNodeEvent(e,i)})).catch(l)};workerNodeStealTask=e=>{const t=this.workerNodes.slice().sort(((e,t)=>t.usage.tasks.queued-e.usage.tasks.queued)).find(((t,s)=>t.info.ready&&!t.info.stealing&&s!==e&&t.usage.tasks.queued>0));if(null!=t){const s=t.popTask();return this.handleTask(e,s),this.updateTaskSequentiallyStolenStatisticsWorkerUsage(e),this.updateTaskStolenStatisticsWorkerUsage(e,s.name),s}};handleBackPressureEvent=e=>{if(this.cannotStealTask()||this.info.stealingWorkerNodes>Math.floor(this.workerNodes.length/2))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.stealing&&i.info.id!==t&&i.usage.tasks.queued<this.opts.tasksQueueOptions?.size-1){this.getWorkerInfo(e).stealing=!0;const t=s.popTask();this.handleTask(e,t),this.updateTaskStolenStatisticsWorkerUsage(e,t.name),this.getWorkerInfo(e).stealing=!1}};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(D.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,k=this.workerNodes[u];if(null!=r?(this.emitter?.emit(D.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.promiseResponseMap.delete(s),k?.emit("taskFinished",s),!0===this.opts.enableTasksQueue&&!this.destroying){const e=k.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&&k.emit("idleWorkerNode",{workerId:t,workerNodeKey:u})}}}checkAndEmitTaskExecutionEvents(){this.busy&&this.emitter?.emit(D.busy,this.info)}checkAndEmitTaskQueuingEvents(){this.hasBackPressure()&&this.emitter?.emit(D.backPressure,this.info)}getWorkerInfo(e){return this.workerNodes[e]?.info}createWorkerNode(){const e=new se(this.worker,this.filePath,{env:this.opts.env,workerOptions:this.opts.workerOptions,tasksQueueBackPressureSize:this.opts.tasksQueueOptions?.size??C(this.maximumNumberOfWorkers??this.minimumNumberOfWorkers).size});return this.starting&&(e.info.ready=!0),e}addWorkerNode(e){this.workerNodes.push(e);const t=this.workerNodes.indexOf(e);if(-1===t)throw new Error("Worker added not found in worker nodes");return t}removeWorkerNode(e){const t=this.workerNodes.indexOf(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){let t=0;for(;this.tasksQueueSize(e)>0;)this.executeTask(e,this.dequeueTask(e)),++t;return this.workerNodes[e].clearTasksQueue(),t}flushTasksQueues(){for(const[e]of this.workerNodes.entries())this.flushTasksQueue(e)}}class ie extends re{constructor(e,t,s={},r){super(e,t,s,r)}setupHook(){t.setupPrimary({...this.opts.settings,exec:this.filePath})}isMain(){return t.isPrimary}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)}shallCreateDynamicWorker(){return!1}checkAndEmitDynamicWorkerCreationEvents(){}get type(){return B.fixed}get worker(){return d.cluster}get busy(){return this.internalBusy()}}class oe extends re{constructor(e,t,s={},r){super(e,t,s,r)}isMain(){return s.isMainThread}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)}shallCreateDynamicWorker(){return!1}checkAndEmitDynamicWorkerCreationEvents(){}get type(){return B.fixed}get worker(){return d.thread}get busy(){return this.internalBusy()}}const ne=(e,t)=>{if("string"!=typeof e)throw new TypeError("A taskFunctions parameter object key is not a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("A taskFunctions parameter object key is an empty string");if("function"!=typeof t)throw new TypeError("A taskFunctions parameter object value is not a function")},ae=e=>{if("string"!=typeof e)throw new TypeError("name parameter is not a string");if("string"==typeof e&&0===e.trim().length)throw new TypeError("name parameter is an empty string")},ue=6e4,he={killBehavior:L.SOFT,maxInactiveTime:ue,killHandler:l};class ke{isMain;mainWorker;opts;taskFunctions;lastTaskTimestamp;statistics;activeInterval;constructor(e,t,s,r=he){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&&!T(e))throw new TypeError("opts worker options parameter is not a plain object");if(null!=e?.killBehavior&&!Object.values(L).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={...he,...e}}checkTaskFunctions(e){if(null==e)throw new Error("taskFunctions parameter is mandatory");if(this.taskFunctions=new Map,"function"==typeof e){const t=e.bind(this);this.taskFunctions.set(c,t),this.taskFunctions.set("string"==typeof e.name&&e.name.trim().length>0?e.name:"fn1",t)}else{if(!T(e))throw new TypeError("taskFunctions parameter is not a function or a plain object");{let t=!0;for(const[s,r]of Object.entries(e)){ne(s,r);const e=r.bind(this);t&&(this.taskFunctions.set(c,e),t=!1),this.taskFunctions.set(s,e)}if(t)throw new Error("taskFunctions parameter object is empty")}}}hasTaskFunction(e){try{ae(e)}catch(e){return{status:!1,error:e}}return{status:this.taskFunctions.has(e)}}addTaskFunction(e,t){try{if(ae(e),e===c)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(c)&&this.taskFunctions.set(c,s),this.taskFunctions.set(e,s),this.sendTaskFunctionNamesToMainWorker(),{status:!0}}catch(e){return{status:!1,error:e}}}removeTaskFunction(e){try{if(ae(e),e===c)throw new Error("Cannot remove the task function with the default reserved name");if(this.taskFunctions.get(e)===this.taskFunctions.get(c))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=c;for(const[e,s]of this.taskFunctions)if(e!==c&&s===this.taskFunctions.get(c)){t=e;break}return[e[e.indexOf(c)],t,...e.filter((e=>e!==c&&e!==t))]}setDefaultTaskFunction(e){try{if(ae(e),e===c)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(c,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(),W(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=n.performance.now(),this.activeInterval=setInterval(this.checkActive.bind(this),(this.opts.maxInactiveTime??ue)/2)}stopCheckActive(){null!=this.activeInterval&&(clearInterval(this.activeInterval),delete this.activeInterval)}checkActive(){n.performance.now()-this.lastTaskTimestamp>(this.opts.maxInactiveTime??ue)&&this.sendToMainWorker({kill:this.opts.killBehavior})}getMainWorker(){if(null==this.mainWorker)throw new Error("Main worker not set");return this.mainWorker}sendTaskFunctionNamesToMainWorker(){this.sendToMainWorker({taskFunctionNames:this.listTaskFunctionNames()})}handleError(e){return e instanceof Error?e.message:e}run=e=>{const{name:t,taskId:s,data:r}=e,i=t??c;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);W(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(l)};beginTaskPerformance(e){return this.checkStatistics(),{name:e??c,timestamp:n.performance.now(),...this.statistics.elu&&{elu:n.performance.eventLoopUtilization()}}}endTaskPerformance(e){return this.checkStatistics(),{...e,...this.statistics.runTime&&{runTime:n.performance.now()-e.timestamp},...this.statistics.elu&&{elu:n.performance.eventLoopUtilization(e.elu)}}}checkStatistics(){if(null==this.statistics)throw new Error("Performance statistics computation requirements not set")}updateLastTaskTimestamp(){null!=this.activeInterval&&(this.lastTaskTimestamp=n.performance.now())}}exports.ClusterWorker=class extends ke{constructor(e,s={}){super(t.isPrimary,t.worker,e,s)}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})}},exports.DynamicClusterPool=class extends ie{constructor(e,t,s,r={}){super(e,s,r,t),z(this.minimumNumberOfWorkers,this.maximumNumberOfWorkers)}shallCreateDynamicWorker(){return!this.full&&this.internalBusy()}checkAndEmitDynamicWorkerCreationEvents(){this.full&&this.emitter?.emit(D.full,this.info)}get type(){return B.dynamic}get busy(){return this.full&&this.internalBusy()}},exports.DynamicThreadPool=class extends oe{constructor(e,t,s,r={}){super(e,s,r,t),z(this.minimumNumberOfWorkers,this.maximumNumberOfWorkers)}shallCreateDynamicWorker(){return!this.full&&this.internalBusy()}checkAndEmitDynamicWorkerCreationEvents(){this.full&&this.emitter?.emit(D.full,this.info)}get type(){return B.dynamic}get busy(){return this.full&&this.internalBusy()}},exports.FixedClusterPool=ie,exports.FixedThreadPool=oe,exports.KillBehaviors=L,exports.Measurements=F,exports.PoolEvents=D,exports.PoolTypes=B,exports.ThreadWorker=class extends ke{port;constructor(e,t={}){super(s.isMainThread,s.parentPort,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 s.threadId}sendToMainWorker=e=>{this.port?.postMessage({...e,workerId:this.id})};handleError(e){return e}},exports.WorkerChoiceStrategies=I,exports.WorkerTypes=d,exports.availableParallelism=()=>{let e=1;try{e=k.availableParallelism()}catch{const t=k.cpus();Array.isArray(t)&&t.length>0&&(e=t.length)}return e};
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/pools/worker.ts","../src/utils.ts","../src/pools/selection-strategies/selection-strategies-types.ts","../src/pools/utils.ts","../src/pools/pool.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":["WorkerTypes","Object","freeze","thread","cluster","DEFAULT_TASK_NAME","EMPTY_FUNCTION","DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS","aggregate","average","median","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","buildInternalWorkerChoiceStrategyOptions","poolMaxSize","opts","object","retries","JSON","parse","stringify","weights","getDefaultWeights","keys","runTime","waitTime","elu","defaultWorkerWeight","getDefaultWorkerWeight","workerNodeKey","cpuSpeed","randomInt","cpusCycleTimeWeight","cpu","cpus","speed","find","numberOfDigits","WorkerChoiceStrategies","ROUND_ROBIN","LEAST_USED","LEAST_BUSY","LEAST_ELU","FAIR_SHARE","WEIGHTED_ROUND_ROBIN","INTERLEAVED_WEIGHTED_ROUND_ROBIN","Measurements","getDefaultTasksQueueOptions","size","concurrency","taskStealing","tasksStealingOnBackPressure","tasksFinishedTimeout","checkFilePath","filePath","TypeError","existsSync","Error","checkDynamicPoolSize","isSafeInteger","RangeError","checkValidWorkerChoiceStrategy","workerChoiceStrategy","values","includes","checkValidTasksQueueOptions","tasksQueueOptions","updateMeasurementStatistics","measurementStatistics","measurementRequirements","measurementValue","history","push","env","NODE_ENV","exports","updateWaitTimeWorkerUsage","workerChoiceStrategyContext","workerUsage","task","timestamp","performance","now","taskWaitTime","getTaskStatisticsRequirements","updateTaskStatisticsWorkerUsage","message","workerTaskStatistics","tasks","executing","workerError","executed","failed","updateRunTimeWorkerUsage","taskPerformance","updateEluWorkerUsage","eluTaskStatisticsRequirements","active","idle","utilization","PoolTypes","fixed","dynamic","PoolEvents","ready","busy","full","destroy","error","taskError","backPressure","KillBehaviors","SOFT","HARD","AbstractWorkerChoiceStrategy","pool","nextWorkerNodeKey","previousWorkerNodeKey","strategyPolicy","dynamicWorkerUsage","dynamicWorkerReady","taskStatisticsRequirements","this","info","maxSize","setTaskStatisticsRequirements","choose","bind","toggleMedianMeasurementStatisticsRequirements","measurementStatisticsRequirements","toggleMedian","resetWorkerNodeKeyProperties","setOptions","hasPoolWorkerNodesReady","workerNodes","some","workerNode","isWorkerNodeReady","checkNextWorkerNodeReadiness","getWorkerNodeTaskRunTime","usage","getWorkerNodeTaskWaitTime","getWorkerNodeTaskElu","setPreviousWorkerNodeKey","FairShareWorkerChoiceStrategy","super","reset","strategyData","virtualTaskEndTimestamp","update","computeWorkerNodeVirtualTaskEndTimestamp","fairShareNextWorkerNodeKey","remove","minWorkerNodeKey","getWorkerNodeVirtualTaskEndTimestamp","getWorkerNodeVirtualTaskStartTimestamp","workerNodeVirtualTaskStartTimestamp","measurement","InterleavedWeightedRoundRobinWorkerChoiceStrategy","roundId","roundWeights","workerNodeId","workerNodeVirtualTaskRunTime","getRoundWeights","roundIndex","workerWeight","interleavedWeightedRoundRobinNextWorkerNodeId","Set","LeastBusyWorkerChoiceStrategy","leastBusyNextWorkerNodeKey","LeastUsedWorkerChoiceStrategy","leastUsedNextWorkerNodeKey","queued","LeastEluWorkerChoiceStrategy","leastEluNextWorkerNodeKey","RoundRobinWorkerChoiceStrategy","chosenWorkerNodeKey","roundRobinNextWorkerNodeKey","WeightedRoundRobinWorkerChoiceStrategy","weightedRoundRobinNextWorkerNodeKey","WorkerChoiceStrategyContext","workerChoiceStrategies","execute","Map","getStrategyPolicy","get","setWorkerChoiceStrategy","executeStrategy","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","clear","node","incrementSize","shift","peekFirst","peekLast","Symbol","iterator","undefined","done","ret","backward","WorkerNode","EventEmitter","messageChannel","tasksQueueBackPressureSize","tasksQueue","onBackPressureStarted","taskFunctionsUsage","type","checkWorkerNodeArguments","Worker","SHARE_ENV","workerOptions","fork","createWorker","initWorkerInfo","initWorkerUsage","MessageChannel","tasksQueueSize","enqueueTask","hasBackPressure","emit","workerId","unshiftTask","dequeueTask","popTask","clearTasksQueue","resetUsage","terminate","waitWorkerExit","Promise","resolve","registerOnceWorkerEventHandler","closeMessageChannel","removeAllListeners","kill","disconnect","registerWorkerEventHandler","event","handler","on","once","getTaskFunctionWorkerUsage","taskFunctionNames","has","set","initTaskFunctionWorkerUsage","deleteTaskFunctionWorkerUsage","delete","port1","unref","port2","close","stealing","getTasksQueueSize","getTasksQueueMaxSize","maxQueued","sequentiallyStolen","stolen","getTaskFunctionQueueSize","taskFunctionQueueSize","AbstractPool","minimumNumberOfWorkers","maximumNumberOfWorkers","emitter","promiseResponseMap","taskFunctions","started","starting","destroying","readyEventEmitted","startTimestamp","isMain","checkPoolType","checkMinimumNumberOfWorkers","checkPoolOptions","chooseWorkerNode","executeTask","enableEvents","initializeEventEmitter","workerChoiceStrategyOptions","setupHook","startWorkers","checkValidWorkerChoiceStrategyOptions","restartWorkerOnError","enableTasksQueue","buildTasksQueueOptions","EventEmitterAsyncResource","version","strategy","minSize","idleWorkerNodes","stealingWorkerNodes","busyWorkerNodes","_workerNode","isWorkerNodeBusy","executedTasks","executingTasks","queuedTasks","maxQueuedTasks","stolenTasks","failedTasks","map","poolTimeCapacity","checkMessageWorkerId","getWorkerNodeKeyByWorkerId","findIndex","setWorkerChoiceStrategyOptions","entries","sendStatisticsMessageToWorker","enable","unsetTaskStealing","unsetTasksStealingOnBackPressure","flushTasksQueues","setTasksQueueOptions","setTasksQueueSize","setTaskStealing","setTasksStealingOnBackPressure","handleIdleWorkerNodeEvent","off","handleBackPressureEvent","internalBusy","sendTaskFunctionOperationToWorker","reject","taskFunctionOperationListener","getWorkerInfo","taskFunctionOperationStatus","taskFunctionOperation","deregisterWorkerMessageListener","registerWorkerMessageListener","sendToWorker","sendTaskFunctionOperationToWorkers","responsesReceived","taskFunctionOperationsListener","every","errorResponse","response","hasTaskFunction","addTaskFunction","trim","opResult","taskFunctionName","taskFunction","removeTaskFunction","deleteTaskFunctionWorkerUsages","listTaskFunctionNames","setDefaultTaskFunction","shallExecuteTask","transferList","taskId","randomUUID","asyncResource","AsyncResource","triggerAsyncId","asyncId","requireManualDestroy","createAndSetupWorkerNode","all","async","destroyWorkerNode","emitDestroy","sendKillMessageToWorker","flagWorkerNodeAsNotReady","flushedTasks","flushTasksQueue","workerNodeEvent","numberOfEventsToWait","timeout","events","setTimeout","waitWorkerNodeEvents","beforeTaskExecutionHook","shallUpdateTaskFunctionWorkerUsage","taskFunctionWorkerUsage","afterTaskExecutionHook","needWorkerChoiceStrategyUpdate","workerInfo","shallCreateDynamicWorker","createAndSetupDynamicWorkerNode","createWorkerNode","onlineHandler","messageHandler","errorHandler","redistributeQueuedTasks","indexOf","catch","exitHandler","removeWorkerNode","addWorkerNode","afterWorkerNodeSetup","localWorkerNodeKey","checkActive","checkAndEmitDynamicWorkerCreationEvents","workerMessageListener","sendStartupMessageToWorker","statistics","cannotStealTask","handleTask","destinationWorkerNodeKey","updateTaskStolenStatisticsWorkerUsage","taskName","updateTaskSequentiallyStolenStatisticsWorkerUsage","updateTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage","resetTaskSequentiallyStolenStatisticsWorkerUsage","resetTaskSequentiallyStolenStatisticsTaskFunctionWorkerUsage","eventDetail","previousStolenTask","floor","workerNodeTasksUsage","stolenTask","workerNodeStealTask","taskFunctionTasksWorkerUsage","ms","sleep","retryNumber","delayFactor","delay","exponentialDelay","then","sourceWorkerNode","workerNodeA","workerNodeB","sourceWorkerNodeKey","handleWorkerReadyResponse","handleTaskExecutionResponse","promiseResponse","runInAsyncScope","checkAndEmitTaskExecutionEvents","checkAndEmitTaskQueuingEvents","hasWorkerNodeBackPressure","FixedClusterPool","numberOfWorkers","setupPrimary","settings","exec","isPrimary","send","listener","registerOnceWorkerMessageListener","FixedThreadPool","numberOfThreads","maximumNumberOfThreads","isMainThread","postMessage","port","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","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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"}
|