From: Documentation Bot Date: Mon, 1 Jan 2024 11:02:43 +0000 (+0000) Subject: docs: generate documentation X-Git-Tag: v3.1.15-0~11 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=b8882b9d826a828a34eb8ba64b02a74b83db9a09;p=poolifier.git docs: generate documentation --- diff --git a/docs/assets/main.js b/docs/assets/main.js index d0aa8d5f..7270cff8 100644 --- a/docs/assets/main.js +++ b/docs/assets/main.js @@ -1,8 +1,8 @@ "use strict"; "use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. `,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var Z=class extends C{constructor(n){super(n);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.handleValueChange()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(e=>{e.style.display="block";let n=Array.from(e.querySelectorAll(".tsd-index-link")).every(r=>r.offsetParent==null);e.style.display=n?"none":"block"})}};var Z=class extends C{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index a88afee8..b6777bb2 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA52XTVPbMBCG/4vPTCm00JZbyseU6QcpgXLo9LA4G6JBkYwkZ0g7/PeOHIIlS1opXP2++6y8Wq3s3/8qg4+mOqpGt9ooqM1YSl7tVA2YeXVU1Ry0Rr3rqm/mZmEt90xMq6O9/Y9POwHlRqp7VGnOWqdIx0zVLQc1UgpWIciTSQ5vtUGVWpAnU5wTfGgxjO8ek3ErAQtWP+eJVzf0FBCv5gphSgJ7C8U7Y484Jdc3dGRp1NoGBor1Q04jJbdPqag1O7XhrkpR1o7juWQ1TowCg3erYyk6NYASZirH6RKF+SZlc20YZ3/BMCm+I+hW4QKFmRgwTBtW6z4jEwbVDGrUu8XR/hL2Dw6dJZz7m+Tgz8PdGYQOS+wGxwocDfeLRsF8ZwHab58QGDbSAGMjBPBY+ovGlju+MQVxVFpnD6ksoa0QmmmrrVsoGnCJDy1bP9wijRtFp9Qa7vAX8Da+w66BAtkePxczGYVsxByA2iVHJzFKLpjGS9SNFBpvFDRN4mjFrRR803snYCCKdA0loLHkrI6fVd9Cwa5A30cRVsgFnrWitkW9aFB1g+8SdctNkpfw59KMUc2kWoCo42028ORwmZPnW8ph2bOWtueS6J8ttkg1eOCikNtO0ldO0HXYqVIyfoQcPY9JjodezkPsVdPd1ydogMUv3KizDJ2voePKI/O4YlSm5YemPPDaznWC1ekUxvmODd7TrJr+nyA9ut9++rB3sO9+yNlW+gJiyt2hvaa5WpbzyEwK00s5ylfG+Wecw5LJAONqJZzEahwpR3Eu+iHFkfKU7kJPLMdXc6wLwZlIoTwxR7It0h3WIeVFKCFcrRqMAezzXLwdvyO9EvXmhhuCAkMJkYK9hhMcMU8sIU0yrzjZ5g1ffj4TAyAw5Ij0r8waWvATk+DG+qNXsgzFDNzykPD8fJtp4lRqCYrZcH+kDCr1LjEIohxXJzAvRysK6dUMwpYuSehEAhDZSxanxZ1ZdHJ1jkxAYAmM24AxKOAcOdOLnjbbHLzdmM/HHr5/+vMfWFGZ1SUUAAA=" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA52XTVPbMBCG/0vOTGlpoS03yseU6QcpgXLo9LA4G6JBkYwkZ0g7/PeOHIIlS9p1etX77iN5tVpZv/6OHD660eHo6NY6A5Ubay1HO6Ma3Hx0OKokWIt2N1Rfzd3CW+6Fmo4O3+x9eNpJKDfa3KMpc9Y6RToWpmokmCNjYJWCIpnkyMY6NKUFRTLFOcGHBtP4dpiMWylYiOp5nnx2U88A4tXcIExJYGeheGfiEafk+voOlkatrWegWN/1NJNyP0pFrdmlDQ9VirJ2HM+1qHDiDDi8Wx1r1aoJlDBTc5wuUbmvWtfXTkjxB5zQ6huCbQwuULmJAyesE5XtZhTKoZlBhXZ3cHS8hL39g2AJ5/EmBfjzdHd6of0Uh8G5BGfD46RRsNg5AB2XTwpMCynGBMm8qH128/uQ2gZCmf3dei+zAZf40Ij14BbThFH0lNbCHf4E2eRTHRookC+2czXTWchG5ADULgU6iTF6ISxeoq21snhjoK4LNZ63UvBN7Z6AgywyNAwBjbUUVf7QxBYKdgX2PovwAhd41qjKJ/WiRtN2oEu0jXRFXsHPTTNGM9NmAarKl1nPw+GYkxdbhsPYs1a2c5PYHw02SBV44qKQuY5KwQk/P82pMTp/hAKdxxTbQyfzEN/z24vzBB2I/M2XdQ5D8zkMXDySxw1GMSXfN/HAa9/XCVarU5jghzL5Trequ5/zcut+/fH9m/298I/Kl9JnUFMZNu01LdRYzqNwJUwncZQvQspPOIel0Akm1IZwCqsJJI4SXPR9SiDxlPZCLywnVjnWhZJClVCRyJF8ibSHtU95EYYQrlY15gB+nIv37ffIrlS1ueH6oMQwhEjB/oeTHLFIHEKaMJ842eYLX16BhQaQGDgi/aZYQwe8JgrcXH10CsswwsGtTAnP49t0kyBTSzDCh8ctpZept4VGkOWEOoF5OVpZSKcyCJ+6IqEVCUBmL0Welney6OLqApmAwBKE9AFjMCAlSmEXHW22OXi7OV+MPXj39PsfY5UQa64TAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index a01f65a9..6c6fc3c4 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css index 07a385b7..98a43779 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -29,7 +29,7 @@ --light-color-ts-constructor-signature: var(--light-color-ts-constructor); --light-color-ts-parameter: var(--light-color-ts-variable); /* type literal not included as links will never be generated to it */ - --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-type-parameter: #a55c0e; --light-color-ts-accessor: var(--light-color-ts-property); --light-color-ts-get-signature: var(--light-color-ts-accessor); --light-color-ts-set-signature: var(--light-color-ts-accessor); @@ -69,7 +69,7 @@ --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); --dark-color-ts-parameter: var(--dark-color-ts-variable); /* type literal not included as links will never be generated to it */ - --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-type-parameter: #e07d13; --dark-color-ts-accessor: var(--dark-color-ts-property); --dark-color-ts-get-signature: var(--dark-color-ts-accessor); --dark-color-ts-set-signature: var(--dark-color-ts-accessor); @@ -266,12 +266,12 @@ h6 { line-height: 1.2; } -h1 > a, -h2 > a, -h3 > a, -h4 > a, -h5 > a, -h6 > a { +h1 > a:not(.link), +h2 > a:not(.link), +h3 > a:not(.link), +h4 > a:not(.link), +h5 > a:not(.link), +h6 > a:not(.link) { text-decoration: none; color: var(--color-text); } @@ -649,6 +649,28 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { font-weight: bold; } +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + .tsd-panel-group.tsd-index-group { margin-bottom: 0; } @@ -714,12 +736,15 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { } .tsd-navigation > a, .tsd-navigation .tsd-accordion-summary { - width: calc(100% - 0.5rem); + width: calc(100% - 0.25rem); + display: flex; + align-items: center; } .tsd-navigation a, .tsd-navigation summary > span, .tsd-page-navigation a { - display: inline-flex; + display: flex; + width: calc(100% - 0.25rem); align-items: center; padding: 0.25rem; color: var(--color-text); @@ -759,11 +784,6 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { margin-left: -1.5rem; } -.tsd-nested-navigation > li > a, -.tsd-nested-navigation > li > span { - width: calc(100% - 1.75rem - 0.5rem); -} - .tsd-page-navigation ul { padding-left: 1.75rem; } diff --git a/docs/classes/AbstractPool.html b/docs/classes/AbstractPool.html index 70820552..be9934c2 100644 --- a/docs/classes/AbstractPool.html +++ b/docs/classes/AbstractPool.html @@ -1,8 +1,8 @@ -AbstractPool | poolifier - v3.1.13

Class AbstractPool<Worker, Data, Response>Abstract

Base class that implements some shared logic for all poolifier pools.

-

Type Parameters

  • Worker extends IWorker

    Type of worker which manages this pool.

    -
  • Data = unknown

    Type of data sent to the worker. This can only be structured-cloneable data.

    -
  • Response = unknown

    Type of execution response. This can only be structured-cloneable data.

    -

Hierarchy

Implements

  • IPool<Worker, Data, Response>

Constructors

constructor +AbstractPool | poolifier - v3.1.14

Class AbstractPool<Worker, Data, Response>Abstract

Base class that implements some shared logic for all poolifier pools.

+

Type Parameters

  • Worker extends IWorker

    Type of worker which manages this pool.

    +
  • Data = unknown

    Type of data sent to the worker. This can only be structured-cloneable data.

    +
  • Response = unknown

    Type of execution response. This can only be structured-cloneable data.

    +

Hierarchy (view full)

Implements

Constructors

  • Constructs a new poolifier pool.

    -

    Type Parameters

    • Worker extends IWorker

    • Data = unknown

    • Response = unknown

    Parameters

    • minimumNumberOfWorkers: number

      Minimum number of workers that this pool manages.

      +

Constructors

  • Constructs a new poolifier pool.

    +

    Type Parameters

    • Worker extends IWorker

    • Data = unknown

    • Response = unknown

    Parameters

    • minimumNumberOfWorkers: number

      Minimum number of workers that this pool manages.

    • filePath: string

      Path to the worker file.

      -
    • opts: PoolOptions<Worker>

      Options for the pool.

      +
    • opts: PoolOptions<Worker>

      Options for the pool.

    • Optional maximumNumberOfWorkers: number

      Maximum number of workers that this pool manages.

      -

    Returns AbstractPool<Worker, Data, Response>

Properties

destroying: boolean

Whether the pool is destroying or not.

-
emitter?: EventEmitterAsyncResource

Event emitter integrated with async resource on which events can be listened to. +

Returns AbstractPool<Worker, Data, Response>

Properties

destroying: boolean

Whether the pool is destroying or not.

+
emitter?: EventEmitterAsyncResource

Event emitter integrated with async resource on which events can be listened to. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

Events that can currently be listened to:

    @@ -121,143 +121,143 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
  • 'taskError': Emitted when an error occurs while executing a task.
  • 'backPressure': Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
-
filePath: string

Path to the worker file.

-
maximumNumberOfWorkers?: number

Maximum number of workers that this pool manages.

-
minimumNumberOfWorkers: number

Minimum number of workers that this pool manages.

-
opts: PoolOptions<Worker>

Options for the pool.

-
promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

The task execution response promise map:

+
filePath: string

Path to the worker file.

+
maximumNumberOfWorkers?: number

Maximum number of workers that this pool manages.

+
minimumNumberOfWorkers: number

Minimum number of workers that this pool manages.

+

Options for the pool.

+
promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

The task execution response promise map:

  • key: The message id of each submitted task.
  • value: An object that contains the worker, the execution response promise resolve and reject callbacks.

When we receive a message from the worker, we get a map entry with the promise resolve/reject bound to the message id.

-
readyEventEmitted: boolean

Whether the pool ready event has been emitted or not.

-
startTimestamp: number

The start timestamp of the pool.

-
started: boolean

Whether the pool is started or not.

-
starting: boolean

Whether the pool is starting or not.

-
taskFunctions: Map<string, TaskFunction<Data, Response>>

The task functions added at runtime map:

+
readyEventEmitted: boolean

Whether the pool ready event has been emitted or not.

+
startTimestamp: number

The start timestamp of the pool.

+
started: boolean

Whether the pool is started or not.

+
starting: boolean

Whether the pool is starting or not.

+
taskFunctions: Map<string, TaskFunction<Data, Response>>

The task functions added at runtime map:

  • key: The task function name.
  • value: The task function itself.
-
workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

Worker choice strategy context referencing a worker choice algorithm implementation.

-
workerNodes: IWorkerNode<Worker, Data>[] = []

Pool worker nodes.

-

Accessors

workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

Worker choice strategy context referencing a worker choice algorithm implementation.

+
workerNodes: IWorkerNode<Worker, Data>[] = []

Pool worker nodes.

+

Accessors

  • get type(): "fixed" | "dynamic"
  • The pool type.

    If it is 'dynamic', it provides the max property.

    -

    Returns "fixed" | "dynamic"

Methods

Methods

  • Adds a task function to this pool. If a task function with the same name already exists, it will be overwritten.

    Parameters

    • name: string

      The name of the task function.

      -
    • fn: TaskFunction<Data, Response>

      The task function.

      -

    Returns Promise<boolean>

    true if the task function was added, false otherwise.

    +
  • fn: TaskFunction<Data, Response>

    The task function.

    +
  • Returns Promise<boolean>

    true if the task function was added, false otherwise.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function.

    -
    • Hook executed after the worker task execution. Can be overridden.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -
      • message: MessageValue<Response, unknown>

        The received message.

        -

      Returns void

    • Method hooked up after a worker node has been newly created. +

    • message: MessageValue<Response, unknown>

      The received message.

      +

    Returns void

    • Method hooked up after a worker node has been newly created. Can be overridden.

      Parameters

      • workerNodeKey: number

        The newly created worker node key.

        -

      Returns void

    • Hook executed before the worker task execution. +

    Returns void

    • Hook executed before the worker task execution. Can be overridden.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -
      • task: Task<Data>

        The task to execute.

        -

      Returns void

    • Checks if the worker id sent in the received message from a worker is valid.

      -

      Parameters

      • message: MessageValue<Data | Response, unknown>

        The received message.

        +
      • task: Task<Data>

        The task to execute.

        +

      Returns void

    • Parameters

      • minimumNumberOfWorkers: number

      Returns void

    • Parameters

      • minimumNumberOfWorkers: number

      Returns void

    • Chooses a worker node for the next task.

      The default worker choice strategy uses a round robin algorithm to distribute the tasks.

      Returns number

      The chosen worker node key

      -
    • Creates a new, completely set up dynamic worker node.

      Returns number

      New, completely set up dynamic worker node key.

      -
    • Creates a new, completely set up worker node.

      Returns number

      New, completely set up worker node key.

      -
    • Deregisters a listener callback on the worker given its worker node key.

      -

      Type Parameters

      • Message

      Parameters

    • Deregisters a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Terminates the worker node given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -

      Returns Promise<void>

    • Enables/disables the worker node tasks queue in this pool.

      +

    Returns Promise<void>

    • Enables/disables the worker node tasks queue in this pool.

      Parameters

      • enable: boolean

        Whether to enable or disable the worker node tasks queue.

      • Optional tasksQueueOptions: TasksQueueOptions

        The worker node tasks queue options.

        -

      Returns void

    • Executes the specified function in the worker constructor with the task data input parameter.

      -

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

        +

      Returns void

    • Executes the specified function in the worker constructor with the task data input parameter.

      +

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

      • Optional name: string

        The optional name of the task function to execute. If not specified, the default task function will be executed.

        -
      • Optional transferList: TransferListItem[]

        An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        -

      Returns Promise<Response>

      Promise that will be fulfilled when the task is completed.

      -
    • Executes the given task on the worker given its worker node key.

      +
    • Optional transferList: TransferListItem[]

      An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

      +

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

    +
    • Executes the given task on the worker given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -
      • task: Task<Data>

        The task to execute.

        -

      Returns void

    • Gets the worker information given its worker node key.

      +
    • task: Task<Data>

      The task to execute.

      +

    Returns void

    • Gets the worker node key given its worker id.

      Parameters

      • workerId: undefined | number

        The worker id.

      Returns number

      The worker node key if the worker id is found in the pool worker nodes, -1 otherwise.

      -
    • Whether the specified task function exists in this pool.

      Parameters

      • name: string

        The name of the task function.

      Returns boolean

      true if the task function exists, false otherwise.

      -
    • Internal

      Whether the worker node has back pressure (i.e. its tasks queue is full).

      Parameters

      • workerNodeKey: number

        The worker node key.

      Returns boolean

      true if the worker node has back pressure, false otherwise.

      -
    • Whether worker nodes are executing concurrently their tasks quota or not.

      Returns boolean

      Worker nodes busyness boolean status.

      -
    • Registers once a listener callback on the worker given its worker node key.

      -

      Type Parameters

      • Message

      Parameters

    • Registers once a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Registers a listener callback on the worker given its worker node key.

      -

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

        +

      Returns void

    • Registers a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Removes a task function from this pool.

      +

    Returns void

    • Removes a task function from this pool.

      Parameters

      • name: string

        The name of the task function.

        -

      Returns Promise<boolean>

      true if the task function was removed, false otherwise.

      -
    • Parameters

      • workerNodeKey: number
      • taskName: string

      Returns void

    • Sends the startup message to worker given its worker node key.

      +

    Returns Promise<boolean>

    true if the task function was removed, false otherwise.

    +
    • Parameters

      • workerNodeKey: number
      • taskName: string

      Returns void

    • Sends the startup message to worker given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -

      Returns void

    • Sends the statistics message to worker given its worker node key.

      +

    Returns void

    • Sends the statistics message to worker given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -

      Returns void

    • Sends a message to worker given its worker node key.

      +

    Returns void

    • Sends a message to worker given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -
      • message: MessageValue<Data, unknown>

        The message.

        -
      • Optional transferList: TransferListItem[]

        The optional array of transferable objects.

        -

      Returns void

    • Sets the default task function in this pool.

      +
    • message: MessageValue<Data, unknown>

      The message.

      +
    • Optional transferList: TransferListItem[]

      The optional array of transferable objects.

      +

    Returns void

    • Sets the default task function in this pool.

      Parameters

      • name: string

        The name of the task function.

        -

      Returns Promise<boolean>

      true if the default task function was set, false otherwise.

      -
    • Sets the worker node tasks queue options in this pool.

      +

    Returns Promise<boolean>

    true if the default task function was set, false otherwise.

    +
    • Sets the worker choice strategy in this pool.

      +

    Returns void

    • Sets the worker choice strategy in this pool.

      Parameters

      • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

        The worker choice strategy.

      • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

        The worker choice strategy options.

        -

      Returns void

    • Sets the worker choice strategy options in this pool.

      +

    Returns void

    • Setup hook to execute code before worker nodes are created in the abstract constructor. +

    Returns void

    • Setup hook to execute code before worker nodes are created in the abstract constructor. Can be overridden.

      -

      Returns void

    • Conditions for dynamic worker creation.

      Returns boolean

      Whether to create a dynamic worker or not.

      -
    • Whether the worker node shall update its task function worker usage or not.

      +
    • Whether the worker node shall update its task function worker usage or not.

      Parameters

      • workerNodeKey: number

        The worker node key.

      Returns boolean

      true if the worker node shall update its task function worker usage, false otherwise.

      -
    • Parameters

      • workerNodeKey: number
      • taskName: string

      Returns void

    • Parameters

      • workerNodeKey: number

      Returns void

    • Parameters

      • workerNodeKey: number
      • taskName: string

      Returns void

    Generated using TypeDoc

    \ No newline at end of file +
    • Parameters

      • workerNodeKey: number
      • taskName: string

      Returns void

    • Parameters

      • workerNodeKey: number

      Returns void

    • Parameters

      • workerNodeKey: number
      • taskName: string

      Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/AbstractWorker.html b/docs/classes/AbstractWorker.html index 2d352907..d9035003 100644 --- a/docs/classes/AbstractWorker.html +++ b/docs/classes/AbstractWorker.html @@ -1,13 +1,13 @@ -AbstractWorker | poolifier - v3.1.13

    Class AbstractWorker<MainWorker, Data, Response>Abstract

    Base class that implements some shared logic for all poolifier workers.

    -

    Type Parameters

    • MainWorker extends Worker | MessagePort

      Type of main worker.

      -
    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of response the worker sends back to the main worker. This can only be structured-cloneable data.

      -

    Hierarchy

    Constructors

    constructor +AbstractWorker | poolifier - v3.1.14

    Class AbstractWorker<MainWorker, Data, Response>Abstract

    Base class that implements some shared logic for all poolifier workers.

    +

    Type Parameters

    • MainWorker extends Worker | MessagePort

      Type of main worker.

      +
    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of response the worker sends back to the main worker. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Constructors

    • Constructs a new poolifier worker.

      -

      Type Parameters

      • MainWorker extends MessagePort | Worker

      • Data = unknown

      • Response = unknown

      Parameters

      • isMain: boolean

        Whether this is the main worker or not.

        -
      • mainWorker: MainWorker

        Reference to main worker.

        -
      • taskFunctions: TaskFunction<Data, Response> | TaskFunctions<Data, Response>

        Task function(s) processed by the worker when the pool's execution function is invoked. The first function is the default function.

        +

    Constructors

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    -
    id: number

    Worker id.

    -
    isMain: boolean

    Whether this is the main worker or not.

    -
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    -
    mainWorker: MainWorker

    Reference to main worker.

    -
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    -
    statistics: WorkerStatistics

    Performance statistics computation requirements.

    -
    taskFunctions: Map<string, TaskFunction<Data, Response>>

    Task function(s) processed by the worker when the pool's execution function is invoked.

    -

    Methods

    Returns AbstractWorker<MainWorker, Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    +
    id: number

    Worker id.

    +
    isMain: boolean

    Whether this is the main worker or not.

    +
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    +
    mainWorker: MainWorker

    Reference to main worker.

    +
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    +
    statistics: WorkerStatistics

    Performance statistics computation requirements.

    +
    taskFunctions: Map<string, TaskFunction<Data, Response>>

    Task function(s) processed by the worker when the pool's execution function is invoked.

    +

    Methods

    • Checks if the taskFunctions parameter is passed to the constructor and valid.

      -

      Parameters

      • taskFunctions: TaskFunction<Data, Response> | TaskFunctions<Data, Response>

        The task function(s) parameter that should be checked.

        -

      Returns void

    • Returns the main worker.

      -

      Returns MainWorker

      Reference to the main worker.

      +
    • Handles an error and convert it to a string so it can be sent back to the main worker.

      -

      Parameters

    • Handles an error and convert it to a string so it can be sent back to the main worker.

      +

      Parameters

      • error: string | Error

        The error raised by the worker.

      Returns string

      The error message.

      -
    • Lists the names of the worker's task functions.

      Returns string[]

      The names of the worker's task functions.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/CircularArray.html b/docs/classes/CircularArray.html index 18339528..d3580782 100644 --- a/docs/classes/CircularArray.html +++ b/docs/classes/CircularArray.html @@ -1,6 +1,6 @@ -CircularArray | poolifier - v3.1.13

    Class CircularArray<T>Internal

    Array with a maximum length and shifting items when full.

    -

    Type Parameters

    • T

      Type of items.

      -

    Hierarchy

    • Array<T>
      • CircularArray

    Constructors

    constructor +CircularArray | poolifier - v3.1.14

    Class CircularArray<T>Internal

    Array with a maximum length and shifting items when full.

    +

    Type Parameters

    • T

      Type of items.

      +

    Hierarchy

    • Array<T>
      • CircularArray

    Constructors

    Properties

    [unscopables] length size @@ -45,140 +45,140 @@ from isArray of -

    Constructors

    Properties

    [unscopables]: {
        [unscopables]?: boolean;
        length?: boolean;
        [iterator]?: any;
        at?: any;
        concat?: any;
        copyWithin?: any;
        entries?: any;
        every?: any;
        fill?: any;
        filter?: any;
        find?: any;
        findIndex?: any;
        flat?: any;
        flatMap?: any;
        forEach?: any;
        includes?: any;
        indexOf?: any;
        join?: any;
        keys?: any;
        lastIndexOf?: any;
        map?: any;
        pop?: any;
        push?: any;
        reduce?: any;
        reduceRight?: any;
        reverse?: any;
        shift?: any;
        slice?: any;
        some?: any;
        sort?: any;
        splice?: any;
        toLocaleString?: any;
        toString?: any;
        unshift?: any;
        values?: any;
    }

    Is an object whose properties have the value 'true' +

    Constructors

    Properties

    [unscopables]: {
        [unscopables]?: boolean;
        length?: boolean;
        [iterator]?: any;
        at?: any;
        concat?: any;
        copyWithin?: any;
        entries?: any;
        every?: any;
        fill?: any;
        filter?: any;
        find?: any;
        findIndex?: any;
        flat?: any;
        flatMap?: any;
        forEach?: any;
        includes?: any;
        indexOf?: any;
        join?: any;
        keys?: any;
        lastIndexOf?: any;
        map?: any;
        pop?: any;
        push?: any;
        reduce?: any;
        reduceRight?: any;
        reverse?: any;
        shift?: any;
        slice?: any;
        some?: any;
        sort?: any;
        splice?: any;
        toLocaleString?: any;
        toString?: any;
        unshift?: any;
        values?: any;
    }

    Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement.

    Type declaration

    • Optional Readonly [unscopables]?: boolean

      Is an object whose properties have the value 'true' when they will be absent when used in a 'with' statement.

    • Optional length?: boolean

      Gets or sets the length of the array. This is a number one higher than the highest index in the array.

    length: number

    Gets or sets the length of the array. This is a number one higher than the highest index in the array.

    -
    size: number
    [species]: ArrayConstructor

    Methods

    • Iterator

      -

      Returns IterableIterator<T>

    • Returns the item located at the specified index.

      +
    size: number
    [species]: ArrayConstructor

    Methods

    • Iterator

      +

      Returns IterableIterator<T>

    • Returns the item located at the specified index.

      Parameters

      • index: number

        The zero-based index of the desired code unit. A negative index will count back from the last item.

        -

      Returns undefined | T

    • Returns the this object after copying a section of the array identified by start and end +

    Returns undefined | T

    • Returns the this object after copying a section of the array identified by start and end to the same array starting at position target

      Parameters

      • target: number

        If target is negative, it is treated as length+target where length is the length of the array.

      • start: number

        If start is negative, it is treated as length+start. If end is negative, it is treated as length+end.

      • Optional end: number

        If not specified, length of the this object is used as its default value.

        -

      Returns CircularArray<T>

    • Returns an iterable of key, value pairs for every entry in the array

      -

      Returns IterableIterator<[number, T]>

    • Determines whether all the members of an array satisfy the specified test.

      -

      Type Parameters

      • S

      Parameters

      • predicate: ((value, index, array) => value is S)

        A function that accepts up to three arguments. The every method calls +

      Returns this

    • Returns an iterable of key, value pairs for every entry in the array

      +

      Returns IterableIterator<[number, T]>

    • Determines whether all the members of an array satisfy the specified test.

      +

      Type Parameters

      • S

      Parameters

      • predicate: ((value, index, array) => value is S)

        A function that accepts up to three arguments. The every method calls the predicate function for each element in the array until the predicate returns a value which is coercible to the Boolean value false, or until the end of the array.

        -
          • (value, index, array): value is S
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns value is S

      • Optional thisArg: any

        An object to which the this keyword can refer in the predicate function. +

          • (value, index, array): value is S
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns value is S

      • Optional thisArg: any

        An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.

        -

      Returns this is S[]

    • Determines whether all the members of an array satisfy the specified test.

      +

    Returns this is S[]

  • Determines whether all the members of an array satisfy the specified test.

    Parameters

    • predicate: ((value, index, array) => unknown)

      A function that accepts up to three arguments. The every method calls the predicate function for each element in the array until the predicate returns a value which is coercible to the Boolean value false, or until the end of the array.

      -
        • (value, index, array): unknown
        • Parameters

          • value: T
          • index: number
          • array: T[]

          Returns unknown

    • Optional thisArg: any

      An object to which the this keyword can refer in the predicate function. +

        • (value, index, array): unknown
        • Parameters

          • value: T
          • index: number
          • array: T[]

          Returns unknown

    • Optional thisArg: any

      An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.

      -

    Returns boolean

    • Changes all array elements from start to end index to a static value and returns the modified array

      -

      Parameters

      • value: T

        value to fill array section with

        +

      Returns boolean

    • Changes all array elements from start to end index to a static value and returns the modified array

      +

      Parameters

      • value: T

        value to fill array section with

      • Optional start: number

        index to start filling the array at. If start is negative, it is treated as length+start where length is the length of the array.

      • Optional end: number

        index to stop filling the array at. If end is negative, it is treated as length+end.

        -

      Returns CircularArray<T>

    • Returns the elements of an array that meet the condition specified in a callback function.

      -

      Type Parameters

      • S

      Parameters

      • predicate: ((value, index, array) => value is S)

        A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.

        -
          • (value, index, array): value is S
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns value is S

      • Optional thisArg: any

        An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.

        -

      Returns S[]

    • Returns the elements of an array that meet the condition specified in a callback function.

      +

    Returns this

    • Returns the elements of an array that meet the condition specified in a callback function.

      +

      Type Parameters

      • S

      Parameters

      • predicate: ((value, index, array) => value is S)

        A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.

        +
          • (value, index, array): value is S
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns value is S

      • Optional thisArg: any

        An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.

        +

      Returns S[]

    • Returns the elements of an array that meet the condition specified in a callback function.

      Parameters

      • predicate: ((value, index, array) => unknown)

        A function that accepts up to three arguments. The filter method calls the predicate function one time for each element in the array.

        -
          • (value, index, array): unknown
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns unknown

      • Optional thisArg: any

        An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.

        -

      Returns T[]

    • Returns the value of the first element in the array where predicate is true, and undefined +

        • (value, index, array): unknown
        • Parameters

          • value: T
          • index: number
          • array: T[]

          Returns unknown

    • Optional thisArg: any

      An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.

      +

    Returns T[]

    • Returns the value of the first element in the array where predicate is true, and undefined otherwise.

      -

      Type Parameters

      • S

      Parameters

      • predicate: ((value, index, obj) => value is S)

        find calls predicate once for each element of the array, in ascending +

        Type Parameters

        • S

        Parameters

        • predicate: ((value, index, obj) => value is S)

          find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, find immediately returns that element value. Otherwise, find returns undefined.

          -
            • (value, index, obj): value is S
            • Parameters

              • value: T
              • index: number
              • obj: T[]

              Returns value is S

        • Optional thisArg: any

          If provided, it will be used as the this value for each invocation of +

            • (value, index, obj): value is S
            • Parameters

              • value: T
              • index: number
              • obj: T[]

              Returns value is S

        • Optional thisArg: any

          If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead.

          -

        Returns undefined | S

      • Parameters

        • predicate: ((value, index, obj) => unknown)
            • (value, index, obj): unknown
            • Parameters

              • value: T
              • index: number
              • obj: T[]

              Returns unknown

        • Optional thisArg: any

        Returns undefined | T

    • Returns the index of the first element in the array where predicate is true, and -1 +

    Returns undefined | S

  • Parameters

    • predicate: ((value, index, obj) => unknown)
        • (value, index, obj): unknown
        • Parameters

          • value: T
          • index: number
          • obj: T[]

          Returns unknown

    • Optional thisArg: any

    Returns undefined | T

    • Returns the index of the first element in the array where predicate is true, and -1 otherwise.

      Parameters

      • predicate: ((value, index, obj) => unknown)

        find calls predicate once for each element of the array, in ascending order, until it finds one where predicate returns true. If such an element is found, findIndex immediately returns that element index. Otherwise, findIndex returns -1.

        -
          • (value, index, obj): unknown
          • Parameters

            • value: T
            • index: number
            • obj: T[]

            Returns unknown

      • Optional thisArg: any

        If provided, it will be used as the this value for each invocation of +

          • (value, index, obj): unknown
          • Parameters

            • value: T
            • index: number
            • obj: T[]

            Returns unknown

      • Optional thisArg: any

        If provided, it will be used as the this value for each invocation of predicate. If it is not provided, undefined is used instead.

        -

      Returns number

    • Returns a new array with all sub-array elements concatenated into it recursively up to the +

    Returns number

    • Returns a new array with all sub-array elements concatenated into it recursively up to the specified depth.

      -

      Type Parameters

      • A

      • D extends number = 1

      Parameters

      • this: A
      • Optional depth: D

        The maximum recursion depth

        -

      Returns FlatArray<A, D>[]

    • Calls a defined callback function on each element of an array. Then, flattens the result into +

      Type Parameters

      • A

      • D extends number = 1

      Parameters

      • this: A
      • Optional depth: D

        The maximum recursion depth

        +

      Returns FlatArray<A, D>[]

    • Calls a defined callback function on each element of an array. Then, flattens the result into a new array. This is identical to a map followed by flat with depth 1.

      -

      Type Parameters

      • U

      • This = undefined

      Parameters

      • callback: ((this, value, index, array) => U | readonly U[])

        A function that accepts up to three arguments. The flatMap method calls the +

        Type Parameters

        • U

        • This = undefined

        Parameters

        • callback: ((this, value, index, array) => U | readonly U[])

          A function that accepts up to three arguments. The flatMap method calls the callback function one time for each element in the array.

          -
            • (this, value, index, array): U | readonly U[]
            • Parameters

              • this: This
              • value: T
              • index: number
              • array: T[]

              Returns U | readonly U[]

        • Optional thisArg: This

          An object to which the this keyword can refer in the callback function. If +

            • (this, value, index, array): U | readonly U[]
            • Parameters

              • this: This
              • value: T
              • index: number
              • array: T[]

              Returns U | readonly U[]

        • Optional thisArg: This

          An object to which the this keyword can refer in the callback function. If thisArg is omitted, undefined is used as the this value.

          -

        Returns U[]

    • Performs the specified action for each element in an array.

      +

    Returns U[]

    • Performs the specified action for each element in an array.

      Parameters

      • callbackfn: ((value, index, array) => void)

        A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.

        -
          • (value, index, array): void
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns void

      • Optional thisArg: any

        An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

        -

      Returns void

    • Determines whether an array includes a certain element, returning true or false as appropriate.

      -

      Parameters

      • searchElement: T

        The element to search for.

        +
          • (value, index, array): void
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns void

      • Optional thisArg: any

        An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

        +

      Returns void

    • Determines whether an array includes a certain element, returning true or false as appropriate.

      +

      Parameters

      • searchElement: T

        The element to search for.

      • Optional fromIndex: number

        The position in this array at which to begin searching for searchElement.

      Returns boolean

    • Returns the index of the first occurrence of a value in an array, or -1 if it is not present.

      -

      Parameters

      • searchElement: T

        The value to locate in the array.

        +

        Parameters

        • searchElement: T

          The value to locate in the array.

        • Optional fromIndex: number

          The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.

        Returns number

    • Adds all the elements of an array into a string, separated by the specified separator string.

      Parameters

      • Optional separator: string

        A string used to separate one element of the array from the next in the resulting string. If omitted, the array elements are separated with a comma.

        -

      Returns string

    • Returns an iterable of keys in the array

      -

      Returns IterableIterator<number>

    • Returns the index of the last occurrence of a specified value in an array, or -1 if it is not present.

      -

      Parameters

      • searchElement: T

        The value to locate in the array.

        +

      Returns string

    • Returns an iterable of keys in the array

      +

      Returns IterableIterator<number>

    • Returns the index of the last occurrence of a specified value in an array, or -1 if it is not present.

      +

      Parameters

      • searchElement: T

        The value to locate in the array.

      • Optional fromIndex: number

        The array index at which to begin searching backward. If fromIndex is omitted, the search starts at the last index in the array.

        -

      Returns number

    • Calls a defined callback function on each element of an array, and returns an array that contains the results.

      -

      Type Parameters

      • U

      Parameters

      • callbackfn: ((value, index, array) => U)

        A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.

        -
          • (value, index, array): U
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns U

      • Optional thisArg: any

        An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

        -

      Returns U[]

    • Removes the last element from an array and returns it. +

    Returns number

    • Calls a defined callback function on each element of an array, and returns an array that contains the results.

      +

      Type Parameters

      • U

      Parameters

      • callbackfn: ((value, index, array) => U)

        A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.

        +
          • (value, index, array): U
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns U

      • Optional thisArg: any

        An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.

        +

      Returns U[]

    • Removes the last element from an array and returns it. If the array is empty, undefined is returned and the array is not modified.

      -

      Returns undefined | T

    • Parameters

      • Rest ...items: T[]

      Returns number

      Inherit Doc

    • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      -

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)

        A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        -
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      Returns T

    • Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      • initialValue: T

      Returns T

    • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      -

      Type Parameters

      • U

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => U)

        A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        -
          • (previousValue, currentValue, currentIndex, array): U
          • Parameters

            • previousValue: U
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns U

      • initialValue: U

        If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

        -

      Returns U

    • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      -

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)

        A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        -
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      Returns T

    • Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      • initialValue: T

      Returns T

    • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      -

      Type Parameters

      • U

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => U)

        A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        -
          • (previousValue, currentValue, currentIndex, array): U
          • Parameters

            • previousValue: U
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns U

      • initialValue: U

        If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

        -

      Returns U

    • Reverses the elements in an array in place. +

      Returns undefined | T

    • Parameters

      • Rest ...items: T[]

      Returns number

      Inherit Doc

    • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      +

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)

        A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        +
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      Returns T

    • Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      • initialValue: T

      Returns T

    • Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      +

      Type Parameters

      • U

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => U)

        A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.

        +
          • (previousValue, currentValue, currentIndex, array): U
          • Parameters

            • previousValue: U
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns U

      • initialValue: U

        If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

        +

      Returns U

    • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      +

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)

        A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        +
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      Returns T

    • Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => T)
          • (previousValue, currentValue, currentIndex, array): T
          • Parameters

            • previousValue: T
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns T

      • initialValue: T

      Returns T

    • Calls the specified callback function for all the elements in an array, in descending order. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.

      +

      Type Parameters

      • U

      Parameters

      • callbackfn: ((previousValue, currentValue, currentIndex, array) => U)

        A function that accepts up to four arguments. The reduceRight method calls the callbackfn function one time for each element in the array.

        +
          • (previousValue, currentValue, currentIndex, array): U
          • Parameters

            • previousValue: U
            • currentValue: T
            • currentIndex: number
            • array: T[]

            Returns U

      • initialValue: U

        If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.

        +

      Returns U

    • Reverses the elements in an array in place. This method mutates the array and returns a reference to the same array.

      -

      Returns T[]

    • Removes the first element from an array and returns it. +

      Returns T[]

    • Removes the first element from an array and returns it. If the array is empty, undefined is returned and the array is not modified.

      -

      Returns undefined | T

    • Returns a copy of a section of an array. +

      Returns undefined | T

    • Returns a copy of a section of an array. For both start and end, a negative index can be used to indicate an offset from the end of the array. For example, -2 refers to the second to last element of the array.

      Parameters

      • Optional start: number

        The beginning index of the specified portion of the array. If start is undefined, then the slice begins at index 0.

      • Optional end: number

        The end index of the specified portion of the array. This is exclusive of the element at the index 'end'. If end is undefined, then the slice extends to the end of the array.

        -

      Returns T[]

    • Determines whether the specified callback function returns true for any element of an array.

      +

    Returns T[]

    • Determines whether the specified callback function returns true for any element of an array.

      Parameters

      • predicate: ((value, index, array) => unknown)

        A function that accepts up to three arguments. The some method calls the predicate function for each element in the array until the predicate returns a value which is coercible to the Boolean value true, or until the end of the array.

        -
          • (value, index, array): unknown
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns unknown

      • Optional thisArg: any

        An object to which the this keyword can refer in the predicate function. +

          • (value, index, array): unknown
          • Parameters

            • value: T
            • index: number
            • array: T[]

            Returns unknown

      • Optional thisArg: any

        An object to which the this keyword can refer in the predicate function. If thisArg is omitted, undefined is used as the this value.

        -

      Returns boolean

    Returns boolean

    • Sorts an array in place. This method mutates the array and returns a reference to the same array.

      Parameters

      • Optional compareFn: ((a, b) => number)

        Function used to determine the order of the elements. It is expected to return a negative value if the first argument is less than the second argument, zero if they're equal, and a positive value otherwise. If omitted, the elements are sorted in ascending, ASCII character order.

        [11,2,22,1].sort((a, b) => a - b)
         
        -
          • (a, b): number
          • Parameters

            • a: T
            • b: T

            Returns number

      Returns CircularArray<T>

    • Returns a string representation of an array. The elements are converted to string using their toLocaleString methods.

      +
        • (a, b): number
        • Parameters

          Returns number

    Returns this

    • Returns a string representation of an array. The elements are converted to string using their toLocaleString methods.

      Returns string

    • Returns a string representation of an array.

      -

      Returns string

    • Parameters

      • Rest ...items: T[]

      Returns number

      Inherit Doc

    • Returns an iterable of values in the array

      -

      Returns IterableIterator<T>

    • Creates an array from an array-like object.

      -

      Type Parameters

      • T

      Parameters

      • arrayLike: ArrayLike<T>

        An array-like object to convert to an array.

        -

      Returns T[]

    • Creates an array from an iterable object.

      -

      Type Parameters

      • T

      • U

      Parameters

      • arrayLike: ArrayLike<T>

        An array-like object to convert to an array.

        -
      • mapfn: ((v, k) => U)

        A mapping function to call on every element of the array.

        -
          • (v, k): U
          • Parameters

            • v: T
            • k: number

            Returns U

      • Optional thisArg: any

        Value of 'this' used to invoke the mapfn.

        -

      Returns U[]

    • Creates an array from an iterable object.

      -

      Type Parameters

      • T

      Parameters

      • iterable: Iterable<T> | ArrayLike<T>

        An iterable object to convert to an array.

        -

      Returns T[]

    • Creates an array from an iterable object.

      -

      Type Parameters

      • T

      • U

      Parameters

      • iterable: Iterable<T> | ArrayLike<T>

        An iterable object to convert to an array.

        -
      • mapfn: ((v, k) => U)

        A mapping function to call on every element of the array.

        -
          • (v, k): U
          • Parameters

            • v: T
            • k: number

            Returns U

      • Optional thisArg: any

        Value of 'this' used to invoke the mapfn.

        -

      Returns U[]

    • Parameters

      • arg: any

      Returns arg is any[]

    • Returns a new array from a set of elements.

      -

      Type Parameters

      • T

      Parameters

      • Rest ...items: T[]

        A set of elements to include in the new array object.

        -

      Returns T[]

    Generated using TypeDoc

    \ No newline at end of file +

    Returns string

    • Parameters

      • Rest ...items: T[]

      Returns number

      Inherit Doc

    • Returns an iterable of values in the array

      +

      Returns IterableIterator<T>

    • Creates an array from an array-like object.

      +

      Type Parameters

      • T

      Parameters

      • arrayLike: ArrayLike<T>

        An array-like object to convert to an array.

        +

      Returns T[]

    • Creates an array from an iterable object.

      +

      Type Parameters

      • T

      • U

      Parameters

      • arrayLike: ArrayLike<T>

        An array-like object to convert to an array.

        +
      • mapfn: ((v, k) => U)

        A mapping function to call on every element of the array.

        +
          • (v, k): U
          • Parameters

            • v: T
            • k: number

            Returns U

      • Optional thisArg: any

        Value of 'this' used to invoke the mapfn.

        +

      Returns U[]

    • Creates an array from an iterable object.

      +

      Type Parameters

      • T

      Parameters

      • iterable: Iterable<T> | ArrayLike<T>

        An iterable object to convert to an array.

        +

      Returns T[]

    • Creates an array from an iterable object.

      +

      Type Parameters

      • T

      • U

      Parameters

      • iterable: Iterable<T> | ArrayLike<T>

        An iterable object to convert to an array.

        +
      • mapfn: ((v, k) => U)

        A mapping function to call on every element of the array.

        +
          • (v, k): U
          • Parameters

            • v: T
            • k: number

            Returns U

      • Optional thisArg: any

        Value of 'this' used to invoke the mapfn.

        +

      Returns U[]

    • Parameters

      • arg: any

      Returns arg is any[]

    • Returns a new array from a set of elements.

      +

      Type Parameters

      • T

      Parameters

      • Rest ...items: T[]

        A set of elements to include in the new array object.

        +

      Returns T[]

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/ClusterWorker.html b/docs/classes/ClusterWorker.html index 91785d46..eef3b209 100644 --- a/docs/classes/ClusterWorker.html +++ b/docs/classes/ClusterWorker.html @@ -1,13 +1,13 @@ -ClusterWorker | poolifier - v3.1.13

    Class ClusterWorker<Data, Response>

    A cluster worker used by a poolifier ClusterPool.

    +ClusterWorker | poolifier - v3.1.14

    Class ClusterWorker<Data, Response>

    A cluster worker used by a poolifier ClusterPool.

    When this worker is inactive for more than the given maxInactiveTime, it will send a termination request to its main worker.

    If you use a DynamicClusterPool the extra workers that were created will be terminated, but the minimum number of workers will be guaranteed.

    Author

    Christopher Quadflieg

    Since

    2.0.0

    -

    Type Parameters

    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of response the worker sends back to the main worker. This can only be structured-cloneable data.

      -

    Hierarchy

    Constructors

    Type Parameters

    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of response the worker sends back to the main worker. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Constructors

    Properties

    activeInterval? isMain lastTaskTimestamp @@ -31,52 +31,52 @@ but the minimum number of workers will be guaranteed.

    sendTaskFunctionNamesToMainWorker sendToMainWorker setDefaultTaskFunction -

    Constructors

    • Constructs a new poolifier cluster worker.

      -

      Type Parameters

      • Data = unknown

      • Response = unknown

      Parameters

      • taskFunctions: TaskFunction<Data, Response> | TaskFunctions<Data, Response>

        Task function(s) processed by the worker when the pool's execution function is invoked.

        +

    Constructors

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    -
    isMain: boolean

    Whether this is the main worker or not.

    -
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    -
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    -
    statistics: WorkerStatistics

    Performance statistics computation requirements.

    -
    taskFunctions: Map<string, TaskFunction<Data, Response>>

    Task function(s) processed by the worker when the pool's execution function is invoked.

    -

    Accessors

    Methods

    Returns ClusterWorker<Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    +
    isMain: boolean

    Whether this is the main worker or not.

    +
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    +
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    +
    statistics: WorkerStatistics

    Performance statistics computation requirements.

    +
    taskFunctions: Map<string, TaskFunction<Data, Response>>

    Task function(s) processed by the worker when the pool's execution function is invoked.

    +

    Accessors

    Methods

    • Handles an error and convert it to a string so it can be sent back to the main worker.

      +

      Parameters

      • error: string | Error

        The error raised by the worker.

      Returns string

      The error message.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Deque.html b/docs/classes/Deque.html index e0a9a75a..7a634bba 100644 --- a/docs/classes/Deque.html +++ b/docs/classes/Deque.html @@ -1,7 +1,7 @@ -Deque | poolifier - v3.1.13

    Class Deque<T>Internal

    Deque. +Deque | poolifier - v3.1.14

    Class Deque<T>Internal

    Deque. Implemented with a doubly linked list.

    -

    Type Parameters

    • T

      Type of deque data.

      -

    Constructors

    Type Parameters

    • T

      Type of deque data.

      +

    Constructors

    Properties

    head? maxSize size @@ -16,27 +16,27 @@ Implemented with a doubly linked list.

    push shift unshift -

    Constructors

    Properties

    head?: Node<T>
    maxSize: number

    The maximum size of the deque.

    -
    size: number

    The size of the deque.

    -
    tail?: Node<T>

    Methods

    • Returns an iterator for the deque.

      -

      Returns Iterator<T, any, undefined>

      An iterator for the deque.

      +

    Constructors

    Properties

    head?: Node<T>
    maxSize: number

    The maximum size of the deque.

    +
    size: number

    The size of the deque.

    +
    tail?: Node<T>

    Methods

    • Returns an backward iterator for the deque.

      -

      Returns Iterable<T>

      An backward iterator for the deque.

      +
    • Peeks at the first data.

      -

      Returns undefined | T

      The first data or undefined if the deque is empty.

      -
    • Peeks at the last data.

      -

      Returns undefined | T

      The last data or undefined if the deque is empty.

      -
    • Pops data from the deque.

      -

      Returns undefined | T

      The popped data or undefined if the deque is empty.

      -
    • Appends data to the deque.

      -

      Parameters

    • Peeks at the first data.

      +

      Returns undefined | T

      The first data or undefined if the deque is empty.

      +
    • Peeks at the last data.

      +

      Returns undefined | T

      The last data or undefined if the deque is empty.

      +
    • Pops data from the deque.

      +

      Returns undefined | T

      The popped data or undefined if the deque is empty.

      +
    • Appends data to the deque.

      +

      Parameters

      • data: T

        Data to append.

      Returns number

      The new size of the queue.

      -
    • Shifts data from the deque.

      -

      Returns undefined | T

      The shifted data or undefined if the deque is empty.

      -
    • Prepends data to the deque.

      -

      Parameters

    • Shifts data from the deque.

      +

      Returns undefined | T

      The shifted data or undefined if the deque is empty.

      +
    • Prepends data to the deque.

      +

      Parameters

      • data: T

        Data to prepend.

      Returns number

      The new size of the queue.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/DynamicClusterPool.html b/docs/classes/DynamicClusterPool.html index 5e89e24c..fa7a667a 100644 --- a/docs/classes/DynamicClusterPool.html +++ b/docs/classes/DynamicClusterPool.html @@ -1,11 +1,11 @@ -DynamicClusterPool | poolifier - v3.1.13

    Class DynamicClusterPool<Data, Response>

    A cluster pool with a dynamic number of workers, but a guaranteed minimum number of workers.

    +DynamicClusterPool | poolifier - v3.1.14

    Class DynamicClusterPool<Data, Response>

    A cluster pool with a dynamic number of workers, but a guaranteed minimum number of workers.

    This cluster pool creates new workers when the others are busy, up to the maximum number of workers. When the maximum number of workers is reached and workers are busy, an event is emitted. If you want to listen to this event, use the pool's emitter.

    Author

    Christopher Quadflieg

    Since

    2.0.0

    -

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Hierarchy

    Constructors

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Constructors

    Properties

    emitter? filePath maximumNumberOfWorkers? @@ -54,12 +54,12 @@ When the maximum number of workers is reached and workers are busy, an event is shallCreateDynamicWorker start workerMessageListener -

    Constructors

    • Constructs a new poolifier dynamic cluster pool.

      -

      Type Parameters

      • Data = unknown

      • Response = unknown

      Parameters

      • min: number

        Minimum number of workers which are always active.

        +

    Constructors

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. +

    Returns DynamicClusterPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

    Events that can currently be listened to:

      @@ -71,108 +71,108 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'taskError': Emitted when an error occurs while executing a task.
    • 'backPressure': Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
    -
    filePath: string

    Path to the worker file.

    -
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    -
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    +
    filePath: string

    Path to the worker file.

    +
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    +
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    • key: The message id of each submitted task.
    • value: An object that contains the worker, the execution response promise resolve and reject callbacks.

    When we receive a message from the worker, we get a map entry with the promise resolve/reject bound to the message id.

    -
    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    -
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    +
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    +

    Accessors

    • get busy(): boolean
    • Whether the pool is busy or not.

      The pool busyness boolean status.

      -

      Returns boolean

    • get full(): boolean
    • Whether the pool is full or not.

      The pool filling boolean status.

      -

      Returns boolean

    • get type(): "fixed" | "dynamic"
    • The pool type.

      If it is 'dynamic', it provides the max property.

      -

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      +

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      Returns number

      The pool utilization.

      -
    • get worker(): "thread" | "cluster"
    • The worker type.

      -

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. +

    • get worker(): "thread" | "cluster"
    • The worker type.

      +

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. If a task function with the same name already exists, it will be overwritten.

      Parameters

      • name: string

        The name of the task function.

        -
      • fn: TaskFunction<Data, Response>

        The task function.

        -

      Returns Promise<boolean>

      true if the task function was added, false otherwise.

      +
  • fn: TaskFunction<Data, Response>

    The task function.

    +
  • Returns Promise<boolean>

    true if the task function was added, false otherwise.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function.

    -
    • Method hooked up after a worker node has been newly created. +

    • message: MessageValue<Response, unknown>

      The received message.

      +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

    • Creates a new, completely set up dynamic worker node.

      +
    • task: Task<Data>

      The task to execute.

      +

    Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Enables/disables the worker node tasks queue in this pool.

      +

    Returns Promise<void>

    • Executes the specified function in the worker constructor with the task data input parameter.

      -

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

        +

      Returns void

    • Executes the specified function in the worker constructor with the task data input parameter.

      +

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

      • Optional name: string

        The optional name of the task function to execute. If not specified, the default task function will be executed.

        -
      • Optional transferList: TransferListItem[]

        An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        -

      Returns Promise<Response>

      Promise that will be fulfilled when the task is completed.

      -
    • Gets the worker information given its worker node key.

      +
    • Optional transferList: TransferListItem[]

      An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

      +

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

    +
    • Registers a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Removes a task function from this pool.

      +

    Returns void

    • Sends the startup message to worker given its worker node key.

      +

    Returns Promise<boolean>

    true if the task function was removed, false otherwise.

    +
    • Sends a message to worker given its worker node key.

      +

    Returns void

    • Sets the default task function in this pool.

      +
    • message: MessageValue<Data, unknown>

      The message.

      +

    Returns void

    • Sets the worker node tasks queue options in this pool.

      +

    Returns Promise<boolean>

    true if the default task function was set, false otherwise.

    +
    • Sets the worker choice strategy in this pool.

      +

    Returns void

    • Sets the worker choice strategy in this pool.

      Parameters

      • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

        The worker choice strategy.

      • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

        The worker choice strategy options.

        -

      Returns void

    • Sets the worker choice strategy options in this pool.

      +

    Returns void

    • Setup hook to execute code before worker nodes are created in the abstract constructor. +

    Returns void

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/DynamicThreadPool.html b/docs/classes/DynamicThreadPool.html index a9428a22..1b8d8e31 100644 --- a/docs/classes/DynamicThreadPool.html +++ b/docs/classes/DynamicThreadPool.html @@ -1,11 +1,11 @@ -DynamicThreadPool | poolifier - v3.1.13

    Class DynamicThreadPool<Data, Response>

    A thread pool with a dynamic number of threads, but a guaranteed minimum number of threads.

    +DynamicThreadPool | poolifier - v3.1.14

    Class DynamicThreadPool<Data, Response>

    A thread pool with a dynamic number of threads, but a guaranteed minimum number of threads.

    This thread pool creates new threads when the others are busy, up to the maximum number of threads. When the maximum number of threads is reached and workers are busy, an event is emitted. If you want to listen to this event, use the pool's emitter.

    Author

    Alessandro Pio Ardizio

    Since

    0.0.1

    -

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Hierarchy

    Constructors

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Constructors

    Properties

    emitter? filePath maximumNumberOfWorkers? @@ -54,12 +54,12 @@ When the maximum number of threads is reached and workers are busy, an event is shallCreateDynamicWorker start workerMessageListener -

    Constructors

    • Constructs a new poolifier dynamic thread pool.

      -

      Type Parameters

      • Data = unknown

      • Response = unknown

      Parameters

      • min: number

        Minimum number of threads which are always active.

        +

    Constructors

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. +

    Returns DynamicThreadPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

    Events that can currently be listened to:

      @@ -71,109 +71,109 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'taskError': Emitted when an error occurs while executing a task.
    • 'backPressure': Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
    -
    filePath: string

    Path to the worker file.

    -
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    -
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    +
    filePath: string

    Path to the worker file.

    +
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    +
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    • key: The message id of each submitted task.
    • value: An object that contains the worker, the execution response promise resolve and reject callbacks.

    When we receive a message from the worker, we get a map entry with the promise resolve/reject bound to the message id.

    -
    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    -
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    +
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    +

    Accessors

    • get busy(): boolean
    • Whether the pool is busy or not.

      The pool busyness boolean status.

      -

      Returns boolean

    • get full(): boolean
    • Whether the pool is full or not.

      The pool filling boolean status.

      -

      Returns boolean

    • get type(): "fixed" | "dynamic"
    • The pool type.

      If it is 'dynamic', it provides the max property.

      -

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      +

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      Returns number

      The pool utilization.

      -
    • get worker(): "thread" | "cluster"
    • The worker type.

      -

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. +

    • get worker(): "thread" | "cluster"
    • The worker type.

      +

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. If a task function with the same name already exists, it will be overwritten.

      Parameters

      • name: string

        The name of the task function.

        -
      • fn: TaskFunction<Data, Response>

        The task function.

        -

      Returns Promise<boolean>

      true if the task function was added, false otherwise.

      +
  • fn: TaskFunction<Data, Response>

    The task function.

    +
  • Returns Promise<boolean>

    true if the task function was added, false otherwise.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function.

    -
    • Method hooked up after a worker node has been newly created. +

    • message: MessageValue<Response, unknown>

      The received message.

      +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

    • Creates a new, completely set up dynamic worker node.

      +
    • task: Task<Data>

      The task to execute.

      +

    Returns void

    • Deregisters a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Enables/disables the worker node tasks queue in this pool.

      +

    Returns Promise<void>

    • Executes the specified function in the worker constructor with the task data input parameter.

      -

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

        +

      Returns void

    • Executes the specified function in the worker constructor with the task data input parameter.

      +

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

      • Optional name: string

        The optional name of the task function to execute. If not specified, the default task function will be executed.

        -
      • Optional transferList: TransferListItem[]

        An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        -

      Returns Promise<Response>

      Promise that will be fulfilled when the task is completed.

      -
    • Gets the worker information given its worker node key.

      +
    • Optional transferList: TransferListItem[]

      An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

      +

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

    +
    • Internal

      Whether the worker node has back pressure (i.e. its tasks queue is full).

      Parameters

      • workerNodeKey: number

        The worker node key.

      Returns boolean

      true if the worker node has back pressure, false otherwise.

      -
    • Registers once a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Registers a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Removes a task function from this pool.

      +

    Returns void

    • Sends the startup message to worker given its worker node key.

      +

    Returns Promise<boolean>

    true if the task function was removed, false otherwise.

    +
    • Sends a message to worker given its worker node key.

      +

    Returns void

    • Sends a message to worker given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -
      • message: MessageValue<Data, unknown>

        The message.

        -
      • Optional transferList: TransferListItem[]

        The optional array of transferable objects.

        -

      Returns void

    • Sets the default task function in this pool.

      +
    • message: MessageValue<Data, unknown>

      The message.

      +
    • Optional transferList: TransferListItem[]

      The optional array of transferable objects.

      +

    Returns void

    • Sets the worker node tasks queue options in this pool.

      +

    Returns Promise<boolean>

    true if the default task function was set, false otherwise.

    +
    • Sets the worker choice strategy in this pool.

      +

    Returns void

    • Sets the worker choice strategy in this pool.

      Parameters

      • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

        The worker choice strategy.

      • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

        The worker choice strategy options.

        -

      Returns void

    • Sets the worker choice strategy options in this pool.

      +

    Returns void

    • Setup hook to execute code before worker nodes are created in the abstract constructor. +

    Returns void

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/FixedClusterPool.html b/docs/classes/FixedClusterPool.html index 0096547f..4794076d 100644 --- a/docs/classes/FixedClusterPool.html +++ b/docs/classes/FixedClusterPool.html @@ -1,9 +1,9 @@ -FixedClusterPool | poolifier - v3.1.13

    Class FixedClusterPool<Data, Response>

    A cluster pool with a fixed number of workers.

    +FixedClusterPool | poolifier - v3.1.14

    Class FixedClusterPool<Data, Response>

    A cluster pool with a fixed number of workers.

    Author

    Christopher Quadflieg

    Since

    2.0.0

    -

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Hierarchy

    Constructors

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Constructors

    • Constructs a new poolifier fixed cluster pool.

      -

      Type Parameters

      • Data = unknown

      • Response = unknown

      Parameters

      • numberOfWorkers: number

        Number of workers for this pool.

        +

    Constructors

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. +

  • Optional maximumNumberOfWorkers: number
  • Returns FixedClusterPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

    Events that can currently be listened to:

      @@ -68,108 +68,108 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'taskError': Emitted when an error occurs while executing a task.
    • 'backPressure': Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
    -
    filePath: string

    Path to the worker file.

    -
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    -
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    +
    filePath: string

    Path to the worker file.

    +
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    +
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    • key: The message id of each submitted task.
    • value: An object that contains the worker, the execution response promise resolve and reject callbacks.

    When we receive a message from the worker, we get a map entry with the promise resolve/reject bound to the message id.

    -
    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    -
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    +
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    +

    Accessors

    • get busy(): boolean
    • Whether the pool is busy or not.

      The pool busyness boolean status.

      -

      Returns boolean

    • get full(): boolean
    • Whether the pool is full or not.

      The pool filling boolean status.

      -

      Returns boolean

    • get type(): "fixed" | "dynamic"
    • The pool type.

      If it is 'dynamic', it provides the max property.

      -

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      +

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      Returns number

      The pool utilization.

      -
    • get worker(): "thread" | "cluster"
    • The worker type.

      -

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. +

    • get worker(): "thread" | "cluster"
    • The worker type.

      +

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. If a task function with the same name already exists, it will be overwritten.

      Parameters

      • name: string

        The name of the task function.

        -
      • fn: TaskFunction<Data, Response>

        The task function.

        -

      Returns Promise<boolean>

      true if the task function was added, false otherwise.

      +
  • fn: TaskFunction<Data, Response>

    The task function.

    +
  • Returns Promise<boolean>

    true if the task function was added, false otherwise.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function.

    -
    • Method hooked up after a worker node has been newly created. +

    • message: MessageValue<Response, unknown>

      The received message.

      +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

    • Creates a new, completely set up dynamic worker node.

      +
    • task: Task<Data>

      The task to execute.

      +

    Returns void

    • Deregisters a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Enables/disables the worker node tasks queue in this pool.

      +

    Returns Promise<void>

    • Executes the specified function in the worker constructor with the task data input parameter.

      -

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

        +

      Returns void

    • Executes the specified function in the worker constructor with the task data input parameter.

      +

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

      • Optional name: string

        The optional name of the task function to execute. If not specified, the default task function will be executed.

        -
      • Optional transferList: TransferListItem[]

        An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        -

      Returns Promise<Response>

      Promise that will be fulfilled when the task is completed.

      -
    • Gets the worker information given its worker node key.

      +
    • Optional transferList: TransferListItem[]

      An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

      +

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

    +
    • Whether the specified task function exists in this pool.

      Parameters

      • name: string

        The name of the task function.

      Returns boolean

      true if the task function exists, false otherwise.

      -
    • Internal

      Whether the worker node has back pressure (i.e. its tasks queue is full).

      Parameters

      • workerNodeKey: number

        The worker node key.

      Returns boolean

      true if the worker node has back pressure, false otherwise.

      -
    • Registers once a listener callback on the worker given its worker node key.

      -

      Type Parameters

      • Message

      Parameters

    • Registers once a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Registers a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Removes a task function from this pool.

      +

    Returns void

    • Removes a task function from this pool.

      Parameters

      • name: string

        The name of the task function.

        -

      Returns Promise<boolean>

      true if the task function was removed, false otherwise.

      -
    • Sends the startup message to worker given its worker node key.

      +

    Returns Promise<boolean>

    true if the task function was removed, false otherwise.

    +
    • Sends a message to worker given its worker node key.

      +

    Returns void

    • Sets the default task function in this pool.

      +
    • message: MessageValue<Data, unknown>

      The message.

      +

    Returns void

    • Sets the default task function in this pool.

      Parameters

      • name: string

        The name of the task function.

        -

      Returns Promise<boolean>

      true if the default task function was set, false otherwise.

      -
    • Sets the worker node tasks queue options in this pool.

      +

    Returns Promise<boolean>

    true if the default task function was set, false otherwise.

    +
    • Sets the worker choice strategy in this pool.

      +

    Returns void

    • Sets the worker choice strategy in this pool.

      Parameters

      • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

        The worker choice strategy.

      • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

        The worker choice strategy options.

        -

      Returns void

    • Sets the worker choice strategy options in this pool.

      +

    Returns void

    • Setup hook to execute code before worker nodes are created in the abstract constructor. +

    Returns void

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/FixedThreadPool.html b/docs/classes/FixedThreadPool.html index eb735e9d..303abf5d 100644 --- a/docs/classes/FixedThreadPool.html +++ b/docs/classes/FixedThreadPool.html @@ -1,9 +1,9 @@ -FixedThreadPool | poolifier - v3.1.13

    Class FixedThreadPool<Data, Response>

    A thread pool with a fixed number of threads.

    +FixedThreadPool | poolifier - v3.1.14

    Class FixedThreadPool<Data, Response>

    A thread pool with a fixed number of threads.

    Author

    Alessandro Pio Ardizio

    Since

    0.0.1

    -

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Hierarchy

    Constructors

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Constructors

    • Constructs a new poolifier fixed thread pool.

      -

      Type Parameters

      • Data = unknown

      • Response = unknown

      Parameters

      • numberOfThreads: number

        Number of threads for this pool.

        +

    Constructors

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. +

  • Optional maximumNumberOfThreads: number
  • Returns FixedThreadPool<Data, Response>

    Properties

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

    Events that can currently be listened to:

      @@ -68,109 +68,109 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'taskError': Emitted when an error occurs while executing a task.
    • 'backPressure': Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
    -
    filePath: string

    Path to the worker file.

    -
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    -
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    -
    opts: PoolOptions<Worker>

    Options for the pool.

    -
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    +
    filePath: string

    Path to the worker file.

    +
    maximumNumberOfWorkers?: number

    Maximum number of workers that this pool manages.

    +
    minimumNumberOfWorkers: number

    Minimum number of workers that this pool manages.

    +
    opts: PoolOptions<Worker>

    Options for the pool.

    +
    promiseResponseMap: Map<string, PromiseResponseWrapper<Response>> = ...

    The task execution response promise map:

    • key: The message id of each submitted task.
    • value: An object that contains the worker, the execution response promise resolve and reject callbacks.

    When we receive a message from the worker, we get a map entry with the promise resolve/reject bound to the message id.

    -
    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    -
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    -

    Accessors

    workerChoiceStrategyContext: WorkerChoiceStrategyContext<Worker, Data, Response>

    Worker choice strategy context referencing a worker choice algorithm implementation.

    +
    workerNodes: IWorkerNode<Worker, Data>[] = []

    Pool worker nodes.

    +

    Accessors

    • get busy(): boolean
    • Whether the pool is busy or not.

      The pool busyness boolean status.

      -

      Returns boolean

    • get full(): boolean
    • Whether the pool is full or not.

      The pool filling boolean status.

      -

      Returns boolean

    • get type(): "fixed" | "dynamic"
    • The pool type.

      If it is 'dynamic', it provides the max property.

      -

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      +

      Returns "fixed" | "dynamic"

    • get utilization(): number
    • The approximate pool utilization.

      Returns number

      The pool utilization.

      -
    • get worker(): "thread" | "cluster"
    • The worker type.

      -

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. +

    • get worker(): "thread" | "cluster"
    • The worker type.

      +

      Returns "thread" | "cluster"

    Methods

    • Adds a task function to this pool. If a task function with the same name already exists, it will be overwritten.

      Parameters

      • name: string

        The name of the task function.

        -
      • fn: TaskFunction<Data, Response>

        The task function.

        -

      Returns Promise<boolean>

      true if the task function was added, false otherwise.

      +
  • fn: TaskFunction<Data, Response>

    The task function.

    +
  • Returns Promise<boolean>

    true if the task function was added, false otherwise.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function.

    -
    • Method hooked up after a worker node has been newly created. +

    • message: MessageValue<Response, unknown>

      The received message.

      +

    Returns void

    • Hook executed before the worker task execution. +

    Returns void

    • Creates a new, completely set up dynamic worker node.

      +
    • task: Task<Data>

      The task to execute.

      +

    Returns void

    • Deregisters a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Terminates the worker node given its worker node key.

      +

    Returns void

    • Enables/disables the worker node tasks queue in this pool.

      +

    Returns Promise<void>

    • Executes the specified function in the worker constructor with the task data input parameter.

      -

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

        +

      Returns void

    • Executes the specified function in the worker constructor with the task data input parameter.

      +

      Parameters

      • Optional data: Data

        The optional task input data for the specified task function. This can only be structured-cloneable data.

      • Optional name: string

        The optional name of the task function to execute. If not specified, the default task function will be executed.

        -
      • Optional transferList: TransferListItem[]

        An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        -

      Returns Promise<Response>

      Promise that will be fulfilled when the task is completed.

      -
    • Gets the worker information given its worker node key.

      +
    • Optional transferList: TransferListItem[]

      An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

      +

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

    +
    • Whether the specified task function exists in this pool.

      Parameters

      • name: string

        The name of the task function.

      Returns boolean

      true if the task function exists, false otherwise.

      -
    • Internal

      Whether the worker node has back pressure (i.e. its tasks queue is full).

      Parameters

      • workerNodeKey: number

        The worker node key.

      Returns boolean

      true if the worker node has back pressure, false otherwise.

      -
    • Registers once a listener callback on the worker given its worker node key.

      -

      Type Parameters

      • Message

      Parameters

    • Registers once a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Registers a listener callback on the worker given its worker node key.

      +

      Type Parameters

      • Message

      Parameters

      • workerNodeKey: number

        The worker node key.

      • listener: ((message) => void)

        The message listener callback.

        -
          • (message): void
          • Parameters

            Returns void

      Returns void

    • Removes a task function from this pool.

      +

    Returns void

    • Removes a task function from this pool.

      Parameters

      • name: string

        The name of the task function.

        -

      Returns Promise<boolean>

      true if the task function was removed, false otherwise.

      -
    • Sends the startup message to worker given its worker node key.

      +

    Returns Promise<boolean>

    true if the task function was removed, false otherwise.

    +
    • Sends a message to worker given its worker node key.

      +

    Returns void

    • Sends a message to worker given its worker node key.

      Parameters

      • workerNodeKey: number

        The worker node key.

        -
      • message: MessageValue<Data, unknown>

        The message.

        -
      • Optional transferList: TransferListItem[]

        The optional array of transferable objects.

        -

      Returns void

    • Sets the default task function in this pool.

      +
    • message: MessageValue<Data, unknown>

      The message.

      +
    • Optional transferList: TransferListItem[]

      The optional array of transferable objects.

      +

    Returns void

    • Sets the default task function in this pool.

      Parameters

      • name: string

        The name of the task function.

        -

      Returns Promise<boolean>

      true if the default task function was set, false otherwise.

      -
    • Sets the worker node tasks queue options in this pool.

      +

    Returns Promise<boolean>

    true if the default task function was set, false otherwise.

    +
    • Sets the worker choice strategy in this pool.

      +

    Returns void

    • Sets the worker choice strategy in this pool.

      Parameters

      • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

        The worker choice strategy.

      • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

        The worker choice strategy options.

        -

      Returns void

    • Sets the worker choice strategy options in this pool.

      +

    Returns void

    • Setup hook to execute code before worker nodes are created in the abstract constructor. +

    Returns void

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/Node.html b/docs/classes/Node.html index e4912c3a..c7e6529c 100644 --- a/docs/classes/Node.html +++ b/docs/classes/Node.html @@ -1,7 +1,7 @@ -Node | poolifier - v3.1.13

    Class Node<T>Internal

    Node.

    -

    Type Parameters

    • T

      Type of node data.

      -

    Constructors

    constructor +Node | poolifier - v3.1.14

    Class Node<T>Internal

    Node.

    +

    Type Parameters

    • T

      Type of node data.

      +

    Constructors

    Properties

    Constructors

    Properties

    data: T
    next?: Node<T>
    prev?: Node<T>

    Generated using TypeDoc

    \ No newline at end of file +

    Constructors

    Properties

    data: T
    next?: Node<T>
    prev?: Node<T>

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/ThreadWorker.html b/docs/classes/ThreadWorker.html index 463edc13..7ff9daf4 100644 --- a/docs/classes/ThreadWorker.html +++ b/docs/classes/ThreadWorker.html @@ -1,13 +1,13 @@ -ThreadWorker | poolifier - v3.1.13

    Class ThreadWorker<Data, Response>

    A thread worker used by a poolifier ThreadPool.

    +ThreadWorker | poolifier - v3.1.14

    Class ThreadWorker<Data, Response>

    A thread worker used by a poolifier ThreadPool.

    When this worker is inactive for more than the given maxInactiveTime, it will send a termination request to its main thread.

    If you use a DynamicThreadPool the extra workers that were created will be terminated, but the minimum number of workers will be guaranteed.

    Author

    Alessandro Pio Ardizio

    Since

    0.0.1

    -

    Type Parameters

    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of response the worker sends back to the main thread. This can only be structured-cloneable data.

      -

    Hierarchy

    Constructors

    Type Parameters

    • Data = unknown

      Type of data this worker receives from pool's execution. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of response the worker sends back to the main thread. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Constructors

    Properties

    activeInterval? isMain lastTaskTimestamp @@ -32,53 +32,53 @@ but the minimum number of workers will be guaranteed.

    sendTaskFunctionNamesToMainWorker sendToMainWorker setDefaultTaskFunction -

    Constructors

    • Constructs a new poolifier thread worker.

      -

      Type Parameters

      • Data = unknown

      • Response = unknown

      Parameters

      • taskFunctions: TaskFunction<Data, Response> | TaskFunctions<Data, Response>

        Task function(s) processed by the worker when the pool's execution function is invoked.

        +

    Constructors

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    -
    isMain: boolean

    Whether this is the main worker or not.

    -
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    -
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    -
    port?: MessagePort

    Message port used to communicate with the main worker.

    -
    statistics: WorkerStatistics

    Performance statistics computation requirements.

    -
    taskFunctions: Map<string, TaskFunction<Data, Response>>

    Task function(s) processed by the worker when the pool's execution function is invoked.

    -

    Accessors

    Methods

    Returns ThreadWorker<Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    +
    isMain: boolean

    Whether this is the main worker or not.

    +
    lastTaskTimestamp: number

    Timestamp of the last task processed by this worker.

    +
    opts: WorkerOptions = DEFAULT_WORKER_OPTIONS

    Options for the worker.

    +
    port?: MessagePort

    Message port used to communicate with the main worker.

    +
    statistics: WorkerStatistics

    Performance statistics computation requirements.

    +
    taskFunctions: Map<string, TaskFunction<Data, Response>>

    Task function(s) processed by the worker when the pool's execution function is invoked.

    +

    Accessors

    Methods

    • Handles an error and convert it to a string so it can be sent back to the main worker.

      +

      Parameters

      • error: string | Error

        The error raised by the worker.

      Returns string

      The error message.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/classes/WorkerChoiceStrategyContext.html b/docs/classes/WorkerChoiceStrategyContext.html index 7bbb6118..4d342909 100644 --- a/docs/classes/WorkerChoiceStrategyContext.html +++ b/docs/classes/WorkerChoiceStrategyContext.html @@ -1,9 +1,9 @@ -WorkerChoiceStrategyContext | poolifier - v3.1.13

    Class WorkerChoiceStrategyContext<Worker, Data, Response>

    The worker choice strategy context.

    -

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -
    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Constructors

    Properties

    opts? +WorkerChoiceStrategyContext | poolifier - v3.1.14

    Class WorkerChoiceStrategyContext<Worker, Data, Response>

    The worker choice strategy context.

    +

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      +
    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Constructors

    • Worker choice strategy context constructor.

      -

      Type Parameters

      • Worker extends IWorker

      • Data = unknown

      • Response = unknown

      Parameters

      • pool: IPool<Worker, Data, Response>

        The pool instance.

        +

    Constructors

    Properties

    The worker choice strategy options.

    -
    workerChoiceStrategies: Map<"ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN", IWorkerChoiceStrategy>
    workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN" = WorkerChoiceStrategies.ROUND_ROBIN

    The worker choice strategy.

    -

    Methods

    • Executes the worker choice strategy in the context algorithm.

      +
    • Optional opts: WorkerChoiceStrategyOptions

      The worker choice strategy options.

      +

    Returns WorkerChoiceStrategyContext<Worker, Data, Response>

    Properties

    retries: number

    The number of worker choice strategy execution retries.

    +
    workerChoiceStrategies: Map<"ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN", IWorkerChoiceStrategy>

    The worker choice strategy instances registered in the context.

    +
    workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN" = WorkerChoiceStrategies.ROUND_ROBIN

    The worker choice strategy.

    +

    Methods

    • Sets the worker choice strategy to use in the context.

      Parameters

      • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

        The worker choice strategy to set.

        -

      Returns void

    • Updates the worker node key in the worker choice strategy in the context internals.

      +

    Returns void

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/functions/availableParallelism.html b/docs/functions/availableParallelism.html index 84545631..12f81466 100644 --- a/docs/functions/availableParallelism.html +++ b/docs/functions/availableParallelism.html @@ -1,4 +1,4 @@ -availableParallelism | poolifier - v3.1.13

    Function availableParallelism

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html new file mode 100644 index 00000000..eed28738 --- /dev/null +++ b/docs/hierarchy.html @@ -0,0 +1 @@ +poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index fe20bca2..d7a3d78b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ -poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html b/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html index a0658f8b..a5589045 100644 --- a/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html +++ b/docs/interfaces/EventLoopUtilizationMeasurementStatistics.html @@ -1,5 +1,5 @@ -EventLoopUtilizationMeasurementStatistics | poolifier - v3.1.13

    Interface EventLoopUtilizationMeasurementStatisticsInternal

    Event loop utilization measurement statistics.

    -
    interface EventLoopUtilizationMeasurementStatistics {
        active: MeasurementStatistics;
        idle: MeasurementStatistics;
        utilization?: number;
    }

    Properties

    active +EventLoopUtilizationMeasurementStatistics | poolifier - v3.1.14

    Interface EventLoopUtilizationMeasurementStatisticsInternal

    Event loop utilization measurement statistics.

    +
    interface EventLoopUtilizationMeasurementStatistics {
        active: MeasurementStatistics;
        idle: MeasurementStatistics;
        utilization?: number;
    }

    Properties

    utilization?: number

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    utilization?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/IPool.html b/docs/interfaces/IPool.html index 44922a7d..6cdc34d5 100644 --- a/docs/interfaces/IPool.html +++ b/docs/interfaces/IPool.html @@ -1,8 +1,8 @@ -IPool | poolifier - v3.1.13

    Interface IPool<Worker, Data, Response>

    Contract definition for a poolifier pool.

    -
    interface IPool {
        addTaskFunction: ((name, fn) => Promise<boolean>);
        destroy: (() => Promise<void>);
        emitter?: EventEmitterAsyncResource;
        enableTasksQueue: ((enable, tasksQueueOptions?) => void);
        execute: ((data?, name?, transferList?) => Promise<Response>);
        hasTaskFunction: ((name) => boolean);
        hasWorkerNodeBackPressure: ((workerNodeKey) => boolean);
        info: PoolInfo;
        listTaskFunctionNames: (() => string[]);
        removeTaskFunction: ((name) => Promise<boolean>);
        setDefaultTaskFunction: ((name) => Promise<boolean>);
        setTasksQueueOptions: ((tasksQueueOptions) => void);
        setWorkerChoiceStrategy: ((workerChoiceStrategy, workerChoiceStrategyOptions?) => void);
        setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions) => void);
        start: (() => void);
        workerNodes: IWorkerNode<Worker, Data>[];
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker which manages this pool.

      -
    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Implemented by

    Properties

    addTaskFunction +IPool | poolifier - v3.1.14

    Interface IPool<Worker, Data, Response>

    Contract definition for a poolifier pool.

    +
    interface IPool<Worker, Data, Response> {
        addTaskFunction: ((name, fn) => Promise<boolean>);
        destroy: (() => Promise<void>);
        emitter?: EventEmitterAsyncResource;
        enableTasksQueue: ((enable, tasksQueueOptions?) => void);
        execute: ((data?, name?, transferList?) => Promise<Response>);
        hasTaskFunction: ((name) => boolean);
        hasWorkerNodeBackPressure: ((workerNodeKey) => boolean);
        info: PoolInfo;
        listTaskFunctionNames: (() => string[]);
        removeTaskFunction: ((name) => Promise<boolean>);
        setDefaultTaskFunction: ((name) => Promise<boolean>);
        setTasksQueueOptions: ((tasksQueueOptions) => void);
        setWorkerChoiceStrategy: ((workerChoiceStrategy, workerChoiceStrategyOptions?) => void);
        setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions) => void);
        start: (() => void);
        workerNodes: IWorkerNode<Worker, Data>[];
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker which manages this pool.

      +
    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Implemented by

    Properties

    addTaskFunction: ((name, fn) => Promise<boolean>)

    Type declaration

      • (name, fn): Promise<boolean>
      • Adds a task function to this pool. +

    Properties

    addTaskFunction: ((name, fn) => Promise<boolean>)

    Adds a task function to this pool. +If a task function with the same name already exists, it will be overwritten.

    +

    Type declaration

      • (name, fn): Promise<boolean>
      • Adds a task function to this pool. If a task function with the same name already exists, it will be overwritten.

        Parameters

        • name: string

          The name of the task function.

          -
        • fn: TaskFunction<Data, Response>

          The task function.

          -

        Returns Promise<boolean>

        true if the task function was added, false otherwise.

        +
  • fn: TaskFunction<Data, Response>

    The task function.

    +
  • Returns Promise<boolean>

    true if the task function was added, false otherwise.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function.

    -
    destroy: (() => Promise<void>)

    Type declaration

      • (): Promise<void>
      • Terminates all workers in this pool.

        -

        Returns Promise<void>

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. +

    Param: name

    The name of the task function.

    +

    Param: fn

    The task function.

    +

    Returns

    true if the task function was added, false otherwise.

    +

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the name parameter is not a string or an empty string.

    +

    Throws

    https://nodejs.org/api/errors.html#class-typeerror If the fn parameter is not a function.

    +
    destroy: (() => Promise<void>)

    Terminates all workers in this pool.

    +

    Type declaration

      • (): Promise<void>
      • Terminates all workers in this pool.

        +

        Returns Promise<void>

    emitter?: EventEmitterAsyncResource

    Event emitter integrated with async resource on which events can be listened to. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

    Events that can currently be listened to:

      @@ -38,36 +46,66 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
    • 'taskError': Emitted when an error occurs while executing a task.
    • 'backPressure': Emitted when all worker nodes have back pressure (i.e. their tasks queue is full: queue size >= maximum queue size).
    -
    enableTasksQueue: ((enable, tasksQueueOptions?) => void)

    Type declaration

      • (enable, tasksQueueOptions?): void
      • Enables/disables the worker node tasks queue in this pool.

        +
    enableTasksQueue: ((enable, tasksQueueOptions?) => void)

    Enables/disables the worker node tasks queue in this pool.

    +

    Type declaration

      • (enable, tasksQueueOptions?): void
      • Enables/disables the worker node tasks queue in this pool.

        Parameters

        • enable: boolean

          Whether to enable or disable the worker node tasks queue.

        • Optional tasksQueueOptions: TasksQueueOptions

          The worker node tasks queue options.

          -

        Returns void

    execute: ((data?, name?, transferList?) => Promise<Response>)

    Type declaration

      • (data?, name?, transferList?): Promise<Response>
      • Executes the specified function in the worker constructor with the task data input parameter.

        -

        Parameters

        • Optional data: Data

          The optional task input data for the specified task function. This can only be structured-cloneable data.

          +

        Returns void

    Param: enable

    Whether to enable or disable the worker node tasks queue.

    +

    Param: tasksQueueOptions

    The worker node tasks queue options.

    +
    execute: ((data?, name?, transferList?) => Promise<Response>)

    Executes the specified function in the worker constructor with the task data input parameter.

    +

    Type declaration

      • (data?, name?, transferList?): Promise<Response>
      • Executes the specified function in the worker constructor with the task data input parameter.

        +

        Parameters

        • Optional data: Data

          The optional task input data for the specified task function. This can only be structured-cloneable data.

        • Optional name: string

          The optional name of the task function to execute. If not specified, the default task function will be executed.

          -
        • Optional transferList: TransferListItem[]

          An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

          -

        Returns Promise<Response>

        Promise that will be fulfilled when the task is completed.

        -
    hasTaskFunction: ((name) => boolean)

    Type declaration

      • (name): boolean
      • Whether the specified task function exists in this pool.

        +
      • Optional transferList: TransferListItem[]

        An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

        +

    Returns Promise<Response>

    Promise that will be fulfilled when the task is completed.

    +

    Param: data

    The optional task input data for the specified task function. This can only be structured-cloneable data.

    +

    Param: name

    The optional name of the task function to execute. If not specified, the default task function will be executed.

    +

    Param: transferList

    An optional array of transferable objects to transfer ownership of. Ownership of the transferred objects is given to the chosen pool's worker_threads worker and they should not be used in the main thread afterwards.

    +

    Returns

    Promise that will be fulfilled when the task is completed.

    +
    hasTaskFunction: ((name) => boolean)

    Whether the specified task function exists in this pool.

    +

    Type declaration

      • (name): boolean
      • Whether the specified task function exists in this pool.

        Parameters

        • name: string

          The name of the task function.

        Returns boolean

        true if the task function exists, false otherwise.

        -
    hasWorkerNodeBackPressure: ((workerNodeKey) => boolean)

    Type declaration

      • (workerNodeKey): boolean
      • Internal

        Whether the worker node has back pressure (i.e. its tasks queue is full).

        +

    Param: name

    The name of the task function.

    +

    Returns

    true if the task function exists, false otherwise.

    +
    hasWorkerNodeBackPressure: ((workerNodeKey) => boolean)

    Whether the worker node has back pressure (i.e. its tasks queue is full).

    +

    Type declaration

      • (workerNodeKey): boolean
      • Internal

        Whether the worker node has back pressure (i.e. its tasks queue is full).

        Parameters

        • workerNodeKey: number

          The worker node key.

        Returns boolean

        true if the worker node has back pressure, false otherwise.

        -
    info: PoolInfo

    Pool information.

    -
    listTaskFunctionNames: (() => string[])

    Type declaration

      • (): string[]
      • Lists the names of task function available in this pool.

        +

    Param: workerNodeKey

    The worker node key.

    +

    Returns

    true if the worker node has back pressure, false otherwise.

    +
    info: PoolInfo

    Pool information.

    +
    listTaskFunctionNames: (() => string[])

    Lists the names of task function available in this pool.

    +

    Type declaration

      • (): string[]
      • Lists the names of task function available in this pool.

        Returns string[]

        The names of task function available in this pool.

        -
    removeTaskFunction: ((name) => Promise<boolean>)

    Type declaration

      • (name): Promise<boolean>
      • Removes a task function from this pool.

        +

    Returns

    The names of task function available in this pool.

    +
    removeTaskFunction: ((name) => Promise<boolean>)

    Removes a task function from this pool.

    +

    Type declaration

      • (name): Promise<boolean>
      • Removes a task function from this pool.

        Parameters

        • name: string

          The name of the task function.

          -

        Returns Promise<boolean>

        true if the task function was removed, false otherwise.

        -
    setDefaultTaskFunction: ((name) => Promise<boolean>)

    Type declaration

      • (name): Promise<boolean>
      • Sets the default task function in this pool.

        +

    Returns Promise<boolean>

    true if the task function was removed, false otherwise.

    +

    Param: name

    The name of the task function.

    +

    Returns

    true if the task function was removed, false otherwise.

    +
    setDefaultTaskFunction: ((name) => Promise<boolean>)

    Sets the default task function in this pool.

    +

    Type declaration

      • (name): Promise<boolean>
      • Sets the default task function in this pool.

        Parameters

        • name: string

          The name of the task function.

          -

        Returns Promise<boolean>

        true if the default task function was set, false otherwise.

        -
    setTasksQueueOptions: ((tasksQueueOptions) => void)

    Type declaration

      • (tasksQueueOptions): void
      • Sets the worker node tasks queue options in this pool.

        +

    Returns Promise<boolean>

    true if the default task function was set, false otherwise.

    +

    Param: name

    The name of the task function.

    +

    Returns

    true if the default task function was set, false otherwise.

    +
    setTasksQueueOptions: ((tasksQueueOptions) => void)

    Sets the worker node tasks queue options in this pool.

    +

    Type declaration

      • (tasksQueueOptions): void
      • Sets the worker node tasks queue options in this pool.

        Parameters

        Returns void

    setWorkerChoiceStrategy: ((workerChoiceStrategy, workerChoiceStrategyOptions?) => void)

    Type declaration

      • (workerChoiceStrategy, workerChoiceStrategyOptions?): void
      • Sets the worker choice strategy in this pool.

        +

    Returns void

    Param: tasksQueueOptions

    The worker node tasks queue options.

    +
    setWorkerChoiceStrategy: ((workerChoiceStrategy, workerChoiceStrategyOptions?) => void)

    Sets the worker choice strategy in this pool.

    +

    Type declaration

      • (workerChoiceStrategy, workerChoiceStrategyOptions?): void
      • Sets the worker choice strategy in this pool.

        Parameters

        • workerChoiceStrategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

          The worker choice strategy.

        • Optional workerChoiceStrategyOptions: WorkerChoiceStrategyOptions

          The worker choice strategy options.

          -

        Returns void

    setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions) => void)

    Type declaration

      • (workerChoiceStrategyOptions): void
      • Sets the worker choice strategy options in this pool.

        +

    Returns void

    Param: workerChoiceStrategy

    The worker choice strategy.

    +

    Param: workerChoiceStrategyOptions

    The worker choice strategy options.

    +
    setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions) => void)

    Sets the worker choice strategy options in this pool.

    +

    Type declaration

      • (workerChoiceStrategyOptions): void
      • Sets the worker choice strategy options in this pool.

        Parameters

        Returns void

    start: (() => void)

    Type declaration

      • (): void
      • Starts the minimum number of workers in this pool.

        -

        Returns void

    workerNodes: IWorkerNode<Worker, Data>[]

    Pool worker nodes.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Returns void

    Param: workerChoiceStrategyOptions

    The worker choice strategy options.

    +
    start: (() => void)

    Starts the minimum number of workers in this pool.

    +

    Type declaration

      • (): void
      • Starts the minimum number of workers in this pool.

        +

        Returns void

    workerNodes: IWorkerNode<Worker, Data>[]

    Pool worker nodes.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/IWorker.html b/docs/interfaces/IWorker.html index ed706a0a..f36dbb9b 100644 --- a/docs/interfaces/IWorker.html +++ b/docs/interfaces/IWorker.html @@ -1,21 +1,31 @@ -IWorker | poolifier - v3.1.13

    Interface IWorker

    Worker interface.

    -
    interface IWorker {
        disconnect?: (() => void);
        id?: number;
        kill?: ((signal?) => void);
        on: ((event, handler) => void);
        once: ((event, handler) => void);
        terminate?: (() => Promise<number>);
        threadId?: number;
    }

    Properties

    disconnect? +IWorker | poolifier - v3.1.14

    Interface IWorker

    Worker interface.

    +
    interface IWorker {
        disconnect?: (() => void);
        id?: number;
        kill?: ((signal?) => void);
        on: ((event, handler) => void);
        once: ((event, handler) => void);
        terminate?: (() => Promise<number>);
        threadId?: number;
    }

    Properties

    disconnect?: (() => void)

    Type declaration

      • (): void
      • Cluster worker disconnect.

        -

        Returns void

    id?: number

    Cluster worker id.

    -
    kill?: ((signal?) => void)

    Type declaration

      • (signal?): void
      • Cluster worker kill.

        -

        Parameters

        • Optional signal: string

        Returns void

    on: ((event, handler) => void)

    Type declaration

      • (event, handler): void
      • Registers an event handler.

        +

    Properties

    disconnect?: (() => void)

    Cluster worker disconnect.

    +

    Type declaration

      • (): void
      • Cluster worker disconnect.

        +

        Returns void

    id?: number

    Cluster worker id.

    +
    kill?: ((signal?) => void)

    Cluster worker kill.

    +

    Type declaration

      • (signal?): void
      • Cluster worker kill.

        +

        Parameters

        • Optional signal: string

        Returns void

    on: ((event, handler) => void)

    Registers an event handler.

    +

    Type declaration

    once: ((event, handler) => void)

    Type declaration

      • (event, handler): void
      • Registers once an event handler.

        +

    Returns void

    Param: event

    The event.

    +

    Param: handler

    The event handler.

    +
    once: ((event, handler) => void)

    Registers once an event handler.

    +

    Type declaration

    terminate?: (() => Promise<number>)

    Type declaration

      • (): Promise<number>
      • Stop all JavaScript execution in the worker thread as soon as possible. +

    Returns void

    Param: event

    The event.

    +

    Param: handler

    The event handler.

    +
    terminate?: (() => Promise<number>)

    Stop all JavaScript execution in the worker thread as soon as possible. Returns a Promise for the exit code that is fulfilled when the 'exit' event is emitted.

    -

    Returns Promise<number>

    threadId?: number

    Worker thread worker id.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Type declaration

      • (): Promise<number>
      • Stop all JavaScript execution in the worker thread as soon as possible. +Returns a Promise for the exit code that is fulfilled when the 'exit' event is emitted.

        +

        Returns Promise<number>

    threadId?: number

    Worker thread worker id.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/IWorkerChoiceStrategy.html b/docs/interfaces/IWorkerChoiceStrategy.html index 7bfb900d..d3329028 100644 --- a/docs/interfaces/IWorkerChoiceStrategy.html +++ b/docs/interfaces/IWorkerChoiceStrategy.html @@ -1,28 +1,39 @@ -IWorkerChoiceStrategy | poolifier - v3.1.13

    Interface IWorkerChoiceStrategyInternal

    Worker choice strategy interface.

    -
    interface IWorkerChoiceStrategy {
        choose: (() => undefined | number);
        hasPoolWorkerNodesReady: (() => boolean);
        remove: ((workerNodeKey) => boolean);
        reset: (() => boolean);
        setOptions: ((opts) => void);
        strategyPolicy: StrategyPolicy;
        taskStatisticsRequirements: TaskStatisticsRequirements;
        update: ((workerNodeKey) => boolean);
    }

    Properties

    choose -hasPoolWorkerNodesReady +IWorkerChoiceStrategy | poolifier - v3.1.14

    Interface IWorkerChoiceStrategyInternal

    Worker choice strategy interface.

    +
    interface IWorkerChoiceStrategy {
        choose: (() => undefined | number);
        remove: ((workerNodeKey) => boolean);
        reset: (() => boolean);
        setOptions: ((opts) => void);
        strategyPolicy: StrategyPolicy;
        taskStatisticsRequirements: TaskStatisticsRequirements;
        update: ((workerNodeKey) => boolean);
    }

    Properties

    choose: (() => undefined | number)

    Type declaration

      • (): undefined | number
      • Chooses a worker node in the pool and returns its key. +

    Properties

    choose: (() => undefined | number)

    Chooses a worker node in the pool and returns its key. +If no worker nodes are not eligible, undefined is returned. +If undefined is returned, the caller retry.

    +

    Type declaration

      • (): undefined | number
      • Chooses a worker node in the pool and returns its key. If no worker nodes are not eligible, undefined is returned. If undefined is returned, the caller retry.

        Returns undefined | number

        The worker node key or undefined.

        -
    hasPoolWorkerNodesReady: (() => boolean)

    Type declaration

      • (): boolean
      • Whether the pool has worker nodes ready or not.

        -

        Returns boolean

        Whether the pool has worker nodes ready or not.

        -
    remove: ((workerNodeKey) => boolean)

    Type declaration

      • (workerNodeKey): boolean
      • Removes the worker node key from strategy internals.

        +

    Returns

    The worker node key or undefined.

    +
    remove: ((workerNodeKey) => boolean)

    Removes the worker node key from strategy internals.

    +

    Type declaration

      • (workerNodeKey): boolean
      • Removes the worker node key from strategy internals.

        Parameters

        • workerNodeKey: number

          The worker node key.

        Returns boolean

        true if the worker node key is removed, false otherwise.

        -
    reset: (() => boolean)

    Type declaration

      • (): boolean
      • Resets strategy internals.

        +

    Param: workerNodeKey

    The worker node key.

    +

    Returns

    true if the worker node key is removed, false otherwise.

    +
    reset: (() => boolean)

    Resets strategy internals.

    +

    Type declaration

      • (): boolean
      • Resets strategy internals.

        Returns boolean

        true if the reset is successful, false otherwise.

        -
    setOptions: ((opts) => void)

    Type declaration

      • (opts): void
      • Sets the worker choice strategy options.

        -

        Parameters

        Returns void

    strategyPolicy: StrategyPolicy

    Strategy policy.

    -
    taskStatisticsRequirements: TaskStatisticsRequirements

    Tasks statistics requirements.

    -
    update: ((workerNodeKey) => boolean)

    Type declaration

      • (workerNodeKey): boolean
      • Updates the worker node key strategy internals. +

    Returns

    true if the reset is successful, false otherwise.

    +
    setOptions: ((opts) => void)

    Sets the worker choice strategy options.

    +

    Type declaration

      • (opts): void
      • Sets the worker choice strategy options.

        +

        Parameters

        Returns void

    Param: opts

    The worker choice strategy options.

    +
    strategyPolicy: StrategyPolicy

    Strategy policy.

    +
    taskStatisticsRequirements: TaskStatisticsRequirements

    Tasks statistics requirements.

    +
    update: ((workerNodeKey) => boolean)

    Updates the worker node key strategy internals. +This is called after a task has been executed on a worker node.

    +

    Type declaration

      • (workerNodeKey): boolean
      • Updates the worker node key strategy internals. This is called after a task has been executed on a worker node.

        Parameters

        • workerNodeKey: number

        Returns boolean

        true if the update is successful, false otherwise.

        -

    Generated using TypeDoc

    \ No newline at end of file +

    Returns

    true if the update is successful, false otherwise.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/IWorkerNode.html b/docs/interfaces/IWorkerNode.html index 9285ed97..a2e23260 100644 --- a/docs/interfaces/IWorkerNode.html +++ b/docs/interfaces/IWorkerNode.html @@ -1,7 +1,7 @@ -IWorkerNode | poolifier - v3.1.13

    Interface IWorkerNode<Worker, Data>Internal

    Worker node interface.

    -
    interface IWorkerNode {
        clearTasksQueue: (() => void);
        deleteTaskFunctionWorkerUsage: ((name) => boolean);
        dequeueTask: (() => undefined | Task<Data>);
        enqueueTask: ((task) => number);
        getTaskFunctionWorkerUsage: ((name) => undefined | WorkerUsage);
        hasBackPressure: (() => boolean);
        info: WorkerInfo;
        messageChannel?: MessageChannel;
        popTask: (() => undefined | Task<Data>);
        registerOnceWorkerEventHandler: ((event, handler) => void);
        registerWorkerEventHandler: ((event, handler) => void);
        resetUsage: (() => void);
        strategyData?: StrategyData;
        tasksQueueBackPressureSize: number;
        tasksQueueSize: (() => number);
        terminate: (() => Promise<void>);
        unshiftTask: ((task) => number);
        usage: WorkerUsage;
        worker: Worker;
        [captureRejectionSymbol]?(error, event, ...args): void;
        addListener(eventName, listener): IWorkerNode<Worker, Data>;
        emit(eventName, ...args): boolean;
        eventNames(): (string | symbol)[];
        getMaxListeners(): number;
        listenerCount(eventName, listener?): number;
        listeners(eventName): Function[];
        off(eventName, listener): IWorkerNode<Worker, Data>;
        on(eventName, listener): IWorkerNode<Worker, Data>;
        once(eventName, listener): IWorkerNode<Worker, Data>;
        prependListener(eventName, listener): IWorkerNode<Worker, Data>;
        prependOnceListener(eventName, listener): IWorkerNode<Worker, Data>;
        rawListeners(eventName): Function[];
        removeAllListeners(event?): IWorkerNode<Worker, Data>;
        removeListener(eventName, listener): IWorkerNode<Worker, Data>;
        setMaxListeners(n): IWorkerNode<Worker, Data>;
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -
    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -

    Hierarchy

    • EventEmitter
      • IWorkerNode

    Properties

    clearTasksQueue +IWorkerNode | poolifier - v3.1.14

    Interface IWorkerNode<Worker, Data>Internal

    Worker node interface.

    +
    interface IWorkerNode<Worker, Data> {
        clearTasksQueue: (() => void);
        deleteTaskFunctionWorkerUsage: ((name) => boolean);
        dequeueTask: (() => undefined | Task<Data>);
        enqueueTask: ((task) => number);
        getTaskFunctionWorkerUsage: ((name) => undefined | WorkerUsage);
        hasBackPressure: (() => boolean);
        info: WorkerInfo;
        messageChannel?: MessageChannel;
        popTask: (() => undefined | Task<Data>);
        registerOnceWorkerEventHandler: ((event, handler) => void);
        registerWorkerEventHandler: ((event, handler) => void);
        resetUsage: (() => void);
        strategyData?: StrategyData;
        tasksQueueBackPressureSize: number;
        tasksQueueSize: (() => number);
        terminate: (() => Promise<void>);
        unshiftTask: ((task) => number);
        usage: WorkerUsage;
        worker: Worker;
        [captureRejectionSymbol]?(error, event, ...args): void;
        addListener(eventName, listener): this;
        emit(eventName, ...args): boolean;
        eventNames(): (string | symbol)[];
        getMaxListeners(): number;
        listenerCount(eventName, listener?): number;
        listeners(eventName): Function[];
        off(eventName, listener): this;
        on(eventName, listener): this;
        once(eventName, listener): this;
        prependListener(eventName, listener): this;
        prependOnceListener(eventName, listener): this;
        rawListeners(eventName): Function[];
        removeAllListeners(event?): this;
        removeListener(eventName, listener): this;
        setMaxListeners(n): this;
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      +
    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +

    Hierarchy

    • EventEmitter
      • IWorkerNode

    Properties

    clearTasksQueue: (() => void)

    Type declaration

      • (): void
      • Clears tasks queue.

        -

        Returns void

    deleteTaskFunctionWorkerUsage: ((name) => boolean)

    Type declaration

      • (name): boolean
      • Deletes task function worker usage statistics.

        +

    Properties

    clearTasksQueue: (() => void)

    Clears tasks queue.

    +

    Type declaration

      • (): void
      • Clears tasks queue.

        +

        Returns void

    deleteTaskFunctionWorkerUsage: ((name) => boolean)

    Deletes task function worker usage statistics.

    +

    Type declaration

      • (name): boolean
      • Deletes task function worker usage statistics.

        Parameters

        • name: string

          The task function name.

        Returns boolean

        true if the task function worker usage statistics were deleted, false otherwise.

        -
    dequeueTask: (() => undefined | Task<Data>)

    Type declaration

      • (): undefined | Task<Data>
      • Dequeue task.

        -

        Returns undefined | Task<Data>

        The dequeued task.

        -
    enqueueTask: ((task) => number)

    Type declaration

      • (task): number
      • Enqueue task.

        -

        Parameters

        • task: Task<Data>

          The task to queue.

          +

    Param: name

    The task function name.

    +

    Returns

    true if the task function worker usage statistics were deleted, false otherwise.

    +
    dequeueTask: (() => undefined | Task<Data>)

    Dequeue task.

    +

    Type declaration

      • (): undefined | Task<Data>
      • Dequeue task.

        +

        Returns undefined | Task<Data>

        The dequeued task.

        +

    Returns

    The dequeued task.

    +
    enqueueTask: ((task) => number)

    Enqueue task.

    +

    Type declaration

      • (task): number
      • Enqueue task.

        +

        Parameters

        Returns number

        The tasks queue size.

        -
    getTaskFunctionWorkerUsage: ((name) => undefined | WorkerUsage)

    Type declaration

      • (name): undefined | WorkerUsage
      • Gets task function worker usage statistics.

        +

    Param: task

    The task to queue.

    +

    Returns

    The tasks queue size.

    +
    getTaskFunctionWorkerUsage: ((name) => undefined | WorkerUsage)

    Gets task function worker usage statistics.

    +

    Type declaration

      • (name): undefined | WorkerUsage
      • Gets task function worker usage statistics.

        Parameters

        • name: string

          The task function name.

        Returns undefined | WorkerUsage

        The task function worker usage statistics if the task function worker usage statistics are initialized, undefined otherwise.

        -
    hasBackPressure: (() => boolean)

    Type declaration

      • (): boolean
      • Whether the worker node has back pressure (i.e. its tasks queue is full).

        +

    Param: name

    The task function name.

    +

    Returns

    The task function worker usage statistics if the task function worker usage statistics are initialized, undefined otherwise.

    +
    hasBackPressure: (() => boolean)

    Whether the worker node has back pressure (i.e. its tasks queue is full).

    +

    Type declaration

      • (): boolean
      • Whether the worker node has back pressure (i.e. its tasks queue is full).

        Returns boolean

        true if the worker node has back pressure, false otherwise.

        -

    Worker info.

    -
    messageChannel?: MessageChannel

    Message channel (worker thread only).

    -
    popTask: (() => undefined | Task<Data>)

    Type declaration

      • (): undefined | Task<Data>
      • Pops a task from the tasks queue.

        -

        Returns undefined | Task<Data>

        The popped task.

        -
    registerOnceWorkerEventHandler: ((event, handler) => void)

    Type declaration

      • (event, handler): void
      • Registers once a worker event handler.

        +

    Returns

    true if the worker node has back pressure, false otherwise.

    +

    Worker info.

    +
    messageChannel?: MessageChannel

    Message channel (worker thread only).

    +
    popTask: (() => undefined | Task<Data>)

    Pops a task from the tasks queue.

    +

    Type declaration

      • (): undefined | Task<Data>
      • Pops a task from the tasks queue.

        +

        Returns undefined | Task<Data>

        The popped task.

        +

    Returns

    The popped task.

    +
    registerOnceWorkerEventHandler: ((event, handler) => void)

    Registers once a worker event handler.

    +

    Type declaration

    registerWorkerEventHandler: ((event, handler) => void)

    Type declaration

    Returns void

    Param: event

    The event.

    +

    Param: handler

    The event handler.

    +
    registerWorkerEventHandler: ((event, handler) => void)

    Registers a worker event handler.

    +

    Type declaration

    resetUsage: (() => void)

    Type declaration

      • (): void
      • Resets usage statistics.

        -

        Returns void

    strategyData?: StrategyData

    Worker choice strategy data. +

  • handler: OnlineHandler<Worker> | MessageHandler<Worker> | ErrorHandler<Worker> | ExitHandler<Worker>

    The event handler.

    +
  • Returns void

    Param: event

    The event.

    +

    Param: handler

    The event handler.

    +
    resetUsage: (() => void)

    Resets usage statistics.

    +

    Type declaration

      • (): void
      • Resets usage statistics.

        +

        Returns void

    strategyData?: StrategyData

    Worker choice strategy data. This is used to store data that are specific to the worker choice strategy.

    -
    tasksQueueBackPressureSize: number

    Tasks queue back pressure size. +

    tasksQueueBackPressureSize: number

    Tasks queue back pressure size. This is the number of tasks that can be enqueued before the worker node has back pressure.

    -
    tasksQueueSize: (() => number)

    Type declaration

    tasksQueueSize: (() => number)

    Tasks queue size.

    +

    Type declaration

      • (): number
      • Tasks queue size.

        Returns number

        The tasks queue size.

        -
    terminate: (() => Promise<void>)

    Type declaration

      • (): Promise<void>
      • Terminates the worker node.

        -

        Returns Promise<void>

    unshiftTask: ((task) => number)

    Type declaration

      • (task): number
      • Prepends a task to the tasks queue.

        -

        Parameters

        • task: Task<Data>

          The task to prepend.

          +

    Returns

    The tasks queue size.

    +
    terminate: (() => Promise<void>)

    Terminates the worker node.

    +

    Type declaration

      • (): Promise<void>
      • Terminates the worker node.

        +

        Returns Promise<void>

    unshiftTask: ((task) => number)

    Prepends a task to the tasks queue.

    +

    Type declaration

      • (task): number
      • Prepends a task to the tasks queue.

        +

        Parameters

        Returns number

        The tasks queue size.

        -

    Worker usage statistics.

    -
    worker: Worker

    Worker.

    -

    Methods

    • Parameters

      • error: Error
      • event: string
      • Rest ...args: any[]

      Returns void

    • Alias for emitter.on(eventName, listener).

      -

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns IWorkerNode<Worker, Data>

      Since

      v0.1.26

      +

    Param: task

    The task to prepend.

    +

    Returns

    The tasks queue size.

    +

    Worker usage statistics.

    +
    worker: Worker

    Worker.

    +

    Methods

    • Parameters

      • error: Error
      • event: string
      • Rest ...args: any[]

      Returns void

    • Alias for emitter.on(eventName, listener).

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns this

      Since

      v0.1.26

    • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments to each.

      Returns true if the event had listeners, false otherwise.

      @@ -93,15 +122,15 @@ set by emitter.setMaxListeners(n) or defaults to defaultMaxListener If listener is provided, it will return how many times the listener is found in the list of the listeners of the event.

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        -
      • Optional listener: Function

        The event handler function

        +
      • Optional listener: Function

        The event handler function

      Returns number

      Since

      v3.2.0

      -
    • Returns a copy of the array of listeners for the event named eventName.

      +
    • Returns a copy of the array of listeners for the event named eventName.

      server.on('connection', (stream) => {
      console.log('someone connected!');
      });
      console.log(util.inspect(server.listeners('connection')));
      // Prints: [ [Function] ]
      -

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v0.1.26

      -
    • Alias for emitter.removeListener().

      -

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns IWorkerNode<Worker, Data>

      Since

      v10.0.0

      -
    • Adds the listener function to the end of the listeners array for the +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns this

      Since

      v10.0.0

      +
    • Adds the listener function to the end of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple times.

      @@ -114,8 +143,8 @@ event listener to the beginning of the listeners array.

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args) => void)

        The callback function

        -
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns IWorkerNode<Worker, Data>

      Since

      v0.1.101

      -
    • Adds a one-timelistener function for the event named eventName. The +

        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

    Since

    v0.1.101

    +
    • Adds a one-timelistener function for the event named eventName. The next time eventName is triggered, this listener is removed and then invoked.

      server.once('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });
      @@ -126,8 +155,8 @@ event listener to the beginning of the listeners array.

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args) => void)

        The callback function

        -
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns IWorkerNode<Worker, Data>

      Since

      v0.3.0

      -
    • Adds the listener function to the beginning of the listeners array for the +

        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

    Since

    v0.3.0

    +
    • Adds the listener function to the beginning of the listeners array for the event named eventName. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of eventNameand listener will result in the listener being added, and called, multiple times.

      @@ -136,27 +165,27 @@ times.

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args) => void)

        The callback function

        -
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns IWorkerNode<Worker, Data>

      Since

      v6.0.0

      -
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this +

        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

    Since

    v6.0.0

    +
    • Adds a one-timelistener function for the event named eventName to the beginning of the listeners array. The next time eventName is triggered, this listener is removed, and then invoked.

      server.prependOnceListener('connection', (stream) => {
      console.log('Ah, we have our first user!');
      });

      Returns a reference to the EventEmitter, so that calls can be chained.

      Parameters

      • eventName: string | symbol

        The name of the event.

      • listener: ((...args) => void)

        The callback function

        -
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns IWorkerNode<Worker, Data>

      Since

      v6.0.0

      -
    • Returns a copy of the array of listeners for the event named eventName, +

        • (...args): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

    Since

    v6.0.0

    +
    • Returns a copy of the array of listeners for the event named eventName, including any wrappers (such as those created by .once()).

      import { EventEmitter } from 'node:events';
      const emitter = new EventEmitter();
      emitter.once('log', () => console.log('log once'));

      // Returns a new Array with a function `onceWrapper` which has a property
      // `listener` which contains the original listener bound above
      const listeners = emitter.rawListeners('log');
      const logFnWrapper = listeners[0];

      // Logs "log once" to the console and does not unbind the `once` event
      logFnWrapper.listener();

      // Logs "log once" to the console and removes the listener
      logFnWrapper();

      emitter.on('log', () => console.log('log persistently'));
      // Will return a new Array with a single function bound by `.on()` above
      const newListeners = emitter.rawListeners('log');

      // Logs "log persistently" twice
      newListeners[0]();
      emitter.emit('log');
      -

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v9.4.0

      -
    • Removes all listeners, or those of the specified eventName.

      +

      Parameters

      • eventName: string | symbol

      Returns Function[]

      Since

      v9.4.0

      +
    • Removes all listeners, or those of the specified eventName.

      It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      Parameters

      • Optional event: string | symbol

      Returns IWorkerNode<Worker, Data>

      Since

      v0.1.26

      -
    • Removes the specified listener from the listener array for the event namedeventName.

      +

      Parameters

      • Optional event: string | symbol

      Returns this

      Since

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event namedeventName.

      const callback = (stream) => {
      console.log('someone connected!');
      };
      server.on('connection', callback);
      // ...
      server.removeListener('connection', callback);

      removeListener() will remove, at most, one instance of a listener from the @@ -179,11 +208,11 @@ recently added instance. In the example the once('ping')lis

      import { EventEmitter } from 'node:events';
      const ee = new EventEmitter();

      function pong() {
      console.log('pong');
      }

      ee.on('ping', pong);
      ee.once('ping', pong);
      ee.removeListener('ping', pong);

      ee.emit('ping');
      ee.emit('ping');

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns IWorkerNode<Worker, Data>

      Since

      v0.1.26

      -
    • By default EventEmitters will print a warning if more than 10 listeners are +

      Parameters

      • eventName: string | symbol
      • listener: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns this

      Since

      v0.1.26

      +
    • By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set toInfinity (or 0) to indicate an unlimited number of listeners.

      Returns a reference to the EventEmitter, so that calls can be chained.

      -

      Parameters

      • n: number

      Returns IWorkerNode<Worker, Data>

      Since

      v0.3.5

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Parameters

    • n: number

    Returns this

    Since

    v0.3.5

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/InternalWorkerChoiceStrategyOptions.html b/docs/interfaces/InternalWorkerChoiceStrategyOptions.html deleted file mode 100644 index b01c3cd4..00000000 --- a/docs/interfaces/InternalWorkerChoiceStrategyOptions.html +++ /dev/null @@ -1,25 +0,0 @@ -InternalWorkerChoiceStrategyOptions | poolifier - v3.1.13

    Interface InternalWorkerChoiceStrategyOptionsInternal

    Worker choice strategy internal options.

    -
    interface InternalWorkerChoiceStrategyOptions {
        elu?: MeasurementOptions;
        measurement?: "runTime" | "waitTime" | "elu";
        retries?: number;
        runTime?: MeasurementOptions;
        waitTime?: MeasurementOptions;
        weights?: Record<number, number>;
    }

    Hierarchy

    Properties

    Event loop utilization options.

    -

    Default Value

    { median: false }
    -
    -
    measurement?: "runTime" | "waitTime" | "elu"

    Measurement to use in worker choice strategy supporting it.

    -
    retries?: number

    Number of worker choice retries to perform if no worker is eligible.

    -

    Default Value

    pool maximum size
    -
    -

    Runtime options.

    -

    Default Value

    { median: false }
    -
    -

    Wait time options.

    -

    Default Value

    { median: false }
    -
    -
    weights?: Record<number, number>

    Worker weights to use for weighted round robin worker selection strategies. -A weight is tasks maximum execution time in milliseconds for a worker node.

    -

    Default Value

    Weights computed automatically given the CPU performance.
    -
    -

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/MeasurementOptions.html b/docs/interfaces/MeasurementOptions.html index 042a7812..6c7c71e6 100644 --- a/docs/interfaces/MeasurementOptions.html +++ b/docs/interfaces/MeasurementOptions.html @@ -1,4 +1,4 @@ -MeasurementOptions | poolifier - v3.1.13

    Interface MeasurementOptions

    Measurement options.

    -
    interface MeasurementOptions {
        median: boolean;
    }

    Properties

    median +MeasurementOptions | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/MeasurementStatistics.html b/docs/interfaces/MeasurementStatistics.html index d85319dc..50fe95e7 100644 --- a/docs/interfaces/MeasurementStatistics.html +++ b/docs/interfaces/MeasurementStatistics.html @@ -1,14 +1,14 @@ -MeasurementStatistics | poolifier - v3.1.13

    Interface MeasurementStatisticsInternal

    Measurement statistics.

    -
    interface MeasurementStatistics {
        aggregate?: number;
        average?: number;
        history: CircularArray<number>;
        maximum?: number;
        median?: number;
        minimum?: number;
    }

    Properties

    aggregate? +MeasurementStatistics | poolifier - v3.1.14

    Interface MeasurementStatisticsInternal

    Measurement statistics.

    +
    interface MeasurementStatistics {
        aggregate?: number;
        average?: number;
        history: CircularArray<number>;
        maximum?: number;
        median?: number;
        minimum?: number;
    }

    Properties

    aggregate?: number

    Measurement aggregate.

    -
    average?: number

    Measurement average.

    -
    history: CircularArray<number>

    Measurement history.

    -
    maximum?: number

    Measurement maximum.

    -
    median?: number

    Measurement median.

    -
    minimum?: number

    Measurement minimum.

    -

    Generated using TypeDoc

    \ No newline at end of file +
    average?: number

    Measurement average.

    +
    history: CircularArray<number>

    Measurement history.

    +
    maximum?: number

    Measurement maximum.

    +
    median?: number

    Measurement median.

    +
    minimum?: number

    Measurement minimum.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/MeasurementStatisticsRequirements.html b/docs/interfaces/MeasurementStatisticsRequirements.html index 4a4bb4f6..44d53dcf 100644 --- a/docs/interfaces/MeasurementStatisticsRequirements.html +++ b/docs/interfaces/MeasurementStatisticsRequirements.html @@ -1,8 +1,8 @@ -MeasurementStatisticsRequirements | poolifier - v3.1.13

    Interface MeasurementStatisticsRequirementsInternal

    Measurement statistics requirements.

    -
    interface MeasurementStatisticsRequirements {
        aggregate: boolean;
        average: boolean;
        median: boolean;
    }

    Properties

    aggregate +MeasurementStatisticsRequirements | poolifier - v3.1.14

    Interface MeasurementStatisticsRequirementsInternal

    Measurement statistics requirements.

    +
    interface MeasurementStatisticsRequirements {
        aggregate: boolean;
        average: boolean;
        median: boolean;
    }

    Properties

    aggregate: boolean

    Requires measurement aggregate.

    -
    average: boolean

    Requires measurement average.

    -
    median: boolean

    Requires measurement median.

    -

    Generated using TypeDoc

    \ No newline at end of file +
    average: boolean

    Requires measurement average.

    +
    median: boolean

    Requires measurement median.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/MessageValue.html b/docs/interfaces/MessageValue.html index 4eb46dfa..d4ce3d71 100644 --- a/docs/interfaces/MessageValue.html +++ b/docs/interfaces/MessageValue.html @@ -1,8 +1,8 @@ -MessageValue | poolifier - v3.1.13

    Interface MessageValue<Data, ErrorData>Internal

    Message object that is passed between main worker and worker.

    -
    interface MessageValue {
        checkActive?: boolean;
        data?: Data;
        kill?: true | "success" | "SOFT" | "HARD" | "failure";
        name?: string;
        port?: MessagePort;
        ready?: boolean;
        statistics?: WorkerStatistics;
        taskFunction?: string;
        taskFunctionName?: string;
        taskFunctionNames?: string[];
        taskFunctionOperation?: "add" | "default" | "remove";
        taskFunctionOperationStatus?: boolean;
        taskId?: string;
        taskPerformance?: TaskPerformance;
        timestamp?: number;
        transferList?: TransferListItem[];
        workerError?: WorkerError<ErrorData>;
        workerId?: number;
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker or execution response. This can only be structured-cloneable data.

      -
    • ErrorData = unknown

      Type of data sent to the worker triggering an error. This can only be structured-cloneable data.

      -

    Hierarchy

    • Task<Data>
      • MessageValue

    Properties

    checkActive? -data? +MessageValue | poolifier - v3.1.14

    Interface MessageValue<Data, ErrorData>Internal

    Message object that is passed between main worker and worker.

    +
    interface MessageValue<Data, ErrorData> {
        checkActive?: boolean;
        data?: Data;
        kill?: true | "success" | "SOFT" | "HARD" | "failure";
        name?: string;
        port?: MessagePort;
        ready?: boolean;
        statistics?: WorkerStatistics;
        taskFunction?: string;
        taskFunctionName?: string;
        taskFunctionNames?: string[];
        taskFunctionOperation?: "add" | "default" | "remove";
        taskFunctionOperationStatus?: boolean;
        taskId?: string;
        taskPerformance?: TaskPerformance;
        timestamp?: number;
        transferList?: TransferListItem[];
        workerError?: WorkerError<ErrorData>;
        workerId?: number;
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker or execution response. This can only be structured-cloneable data.

      +
    • ErrorData = unknown

      Type of data sent to the worker triggering an error. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Properties

    Properties

    checkActive?: boolean

    Whether the worker starts or stops its activity check.

    -
    data?: Data

    Task input data that will be passed to the worker.

    -
    kill?: true | "success" | "SOFT" | "HARD" | "failure"

    Kill code.

    -
    name?: string

    Task name.

    -
    port?: MessagePort

    Message port.

    -
    ready?: boolean

    Whether the worker is ready or not.

    -
    statistics?: WorkerStatistics

    Whether the worker computes the given statistics or not.

    -
    taskFunction?: string

    Task function serialized to string.

    -
    taskFunctionName?: string

    Task function name.

    -
    taskFunctionNames?: string[]

    Task function names.

    -
    taskFunctionOperation?: "add" | "default" | "remove"

    Task function operation:

    +
    data?: Data

    Task input data that will be passed to the worker.

    +
    kill?: true | "success" | "SOFT" | "HARD" | "failure"

    Kill code.

    +
    name?: string

    Task name.

    +
    port?: MessagePort

    Message port.

    +
    ready?: boolean

    Whether the worker is ready or not.

    +
    statistics?: WorkerStatistics

    Whether the worker computes the given statistics or not.

    +
    taskFunction?: string

    Task function serialized to string.

    +
    taskFunctionName?: string

    Task function name.

    +
    taskFunctionNames?: string[]

    Task function names.

    +
    taskFunctionOperation?: "add" | "default" | "remove"

    Task function operation:

    • 'add' - Add a task function.
    • 'remove' - Remove a task function.
    • 'default' - Set a task function as default.
    -
    taskFunctionOperationStatus?: boolean

    Whether the task function operation is successful or not.

    -
    taskId?: string

    Task UUID.

    -
    taskPerformance?: TaskPerformance

    Task performance.

    -
    timestamp?: number

    Timestamp.

    -
    transferList?: TransferListItem[]

    Array of transferable objects.

    -
    workerError?: WorkerError<ErrorData>

    Worker error.

    -
    workerId?: number

    Worker id.

    -

    Generated using TypeDoc

    \ No newline at end of file +
    taskFunctionOperationStatus?: boolean

    Whether the task function operation is successful or not.

    +
    taskId?: string

    Task UUID.

    +
    taskPerformance?: TaskPerformance

    Task performance.

    +
    timestamp?: number

    Timestamp.

    +
    transferList?: TransferListItem[]

    Array of transferable objects.

    +
    workerError?: WorkerError<ErrorData>

    Worker error.

    +
    workerId?: number

    Worker id.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/PoolInfo.html b/docs/interfaces/PoolInfo.html index 1296adfc..288bc2a1 100644 --- a/docs/interfaces/PoolInfo.html +++ b/docs/interfaces/PoolInfo.html @@ -1,5 +1,5 @@ -PoolInfo | poolifier - v3.1.13

    Interface PoolInfo

    Pool information.

    -
    interface PoolInfo {
        backPressure?: boolean;
        busyWorkerNodes: number;
        executedTasks: number;
        executingTasks: number;
        failedTasks: number;
        idleWorkerNodes: number;
        maxQueuedTasks?: number;
        maxSize: number;
        minSize: number;
        queuedTasks?: number;
        ready: boolean;
        runTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        started: boolean;
        stealingWorkerNodes?: number;
        stolenTasks?: number;
        strategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        type: "fixed" | "dynamic";
        utilization?: number;
        version: string;
        waitTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        worker: "thread" | "cluster";
        workerNodes: number;
    }

    Properties

    backPressure? +PoolInfo | poolifier - v3.1.14

    Interface PoolInfo

    Pool information.

    +
    interface PoolInfo {
        backPressure?: boolean;
        busyWorkerNodes: number;
        executedTasks: number;
        executingTasks: number;
        failedTasks: number;
        idleWorkerNodes: number;
        maxQueuedTasks?: number;
        maxSize: number;
        minSize: number;
        queuedTasks?: number;
        ready: boolean;
        runTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        started: boolean;
        stealingWorkerNodes?: number;
        stolenTasks?: number;
        strategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        type: "fixed" | "dynamic";
        utilization?: number;
        version: string;
        waitTime?: {
            average?: number;
            maximum: number;
            median?: number;
            minimum: number;
        };
        worker: "thread" | "cluster";
        workerNodes: number;
    }

    Properties

    backPressure?: boolean
    busyWorkerNodes: number

    Pool busy worker nodes.

    -
    executedTasks: number
    executingTasks: number
    failedTasks: number
    idleWorkerNodes: number

    Pool idle worker nodes.

    -
    maxQueuedTasks?: number
    maxSize: number
    minSize: number
    queuedTasks?: number
    ready: boolean
    runTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }

    Type declaration

    • Optional Readonly average?: number
    • Readonly maximum: number
    • Optional Readonly median?: number
    • Readonly minimum: number
    started: boolean
    stealingWorkerNodes?: number

    Pool stealing worker nodes.

    -
    stolenTasks?: number
    strategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
    type: "fixed" | "dynamic"
    utilization?: number

    Pool utilization.

    -
    version: string
    waitTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }

    Type declaration

    • Optional Readonly average?: number
    • Readonly maximum: number
    • Optional Readonly median?: number
    • Readonly minimum: number
    worker: "thread" | "cluster"
    workerNodes: number

    Pool total worker nodes.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    backPressure?: boolean
    busyWorkerNodes: number

    Pool busy worker nodes.

    +
    executedTasks: number
    executingTasks: number
    failedTasks: number
    idleWorkerNodes: number

    Pool idle worker nodes.

    +
    maxQueuedTasks?: number
    maxSize: number
    minSize: number
    queuedTasks?: number
    ready: boolean
    runTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }

    Type declaration

    • Optional Readonly average?: number
    • Readonly maximum: number
    • Optional Readonly median?: number
    • Readonly minimum: number
    started: boolean
    stealingWorkerNodes?: number

    Pool stealing worker nodes.

    +
    stolenTasks?: number
    strategy: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
    type: "fixed" | "dynamic"
    utilization?: number

    Pool utilization.

    +
    version: string
    waitTime?: {
        average?: number;
        maximum: number;
        median?: number;
        minimum: number;
    }

    Type declaration

    • Optional Readonly average?: number
    • Readonly maximum: number
    • Optional Readonly median?: number
    • Readonly minimum: number
    worker: "thread" | "cluster"
    workerNodes: number

    Pool total worker nodes.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/PoolOptions.html b/docs/interfaces/PoolOptions.html index 1b9b0b63..f5edd49b 100644 --- a/docs/interfaces/PoolOptions.html +++ b/docs/interfaces/PoolOptions.html @@ -1,6 +1,6 @@ -PoolOptions | poolifier - v3.1.13

    Interface PoolOptions<Worker>

    Options for a poolifier pool.

    -
    interface PoolOptions {
        enableEvents?: boolean;
        enableTasksQueue?: boolean;
        env?: Record<string, unknown>;
        errorHandler?: ErrorHandler<Worker>;
        exitHandler?: ExitHandler<Worker>;
        messageHandler?: MessageHandler<Worker>;
        onlineHandler?: OnlineHandler<Worker>;
        restartWorkerOnError?: boolean;
        settings?: ClusterSettings;
        startWorkers?: boolean;
        tasksQueueOptions?: TasksQueueOptions;
        workerChoiceStrategy?: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions;
        workerOptions?: WorkerOptions;
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -

    Properties

    enableEvents? +PoolOptions | poolifier - v3.1.14

    Interface PoolOptions<Worker>

    Options for a poolifier pool.

    +
    interface PoolOptions<Worker> {
        enableEvents?: boolean;
        enableTasksQueue?: boolean;
        env?: Record<string, unknown>;
        errorHandler?: ErrorHandler<Worker>;
        exitHandler?: ExitHandler<Worker>;
        messageHandler?: MessageHandler<Worker>;
        onlineHandler?: OnlineHandler<Worker>;
        restartWorkerOnError?: boolean;
        settings?: ClusterSettings;
        startWorkers?: boolean;
        tasksQueueOptions?: TasksQueueOptions;
        workerChoiceStrategy?: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions;
        workerOptions?: WorkerOptions;
    }

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      +

    Properties

    Properties

    enableEvents?: boolean

    Pool events integrated with async resource emission.

    Default Value

    true
     
    -
    enableTasksQueue?: boolean

    Pool worker node tasks queue.

    +
    enableTasksQueue?: boolean

    Pool worker node tasks queue.

    Default Value

    false
     
    -
    env?: Record<string, unknown>

    Key/value pairs to add to worker process environment.

    +
    env?: Record<string, unknown>

    Key/value pairs to add to worker process environment.

    errorHandler?: ErrorHandler<Worker>

    A function that will listen for error event on each worker.

    +
    errorHandler?: ErrorHandler<Worker>

    A function that will listen for error event on each worker.

    Default Value

    () => {}

    -
    exitHandler?: ExitHandler<Worker>

    A function that will listen for exit event on each worker.

    +
    exitHandler?: ExitHandler<Worker>

    A function that will listen for exit event on each worker.

    Default Value

    () => {}

    -
    messageHandler?: MessageHandler<Worker>

    A function that will listen for message event on each worker.

    +
    messageHandler?: MessageHandler<Worker>

    A function that will listen for message event on each worker.

    Default Value

    () => {}

    -
    onlineHandler?: OnlineHandler<Worker>

    A function that will listen for online event on each worker.

    +
    onlineHandler?: OnlineHandler<Worker>

    A function that will listen for online event on each worker.

    Default Value

    () => {}

    -
    restartWorkerOnError?: boolean

    Restart worker on error.

    -
    settings?: ClusterSettings

    Cluster settings.

    +
    restartWorkerOnError?: boolean

    Restart worker on error.

    +
    settings?: ClusterSettings

    Cluster settings.

    startWorkers?: boolean

    Whether to start the minimum number of workers at pool initialization.

    +
    startWorkers?: boolean

    Whether to start the minimum number of workers at pool initialization.

    Default Value

    true
     
    -
    tasksQueueOptions?: TasksQueueOptions

    Pool worker node tasks queue options.

    -
    workerChoiceStrategy?: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

    The worker choice strategy to use in this pool.

    +
    tasksQueueOptions?: TasksQueueOptions

    Pool worker node tasks queue options.

    +
    workerChoiceStrategy?: "ROUND_ROBIN" | "LEAST_USED" | "LEAST_BUSY" | "LEAST_ELU" | "FAIR_SHARE" | "WEIGHTED_ROUND_ROBIN" | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

    The worker choice strategy to use in this pool.

    Default Value

    WorkerChoiceStrategies.ROUND_ROBIN
     
    -
    workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions

    The worker choice strategy options.

    -
    workerOptions?: WorkerOptions

    Worker options.

    +
    workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions

    The worker choice strategy options.

    +
    workerOptions?: WorkerOptions

    Worker options.

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/PromiseResponseWrapper.html b/docs/interfaces/PromiseResponseWrapper.html index a0bd3264..e192b500 100644 --- a/docs/interfaces/PromiseResponseWrapper.html +++ b/docs/interfaces/PromiseResponseWrapper.html @@ -1,11 +1,13 @@ -PromiseResponseWrapper | poolifier - v3.1.13

    Interface PromiseResponseWrapper<Response>Internal

    An object holding the task execution response promise resolve/reject callbacks.

    -
    interface PromiseResponseWrapper {
        asyncResource?: AsyncResource;
        reject: ((reason?) => void);
        resolve: ((value) => void);
        workerNodeKey: number;
    }

    Type Parameters

    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Properties

    asyncResource? +PromiseResponseWrapper | poolifier - v3.1.14

    Interface PromiseResponseWrapper<Response>Internal

    An object holding the task execution response promise resolve/reject callbacks.

    +
    interface PromiseResponseWrapper<Response> {
        asyncResource?: AsyncResource;
        reject: ((reason?) => void);
        resolve: ((value) => void);
        workerNodeKey: number;
    }

    Type Parameters

    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Properties

    asyncResource?: AsyncResource

    The asynchronous resource used to track the task execution.

    -
    reject: ((reason?) => void)

    Type declaration

      • (reason?): void
      • Reject callback to reject the promise.

        -

        Parameters

        • Optional reason: unknown

        Returns void

    resolve: ((value) => void)

    Type declaration

      • (value): void
      • Resolve callback to fulfill the promise.

        -

        Parameters

        • value: Response | PromiseLike<Response>

        Returns void

    workerNodeKey: number

    The worker node key executing the task.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    asyncResource?: AsyncResource

    The asynchronous resource used to track the task execution.

    +
    reject: ((reason?) => void)

    Reject callback to reject the promise.

    +

    Type declaration

      • (reason?): void
      • Reject callback to reject the promise.

        +

        Parameters

        • Optional reason: unknown

        Returns void

    resolve: ((value) => void)

    Resolve callback to fulfill the promise.

    +

    Type declaration

      • (value): void
      • Resolve callback to fulfill the promise.

        +

        Parameters

        Returns void

    workerNodeKey: number

    The worker node key executing the task.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/StrategyData.html b/docs/interfaces/StrategyData.html index 9cbb552f..6aea5bbe 100644 --- a/docs/interfaces/StrategyData.html +++ b/docs/interfaces/StrategyData.html @@ -1,3 +1,3 @@ -StrategyData | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +StrategyData | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/StrategyPolicy.html b/docs/interfaces/StrategyPolicy.html index 4c4ede18..0520452b 100644 --- a/docs/interfaces/StrategyPolicy.html +++ b/docs/interfaces/StrategyPolicy.html @@ -1,6 +1,6 @@ -StrategyPolicy | poolifier - v3.1.13

    Interface StrategyPolicyInternal

    Strategy policy.

    -
    interface StrategyPolicy {
        dynamicWorkerReady: boolean;
        dynamicWorkerUsage: boolean;
    }

    Properties

    dynamicWorkerReady +StrategyPolicy | poolifier - v3.1.14

    Interface StrategyPolicyInternal

    Strategy policy.

    +
    interface StrategyPolicy {
        dynamicWorkerReady: boolean;
        dynamicWorkerUsage: boolean;
    }

    Properties

    dynamicWorkerReady: boolean

    Expects the newly created dynamic worker to be flagged as ready.

    -
    dynamicWorkerUsage: boolean

    Expects tasks execution on the newly created dynamic worker.

    -

    Generated using TypeDoc

    \ No newline at end of file +
    dynamicWorkerUsage: boolean

    Expects tasks execution on the newly created dynamic worker.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/Task.html b/docs/interfaces/Task.html index 59aeb867..1c99f70b 100644 --- a/docs/interfaces/Task.html +++ b/docs/interfaces/Task.html @@ -1,13 +1,13 @@ -Task | poolifier - v3.1.13

    Interface Task<Data>Internal

    Message object that is passed as a task between main worker and worker.

    -
    interface Task {
        data?: Data;
        name?: string;
        taskId?: string;
        timestamp?: number;
        transferList?: TransferListItem[];
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -

    Hierarchy

    Properties

    data? +Task | poolifier - v3.1.14

    Interface Task<Data>Internal

    Message object that is passed as a task between main worker and worker.

    +
    interface Task<Data> {
        data?: Data;
        name?: string;
        taskId?: string;
        timestamp?: number;
        transferList?: TransferListItem[];
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +

    Hierarchy (view full)

    Properties

    data?: Data

    Task input data that will be passed to the worker.

    -
    name?: string

    Task name.

    -
    taskId?: string

    Task UUID.

    -
    timestamp?: number

    Timestamp.

    -
    transferList?: TransferListItem[]

    Array of transferable objects.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    data?: Data

    Task input data that will be passed to the worker.

    +
    name?: string

    Task name.

    +
    taskId?: string

    Task UUID.

    +
    timestamp?: number

    Timestamp.

    +
    transferList?: TransferListItem[]

    Array of transferable objects.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/TaskFunctionOperationResult.html b/docs/interfaces/TaskFunctionOperationResult.html index 6b2619b8..696a9850 100644 --- a/docs/interfaces/TaskFunctionOperationResult.html +++ b/docs/interfaces/TaskFunctionOperationResult.html @@ -1,4 +1,4 @@ -TaskFunctionOperationResult | poolifier - v3.1.13

    Interface TaskFunctionOperationResult

    Task function operation result.

    -
    interface TaskFunctionOperationResult {
        error?: Error;
        status: boolean;
    }

    Properties

    error? +TaskFunctionOperationResult | poolifier - v3.1.14

    Interface TaskFunctionOperationResult

    Task function operation result.

    +
    interface TaskFunctionOperationResult {
        error?: Error;
        status: boolean;
    }

    Properties

    Properties

    error?: Error
    status: boolean

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    error?: Error
    status: boolean

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/TaskPerformance.html b/docs/interfaces/TaskPerformance.html index 0ed588a6..03ab9e3d 100644 --- a/docs/interfaces/TaskPerformance.html +++ b/docs/interfaces/TaskPerformance.html @@ -1,10 +1,10 @@ -TaskPerformance | poolifier - v3.1.13

    Interface TaskPerformanceInternal

    Task performance.

    -
    interface TaskPerformance {
        elu?: EventLoopUtilization;
        name: string;
        runTime?: number;
        timestamp: number;
    }

    Properties

    elu? +TaskPerformance | poolifier - v3.1.14

    Interface TaskPerformanceInternal

    Task performance.

    +
    interface TaskPerformance {
        elu?: EventLoopUtilization;
        name: string;
        runTime?: number;
        timestamp: number;
    }

    Properties

    elu?: EventLoopUtilization

    Task event loop utilization.

    -
    name: string

    Task name.

    -
    runTime?: number

    Task runtime.

    -
    timestamp: number

    Task performance timestamp.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    elu?: EventLoopUtilization

    Task event loop utilization.

    +
    name: string

    Task name.

    +
    runTime?: number

    Task runtime.

    +
    timestamp: number

    Task performance timestamp.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/TaskStatistics.html b/docs/interfaces/TaskStatistics.html index 5a7b5bfa..f535ba1d 100644 --- a/docs/interfaces/TaskStatistics.html +++ b/docs/interfaces/TaskStatistics.html @@ -1,5 +1,5 @@ -TaskStatistics | poolifier - v3.1.13

    Interface TaskStatisticsInternal

    Task statistics.

    -
    interface TaskStatistics {
        executed: number;
        executing: number;
        failed: number;
        maxQueued?: number;
        queued: number;
        sequentiallyStolen: number;
        stolen: number;
    }

    Properties

    executed +TaskStatistics | poolifier - v3.1.14

    Interface TaskStatisticsInternal

    Task statistics.

    +
    interface TaskStatistics {
        executed: number;
        executing: number;
        failed: number;
        maxQueued?: number;
        queued: number;
        sequentiallyStolen: number;
        stolen: number;
    }

    Properties

    executed: number

    Number of executed tasks.

    -
    executing: number

    Number of executing tasks.

    -
    failed: number

    Number of failed tasks.

    -
    maxQueued?: number

    Maximum number of queued tasks.

    -
    queued: number

    Number of queued tasks.

    -
    sequentiallyStolen: number

    Number of sequentially stolen tasks.

    -
    stolen: number

    Number of stolen tasks.

    -

    Generated using TypeDoc

    \ No newline at end of file +
    executing: number

    Number of executing tasks.

    +
    failed: number

    Number of failed tasks.

    +
    maxQueued?: number

    Maximum number of queued tasks.

    +
    queued: number

    Number of queued tasks.

    +
    sequentiallyStolen: number

    Number of sequentially stolen tasks.

    +
    stolen: number

    Number of stolen tasks.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/TaskStatisticsRequirements.html b/docs/interfaces/TaskStatisticsRequirements.html index 639c0e82..fdaa841c 100644 --- a/docs/interfaces/TaskStatisticsRequirements.html +++ b/docs/interfaces/TaskStatisticsRequirements.html @@ -1,8 +1,8 @@ -TaskStatisticsRequirements | poolifier - v3.1.13

    Interface TaskStatisticsRequirementsInternal

    Pool worker node worker usage statistics requirements.

    -
    interface TaskStatisticsRequirements {
        elu: MeasurementStatisticsRequirements;
        runTime: MeasurementStatisticsRequirements;
        waitTime: MeasurementStatisticsRequirements;
    }

    Properties

    elu +TaskStatisticsRequirements | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file +

    Tasks runtime requirements.

    +

    Tasks wait time requirements.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/TasksQueueOptions.html b/docs/interfaces/TasksQueueOptions.html index c6db1692..fb0df71f 100644 --- a/docs/interfaces/TasksQueueOptions.html +++ b/docs/interfaces/TasksQueueOptions.html @@ -1,5 +1,5 @@ -TasksQueueOptions | poolifier - v3.1.13

    Interface TasksQueueOptions

    Worker node tasks queue options.

    -
    interface TasksQueueOptions {
        concurrency?: number;
        size?: number;
        taskStealing?: boolean;
        tasksFinishedTimeout?: number;
        tasksStealingOnBackPressure?: boolean;
    }

    Properties

    concurrency? +TasksQueueOptions | poolifier - v3.1.14

    Interface TasksQueueOptions

    Worker node tasks queue options.

    +
    interface TasksQueueOptions {
        concurrency?: number;
        size?: number;
        taskStealing?: boolean;
        tasksFinishedTimeout?: number;
        tasksStealingOnBackPressure?: boolean;
    }

    Properties

    concurrency?: number

    Maximum number of tasks that can be executed concurrently on a worker node.

    Default Value

    1
     
    -
    size?: number

    Maximum tasks queue size per worker node flagging it as back pressured.

    +
    size?: number

    Maximum tasks queue size per worker node flagging it as back pressured.

    Default Value

    (pool maximum size)^2
     
    -
    taskStealing?: boolean

    Whether to enable task stealing on idle.

    +
    taskStealing?: boolean

    Whether to enable task stealing on idle.

    Default Value

    true
     
    -
    tasksFinishedTimeout?: number

    Queued tasks finished timeout in milliseconds at worker node termination.

    +
    tasksFinishedTimeout?: number

    Queued tasks finished timeout in milliseconds at worker node termination.

    Default Value

    2000
     
    -
    tasksStealingOnBackPressure?: boolean

    Whether to enable tasks stealing under back pressure.

    +
    tasksStealingOnBackPressure?: boolean

    Whether to enable tasks stealing under back pressure.

    Default Value

    true
     
    -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerChoiceStrategyOptions.html b/docs/interfaces/WorkerChoiceStrategyOptions.html index 34a7c771..6a51a80a 100644 --- a/docs/interfaces/WorkerChoiceStrategyOptions.html +++ b/docs/interfaces/WorkerChoiceStrategyOptions.html @@ -1,5 +1,5 @@ -WorkerChoiceStrategyOptions | poolifier - v3.1.13

    Interface WorkerChoiceStrategyOptions

    Worker choice strategy options.

    -
    interface WorkerChoiceStrategyOptions {
        elu?: MeasurementOptions;
        measurement?: "runTime" | "waitTime" | "elu";
        runTime?: MeasurementOptions;
        waitTime?: MeasurementOptions;
        weights?: Record<number, number>;
    }

    Hierarchy

    Properties

    elu? +WorkerChoiceStrategyOptions | poolifier - v3.1.14

    Interface WorkerChoiceStrategyOptions

    Worker choice strategy options.

    +
    interface WorkerChoiceStrategyOptions {
        elu?: MeasurementOptions;
        measurement?: "runTime" | "waitTime" | "elu";
        runTime?: MeasurementOptions;
        waitTime?: MeasurementOptions;
        weights?: Record<number, number>;
    }

    Properties

    elu? measurement? runTime? waitTime? @@ -7,15 +7,15 @@

    Properties

    Event loop utilization options.

    Default Value

    { median: false }
     
    -
    measurement?: "runTime" | "waitTime" | "elu"

    Measurement to use in worker choice strategy supporting it.

    -

    Runtime options.

    +
    measurement?: "runTime" | "waitTime" | "elu"

    Measurement to use in worker choice strategy supporting it.

    +

    Runtime options.

    Default Value

    { median: false }
     
    -

    Wait time options.

    +

    Wait time options.

    Default Value

    { median: false }
     
    -
    weights?: Record<number, number>

    Worker weights to use for weighted round robin worker selection strategies. +

    weights?: Record<number, number>

    Worker weights to use for weighted round robin worker selection strategies. A weight is tasks maximum execution time in milliseconds for a worker node.

    Default Value

    Weights computed automatically given the CPU performance.
     
    -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerError.html b/docs/interfaces/WorkerError.html index 729a7d24..68440029 100644 --- a/docs/interfaces/WorkerError.html +++ b/docs/interfaces/WorkerError.html @@ -1,9 +1,9 @@ -WorkerError | poolifier - v3.1.13

    Interface WorkerError<Data>

    Worker error.

    -
    interface WorkerError {
        data?: Data;
        message: string;
        name: string;
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker triggering an error. This can only be structured-cloneable data.

      -

    Properties

    data? +WorkerError | poolifier - v3.1.14

    Interface WorkerError<Data>

    Worker error.

    +
    interface WorkerError<Data> {
        data?: Data;
        message: string;
        name: string;
    }

    Type Parameters

    • Data = unknown

      Type of data sent to the worker triggering an error. This can only be structured-cloneable data.

      +

    Properties

    Properties

    data?: Data

    Data triggering the error.

    -
    message: string

    Error message.

    -
    name: string

    Task function name triggering the error.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    data?: Data

    Data triggering the error.

    +
    message: string

    Error message.

    +
    name: string

    Task function name triggering the error.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerInfo.html b/docs/interfaces/WorkerInfo.html index 089bed87..e153c1c6 100644 --- a/docs/interfaces/WorkerInfo.html +++ b/docs/interfaces/WorkerInfo.html @@ -1,15 +1,15 @@ -WorkerInfo | poolifier - v3.1.13

    Interface WorkerInfoInternal

    Worker information.

    -
    interface WorkerInfo {
        dynamic: boolean;
        id: undefined | number;
        ready: boolean;
        stealing: boolean;
        taskFunctionNames?: string[];
        type: "thread" | "cluster";
    }

    Properties

    dynamic +WorkerInfo | poolifier - v3.1.14

    Interface WorkerInfoInternal

    Worker information.

    +
    interface WorkerInfo {
        dynamic: boolean;
        id: undefined | number;
        ready: boolean;
        stealing: boolean;
        taskFunctionNames?: string[];
        type: "thread" | "cluster";
    }

    Properties

    dynamic: boolean

    Dynamic flag.

    -
    id: undefined | number

    Worker id.

    -
    ready: boolean

    Ready flag.

    -
    stealing: boolean

    Stealing flag. +

    id: undefined | number

    Worker id.

    +
    ready: boolean

    Ready flag.

    +
    stealing: boolean

    Stealing flag. This flag is set to true when worker node is stealing tasks from another worker node.

    -
    taskFunctionNames?: string[]

    Task function names.

    -
    type: "thread" | "cluster"

    Worker type.

    -

    Generated using TypeDoc

    \ No newline at end of file +
    taskFunctionNames?: string[]

    Task function names.

    +
    type: "thread" | "cluster"

    Worker type.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerNodeEventDetail.html b/docs/interfaces/WorkerNodeEventDetail.html index cf3386ba..27605222 100644 --- a/docs/interfaces/WorkerNodeEventDetail.html +++ b/docs/interfaces/WorkerNodeEventDetail.html @@ -1,4 +1,4 @@ -WorkerNodeEventDetail | poolifier - v3.1.13

    Interface WorkerNodeEventDetailInternal

    Worker node event detail.

    -
    interface WorkerNodeEventDetail {
        workerId: number;
        workerNodeKey?: number;
    }

    Properties

    workerId +WorkerNodeEventDetail | poolifier - v3.1.14

    Interface WorkerNodeEventDetailInternal

    Worker node event detail.

    +
    interface WorkerNodeEventDetail {
        workerId: number;
        workerNodeKey?: number;
    }

    Properties

    workerId: number
    workerNodeKey?: number

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    workerId: number
    workerNodeKey?: number

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerNodeOptions.html b/docs/interfaces/WorkerNodeOptions.html index 1d0bbe93..029528e9 100644 --- a/docs/interfaces/WorkerNodeOptions.html +++ b/docs/interfaces/WorkerNodeOptions.html @@ -1,5 +1,5 @@ -WorkerNodeOptions | poolifier - v3.1.13

    Interface WorkerNodeOptionsInternal

    Worker node options.

    -
    interface WorkerNodeOptions {
        env?: Record<string, unknown>;
        tasksQueueBackPressureSize: number;
        workerOptions?: WorkerOptions;
    }

    Properties

    env? +WorkerNodeOptions | poolifier - v3.1.14

    Interface WorkerNodeOptionsInternal

    Worker node options.

    +
    interface WorkerNodeOptions {
        env?: Record<string, unknown>;
        tasksQueueBackPressureSize: number;
        workerOptions?: WorkerOptions;
    }

    Properties

    env?: Record<string, unknown>
    tasksQueueBackPressureSize: number
    workerOptions?: WorkerOptions

    Generated using TypeDoc

    \ No newline at end of file +

    Properties

    env?: Record<string, unknown>
    tasksQueueBackPressureSize: number
    workerOptions?: WorkerOptions

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerOptions.html b/docs/interfaces/WorkerOptions.html index 196a98d8..adbbde00 100644 --- a/docs/interfaces/WorkerOptions.html +++ b/docs/interfaces/WorkerOptions.html @@ -1,5 +1,5 @@ -WorkerOptions | poolifier - v3.1.13

    Interface WorkerOptions

    Options for workers.

    -
    interface WorkerOptions {
        killBehavior?: "SOFT" | "HARD";
        killHandler?: KillHandler;
        maxInactiveTime?: number;
    }

    Properties

    killBehavior? +WorkerOptions | poolifier - v3.1.14

    Interface WorkerOptions

    Options for workers.

    +
    interface WorkerOptions {
        killBehavior?: "SOFT" | "HARD";
        killHandler?: KillHandler;
        maxInactiveTime?: number;
    }

    Properties

    killBehavior?: "SOFT" | "HARD"

    killBehavior dictates if your worker will be deleted in case a task is active on it.

    @@ -10,9 +10,9 @@

    This option only apply to the newly created workers.

    Default Value

    KillBehaviors.SOFT
     
    -
    killHandler?: KillHandler

    The function to call when a worker is killed.

    +
    killHandler?: KillHandler

    The function to call when a worker is killed.

    Default Value

    () => {}

    -
    maxInactiveTime?: number

    Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5.

    +
    maxInactiveTime?: number

    Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5.

    After this time, newly created workers will be terminated. The last active time of your worker will be updated when it terminates a task.

      @@ -22,4 +22,4 @@ when this timeout expires your tasks is interrupted before completion and remove

    Default Value

    60000
     
    -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerStatistics.html b/docs/interfaces/WorkerStatistics.html index 99b80aa8..e4a2f893 100644 --- a/docs/interfaces/WorkerStatistics.html +++ b/docs/interfaces/WorkerStatistics.html @@ -1,6 +1,6 @@ -WorkerStatistics | poolifier - v3.1.13

    Interface WorkerStatisticsInternal

    Worker task performance statistics computation settings.

    -
    interface WorkerStatistics {
        elu: boolean;
        runTime: boolean;
    }

    Properties

    elu +WorkerStatistics | poolifier - v3.1.14

    Interface WorkerStatisticsInternal

    Worker task performance statistics computation settings.

    +
    interface WorkerStatistics {
        elu: boolean;
        runTime: boolean;
    }

    Properties

    Properties

    elu: boolean

    Whether the worker computes the task event loop utilization (ELU) or not.

    -
    runTime: boolean

    Whether the worker computes the task runtime or not.

    -

    Generated using TypeDoc

    \ No newline at end of file +
    runTime: boolean

    Whether the worker computes the task runtime or not.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/interfaces/WorkerUsage.html b/docs/interfaces/WorkerUsage.html index c489dd35..25d169a8 100644 --- a/docs/interfaces/WorkerUsage.html +++ b/docs/interfaces/WorkerUsage.html @@ -1,10 +1,10 @@ -WorkerUsage | poolifier - v3.1.13

    Interface WorkerUsageInternal

    Worker usage statistics.

    -
    interface WorkerUsage {
        elu: EventLoopUtilizationMeasurementStatistics;
        runTime: MeasurementStatistics;
        tasks: TaskStatistics;
        waitTime: MeasurementStatistics;
    }

    Properties

    elu +WorkerUsage | poolifier - v3.1.14

    Interface WorkerUsageInternal

    Worker usage statistics.

    +
    interface WorkerUsage {
        elu: EventLoopUtilizationMeasurementStatistics;
        runTime: MeasurementStatistics;
        tasks: TaskStatistics;
        waitTime: MeasurementStatistics;
    }

    Properties

    Tasks event loop utilization statistics.

    -

    Tasks runtime statistics.

    -

    Tasks statistics.

    -

    Tasks wait time statistics.

    -

    Generated using TypeDoc

    \ No newline at end of file +

    Tasks runtime statistics.

    +

    Tasks statistics.

    +

    Tasks wait time statistics.

    +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ClusterPoolOptions.html b/docs/types/ClusterPoolOptions.html index 6d965fe0..46705f45 100644 --- a/docs/types/ClusterPoolOptions.html +++ b/docs/types/ClusterPoolOptions.html @@ -1,2 +1,2 @@ -ClusterPoolOptions | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +ClusterPoolOptions | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ErrorHandler.html b/docs/types/ErrorHandler.html index a1fc87e7..32454fba 100644 --- a/docs/types/ErrorHandler.html +++ b/docs/types/ErrorHandler.html @@ -1,3 +1,3 @@ -ErrorHandler | poolifier - v3.1.13

    Type alias ErrorHandler<Worker>

    ErrorHandler<Worker>: ((this, error) => void)

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -

    Type declaration

      • (this, error): void
      • Callback invoked if the worker raised an error.

        -

        Parameters

        • this: Worker
        • error: Error

        Returns void

    Generated using TypeDoc

    \ No newline at end of file +ErrorHandler | poolifier - v3.1.14

    Type alias ErrorHandler<Worker>

    ErrorHandler<Worker>: ((this, error) => void)

    Callback invoked if the worker raised an error.

    +

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      +

    Type declaration

      • (this, error): void
      • Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ExitHandler.html b/docs/types/ExitHandler.html index eed428ca..b944ecc7 100644 --- a/docs/types/ExitHandler.html +++ b/docs/types/ExitHandler.html @@ -1,3 +1,3 @@ -ExitHandler | poolifier - v3.1.13

    Type alias ExitHandler<Worker>

    ExitHandler<Worker>: ((this, exitCode) => void)

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -

    Type declaration

      • (this, exitCode): void
      • Callback invoked when the worker exits successfully.

        -

        Parameters

        • this: Worker
        • exitCode: number

        Returns void

    Generated using TypeDoc

    \ No newline at end of file +ExitHandler | poolifier - v3.1.14

    Type alias ExitHandler<Worker>

    ExitHandler<Worker>: ((this, exitCode) => void)

    Callback invoked when the worker exits successfully.

    +

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      +

    Type declaration

      • (this, exitCode): void
      • Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/KillBehavior.html b/docs/types/KillBehavior.html index 2587f486..7870e3fd 100644 --- a/docs/types/KillBehavior.html +++ b/docs/types/KillBehavior.html @@ -1,2 +1,2 @@ -KillBehavior | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +KillBehavior | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/KillHandler.html b/docs/types/KillHandler.html index 1913148a..96ed6602 100644 --- a/docs/types/KillHandler.html +++ b/docs/types/KillHandler.html @@ -1,2 +1,2 @@ -KillHandler | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +KillHandler | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/Measurement.html b/docs/types/Measurement.html index b7592f6b..a0a9afaa 100644 --- a/docs/types/Measurement.html +++ b/docs/types/Measurement.html @@ -1,2 +1,2 @@ -Measurement | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +Measurement | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/MessageHandler.html b/docs/types/MessageHandler.html index 6b0206a3..efda4825 100644 --- a/docs/types/MessageHandler.html +++ b/docs/types/MessageHandler.html @@ -1,3 +1,3 @@ -MessageHandler | poolifier - v3.1.13

    Type alias MessageHandler<Worker>

    MessageHandler<Worker>: ((this, message) => void)

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -

    Type declaration

      • (this, message): void
      • Callback invoked if the worker has received a message.

        -

        Parameters

        • this: Worker
        • message: unknown

        Returns void

    Generated using TypeDoc

    \ No newline at end of file +MessageHandler | poolifier - v3.1.14

    Type alias MessageHandler<Worker>

    MessageHandler<Worker>: ((this, message) => void)

    Callback invoked if the worker has received a message.

    +

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      +

    Type declaration

      • (this, message): void
      • Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/OnlineHandler.html b/docs/types/OnlineHandler.html index 143bff72..84fea981 100644 --- a/docs/types/OnlineHandler.html +++ b/docs/types/OnlineHandler.html @@ -1,3 +1,3 @@ -OnlineHandler | poolifier - v3.1.13

    Type alias OnlineHandler<Worker>

    OnlineHandler<Worker>: ((this) => void)

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      -

    Type declaration

      • (this): void
      • Callback invoked when the worker has started successfully.

        -

        Parameters

        • this: Worker

        Returns void

    Generated using TypeDoc

    \ No newline at end of file +OnlineHandler | poolifier - v3.1.14

    Type alias OnlineHandler<Worker>

    OnlineHandler<Worker>: ((this) => void)

    Callback invoked when the worker has started successfully.

    +

    Type Parameters

    • Worker extends IWorker

      Type of worker.

      +

    Type declaration

      • (this): void
      • Parameters

        Returns void

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/PoolEvent.html b/docs/types/PoolEvent.html index 1dde1fbe..9abdb4b1 100644 --- a/docs/types/PoolEvent.html +++ b/docs/types/PoolEvent.html @@ -1,2 +1,2 @@ -PoolEvent | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +PoolEvent | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/PoolType.html b/docs/types/PoolType.html index 9dcd26fa..a97198a3 100644 --- a/docs/types/PoolType.html +++ b/docs/types/PoolType.html @@ -1,2 +1,2 @@ -PoolType | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +PoolType | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/TaskAsyncFunction.html b/docs/types/TaskAsyncFunction.html index 6e8b155b..53d0511a 100644 --- a/docs/types/TaskAsyncFunction.html +++ b/docs/types/TaskAsyncFunction.html @@ -1,6 +1,6 @@ -TaskAsyncFunction | poolifier - v3.1.13

    Type alias TaskAsyncFunction<Data, Response>

    TaskAsyncFunction<Data, Response>: ((data?) => Promise<Response>)

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Type declaration

      • (data?): Promise<Response>
      • Task asynchronous function that can be executed. +TaskAsyncFunction | poolifier - v3.1.14

        Type alias TaskAsyncFunction<Data, Response>

        TaskAsyncFunction<Data, Response>: ((data?) => Promise<Response>)

        Task asynchronous function that can be executed. This function must return a promise.

        -

        Parameters

        • Optional data: Data

          Data sent to the worker.

          -

        Returns Promise<Response>

    Generated using TypeDoc

    \ No newline at end of file +

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Type declaration

      • (data?): Promise<Response>
      • Parameters

        • Optional data: Data

          Data sent to the worker.

          +

        Returns Promise<Response>

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/TaskFunction.html b/docs/types/TaskFunction.html index b4457a28..7d6bdf2f 100644 --- a/docs/types/TaskFunction.html +++ b/docs/types/TaskFunction.html @@ -1,5 +1,5 @@ -TaskFunction | poolifier - v3.1.13

    Type alias TaskFunction<Data, Response>

    TaskFunction<Data, Response>: TaskSyncFunction<Data, Response> | TaskAsyncFunction<Data, Response>

    Task function that can be executed. +TaskFunction | poolifier - v3.1.14

    Type alias TaskFunction<Data, Response>

    Task function that can be executed. This function can be synchronous or asynchronous.

    -

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/TaskFunctions.html b/docs/types/TaskFunctions.html index 7677ff40..29ff57e6 100644 --- a/docs/types/TaskFunctions.html +++ b/docs/types/TaskFunctions.html @@ -1,7 +1,7 @@ -TaskFunctions | poolifier - v3.1.13

    Type alias TaskFunctions<Data, Response>

    TaskFunctions<Data, Response>: Record<string, TaskFunction<Data, Response>>

    Tasks functions that can be executed. +TaskFunctions | poolifier - v3.1.14

    Type alias TaskFunctions<Data, Response>

    TaskFunctions<Data, Response>: Record<string, TaskFunction<Data, Response>>

    Tasks functions that can be executed. This object can contain synchronous or asynchronous functions. The key is the name of the function. The value is the function itself.

    -

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/TaskSyncFunction.html b/docs/types/TaskSyncFunction.html index 1f03debd..a877a819 100644 --- a/docs/types/TaskSyncFunction.html +++ b/docs/types/TaskSyncFunction.html @@ -1,5 +1,5 @@ -TaskSyncFunction | poolifier - v3.1.13

    Type alias TaskSyncFunction<Data, Response>

    TaskSyncFunction<Data, Response>: ((data?) => Response)

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      -
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      -

    Type declaration

      • (data?): Response
      • Task synchronous function that can be executed.

        -

        Parameters

        • Optional data: Data

          Data sent to the worker.

          -

        Returns Response

    Generated using TypeDoc

    \ No newline at end of file +TaskSyncFunction | poolifier - v3.1.14

    Type alias TaskSyncFunction<Data, Response>

    TaskSyncFunction<Data, Response>: ((data?) => Response)

    Task synchronous function that can be executed.

    +

    Type Parameters

    • Data = unknown

      Type of data sent to the worker. This can only be structured-cloneable data.

      +
    • Response = unknown

      Type of execution response. This can only be structured-cloneable data.

      +

    Type declaration

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/ThreadPoolOptions.html b/docs/types/ThreadPoolOptions.html index beaa9ffe..a7fcf971 100644 --- a/docs/types/ThreadPoolOptions.html +++ b/docs/types/ThreadPoolOptions.html @@ -1,2 +1,2 @@ -ThreadPoolOptions | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +ThreadPoolOptions | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/WorkerChoiceStrategy.html b/docs/types/WorkerChoiceStrategy.html index 7c8e16c8..d82ddfbb 100644 --- a/docs/types/WorkerChoiceStrategy.html +++ b/docs/types/WorkerChoiceStrategy.html @@ -1,2 +1,2 @@ -WorkerChoiceStrategy | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +WorkerChoiceStrategy | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/WorkerType.html b/docs/types/WorkerType.html index b9285678..7488487d 100644 --- a/docs/types/WorkerType.html +++ b/docs/types/WorkerType.html @@ -1,2 +1,2 @@ -WorkerType | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +WorkerType | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/types/Writable.html b/docs/types/Writable.html index 05035759..a76a7851 100644 --- a/docs/types/Writable.html +++ b/docs/types/Writable.html @@ -1 +1 @@ -Writable | poolifier - v3.1.13

    Generated using TypeDoc

    \ No newline at end of file +Writable | poolifier - v3.1.14

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/KillBehaviors.html b/docs/variables/KillBehaviors.html index 33d60a82..8fca0f07 100644 --- a/docs/variables/KillBehaviors.html +++ b/docs/variables/KillBehaviors.html @@ -1,4 +1,4 @@ -KillBehaviors | poolifier - v3.1.13

    Variable KillBehaviorsConst

    KillBehaviors: Readonly<{
        HARD: "HARD";
        SOFT: "SOFT";
    }> = ...

    Enumeration of kill behaviors.

    +KillBehaviors | poolifier - v3.1.14

    Variable KillBehaviorsConst

    KillBehaviors: Readonly<{
        HARD: "HARD";
        SOFT: "SOFT";
    }> = ...

    Enumeration of kill behaviors.

    Type declaration

    • Readonly HARD: "HARD"

      If currentTime - lastActiveTime is greater than maxInactiveTime but a task is still executing or queued, then the worker will be deleted.

    • Readonly SOFT: "SOFT"

      If currentTime - lastActiveTime is greater than maxInactiveTime but a task is still executing or queued, then the worker wont be deleted.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/Measurements.html b/docs/variables/Measurements.html index a8c2c058..6400b21a 100644 --- a/docs/variables/Measurements.html +++ b/docs/variables/Measurements.html @@ -1,2 +1,2 @@ -Measurements | poolifier - v3.1.13

    Variable MeasurementsConst

    Measurements: Readonly<{
        elu: "elu";
        runTime: "runTime";
        waitTime: "waitTime";
    }> = ...

    Enumeration of measurements.

    -

    Type declaration

    • Readonly elu: "elu"
    • Readonly runTime: "runTime"
    • Readonly waitTime: "waitTime"

    Generated using TypeDoc

    \ No newline at end of file +Measurements | poolifier - v3.1.14

    Variable MeasurementsConst

    Measurements: Readonly<{
        elu: "elu";
        runTime: "runTime";
        waitTime: "waitTime";
    }> = ...

    Enumeration of measurements.

    +

    Type declaration

    • Readonly elu: "elu"
    • Readonly runTime: "runTime"
    • Readonly waitTime: "waitTime"

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/PoolEvents.html b/docs/variables/PoolEvents.html index 59bffde4..4f66c861 100644 --- a/docs/variables/PoolEvents.html +++ b/docs/variables/PoolEvents.html @@ -1,2 +1,2 @@ -PoolEvents | poolifier - v3.1.13

    Variable PoolEventsConst

    PoolEvents: Readonly<{
        backPressure: "backPressure";
        busy: "busy";
        destroy: "destroy";
        error: "error";
        full: "full";
        ready: "ready";
        taskError: "taskError";
    }> = ...

    Enumeration of pool events.

    -

    Type declaration

    • Readonly backPressure: "backPressure"
    • Readonly busy: "busy"
    • Readonly destroy: "destroy"
    • Readonly error: "error"
    • Readonly full: "full"
    • Readonly ready: "ready"
    • Readonly taskError: "taskError"

    Generated using TypeDoc

    \ No newline at end of file +PoolEvents | poolifier - v3.1.14

    Variable PoolEventsConst

    PoolEvents: Readonly<{
        backPressure: "backPressure";
        busy: "busy";
        destroy: "destroy";
        error: "error";
        full: "full";
        ready: "ready";
        taskError: "taskError";
    }> = ...

    Enumeration of pool events.

    +

    Type declaration

    • Readonly backPressure: "backPressure"
    • Readonly busy: "busy"
    • Readonly destroy: "destroy"
    • Readonly error: "error"
    • Readonly full: "full"
    • Readonly ready: "ready"
    • Readonly taskError: "taskError"

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/PoolTypes.html b/docs/variables/PoolTypes.html index c2a1800a..ddd91278 100644 --- a/docs/variables/PoolTypes.html +++ b/docs/variables/PoolTypes.html @@ -1,4 +1,4 @@ -PoolTypes | poolifier - v3.1.13

    Variable PoolTypesConst

    PoolTypes: Readonly<{
        dynamic: "dynamic";
        fixed: "fixed";
    }> = ...

    Enumeration of pool types.

    +PoolTypes | poolifier - v3.1.14

    Variable PoolTypesConst

    PoolTypes: Readonly<{
        dynamic: "dynamic";
        fixed: "fixed";
    }> = ...

    Enumeration of pool types.

    Type declaration

    • Readonly dynamic: "dynamic"

      Dynamic pool type.

    • Readonly fixed: "fixed"

      Fixed pool type.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/WorkerChoiceStrategies.html b/docs/variables/WorkerChoiceStrategies.html index 4fc09e7f..2e840aa7 100644 --- a/docs/variables/WorkerChoiceStrategies.html +++ b/docs/variables/WorkerChoiceStrategies.html @@ -1,4 +1,4 @@ -WorkerChoiceStrategies | poolifier - v3.1.13

    Variable WorkerChoiceStrategiesConst

    WorkerChoiceStrategies: Readonly<{
        FAIR_SHARE: "FAIR_SHARE";
        INTERLEAVED_WEIGHTED_ROUND_ROBIN: "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        LEAST_BUSY: "LEAST_BUSY";
        LEAST_ELU: "LEAST_ELU";
        LEAST_USED: "LEAST_USED";
        ROUND_ROBIN: "ROUND_ROBIN";
        WEIGHTED_ROUND_ROBIN: "WEIGHTED_ROUND_ROBIN";
    }> = ...

    Enumeration of worker choice strategies.

    +WorkerChoiceStrategies | poolifier - v3.1.14

    Variable WorkerChoiceStrategiesConst

    WorkerChoiceStrategies: Readonly<{
        FAIR_SHARE: "FAIR_SHARE";
        INTERLEAVED_WEIGHTED_ROUND_ROBIN: "INTERLEAVED_WEIGHTED_ROUND_ROBIN";
        LEAST_BUSY: "LEAST_BUSY";
        LEAST_ELU: "LEAST_ELU";
        LEAST_USED: "LEAST_USED";
        ROUND_ROBIN: "ROUND_ROBIN";
        WEIGHTED_ROUND_ROBIN: "WEIGHTED_ROUND_ROBIN";
    }> = ...

    Enumeration of worker choice strategies.

    Type declaration

    • Readonly FAIR_SHARE: "FAIR_SHARE"

      Fair share worker selection strategy.

    • Readonly Experimental INTERLEAVED_WEIGHTED_ROUND_ROBIN: "INTERLEAVED_WEIGHTED_ROUND_ROBIN"

      Interleaved weighted round robin worker selection strategy.

    • Readonly LEAST_BUSY: "LEAST_BUSY"

      Least busy worker selection strategy.

      @@ -6,4 +6,4 @@
    • Readonly LEAST_USED: "LEAST_USED"

      Least used worker selection strategy.

    • Readonly ROUND_ROBIN: "ROUND_ROBIN"

      Round robin worker selection strategy.

    • Readonly WEIGHTED_ROUND_ROBIN: "WEIGHTED_ROUND_ROBIN"

      Weighted round robin worker selection strategy.

      -

    Generated using TypeDoc

    \ No newline at end of file +

    Generated using TypeDoc

    \ No newline at end of file diff --git a/docs/variables/WorkerTypes.html b/docs/variables/WorkerTypes.html index 95b8099e..d436beb7 100644 --- a/docs/variables/WorkerTypes.html +++ b/docs/variables/WorkerTypes.html @@ -1,2 +1,2 @@ -WorkerTypes | poolifier - v3.1.13

    Variable WorkerTypesConst

    WorkerTypes: Readonly<{
        cluster: "cluster";
        thread: "thread";
    }> = ...

    Enumeration of worker types.

    -

    Type declaration

    • Readonly cluster: "cluster"
    • Readonly thread: "thread"

    Generated using TypeDoc

    \ No newline at end of file +WorkerTypes | poolifier - v3.1.14

    Variable WorkerTypesConst

    WorkerTypes: Readonly<{
        cluster: "cluster";
        thread: "thread";
    }> = ...

    Enumeration of worker types.

    +

    Type declaration

    • Readonly cluster: "cluster"
    • Readonly thread: "thread"

    Generated using TypeDoc

    \ No newline at end of file