From a839173dd62763694ff06bbb32f3848ee4ca3ded Mon Sep 17 00:00:00 2001 From: Documentation Bot Date: Tue, 1 Jul 2025 14:32:42 +0000 Subject: [PATCH] docs: publish documentation --- docs/assets/hierarchy.js | 1 + docs/assets/highlight.css | 32 +- docs/assets/icons.js | 2 +- docs/assets/icons.svg | 2 +- docs/assets/main.js | 10 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/assets/style.css | 2716 +++++++++-------- docs/classes/src.AbstractPool.html | 164 - docs/classes/src.AbstractWorker.html | 80 - docs/classes/src.CircularBuffer.html | 24 - docs/classes/src.ClusterWorker.html | 445 ++- docs/classes/src.DynamicClusterPool.html | 234 +- docs/classes/src.DynamicThreadPool.html | 236 +- docs/classes/src.FixedClusterPool.html | 234 +- docs/classes/src.FixedThreadPool.html | 236 +- docs/classes/src.PriorityQueue.html | 42 - docs/classes/src.ThreadWorker.html | 445 ++- .../src.WorkerChoiceStrategiesContext.html | 48 - docs/documents/api.html | 104 +- docs/documents/general-guidelines.html | 30 + docs/documents/general_guidelines.html | 30 - docs/documents/worker-choice-strategies.html | 24 + docs/documents/worker_choice_strategies.html | 24 - docs/functions/src.availableParallelism.html | 6 +- docs/hierarchy.html | 2 +- docs/index.html | 6 +- docs/interfaces/src.AbstractPool.html | 120 + docs/interfaces/src.AbstractWorker.html | 218 ++ docs/interfaces/src.CircularBuffer.html | 18 + ...tLoopUtilizationMeasurementStatistics.html | 10 +- docs/interfaces/src.FixedQueueNode.html | 10 +- docs/interfaces/src.IFixedQueue.html | 68 +- docs/interfaces/src.IPool.html | 112 +- docs/interfaces/src.IWorker.html | 156 +- .../interfaces/src.IWorkerChoiceStrategy.html | 42 +- docs/interfaces/src.IWorkerNode.html | 248 +- docs/interfaces/src.MeasurementOptions.html | 8 +- .../interfaces/src.MeasurementStatistics.html | 28 +- ...src.MeasurementStatisticsRequirements.html | 16 +- docs/interfaces/src.MessageValue.html | 97 +- docs/interfaces/src.PoolInfo.html | 70 +- docs/interfaces/src.PoolOptions.html | 84 +- docs/interfaces/src.PriorityQueue.html | 35 + .../src.PromiseResponseWrapper.html | 24 +- docs/interfaces/src.StrategyData.html | 6 +- docs/interfaces/src.StrategyPolicy.html | 12 +- docs/interfaces/src.Task.html | 38 +- docs/interfaces/src.TaskFunctionObject.html | 20 +- .../src.TaskFunctionOperationResult.html | 8 +- .../src.TaskFunctionProperties.html | 16 +- docs/interfaces/src.TaskPerformance.html | 20 +- docs/interfaces/src.TaskStatistics.html | 32 +- .../src.TaskStatisticsRequirements.html | 16 +- docs/interfaces/src.TasksQueueOptions.html | 40 +- .../src.WorkerChoiceStrategiesContext.html | 40 + .../src.WorkerChoiceStrategyOptions.html | 32 +- docs/interfaces/src.WorkerError.html | 28 +- docs/interfaces/src.WorkerInfo.html | 47 +- .../interfaces/src.WorkerNodeEventDetail.html | 9 +- docs/interfaces/src.WorkerNodeOptions.html | 14 +- docs/interfaces/src.WorkerOptions.html | 22 +- docs/interfaces/src.WorkerStatistics.html | 12 +- docs/interfaces/src.WorkerUsage.html | 20 +- docs/modules/src.html | 71 +- docs/types/src.ClusterPoolOptions.html | 4 +- docs/types/src.ErrorHandler.html | 6 +- docs/types/src.EventHandler.html | 6 +- docs/types/src.ExitHandler.html | 6 +- docs/types/src.KillBehavior.html | 4 +- docs/types/src.KillHandler.html | 4 +- docs/types/src.Measurement.html | 4 +- docs/types/src.MessageHandler.html | 6 +- docs/types/src.OnlineHandler.html | 6 +- docs/types/src.PoolEvent.html | 4 +- docs/types/src.PoolType.html | 4 +- docs/types/src.TaskAsyncFunction.html | 12 +- docs/types/src.TaskFunction.html | 8 +- docs/types/src.TaskFunctions.html | 8 +- docs/types/src.TaskSyncFunction.html | 12 +- docs/types/src.ThreadPoolOptions.html | 4 +- docs/types/src.WorkerChoiceStrategy.html | 4 +- docs/types/src.WorkerType.html | 4 +- docs/types/src.Writable.html | 6 +- docs/variables/src.KillBehaviors.html | 4 +- docs/variables/src.Measurements.html | 4 +- docs/variables/src.PoolEvents.html | 4 +- docs/variables/src.PoolTypes.html | 4 +- .../variables/src.WorkerChoiceStrategies.html | 4 +- docs/variables/src.WorkerTypes.html | 4 +- 90 files changed, 3915 insertions(+), 3269 deletions(-) create mode 100644 docs/assets/hierarchy.js delete mode 100644 docs/classes/src.AbstractPool.html delete mode 100644 docs/classes/src.AbstractWorker.html delete mode 100644 docs/classes/src.CircularBuffer.html delete mode 100644 docs/classes/src.PriorityQueue.html delete mode 100644 docs/classes/src.WorkerChoiceStrategiesContext.html create mode 100644 docs/documents/general-guidelines.html delete mode 100644 docs/documents/general_guidelines.html create mode 100644 docs/documents/worker-choice-strategies.html delete mode 100644 docs/documents/worker_choice_strategies.html create mode 100644 docs/interfaces/src.AbstractPool.html create mode 100644 docs/interfaces/src.AbstractWorker.html create mode 100644 docs/interfaces/src.CircularBuffer.html create mode 100644 docs/interfaces/src.PriorityQueue.html create mode 100644 docs/interfaces/src.WorkerChoiceStrategiesContext.html diff --git a/docs/assets/hierarchy.js b/docs/assets/hierarchy.js new file mode 100644 index 000000000..8e501a387 --- /dev/null +++ b/docs/assets/hierarchy.js @@ -0,0 +1 @@ +window.hierarchyData = "eJydkzFPwzAQhf/LzabETuI43hAIqQMSQwVD1cEkVxrVTSTblUBV/jtyWsBNqZKwZHDe0/funX0A0zTOglzSjMWEi4hQLvIVAYNrjYWrmtqCPABL/bdWOwQJd2/WGVW456bRQGBb1SVIlnICe6NBQlU7NGtVoL21ppiF8tnG7byn0MpakOBseeP9Nz8e/3NT6dJgDXKZsoxQGiWrlkDMsyDEw2etdlVxr/fWoTmLQpn4jtJxTjkuHVfTHA9aAikLmY/VB5YTiH39AO9s8phnfmguoiDAfGTl8/90zVIPzJP4suXFxqAqJ5T8axju2O+3X/J4YE8+peI8if3ElKc04D+hteodX5Te44iqQ/mIxjueyAPeQtntCI6XTd2on6ybMGPxH+/3tTFbNBNe8NEwOUUeCcJocoySRyKIcnocvSRXVn0mHr5XHhn23N2RcaRQOwRq2y9l67uY" \ No newline at end of file diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css index 0b3cf03be..e1ed7bee0 100644 --- a/docs/assets/highlight.css +++ b/docs/assets/highlight.css @@ -1,22 +1,22 @@ :root { - --light-hl-0: #001080; - --dark-hl-0: #9CDCFE; - --light-hl-1: #0000FF; - --dark-hl-1: #569CD6; - --light-hl-2: #000000; - --dark-hl-2: #D4D4D4; - --light-hl-3: #0070C1; - --dark-hl-3: #4FC1FF; - --light-hl-4: #AF00DB; - --dark-hl-4: #C586C0; - --light-hl-5: #A31515; - --dark-hl-5: #CE9178; + --light-hl-0: #AF00DB; + --dark-hl-0: #C586C0; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #001080; + --dark-hl-2: #9CDCFE; + --light-hl-3: #A31515; + --dark-hl-3: #CE9178; + --light-hl-4: #0000FF; + --dark-hl-4: #569CD6; + --light-hl-5: #0070C1; + --dark-hl-5: #4FC1FF; --light-hl-6: #795E26; --dark-hl-6: #DCDCAA; - --light-hl-7: #008000; - --dark-hl-7: #6A9955; - --light-hl-8: #098658; - --dark-hl-8: #B5CEA8; + --light-hl-7: #098658; + --dark-hl-7: #B5CEA8; + --light-hl-8: #008000; + --dark-hl-8: #6A9955; --light-hl-9: #267F99; --dark-hl-9: #4EC9B0; --light-hl-10: #000000; diff --git a/docs/assets/icons.js b/docs/assets/icons.js index 3dfbd322d..58882d76d 100644 --- a/docs/assets/icons.js +++ b/docs/assets/icons.js @@ -3,7 +3,7 @@ function addIcons() { if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); - svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; + svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; svg.style.display = "none"; if (location.protocol === "file:") updateUseElements(); } diff --git a/docs/assets/icons.svg b/docs/assets/icons.svg index a19417dcc..50ad5799d 100644 --- a/docs/assets/icons.svg +++ b/docs/assets/icons.svg @@ -1 +1 @@ -MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file +MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js index 99097a053..19bbb7a74 100644 --- a/docs/assets/main.js +++ b/docs/assets/main.js @@ -1,9 +1,9 @@ "use strict"; -window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; -"use strict";(()=>{var Pe=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Pe(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(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),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,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 ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.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()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}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&&!Ve(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}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)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}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=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function Ve(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(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=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){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",()=>{ce(e,t)}),ce(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");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),He(t,i,r,e)}function He(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Be(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}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=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Be(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),te(e)}}function he(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(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var je={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>je[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",N="mouseup",J={x:0,y:0},me=!1,ne=!1,qe=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(qe=!0,F="touchstart",ye="touchmove",N="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!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(N,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,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 re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{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()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.app.updateIndexVisibility()}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(),this.app.updateIndexVisibility()}};var Z=class extends I{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 Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){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();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(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-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(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)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else{let r=e.appendChild(document.createElement("span"));r.innerHTML='',r.appendChild(document.createElement("span")).textContent=t.text}}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var $e=new U;Object.defineProperty(window,"app",{value:$e});fe();we();})(); +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings.","hierarchy_expand":"Expand","hierarchy_collapse":"Collapse","folder":"Folder","search_index_not_available":"The search index is not available","search_no_results_found_for_0":"No results found for {0}","kind_1":"Project","kind_2":"Module","kind_4":"Namespace","kind_8":"Enumeration","kind_16":"Enumeration Member","kind_32":"Variable","kind_64":"Function","kind_128":"Class","kind_256":"Interface","kind_512":"Constructor","kind_1024":"Property","kind_2048":"Method","kind_4096":"Call Signature","kind_8192":"Index Signature","kind_16384":"Constructor Signature","kind_32768":"Parameter","kind_65536":"Type Literal","kind_131072":"Type Parameter","kind_262144":"Accessor","kind_524288":"Get Signature","kind_1048576":"Set Signature","kind_2097152":"Type Alias","kind_4194304":"Reference","kind_8388608":"Document"}; +"use strict";(()=>{var Ke=Object.create;var he=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var et=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var tt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ze(e))!Ye.call(t,i)&&i!==n&&he(t,i,{get:()=>e[i],enumerable:!(r=Ge(e,i))||r.enumerable});return t};var nt=(t,e,n)=>(n=t!=null?Ke(Xe(t)):{},tt(e||!t||!t.__esModule?he(n,"default",{value:t,enumerable:!0}):n,t));var ye=et((me,ge)=>{(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,l],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(oc?d+=2:a==c&&(n+=r[l+1]*i[d+1],l+=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 c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}if(s.str.length==0&&(c.final=!0),i.push({node:c,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 l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,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),c=0;c1?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 me=="object"?ge.exports=n():e.lunr=n()}(this,function(){return t})})()});var M,G={getItem(){return null},setItem(){}},K;try{K=localStorage,M=K}catch{K=G,M=G}var S={getItem:t=>M.getItem(t),setItem:(t,e)=>M.setItem(t,e),disableWritingLocalStorage(){M=G},disable(){localStorage.clear(),M=G},enable(){M=K}};window.TypeDoc||={disableWritingLocalStorage(){S.disableWritingLocalStorage()},disableLocalStorage:()=>{S.disable()},enableLocalStorage:()=>{S.enable()}};window.translations||={copy:"Copy",copied:"Copied!",normally_hidden:"This member is normally hidden due to your filter settings.",hierarchy_expand:"Expand",hierarchy_collapse:"Collapse",search_index_not_available:"The search index is not available",search_no_results_found_for_0:"No results found for {0}",folder:"Folder",kind_1:"Project",kind_2:"Module",kind_4:"Namespace",kind_8:"Enumeration",kind_16:"Enumeration Member",kind_32:"Variable",kind_64:"Function",kind_128:"Class",kind_256:"Interface",kind_512:"Constructor",kind_1024:"Property",kind_2048:"Method",kind_4096:"Call Signature",kind_8192:"Index Signature",kind_16384:"Constructor Signature",kind_32768:"Parameter",kind_65536:"Type Literal",kind_131072:"Type Parameter",kind_262144:"Accessor",kind_524288:"Get Signature",kind_1048576:"Set Signature",kind_2097152:"Type Alias",kind_4194304:"Reference",kind_8388608:"Document"};var pe=[];function X(t,e){pe.push({selector:e,constructor:t})}var Z=class{alwaysVisibleMember=null;constructor(){this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){pe.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()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}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&&!rt(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}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)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}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=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function rt(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var fe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var Ie=nt(ye(),1);async function R(t){let e=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate")),i=await new Response(r).text();return JSON.parse(i)}var Y="closing",ae="tsd-overlay";function it(){let t=Math.abs(window.innerWidth-document.documentElement.clientWidth);document.body.style.overflow="hidden",document.body.style.paddingRight=`${t}px`}function st(){document.body.style.removeProperty("overflow"),document.body.style.removeProperty("padding-right")}function xe(t,e){t.addEventListener("animationend",()=>{t.classList.contains(Y)&&(t.classList.remove(Y),document.getElementById(ae)?.remove(),t.close(),st())}),t.addEventListener("cancel",n=>{n.preventDefault(),ve(t)}),e?.closeOnClick&&document.addEventListener("click",n=>{t.open&&!t.contains(n.target)&&ve(t)},!0)}function Ee(t){if(t.open)return;let e=document.createElement("div");e.id=ae,document.body.appendChild(e),t.showModal(),it()}function ve(t){if(!t.open)return;document.getElementById(ae)?.classList.add(Y),t.classList.add(Y)}var I=class{el;app;constructor(e){this.el=e.el,this.app=e.app}};var be=document.head.appendChild(document.createElement("style"));be.dataset.for="filters";var le={};function we(t){for(let e of t.split(/\s+/))if(le.hasOwnProperty(e)&&!le[e])return!0;return!1}var ee=class extends I{key;value;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()),be.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=S.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){S.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),le[`tsd-is-${this.el.name}`]=this.value,this.app.filterChanged(),this.app.updateIndexVisibility()}};var Le=0;async function Se(t,e){if(!window.searchData)return;let n=await R(window.searchData);t.data=n,t.index=Ie.Index.load(n.index),e.innerHTML=""}function _e(){let t=document.getElementById("tsd-search-trigger"),e=document.getElementById("tsd-search"),n=document.getElementById("tsd-search-input"),r=document.getElementById("tsd-search-results"),i=document.getElementById("tsd-search-script"),s=document.getElementById("tsd-search-status");if(!(t&&e&&n&&r&&i&&s))throw new Error("Search controls missing");let o={base:document.documentElement.dataset.base};o.base.endsWith("/")||(o.base+="/"),i.addEventListener("error",()=>{let a=window.translations.search_index_not_available;Pe(s,a)}),i.addEventListener("load",()=>{Se(o,s)}),Se(o,s),ot({trigger:t,searchEl:e,results:r,field:n,status:s},o)}function ot(t,e){let{field:n,results:r,searchEl:i,status:s,trigger:o}=t;xe(i,{closeOnClick:!0});function a(){Ee(i),n.setSelectionRange(0,n.value.length)}o.addEventListener("click",a),n.addEventListener("input",fe(()=>{at(r,n,s,e)},200)),n.addEventListener("keydown",l=>{if(r.childElementCount===0||l.ctrlKey||l.metaKey||l.altKey)return;let d=n.getAttribute("aria-activedescendant"),f=d?document.getElementById(d):null;if(f){let p=!1,v=!1;switch(l.key){case"Home":case"End":case"ArrowLeft":case"ArrowRight":v=!0;break;case"ArrowDown":case"ArrowUp":p=l.shiftKey;break}(p||v)&&ke(n)}if(!l.shiftKey)switch(l.key){case"Enter":f?.querySelector("a")?.click();break;case"ArrowUp":Te(r,n,f,-1),l.preventDefault();break;case"ArrowDown":Te(r,n,f,1),l.preventDefault();break}});function c(){ke(n)}n.addEventListener("change",c),n.addEventListener("blur",c),n.addEventListener("click",c),document.body.addEventListener("keydown",l=>{if(l.altKey||l.metaKey||l.shiftKey)return;let d=l.ctrlKey&&l.key==="k",f=!l.ctrlKey&&!ut()&&l.key==="/";(d||f)&&(l.preventDefault(),a())})}function at(t,e,n,r){if(!r.index||!r.data)return;t.innerHTML="",n.innerHTML="",Le+=1;let i=e.value.trim(),s;if(i){let a=i.split(" ").map(c=>c.length?`*${c}*`:"").join(" ");s=r.index.search(a).filter(({ref:c})=>{let l=r.data.rows[Number(c)].classes;return!l||!we(l)})}else s=[];if(s.length===0&&i){let a=window.translations.search_no_results_found_for_0.replace("{0}",` "${te(i)}" `);Pe(n,a);return}for(let a=0;ac.score-a.score);let o=Math.min(10,s.length);for(let a=0;a`,f=Ce(c.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(f+=` (score: ${s[a].score.toFixed(2)})`),c.parent&&(f=` + ${Ce(c.parent,i)}.${f}`);let p=document.createElement("li");p.id=`tsd-search:${Le}-${a}`,p.role="option",p.ariaSelected="false",p.classList.value=c.classes??"";let v=document.createElement("a");v.tabIndex=-1,v.href=r.base+c.url,v.innerHTML=d+`${f}`,p.append(v),t.appendChild(p)}}function Te(t,e,n,r){let i;if(r===1?i=n?.nextElementSibling||t.firstElementChild:i=n?.previousElementSibling||t.lastElementChild,i!==n){if(!i||i.role!=="option"){console.error("Option missing");return}i.ariaSelected="true",i.scrollIntoView({behavior:"smooth",block:"nearest"}),e.setAttribute("aria-activedescendant",i.id),n?.setAttribute("aria-selected","false")}}function ke(t){let e=t.getAttribute("aria-activedescendant");(e?document.getElementById(e):null)?.setAttribute("aria-selected","false"),t.setAttribute("aria-activedescendant","")}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(te(t.substring(s,o)),`${te(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(te(t.substring(s))),i.join("")}var lt={"&":"&","<":"<",">":">","'":"'",'"':"""};function te(t){return t.replace(/[&<>"'"]/g,e=>lt[e])}function Pe(t,e){t.innerHTML=e?`
${e}
`:""}var ct=["button","checkbox","file","hidden","image","radio","range","reset","submit"];function ut(){let t=document.activeElement;return t?t.isContentEditable||t.tagName==="TEXTAREA"||t.tagName==="SEARCH"?!0:t.tagName==="INPUT"&&!ct.includes(t.type):!1}var D="mousedown",Me="mousemove",$="mouseup",ne={x:0,y:0},Qe=!1,ce=!1,dt=!1,F=!1,Oe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Oe?"is-mobile":"not-mobile");Oe&&"ontouchstart"in document.documentElement&&(dt=!0,D="touchstart",Me="touchmove",$="touchend");document.addEventListener(D,t=>{ce=!0,F=!1;let e=D=="touchstart"?t.targetTouches[0]:t;ne.y=e.pageY||0,ne.x=e.pageX||0});document.addEventListener(Me,t=>{if(ce&&!F){let e=D=="touchstart"?t.targetTouches[0]:t,n=ne.x-(e.pageX||0),r=ne.y-(e.pageY||0);F=Math.sqrt(n*n+r*r)>10}});document.addEventListener($,()=>{ce=!1});document.addEventListener("click",t=>{Qe&&(t.preventDefault(),t.stopImmediatePropagation(),Qe=!1)});var re=class extends I{active;className;constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener($,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(D,n=>this.onDocumentPointerDown(n)),document.addEventListener($,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){F||(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(!F&&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 ue=new Map,de=class{open;accordions=[];key;constructor(e,n){this.key=e,this.open=n}add(e){this.accordions.push(e),e.open=this.open,e.addEventListener("toggle",()=>{this.toggle(e.open)})}toggle(e){for(let n of this.accordions)n.open=e;S.setItem(this.key,e.toString())}},ie=class extends I{constructor(e){super(e);let n=this.el.querySelector("summary"),r=n.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)});let i=`tsd-accordion-${n.dataset.key??n.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`,s;if(ue.has(i))s=ue.get(i);else{let o=S.getItem(i),a=o?o==="true":this.el.open;s=new de(i,a),ue.set(i,s)}s.add(this.el)}};function He(t){let e=S.getItem("tsd-theme")||"os";t.value=e,Ae(e),t.addEventListener("change",()=>{S.setItem("tsd-theme",t.value),Ae(t.value)})}function Ae(t){document.documentElement.dataset.theme=t}var se;function Ne(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Re),Re())}async function Re(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let e=await R(window.navigationData);se=document.documentElement.dataset.base,se.endsWith("/")||(se+="/"),t.innerHTML="";for(let n of e)Be(n,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Be(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-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',De(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let c=a.appendChild(document.createElement("ul"));c.className="tsd-nested-navigation";for(let l of t.children)Be(l,c,i)}else De(t,r,t.class)}function De(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));if(r.href=se+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&(r.classList.add("current"),r.ariaCurrent="page"),t.kind){let i=window.translations[`kind_${t.kind}`].replaceAll('"',""");r.innerHTML=``}r.appendChild(Fe(t.text,document.createElement("span")))}else{let r=e.appendChild(document.createElement("span")),i=window.translations.folder.replaceAll('"',""");r.innerHTML=``,r.appendChild(Fe(t.text,document.createElement("span")))}}function Fe(t,e){let n=t.split(/(?<=[^A-Z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[_-])(?=[^_-])/);for(let r=0;r{let i=r.target;for(;i.parentElement&&i.parentElement.tagName!="LI";)i=i.parentElement;i.dataset.dropdown&&(i.dataset.dropdown=String(i.dataset.dropdown!=="true"))});let t=new Map,e=new Set;for(let r of document.querySelectorAll(".tsd-full-hierarchy [data-refl]")){let i=r.querySelector("ul");t.has(r.dataset.refl)?e.add(r.dataset.refl):i&&t.set(r.dataset.refl,i)}for(let r of e)n(r);function n(r){let i=t.get(r).cloneNode(!0);i.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),i.querySelectorAll("[data-dropdown]").forEach(s=>{s.dataset.dropdown="false"});for(let s of document.querySelectorAll(`[data-refl="${r}"]`)){let o=gt(),a=s.querySelector("ul");s.insertBefore(o,a),o.dataset.dropdown=String(!!a),a||s.appendChild(i.cloneNode(!0))}}}function pt(){let t=document.getElementById("tsd-hierarchy-script");t&&(t.addEventListener("load",Ve),Ve())}async function Ve(){let t=document.querySelector(".tsd-panel.tsd-hierarchy:has(h4 a)");if(!t||!window.hierarchyData)return;let e=+t.dataset.refl,n=await R(window.hierarchyData),r=t.querySelector("ul"),i=document.createElement("ul");if(i.classList.add("tsd-hierarchy"),ft(i,n,e),r.querySelectorAll("li").length==i.querySelectorAll("li").length)return;let s=document.createElement("span");s.classList.add("tsd-hierarchy-toggle"),s.textContent=window.translations.hierarchy_expand,t.querySelector("h4 a")?.insertAdjacentElement("afterend",s),s.insertAdjacentText("beforebegin",", "),s.addEventListener("click",()=>{s.textContent===window.translations.hierarchy_expand?(r.insertAdjacentElement("afterend",i),r.remove(),s.textContent=window.translations.hierarchy_collapse):(i.insertAdjacentElement("afterend",r),i.remove(),s.textContent=window.translations.hierarchy_expand)})}function ft(t,e,n){let r=e.roots.filter(i=>mt(e,i,n));for(let i of r)t.appendChild(je(e,i,n))}function je(t,e,n,r=new Set){if(r.has(e))return;r.add(e);let i=t.reflections[e],s=document.createElement("li");if(s.classList.add("tsd-hierarchy-item"),e===n){let o=s.appendChild(document.createElement("span"));o.textContent=i.name,o.classList.add("tsd-hierarchy-target")}else{for(let a of i.uniqueNameParents||[]){let c=t.reflections[a],l=s.appendChild(document.createElement("a"));l.textContent=c.name,l.href=oe+c.url,l.className=c.class+" tsd-signature-type",s.append(document.createTextNode("."))}let o=s.appendChild(document.createElement("a"));o.textContent=t.reflections[e].name,o.href=oe+i.url,o.className=i.class+" tsd-signature-type"}if(i.children){let o=s.appendChild(document.createElement("ul"));o.classList.add("tsd-hierarchy");for(let a of i.children){let c=je(t,a,n,r);c&&o.appendChild(c)}}return r.delete(e),s}function mt(t,e,n){if(e===n)return!0;let r=new Set,i=[t.reflections[e]];for(;i.length;){let s=i.pop();if(!r.has(s)){r.add(s);for(let o of s.children||[]){if(o===n)return!0;i.push(t.reflections[o])}}}return!1}function gt(){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.innerHTML='',t}X(re,"a[data-toggle]");X(ie,".tsd-accordion");X(ee,".tsd-filter-item input[type=checkbox]");var qe=document.getElementById("tsd-theme");qe&&He(qe);var yt=new Z;Object.defineProperty(window,"app",{value:yt});_e();Ne();$e();"virtualKeyboard"in navigator&&(navigator.virtualKeyboard.overlaysContent=!0);})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 5d2a30c2f..96c4916b3 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA52Y21IUMRBA/2WeQRQVkTdulpQXVi7yYFFUyPSykWwyJhlktfh3K7OXSWaT7uDr9unTmaSTzOyPv5WDR1ftVawR1UbVMDep9qpa83YKytkt1ogXEzeV1UZ1L1Rd7e2+3t3debn7tLHKvAMFhsnNu1bUIIUCmxItqJueory/tbkHs8knWnDYtM4wB3cibZ+zN3P2pmepGtbwXjfVdSvBblnD47ztjYpPhKwNqGrvxyp5/9YX4m6ktewtXDJrF5aQiJWvtsNhLLmr7jFw15zBbIfC8FYyc9COxzlbzKA22VoHBhtahGCuo5liU8EXfH7e1rkC68XEAKtJaY9hzg/iEWpynEOKNFJjHECYb2SENsLNvrXQQtoWIZhrXhFb4pDATHPisNuH56tteKhVF0+q0RSs1vEDKPdZ6+bSCSn+MCe0+gLMtgb8qXDumBPWCR6cGEI5MGPGF6WLDYPz4O3OcGG7Kf6qa8jWijFMeNKjWVvAoKq41YaS9R4bpA9bYihINURSES3vjBLGdIEenfmAwVTBwp82vhPyfbOOFooLevLZ/ZdMOINfrZj/+MxSYSZe1lp2B9+ZRNo0hDCZb8QTNdZZ0RKgJNTKBQyqMnoqLJyBbbSycGVY0yD7II1jBZa9fcQcy2pDqEQ20lLw/OaKMUx4wex9VuODVPKHVnE/yae3P4E7VBWjxeIGTHdcn4FtZWGFOKe01MjoBoyL3jyRKj1OFRiBGWszZYrnN9CAo5S2uxGoTbBGUtqCYyvGyoVFB1U+BSuUukuoqUFy6FLHxuj8IREwtAo9DHuEFvlbr3vNOQLHRP5dIEmX6cvmNCBpbZmyWFfQv0OQll76m43wdQymCj4e1p7ZzZr4Ayt/eb18/+7V2+3w3di32UemahleW70xjJMu3xCYK4iTrkeBqvowZfokpDyACXsQOqkK4yUuZFRBmDIFr1QpUxCmTd2rEzKsmKB8p8r/64LoIoCy+Vbs1j1lWgVLLBezBnISH6Mc/m7YtzPFlxdwSrYGlVgp4f+4kts7Akps5wWPe/6cp13944AcQmsQZcW//HpxwTdfxp3rnT5Keoxw7FamLYvYc06iYOYemBE+ff04Gszc68wBknWFDKJabcOsqCcIjZ9K1NIBiCT9J0/OmKZJPTrKAEFE7IEJ6ZNGzDApQQo77Y3j5SbtjCk2Vu+8ebp+uv4HgKxIvWUXAAA=" \ No newline at end of file +window.navigationData = "eJydmMlSGzEQQP9lzhC2QAg31oorCw5LOFAchKaNFWRpImkITop/T2kwHsmWuuVc3a9fa0atZXz7t3Lw7KqDijWiWqsa5sbVQVVr3k5AObvBGvFu7CayWqsehaqrg/2d/f29zf2XtXnmAygwTK4/tKIGKRTYlGiZory/tXkEs87HWnBYt84wBw8ibc+xVA1reK+b6LqVYDes4XHe9lrFx0LWBlR1cDtPPpatdWBuutq9hktm7UwTIbF0azscyMlUsYngM36otUwLl7kC69XYAKtJaY9hzjPxDDU5zkWKNFJjXIAw3yuFTUtIYKbDe99K3MXDEsqBGTE+k4XQQt/s7iVkiwPL6FKji4XHwvBWMnPUjkaIMMYw4ekTKPdF6+baCSn+MCe0+grMtgb8Mrt0zAnrBLfZWsUGbBjdVH9voYVvuoZsrRjDhIMezdoCBlWhrTCgemBATP6AnvUZctxtdZevO92UEsZ0gR598wGDqYKJP298J+T7ZhktFBf05Mr9l0y4gF+teP1xxVJhJl7WWvYAP5hE2jSEMJlvxIEa6azoDaAk1MwFDKoyQhvhpvgijChcpyfCwgXYRisLN4Y1DbKs0jhW4G2pnDDHstoQKpENtRQ8v1ZjDBNeMfuY1fgglXzWKu7n7Pz+J3CHqmK0WNyA6Xb/C7CtLKwQ55SWGhrdgHHRzRCp0uNUgSGYkTYTpni+Yxc4Smm7zqbW1BJJaQt2wRgrFxbte/kUrFDiaBJgj7Xq4rlaaNaK5abUTCA5dKlTY3R+TwoYWoVu5T1Ci/yZ3V3STsAxkb/JJOkyfdk7DUhaW6Ys1hUsl0WQll77c5nwdQx6pe+/mJae2U2b+Ksyf/Rufvywtbsd3ux9m31iqpbhKdkbwzjp8g2BuYI46XoWqKoPU6bPQsojGLMnoZOqMF7iQkYVhClTcCFMmYIwbeoufsiwYoLynSv/JwyiiwDK5luxm/eUaR4ssVxNG8hJfIxy+KPo0E4VfzvvU7IlqMRKCf/HlVzeEVBiuyx43MtVnnb+NwuyCS1BlBX/bu3FBV+sGXeud/oo6THCsXuZtsxiq+xEwZt7Ykb49OXtaOHN7WQ2kKwrZBDVfBlmRT1BaPyrRC0dgEjSl7icMU2TenSUAYKI2BMT0icNmWFSghR20htHb4u0M6bYWL33/uXu5e4fzOwh7w==" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 632e9ee03..de8d839b7 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 = "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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css index 178bfb023..5ba5a2a90 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -1,115 +1,278 @@ -:root { - /* Light */ - --light-color-background: #f2f4f8; - --light-color-background-secondary: #eff0f1; - --light-color-warning-text: #222; - --light-color-background-warning: #e6e600; - --light-color-accent: #c5c7c9; - --light-color-active-menu-item: var(--light-color-accent); - --light-color-text: #222; - --light-color-text-aside: #6e6e6e; - - --light-color-icon-background: var(--light-color-background); - --light-color-icon-text: var(--light-color-text); - - --light-color-comment-tag-text: var(--light-color-text); - --light-color-comment-tag: var(--light-color-background); - - --light-color-link: #1f70c2; - --light-color-focus-outline: #3584e4; - - --light-color-ts-keyword: #056bd6; - --light-color-ts-project: #b111c9; - --light-color-ts-module: var(--light-color-ts-project); - --light-color-ts-namespace: var(--light-color-ts-project); - --light-color-ts-enum: #7e6f15; - --light-color-ts-enum-member: var(--light-color-ts-enum); - --light-color-ts-variable: #4760ec; - --light-color-ts-function: #572be7; - --light-color-ts-class: #1f70c2; - --light-color-ts-interface: #108024; - --light-color-ts-constructor: #4d7fff; - --light-color-ts-property: #ff984d; - --light-color-ts-method: #ff4db8; - --light-color-ts-reference: #ff4d82; - --light-color-ts-call-signature: var(--light-color-ts-method); - --light-color-ts-index-signature: var(--light-color-ts-property); - --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: #a55c0e; - --light-color-ts-accessor: #ff4d4d; - --light-color-ts-get-signature: var(--light-color-ts-accessor); - --light-color-ts-set-signature: var(--light-color-ts-accessor); - --light-color-ts-type-alias: #d51270; - /* reference not included as links will be colored with the kind that it points to */ - --light-color-document: #000000; - - --light-external-icon: url("data:image/svg+xml;utf8,"); - --light-color-scheme: light; - - /* Dark */ - --dark-color-background: #2b2e33; - --dark-color-background-secondary: #1e2024; - --dark-color-background-warning: #bebe00; - --dark-color-warning-text: #222; - --dark-color-accent: #9096a2; - --dark-color-active-menu-item: #5d5d6a; - --dark-color-text: #f5f5f5; - --dark-color-text-aside: #dddddd; - - --dark-color-icon-background: var(--dark-color-background-secondary); - --dark-color-icon-text: var(--dark-color-text); - - --dark-color-comment-tag-text: var(--dark-color-text); - --dark-color-comment-tag: var(--dark-color-background); - - --dark-color-link: #00aff4; - --dark-color-focus-outline: #4c97f2; - - --dark-color-ts-keyword: #3399ff; - --dark-color-ts-project: #e358ff; - --dark-color-ts-module: var(--dark-color-ts-project); - --dark-color-ts-namespace: var(--dark-color-ts-project); - --dark-color-ts-enum: #f4d93e; - --dark-color-ts-enum-member: var(--dark-color-ts-enum); - --dark-color-ts-variable: #798dff; - --dark-color-ts-function: #a280ff; - --dark-color-ts-class: #8ac4ff; - --dark-color-ts-interface: #6cff87; - --dark-color-ts-constructor: #4d7fff; - --dark-color-ts-property: #ff984d; - --dark-color-ts-method: #ff4db8; - --dark-color-ts-reference: #ff4d82; - --dark-color-ts-call-signature: var(--dark-color-ts-method); - --dark-color-ts-index-signature: var(--dark-color-ts-property); - --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: #e07d13; - --dark-color-ts-accessor: #ff4d4d; - --dark-color-ts-get-signature: var(--dark-color-ts-accessor); - --dark-color-ts-set-signature: var(--dark-color-ts-accessor); - --dark-color-ts-type-alias: #ff6492; - /* reference not included as links will be colored with the kind that it points to */ - --dark-color-document: #ffffff; - - --dark-external-icon: url("data:image/svg+xml;utf8,"); - --dark-color-scheme: dark; -} +@layer typedoc { + :root { + --dim-toolbar-contents-height: 2.5rem; + --dim-toolbar-border-bottom-width: 1px; + --dim-header-height: calc( + var(--dim-toolbar-border-bottom-width) + + var(--dim-toolbar-contents-height) + ); + + /* 0rem For mobile; unit is required for calculation in `calc` */ + --dim-container-main-margin-y: 0rem; + + --dim-footer-height: 3.5rem; + + --modal-animation-duration: 0.2s; + } + + :root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */ + --light-color-background-active: #d6d8da; + --light-color-background-warning: #e6e600; + --light-color-warning-text: #222; + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-background-active); + --light-color-text: #222; + --light-color-contrast-text: #000; + --light-color-text-aside: #5e5e5e; + + --light-color-icon-background: var(--light-color-background); + --light-color-icon-text: var(--light-color-text); + + --light-color-comment-tag-text: var(--light-color-text); + --light-color-comment-tag: var(--light-color-background); + + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: #9f5f30; + --light-color-ts-method: #be3989; + --light-color-ts-reference: #ff4d82; + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --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: #a55c0e; + --light-color-ts-accessor: #c73c3c; + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-color-alert-note: #0969d9; + --light-color-alert-tip: #1a7f37; + --light-color-alert-important: #8250df; + --light-color-alert-warning: #9a6700; + --light-color-alert-caution: #cf222e; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + } -@media (prefers-color-scheme: light) { :root { + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */ + --dark-color-background-active: #5d5d6a; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: var(--dark-color-background-active); + --dark-color-text: #f5f5f5; + --dark-color-contrast-text: #ffffff; + --dark-color-text-aside: #dddddd; + + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-icon-text: var(--dark-color-text); + + --dark-color-comment-tag-text: var(--dark-color-text); + --dark-color-comment-tag: var(--dark-color-background); + + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: #ff984d; + --dark-color-ts-method: #ff4db8; + --dark-color-ts-reference: #ff4d82; + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --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: #e07d13; + --dark-color-ts-accessor: #ff6060; + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-color-alert-note: #0969d9; + --dark-color-alert-tip: #1a7f37; + --dark-color-alert-important: #8250df; + --dark-color-alert-warning: #9a6700; + --dark-color-alert-caution: #cf222e; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; + } + + @media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var( + --light-color-background-secondary + ); + --color-background-active: var(--light-color-background-active); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-contrast-text: var(--light-color-contrast-text); + --color-text-aside: var(--light-color-text-aside); + + --color-icon-background: var(--light-color-icon-background); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --color-alert-note: var(--light-color-alert-note); + --color-alert-tip: var(--light-color-alert-tip); + --color-alert-important: var(--light-color-alert-important); + --color-alert-warning: var(--light-color-alert-warning); + --color-alert-caution: var(--light-color-alert-caution); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } + } + + @media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var( + --dark-color-background-secondary + ); + --color-background-active: var(--dark-color-background-active); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-contrast-text: var(--dark-color-contrast-text); + --color-text-aside: var(--dark-color-text-aside); + + --color-icon-background: var(--dark-color-icon-background); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --color-alert-note: var(--dark-color-alert-note); + --color-alert-tip: var(--dark-color-alert-tip); + --color-alert-important: var(--dark-color-alert-important); + --color-alert-warning: var(--dark-color-alert-warning); + --color-alert-caution: var(--dark-color-alert-caution); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } + } + + :root[data-theme="light"] { --color-background: var(--light-color-background); --color-background-secondary: var(--light-color-background-secondary); + --color-background-active: var(--light-color-background-active); --color-background-warning: var(--light-color-background-warning); --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); --color-accent: var(--light-color-accent); --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); + --color-contrast-text: var(--light-color-contrast-text); --color-text-aside: var(--light-color-text-aside); - - --color-icon-background: var(--light-color-icon-background); --color-icon-text: var(--light-color-icon-text); --color-comment-tag-text: var(--light-color-text); @@ -145,23 +308,28 @@ --color-ts-type-alias: var(--light-color-ts-type-alias); --color-document: var(--light-color-document); + --color-note: var(--light-color-note); + --color-tip: var(--light-color-tip); + --color-important: var(--light-color-important); + --color-warning: var(--light-color-warning); + --color-caution: var(--light-color-caution); + --external-icon: var(--light-external-icon); --color-scheme: var(--light-color-scheme); } -} -@media (prefers-color-scheme: dark) { - :root { + :root[data-theme="dark"] { --color-background: var(--dark-color-background); --color-background-secondary: var(--dark-color-background-secondary); + --color-background-active: var(--dark-color-background-active); --color-background-warning: var(--dark-color-background-warning); --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); --color-accent: var(--dark-color-accent); --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); + --color-contrast-text: var(--dark-color-contrast-text); --color-text-aside: var(--dark-color-text-aside); - - --color-icon-background: var(--dark-color-icon-background); --color-icon-text: var(--dark-color-icon-text); --color-comment-tag-text: var(--dark-color-text); @@ -197,1297 +365,1269 @@ --color-ts-type-alias: var(--dark-color-ts-type-alias); --color-document: var(--dark-color-document); + --color-note: var(--dark-color-note); + --color-tip: var(--dark-color-tip); + --color-important: var(--dark-color-important); + --color-warning: var(--dark-color-warning); + --color-caution: var(--dark-color-caution); + --external-icon: var(--dark-external-icon); --color-scheme: var(--dark-color-scheme); } -} -html { - color-scheme: var(--color-scheme); -} + html { + color-scheme: var(--color-scheme); + @media (prefers-reduced-motion: no-preference) { + scroll-behavior: smooth; + } + } -body { - margin: 0; -} + *:focus-visible, + .tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); + } -:root[data-theme="light"] { - --color-background: var(--light-color-background); - --color-background-secondary: var(--light-color-background-secondary); - --color-background-warning: var(--light-color-background-warning); - --color-warning-text: var(--light-color-warning-text); - --color-icon-background: var(--light-color-icon-background); - --color-accent: var(--light-color-accent); - --color-active-menu-item: var(--light-color-active-menu-item); - --color-text: var(--light-color-text); - --color-text-aside: var(--light-color-text-aside); - --color-icon-text: var(--light-color-icon-text); - - --color-comment-tag-text: var(--light-color-text); - --color-comment-tag: var(--light-color-background); - - --color-link: var(--light-color-link); - --color-focus-outline: var(--light-color-focus-outline); - - --color-ts-keyword: var(--light-color-ts-keyword); - --color-ts-project: var(--light-color-ts-project); - --color-ts-module: var(--light-color-ts-module); - --color-ts-namespace: var(--light-color-ts-namespace); - --color-ts-enum: var(--light-color-ts-enum); - --color-ts-enum-member: var(--light-color-ts-enum-member); - --color-ts-variable: var(--light-color-ts-variable); - --color-ts-function: var(--light-color-ts-function); - --color-ts-class: var(--light-color-ts-class); - --color-ts-interface: var(--light-color-ts-interface); - --color-ts-constructor: var(--light-color-ts-constructor); - --color-ts-property: var(--light-color-ts-property); - --color-ts-method: var(--light-color-ts-method); - --color-ts-reference: var(--light-color-ts-reference); - --color-ts-call-signature: var(--light-color-ts-call-signature); - --color-ts-index-signature: var(--light-color-ts-index-signature); - --color-ts-constructor-signature: var( - --light-color-ts-constructor-signature - ); - --color-ts-parameter: var(--light-color-ts-parameter); - --color-ts-type-parameter: var(--light-color-ts-type-parameter); - --color-ts-accessor: var(--light-color-ts-accessor); - --color-ts-get-signature: var(--light-color-ts-get-signature); - --color-ts-set-signature: var(--light-color-ts-set-signature); - --color-ts-type-alias: var(--light-color-ts-type-alias); - --color-document: var(--light-color-document); - - --external-icon: var(--light-external-icon); - --color-scheme: var(--light-color-scheme); -} + .always-visible, + .always-visible .tsd-signatures { + display: inherit !important; + } -:root[data-theme="dark"] { - --color-background: var(--dark-color-background); - --color-background-secondary: var(--dark-color-background-secondary); - --color-background-warning: var(--dark-color-background-warning); - --color-warning-text: var(--dark-color-warning-text); - --color-icon-background: var(--dark-color-icon-background); - --color-accent: var(--dark-color-accent); - --color-active-menu-item: var(--dark-color-active-menu-item); - --color-text: var(--dark-color-text); - --color-text-aside: var(--dark-color-text-aside); - --color-icon-text: var(--dark-color-icon-text); - - --color-comment-tag-text: var(--dark-color-text); - --color-comment-tag: var(--dark-color-background); - - --color-link: var(--dark-color-link); - --color-focus-outline: var(--dark-color-focus-outline); - - --color-ts-keyword: var(--dark-color-ts-keyword); - --color-ts-project: var(--dark-color-ts-project); - --color-ts-module: var(--dark-color-ts-module); - --color-ts-namespace: var(--dark-color-ts-namespace); - --color-ts-enum: var(--dark-color-ts-enum); - --color-ts-enum-member: var(--dark-color-ts-enum-member); - --color-ts-variable: var(--dark-color-ts-variable); - --color-ts-function: var(--dark-color-ts-function); - --color-ts-class: var(--dark-color-ts-class); - --color-ts-interface: var(--dark-color-ts-interface); - --color-ts-constructor: var(--dark-color-ts-constructor); - --color-ts-property: var(--dark-color-ts-property); - --color-ts-method: var(--dark-color-ts-method); - --color-ts-reference: var(--dark-color-ts-reference); - --color-ts-call-signature: var(--dark-color-ts-call-signature); - --color-ts-index-signature: var(--dark-color-ts-index-signature); - --color-ts-constructor-signature: var( - --dark-color-ts-constructor-signature - ); - --color-ts-parameter: var(--dark-color-ts-parameter); - --color-ts-type-parameter: var(--dark-color-ts-type-parameter); - --color-ts-accessor: var(--dark-color-ts-accessor); - --color-ts-get-signature: var(--dark-color-ts-get-signature); - --color-ts-set-signature: var(--dark-color-ts-set-signature); - --color-ts-type-alias: var(--dark-color-ts-type-alias); - --color-document: var(--dark-color-document); - - --external-icon: var(--dark-external-icon); - --color-scheme: var(--dark-color-scheme); -} + h1, + h2, + h3, + h4, + h5, + h6 { + line-height: 1.2; + } -*:focus-visible, -.tsd-accordion-summary:focus-visible svg { - outline: 2px solid var(--color-focus-outline); -} + h1 { + font-size: 1.875rem; + margin: 0.67rem 0; + } -.always-visible, -.always-visible .tsd-signatures { - display: inherit !important; -} + h2 { + font-size: 1.5rem; + margin: 0.83rem 0; + } -h1, -h2, -h3, -h4, -h5, -h6 { - line-height: 1.2; -} + h3 { + font-size: 1.25rem; + margin: 1rem 0; + } -h1 { - font-size: 1.875rem; - margin: 0.67rem 0; -} + h4 { + font-size: 1.05rem; + margin: 1.33rem 0; + } -h2 { - font-size: 1.5rem; - margin: 0.83rem 0; -} + h5 { + font-size: 1rem; + margin: 1.5rem 0; + } -h3 { - font-size: 1.25rem; - margin: 1rem 0; -} + h6 { + font-size: 0.875rem; + margin: 2.33rem 0; + } -h4 { - font-size: 1.05rem; - margin: 1.33rem 0; -} + dl, + menu, + ol, + ul { + margin: 1em 0; + } -h5 { - font-size: 1rem; - margin: 1.5rem 0; -} + dd { + margin: 0 0 0 34px; + } -h6 { - font-size: 0.875rem; - margin: 2.33rem 0; -} + .container { + max-width: 1700px; + padding: 0 2rem; + } -dl, -menu, -ol, -ul { - margin: 1em 0; -} + /* Footer */ + footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: var(--dim-footer-height); + } + footer > p { + margin: 0 1em; + } -dd { - margin: 0 0 0 40px; -} + .container-main { + margin: var(--dim-container-main-margin-y) auto; + /* toolbar, footer, margin */ + min-height: calc( + 100svh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); + } -.container { - max-width: 1700px; - padding: 0 2rem; -} + @keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + @keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } + } + @keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } + } + @keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } + } + body { + background: var(--color-background); + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); + margin: 0; + } -/* Footer */ -footer { - border-top: 1px solid var(--color-accent); - padding-top: 1rem; - padding-bottom: 1rem; - max-height: 3.5rem; -} -footer > p { - margin: 0 1em; -} + a { + color: var(--color-link); + text-decoration: none; + } + a:hover { + text-decoration: underline; + } + a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; + } + a.tsd-anchor-link { + color: var(--color-text); + } + :target { + scroll-margin-block: calc(var(--dim-header-height) + 0.5rem); + } -.container-main { - margin: 0 auto; - /* toolbar, footer, margin */ - min-height: calc(100vh - 41px - 56px - 4rem); -} + code, + pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; + } -@keyframes fade-in { - from { + pre { + position: relative; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); + margin-bottom: 8px; + } + pre code { + padding: 0; + font-size: 100%; + } + pre > button { + position: absolute; + top: 10px; + right: 10px; opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; } - to { + pre:hover > button, + pre > button.visible, + pre > button:focus-visible { opacity: 1; } -} -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; + + blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; } - to { - opacity: 0; + + img { + max-width: 100%; } -} -@keyframes fade-in-delayed { - 0% { - opacity: 0; + + * { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); } - 33% { - opacity: 0; + + *::-webkit-scrollbar { + width: 0.75rem; } - 100% { - opacity: 1; + + *::-webkit-scrollbar-track { + background: var(--color-icon-background); } -} -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; + + *::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); } - 66% { - opacity: 0; + + dialog { + border: none; + outline: none; + padding: 0; + background-color: var(--color-background); } - 100% { - opacity: 0; + dialog::backdrop { + display: none; } -} -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); + #tsd-overlay { + background-color: rgba(0, 0, 0, 0.5); + position: fixed; + z-index: 9999; + top: 0; + left: 0; + right: 0; + bottom: 0; + animation: fade-in var(--modal-animation-duration) forwards; } - to { - transform: translate(0, 0); + #tsd-overlay.closing { + animation-name: fade-out; } -} -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; + + .tsd-typography { + line-height: 1.333em; } - to { - transform: translate(100%, 0); + .tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; + } + .tsd-typography .tsd-index-panel h3, + .tsd-index-panel .tsd-typography h3, + .tsd-typography h4, + .tsd-typography h5, + .tsd-typography h6 { + font-size: 1em; + } + .tsd-typography h5, + .tsd-typography h6 { + font-weight: normal; + } + .tsd-typography p, + .tsd-typography ul, + .tsd-typography ol { + margin: 1em 0; + } + .tsd-typography table { + border-collapse: collapse; + border: none; + } + .tsd-typography td, + .tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); + } + .tsd-typography thead, + .tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); } -} -body { - background: var(--color-background); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", - Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; - font-size: 16px; - color: var(--color-text); -} - -a { - color: var(--color-link); - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -a.external[target="_blank"] { - background-image: var(--external-icon); - background-position: top 3px right; - background-repeat: no-repeat; - padding-right: 13px; -} -a.tsd-anchor-link { - color: var(--color-text); -} - -code, -pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 0.875rem; - border-radius: 0.8em; -} -pre { - position: relative; - white-space: pre-wrap; - word-wrap: break-word; - padding: 10px; - border: 1px solid var(--color-accent); -} -pre code { - padding: 0; - font-size: 100%; -} -pre > button { - position: absolute; - top: 10px; - right: 10px; - opacity: 0; - transition: opacity 0.1s; - box-sizing: border-box; -} -pre:hover > button, -pre > button.visible { - opacity: 1; -} + .tsd-alert { + padding: 8px 16px; + margin-bottom: 16px; + border-left: 0.25em solid var(--alert-color); + } + .tsd-alert blockquote > :last-child, + .tsd-alert > :last-child { + margin-bottom: 0; + } + .tsd-alert-title { + color: var(--alert-color); + display: inline-flex; + align-items: center; + } + .tsd-alert-title span { + margin-left: 4px; + } -blockquote { - margin: 1em 0; - padding-left: 1em; - border-left: 4px solid gray; -} + .tsd-alert-note { + --alert-color: var(--color-alert-note); + } + .tsd-alert-tip { + --alert-color: var(--color-alert-tip); + } + .tsd-alert-important { + --alert-color: var(--color-alert-important); + } + .tsd-alert-warning { + --alert-color: var(--color-alert-warning); + } + .tsd-alert-caution { + --alert-color: var(--color-alert-caution); + } -.tsd-typography { - line-height: 1.333em; -} -.tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-typography .tsd-index-panel h3, -.tsd-index-panel .tsd-typography h3, -.tsd-typography h4, -.tsd-typography h5, -.tsd-typography h6 { - font-size: 1em; -} -.tsd-typography h5, -.tsd-typography h6 { - font-weight: normal; -} -.tsd-typography p, -.tsd-typography ul, -.tsd-typography ol { - margin: 1em 0; -} -.tsd-typography table { - border-collapse: collapse; - border: none; -} -.tsd-typography td, -.tsd-typography th { - padding: 6px 13px; - border: 1px solid var(--color-accent); -} -.tsd-typography thead, -.tsd-typography tr:nth-child(even) { - background-color: var(--color-background-secondary); -} + .tsd-breadcrumb { + margin: 0; + margin-top: 1rem; + padding: 0; + color: var(--color-text-aside); + } + .tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; + } + .tsd-breadcrumb a:hover { + text-decoration: underline; + } + .tsd-breadcrumb li { + display: inline; + } + .tsd-breadcrumb li:after { + content: " / "; + } -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: var(--color-text-aside); -} -.tsd-breadcrumb a { - color: var(--color-text-aside); - text-decoration: none; -} -.tsd-breadcrumb a:hover { - text-decoration: underline; -} -.tsd-breadcrumb li { - display: inline; -} -.tsd-breadcrumb li:after { - content: " / "; -} + .tsd-comment-tags { + display: flex; + flex-direction: column; + } + dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; + } + dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; + } + dl.tsd-comment-tag-group dd { + margin: 0; + } + code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; + } + h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; + } -.tsd-comment-tags { - display: flex; - flex-direction: column; -} -dl.tsd-comment-tag-group { - display: flex; - align-items: center; - overflow: hidden; - margin: 0.5em 0; -} -dl.tsd-comment-tag-group dt { - display: flex; - margin-right: 0.5em; - font-size: 0.875em; - font-weight: normal; -} -dl.tsd-comment-tag-group dd { - margin: 0; -} -code.tsd-tag { - padding: 0.25em 0.4em; - border: 0.1em solid var(--color-accent); - margin-right: 0.25em; - font-size: 70%; -} -h1 code.tsd-tag:first-of-type { - margin-left: 0.25em; -} + dl.tsd-comment-tag-group dd:before, + dl.tsd-comment-tag-group dd:after { + content: " "; + } + dl.tsd-comment-tag-group dd pre, + dl.tsd-comment-tag-group dd:after { + clear: both; + } + dl.tsd-comment-tag-group p { + margin: 0; + } -dl.tsd-comment-tag-group dd:before, -dl.tsd-comment-tag-group dd:after { - content: " "; -} -dl.tsd-comment-tag-group dd pre, -dl.tsd-comment-tag-group dd:after { - clear: both; -} -dl.tsd-comment-tag-group p { - margin: 0; -} + .tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; + } + .tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; + } -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; -} -.tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; -} + .tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; + } + .tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; + } + .tsd-filter-input { + display: flex; + width: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + } + .tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; + } + .tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; + } + .tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; + } + .tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); + } + .tsd-checkbox-background { + fill: var(--color-accent); + } + input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); + } + .tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; + } + .tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); + } -.tsd-filter-visibility h4 { - font-size: 1rem; - padding-top: 0.75rem; - padding-bottom: 0.5rem; - margin: 0; -} -.tsd-filter-item:not(:last-child) { - margin-bottom: 0.5rem; -} -.tsd-filter-input { - display: flex; - width: -moz-fit-content; - width: fit-content; - align-items: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; -} -.tsd-filter-input input[type="checkbox"] { - cursor: pointer; - position: absolute; - width: 1.5em; - height: 1.5em; - opacity: 0; -} -.tsd-filter-input input[type="checkbox"]:disabled { - pointer-events: none; -} -.tsd-filter-input svg { - cursor: pointer; - width: 1.5em; - height: 1.5em; - margin-right: 0.5em; - border-radius: 0.33em; - /* Leaving this at full opacity breaks event listeners on Firefox. - Don't remove unless you know what you're doing. */ - opacity: 0.99; -} -.tsd-filter-input input[type="checkbox"]:focus-visible + svg { - outline: 2px solid var(--color-focus-outline); -} -.tsd-checkbox-background { - fill: var(--color-accent); -} -input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { - stroke: var(--color-text); -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { - fill: var(--color-background); - stroke: var(--color-accent); - stroke-width: 0.25rem; -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { - stroke: var(--color-accent); -} + .settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; + } -.settings-label { - font-weight: bold; - text-transform: uppercase; - display: inline-block; -} + .tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; + } -.tsd-filter-visibility .settings-label { - margin: 0.75rem 0 0.5rem 0; -} + .tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; + } -.tsd-theme-toggle .settings-label { - margin: 0.75rem 0.75rem 0 0; -} + .tsd-hierarchy h4 label:hover span { + text-decoration: underline; + } -.tsd-hierarchy { - list-style: square; - margin: 0; -} -.tsd-hierarchy .target { - font-weight: bold; -} + .tsd-hierarchy { + list-style: square; + margin: 0; + } + .tsd-hierarchy-target { + font-weight: bold; + } + .tsd-hierarchy-toggle { + color: var(--color-link); + cursor: pointer; + } -.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-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-full-hierarchy svg[data-dropdown] { + cursor: pointer; + } + .tsd-full-hierarchy svg[data-dropdown="false"] { + transform: rotate(-90deg); + } + .tsd-full-hierarchy svg[data-dropdown="false"] ~ ul { + display: none; + } -.tsd-panel-group.tsd-index-group { - margin-bottom: 0; -} -.tsd-index-panel .tsd-index-list { - list-style: none; - line-height: 1.333em; - margin: 0; - padding: 0.25rem 0 0 0; - overflow: hidden; - display: grid; - grid-template-columns: repeat(3, 1fr); - column-gap: 1rem; - grid-template-rows: auto; -} -@media (max-width: 1024px) { - .tsd-index-panel .tsd-index-list { - grid-template-columns: repeat(2, 1fr); + .tsd-panel-group.tsd-index-group { + margin-bottom: 0; } -} -@media (max-width: 768px) { .tsd-index-panel .tsd-index-list { - grid-template-columns: repeat(1, 1fr); + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; + } + @media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } + } + @media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } + } + .tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; } -} -.tsd-index-panel .tsd-index-list li { - -webkit-page-break-inside: avoid; - -moz-page-break-inside: avoid; - -ms-page-break-inside: avoid; - -o-page-break-inside: avoid; - page-break-inside: avoid; -} -.tsd-flag { - display: inline-block; - padding: 0.25em 0.4em; - border-radius: 4px; - color: var(--color-comment-tag-text); - background-color: var(--color-comment-tag); - text-indent: 0; - font-size: 75%; - line-height: 1; - font-weight: normal; -} + .tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; + } -.tsd-anchor { - position: relative; - top: -100px; -} + .tsd-anchor { + position: relative; + top: -100px; + } -.tsd-member { - position: relative; -} -.tsd-member .tsd-anchor + h3 { - display: flex; - align-items: center; - margin-top: 0; - margin-bottom: 0; - border-bottom: none; -} + .tsd-member { + position: relative; + } + .tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; + } -.tsd-navigation.settings { - margin: 1rem 0; -} -.tsd-navigation > a, -.tsd-navigation .tsd-accordion-summary { - width: calc(100% - 0.25rem); - display: flex; - align-items: center; -} -.tsd-navigation a, -.tsd-navigation summary > span, -.tsd-page-navigation a { - display: flex; - width: calc(100% - 0.25rem); - align-items: center; - padding: 0.25rem; - color: var(--color-text); - text-decoration: none; - box-sizing: border-box; -} -.tsd-navigation a.current, -.tsd-page-navigation a.current { - background: var(--color-active-menu-item); -} -.tsd-navigation a:hover, -.tsd-page-navigation a:hover { - text-decoration: underline; -} -.tsd-navigation ul, -.tsd-page-navigation ul { - margin-top: 0; - margin-bottom: 0; - padding: 0; - list-style: none; -} -.tsd-navigation li, -.tsd-page-navigation li { - padding: 0; - max-width: 100%; -} -.tsd-navigation .tsd-nav-link { - display: none; -} -.tsd-nested-navigation { - margin-left: 3rem; -} -.tsd-nested-navigation > li > details { - margin-left: -1.5rem; -} -.tsd-small-nested-navigation { - margin-left: 1.5rem; -} -.tsd-small-nested-navigation > li > details { - margin-left: -1.5rem; -} - -.tsd-page-navigation-section { - margin-left: 10px; -} -.tsd-page-navigation-section > summary { - padding: 0.25rem; -} -.tsd-page-navigation-section > div { - margin-left: 20px; -} -.tsd-page-navigation ul { - padding-left: 1.75rem; -} - -#tsd-sidebar-links a { - margin-top: 0; - margin-bottom: 0.5rem; - line-height: 1.25rem; -} -#tsd-sidebar-links a:last-of-type { - margin-bottom: 0; -} - -a.tsd-index-link { - padding: 0.25rem 0 !important; - font-size: 1rem; - line-height: 1.25rem; - display: inline-flex; - align-items: center; - color: var(--color-text); -} -.tsd-accordion-summary { - list-style-type: none; /* hide marker on non-safari */ - outline: none; /* broken on safari, so just hide it */ -} -.tsd-accordion-summary::-webkit-details-marker { - display: none; /* hide marker on safari */ -} -.tsd-accordion-summary, -.tsd-accordion-summary a { - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - - cursor: pointer; -} -.tsd-accordion-summary a { - width: calc(100% - 1.5rem); -} -.tsd-accordion-summary > * { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} -.tsd-accordion .tsd-accordion-summary > svg { - margin-left: 0.25rem; - vertical-align: text-top; -} -.tsd-index-content > :not(:first-child) { - margin-top: 0.75rem; -} -.tsd-index-heading { - margin-top: 1.5rem; - margin-bottom: 0.75rem; -} - -.tsd-no-select { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.tsd-kind-icon { - margin-right: 0.5rem; - width: 1.25rem; - height: 1.25rem; - min-width: 1.25rem; - min-height: 1.25rem; -} -.tsd-signature > .tsd-kind-icon { - margin-right: 0.8rem; -} - -.tsd-panel { - margin-bottom: 2.5rem; -} -.tsd-panel.tsd-member { - margin-bottom: 4rem; -} -.tsd-panel:empty { - display: none; -} -.tsd-panel > h1, -.tsd-panel > h2, -.tsd-panel > h3 { - margin: 1.5rem -1.5rem 0.75rem -1.5rem; - padding: 0 1.5rem 0.75rem 1.5rem; -} -.tsd-panel > h1.tsd-before-signature, -.tsd-panel > h2.tsd-before-signature, -.tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: none; -} - -.tsd-panel-group { - margin: 2rem 0; -} -.tsd-panel-group.tsd-index-group { - margin: 2rem 0; -} -.tsd-panel-group.tsd-index-group details { - margin: 2rem 0; -} -.tsd-panel-group > .tsd-accordion-summary { - margin-bottom: 1rem; -} - -#tsd-search { - transition: background-color 0.2s; -} -#tsd-search .title { - position: relative; - z-index: 2; -} -#tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 2.5rem; - height: 100%; -} -#tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: var(--color-text); -} -#tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; -} -#tsd-search .field input, -#tsd-search .title, -#tsd-toolbar-links a { - transition: opacity 0.2s; -} -#tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -#tsd-search .results li { - background-color: var(--color-background); - line-height: initial; - padding: 4px; -} -#tsd-search .results li:nth-child(even) { - background-color: var(--color-background-secondary); -} -#tsd-search .results li.state { - display: none; -} -#tsd-search .results li.current:not(.no-results), -#tsd-search .results li:hover:not(.no-results) { - background-color: var(--color-accent); -} -#tsd-search .results a { - display: flex; - align-items: center; - padding: 0.25rem; - box-sizing: border-box; -} -#tsd-search .results a:before { - top: 10px; -} -#tsd-search .results span.parent { - color: var(--color-text-aside); - font-weight: normal; -} -#tsd-search.has-focus { - background-color: var(--color-accent); -} -#tsd-search.has-focus .field input { - top: 0; - opacity: 1; -} -#tsd-search.has-focus .title, -#tsd-search.has-focus #tsd-toolbar-links a { - z-index: 0; - opacity: 0; -} -#tsd-search.has-focus .results { - visibility: visible; -} -#tsd-search.loading .results li.state.loading { - display: block; -} -#tsd-search.failure .results li.state.failure { - display: block; -} - -#tsd-toolbar-links { - position: absolute; - top: 0; - right: 2rem; - height: 100%; - display: flex; - align-items: center; - justify-content: flex-end; -} -#tsd-toolbar-links a { - margin-left: 1.5rem; -} -#tsd-toolbar-links a:hover { - text-decoration: underline; -} - -.tsd-signature { - margin: 0 0 1rem 0; - padding: 1rem 0.5rem; - border: 1px solid var(--color-accent); - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; - overflow-x: auto; -} - -.tsd-signature-keyword { - color: var(--color-ts-keyword); - font-weight: normal; -} - -.tsd-signature-symbol { - color: var(--color-text-aside); - font-weight: normal; -} - -.tsd-signature-type { - font-style: italic; - font-weight: normal; -} - -.tsd-signatures { - padding: 0; - margin: 0 0 1em 0; - list-style-type: none; -} -.tsd-signatures .tsd-signature { - margin: 0; - border-color: var(--color-accent); - border-width: 1px 0; - transition: background-color 0.1s; -} -.tsd-signatures .tsd-index-signature:not(:last-child) { - margin-bottom: 1em; -} -.tsd-signatures .tsd-index-signature .tsd-signature { - border-width: 1px; -} -.tsd-description .tsd-signatures .tsd-signature { - border-width: 1px; -} - -ul.tsd-parameter-list, -ul.tsd-type-parameter-list { - list-style: square; - margin: 0; - padding-left: 20px; -} -ul.tsd-parameter-list > li.tsd-parameter-signature, -ul.tsd-type-parameter-list > li.tsd-parameter-signature { - list-style: none; - margin-left: -20px; -} -ul.tsd-parameter-list h5, -ul.tsd-type-parameter-list h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} -.tsd-sources { - margin-top: 1rem; - font-size: 0.875em; -} -.tsd-sources a { - color: var(--color-text-aside); - text-decoration: underline; -} -.tsd-sources ul { - list-style: none; - padding: 0; -} - -.tsd-page-toolbar { - position: sticky; - z-index: 1; - top: 0; - left: 0; - width: 100%; - color: var(--color-text); - background: var(--color-background-secondary); - border-bottom: 1px var(--color-accent) solid; - transition: transform 0.3s ease-in-out; -} -.tsd-page-toolbar a { - color: var(--color-text); - text-decoration: none; -} -.tsd-page-toolbar a.title { - font-weight: bold; -} -.tsd-page-toolbar a.title:hover { - text-decoration: underline; -} -.tsd-page-toolbar .tsd-toolbar-contents { - display: flex; - justify-content: space-between; - height: 2.5rem; - margin: 0 auto; -} -.tsd-page-toolbar .table-cell { - position: relative; - white-space: nowrap; - line-height: 40px; -} -.tsd-page-toolbar .table-cell:first-child { - width: 100%; -} -.tsd-page-toolbar .tsd-toolbar-icon { - box-sizing: border-box; - line-height: 0; - padding: 12px 0; -} - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.8; - height: 40px; - transition: - opacity 0.1s, - background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-widget:hover { - opacity: 0.9; -} -.tsd-widget.active { - opacity: 1; - background-color: var(--color-accent); -} -.tsd-widget.no-caption { - width: 40px; -} -.tsd-widget.no-caption:before { - margin: 0; -} - -.tsd-widget.options, -.tsd-widget.menu { - display: none; -} -input[type="checkbox"] + .tsd-widget:before { - background-position: -120px 0; -} -input[type="checkbox"]:checked + .tsd-widget:before { - background-position: -160px 0; -} - -img { - max-width: 100%; -} - -.tsd-anchor-icon { - display: inline-flex; - align-items: center; - margin-left: 0.5rem; - vertical-align: middle; - color: var(--color-text); -} - -.tsd-anchor-icon svg { - width: 1em; - height: 1em; - visibility: hidden; -} - -.tsd-anchor-link:hover > .tsd-anchor-icon svg { - visibility: visible; -} - -.deprecated { - text-decoration: line-through !important; -} - -.warning { - padding: 1rem; - color: var(--color-warning-text); - background: var(--color-background-warning); -} + .tsd-navigation.settings { + margin: 0; + margin-bottom: 1rem; + } + .tsd-navigation > a, + .tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; + } + .tsd-navigation a, + .tsd-navigation summary > span, + .tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; + } + .tsd-navigation a.current, + .tsd-page-navigation a.current { + background: var(--color-active-menu-item); + color: var(--color-contrast-text); + } + .tsd-navigation a:hover, + .tsd-page-navigation a:hover { + text-decoration: underline; + } + .tsd-navigation ul, + .tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; + } + .tsd-navigation li, + .tsd-page-navigation li { + padding: 0; + max-width: 100%; + } + .tsd-navigation .tsd-nav-link { + display: none; + } + .tsd-nested-navigation { + margin-left: 3rem; + } + .tsd-nested-navigation > li > details { + margin-left: -1.5rem; + } + .tsd-small-nested-navigation { + margin-left: 1.5rem; + } + .tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; + } -.tsd-kind-project { - color: var(--color-ts-project); -} -.tsd-kind-module { - color: var(--color-ts-module); -} -.tsd-kind-namespace { - color: var(--color-ts-namespace); -} -.tsd-kind-enum { - color: var(--color-ts-enum); -} -.tsd-kind-enum-member { - color: var(--color-ts-enum-member); -} -.tsd-kind-variable { - color: var(--color-ts-variable); -} -.tsd-kind-function { - color: var(--color-ts-function); -} -.tsd-kind-class { - color: var(--color-ts-class); -} -.tsd-kind-interface { - color: var(--color-ts-interface); -} -.tsd-kind-constructor { - color: var(--color-ts-constructor); -} -.tsd-kind-property { - color: var(--color-ts-property); -} -.tsd-kind-method { - color: var(--color-ts-method); -} -.tsd-kind-reference { - color: var(--color-ts-reference); -} -.tsd-kind-call-signature { - color: var(--color-ts-call-signature); -} -.tsd-kind-index-signature { - color: var(--color-ts-index-signature); -} -.tsd-kind-constructor-signature { - color: var(--color-ts-constructor-signature); -} -.tsd-kind-parameter { - color: var(--color-ts-parameter); -} -.tsd-kind-type-parameter { - color: var(--color-ts-type-parameter); -} -.tsd-kind-accessor { - color: var(--color-ts-accessor); -} -.tsd-kind-get-signature { - color: var(--color-ts-get-signature); -} -.tsd-kind-set-signature { - color: var(--color-ts-set-signature); -} -.tsd-kind-type-alias { - color: var(--color-ts-type-alias); -} + .tsd-page-navigation-section > summary { + padding: 0.25rem; + } + .tsd-page-navigation-section > summary > svg { + margin-right: 0.25rem; + } + .tsd-page-navigation-section > div { + margin-left: 30px; + } + .tsd-page-navigation ul { + padding-left: 1.75rem; + } -/* if we have a kind icon, don't color the text by kind */ -.tsd-kind-icon ~ span { - color: var(--color-text); -} + #tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; + } + #tsd-sidebar-links a:last-of-type { + margin-bottom: 0; + } -* { - scrollbar-width: thin; - scrollbar-color: var(--color-accent) var(--color-icon-background); -} + a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); + } + .tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ + display: flex; + align-items: center; + gap: 0.25rem; + box-sizing: border-box; + } + .tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ + } + .tsd-accordion-summary, + .tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; + } + .tsd-accordion-summary a { + width: calc(100% - 1.5rem); + } + .tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + } + /* + * We need to be careful to target the arrow indicating whether the accordion + * is open, but not any other SVGs included in the details element. + */ + .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child { + transform: rotate(-90deg); + } + .tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; + } + .tsd-index-summary { + margin-top: 1.5rem; + margin-bottom: 0.75rem; + display: flex; + align-content: center; + } -*::-webkit-scrollbar { - width: 0.75rem; -} + .tsd-no-select { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + .tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; + } + .tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; + } -*::-webkit-scrollbar-track { - background: var(--color-icon-background); -} + .tsd-panel { + margin-bottom: 2.5rem; + } + .tsd-panel.tsd-member { + margin-bottom: 4rem; + } + .tsd-panel:empty { + display: none; + } + .tsd-panel > h1, + .tsd-panel > h2, + .tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; + } + .tsd-panel > h1.tsd-before-signature, + .tsd-panel > h2.tsd-before-signature, + .tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; + } -*::-webkit-scrollbar-thumb { - background-color: var(--color-accent); - border-radius: 999rem; - border: 0.25rem solid var(--color-icon-background); -} + .tsd-panel-group { + margin: 2rem 0; + } + .tsd-panel-group.tsd-index-group { + margin: 2rem 0; + } + .tsd-panel-group.tsd-index-group details { + margin: 2rem 0; + } + .tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; + } -/* mobile */ -@media (max-width: 769px) { - .tsd-widget.options, - .tsd-widget.menu { - display: inline-block; + #tsd-search[open] { + animation: fade-in var(--modal-animation-duration) ease-out forwards; + } + #tsd-search[open].closing { + animation-name: fade-out; } - .container-main { + /* Avoid setting `display` on closed dialog */ + #tsd-search[open] { display: flex; + flex-direction: column; + padding: 1rem; + width: 32rem; + max-width: 90vw; + max-height: calc(100vh - env(keyboard-inset-height, 0px) - 25vh); + /* Anchor dialog to top */ + margin-top: 10vh; + border-radius: 6px; + will-change: max-height; } - html .col-content { - float: none; - max-width: 100%; + #tsd-search-input { + box-sizing: border-box; width: 100%; + padding: 0 0.625rem; /* 10px */ + outline: 0; + border: 2px solid var(--color-accent); + background-color: transparent; + color: var(--color-text); + border-radius: 4px; + height: 2.5rem; + flex: 0 0 auto; + font-size: 0.875rem; + transition: border-color 0.2s, background-color 0.2s; } - html .col-sidebar { - position: fixed !important; + #tsd-search-input:focus-visible { + background-color: var(--color-background-active); + border-color: transparent; + color: var(--color-contrast-text); + } + #tsd-search-input::placeholder { + color: inherit; + opacity: 0.8; + } + #tsd-search-results { + margin: 0; + padding: 0; + list-style: none; + flex: 1 1 auto; + display: flex; + flex-direction: column; overflow-y: auto; - -webkit-overflow-scrolling: touch; - z-index: 1024; - top: 0 !important; - bottom: 0 !important; - left: auto !important; - right: 0 !important; - padding: 1.5rem 1.5rem 0 0; - width: 75vw; - visibility: hidden; + } + #tsd-search-results:not(:empty) { + margin-top: 0.5rem; + } + #tsd-search-results > li { background-color: var(--color-background); - transform: translate(100%, 0); + line-height: 1.5; + box-sizing: border-box; + border-radius: 4px; } - html .col-sidebar > *:last-child { - padding-bottom: 20px; + #tsd-search-results > li:nth-child(even) { + background-color: var(--color-background-secondary); } - html .overlay { - content: ""; - display: block; - position: fixed; - z-index: 1023; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, 0.75); - visibility: hidden; + #tsd-search-results > li:is(:hover, [aria-selected="true"]) { + background-color: var(--color-background-active); + color: var(--color-contrast-text); + } + /* It's important that this takes full size of parent `li`, to capture a click on `li` */ + #tsd-search-results > li > a { + display: flex; + align-items: center; + padding: 0.5rem 0.25rem; + box-sizing: border-box; + width: 100%; + } + #tsd-search-results > li > a > .text { + flex: 1 1 auto; + min-width: 0; + overflow-wrap: anywhere; + } + #tsd-search-results > li > a .parent { + color: var(--color-text-aside); + } + #tsd-search-results > li > a mark { + color: inherit; + background-color: inherit; + font-weight: bold; + } + #tsd-search-status { + flex: 1; + display: grid; + place-content: center; + text-align: center; + overflow-wrap: anywhere; + } + #tsd-search-status:not(:empty) { + min-height: 6rem; } - .to-has-menu .overlay { - animation: fade-in 0.4s; + .tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; } - .to-has-menu .col-sidebar { - animation: pop-in-from-right 0.4s; + .tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; } - .from-has-menu .overlay { - animation: fade-out 0.4s; + .tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; } - .from-has-menu .col-sidebar { - animation: pop-out-to-right 0.4s; + .tsd-signature-type { + font-style: italic; + font-weight: normal; } - .has-menu body { - overflow: hidden; + .tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; } - .has-menu .overlay { - visibility: visible; + .tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; } - .has-menu .col-sidebar { - visibility: visible; - transform: translate(0, 0); + .tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; + } + .tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; + } + .tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; + } + + ul.tsd-parameter-list, + ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; + } + ul.tsd-parameter-list > li.tsd-parameter-signature, + ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; + } + ul.tsd-parameter-list h5, + ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; + } + .tsd-sources { + margin-top: 1rem; + font-size: 0.875em; + } + .tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; + } + .tsd-sources ul { + list-style: none; + padding: 0; + } + + .tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: var(--dim-toolbar-border-bottom-width) + var(--color-accent) solid; + transition: transform 0.3s ease-in-out; + } + .tsd-page-toolbar a { + color: var(--color-text); + } + .tsd-toolbar-contents { display: flex; - flex-direction: column; - gap: 1.5rem; - max-height: 100vh; - padding: 1rem 2rem; + align-items: center; + height: var(--dim-toolbar-contents-height); + margin: 0 auto; } - .has-menu .tsd-navigation { - max-height: 100%; + .tsd-toolbar-contents > .title { + font-weight: bold; + margin-right: auto; } #tsd-toolbar-links { - display: none; - } - .tsd-navigation .tsd-nav-link { display: flex; + align-items: center; + gap: 1.5rem; + margin-right: 1rem; } -} -/* one sidebar */ -@media (min-width: 770px) { - .container-main { - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); - grid-template-areas: "sidebar content"; - margin: 2rem auto; + .tsd-widget { + box-sizing: border-box; + display: inline-block; + opacity: 0.8; + height: 2.5rem; + width: 2.5rem; + transition: opacity 0.1s, background-color 0.1s; + text-align: center; + cursor: pointer; + border: none; + background-color: transparent; + } + .tsd-widget:hover { + opacity: 0.9; + } + .tsd-widget:active { + opacity: 1; + background-color: var(--color-accent); + } + #tsd-toolbar-menu-trigger { + display: none; + } + + .tsd-member-summary-name { + display: inline-flex; + align-items: center; + padding: 0.25rem; + text-decoration: none; } - .col-sidebar { - grid-area: sidebar; + .tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + color: var(--color-text); + vertical-align: middle; } - .col-content { - grid-area: content; - padding: 0 1rem; + + .tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; } -} -@media (min-width: 770px) and (max-width: 1399px) { - .col-sidebar { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; - position: sticky; - top: 42px; - padding-top: 1rem; + + .tsd-member-summary-name:hover > .tsd-anchor-icon svg, + .tsd-anchor-link:hover > .tsd-anchor-icon svg, + .tsd-anchor-icon:focus-visible svg { + visibility: visible; } - .site-menu { - margin-top: 1rem; + + .deprecated { + text-decoration: line-through !important; } -} -/* two sidebars */ -@media (min-width: 1200px) { - .container-main { - grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); - grid-template-areas: "sidebar content toc"; + .warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); } - .col-sidebar { - display: contents; + .tsd-kind-project { + color: var(--color-ts-project); + } + .tsd-kind-module { + color: var(--color-ts-module); + } + .tsd-kind-namespace { + color: var(--color-ts-namespace); + } + .tsd-kind-enum { + color: var(--color-ts-enum); + } + .tsd-kind-enum-member { + color: var(--color-ts-enum-member); + } + .tsd-kind-variable { + color: var(--color-ts-variable); + } + .tsd-kind-function { + color: var(--color-ts-function); + } + .tsd-kind-class { + color: var(--color-ts-class); + } + .tsd-kind-interface { + color: var(--color-ts-interface); + } + .tsd-kind-constructor { + color: var(--color-ts-constructor); + } + .tsd-kind-property { + color: var(--color-ts-property); + } + .tsd-kind-method { + color: var(--color-ts-method); + } + .tsd-kind-reference { + color: var(--color-ts-reference); + } + .tsd-kind-call-signature { + color: var(--color-ts-call-signature); + } + .tsd-kind-index-signature { + color: var(--color-ts-index-signature); + } + .tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); + } + .tsd-kind-parameter { + color: var(--color-ts-parameter); + } + .tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); + } + .tsd-kind-accessor { + color: var(--color-ts-accessor); + } + .tsd-kind-get-signature { + color: var(--color-ts-get-signature); + } + .tsd-kind-set-signature { + color: var(--color-ts-set-signature); + } + .tsd-kind-type-alias { + color: var(--color-ts-type-alias); } - .page-menu { - grid-area: toc; - padding-left: 1rem; + /* if we have a kind icon, don't color the text by kind */ + .tsd-kind-icon ~ span { + color: var(--color-text); } - .site-menu { - grid-area: sidebar; + + /* mobile */ + @media (max-width: 769px) { + #tsd-toolbar-menu-trigger { + display: inline-block; + /* temporary fix to vertically align, for compatibility */ + line-height: 2.5; + } + #tsd-toolbar-links { + display: none; + } + + .container-main { + display: flex; + } + .col-content { + float: none; + max-width: 100%; + width: 100%; + } + .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + .col-sidebar > *:last-child { + padding-bottom: 20px; + } + .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } } - .site-menu { - margin-top: 1rem; + /* one sidebar */ + @media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + --dim-container-main-margin-y: 2rem; + } + + .tsd-breadcrumb { + margin-top: 0; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } + } + @media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc( + 100vh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); + overflow: auto; + position: sticky; + top: calc( + var(--dim-header-height) + var(--dim-container-main-margin-y) + ); + } + .site-menu { + margin-top: 1rem; + } } - .page-menu, - .site-menu { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; - position: sticky; - top: 42px; + /* two sidebars */ + @media (min-width: 1200px) { + .container-main { + grid-template-columns: + minmax(0, 1fr) minmax(0, 2.5fr) minmax( + 0, + 20rem + ); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 0rem; + } + + .page-menu, + .site-menu { + max-height: calc( + 100vh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); + overflow: auto; + position: sticky; + top: calc( + var(--dim-header-height) + var(--dim-container-main-margin-y) + ); + } } } diff --git a/docs/classes/src.AbstractPool.html b/docs/classes/src.AbstractPool.html deleted file mode 100644 index 44ab71538..000000000 --- a/docs/classes/src.AbstractPool.html +++ /dev/null @@ -1,164 +0,0 @@ -AbstractPool | poolifier - v4.4.5

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

Properties

emitter?: EventEmitterAsyncResource

Pool event emitter integrated with async resource. -The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

-

Events that can currently be listened to:

-
    -
  • 'ready': Emitted when the number of workers created in the pool has reached the minimum size expected and are ready. If the pool is dynamic with a minimum number of workers set to zero, this event is emitted when the pool is started.
  • -
  • 'busy': Emitted when the number of workers created in the pool has reached the maximum size expected and are executing concurrently their tasks quota.
  • -
  • 'busyEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer executing concurrently their tasks quota.
  • -
  • 'full': Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
  • -
  • 'fullEnd': Emitted when the pool is dynamic and the number of workers created has no longer reached the maximum size expected.
  • -
  • 'empty': Emitted when the pool is dynamic with a minimum number of workers set to zero and the number of workers has reached the minimum size expected.
  • -
  • 'destroy': Emitted when the pool is destroyed.
  • -
  • 'error': Emitted when an uncaught error occurs.
  • -
  • 'taskError': Emitted when an error occurs while executing a task.
  • -
  • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
  • -
  • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer 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.

-

Options for the pool.

-
promiseResponseMap: Map<`${string}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

The task execution response promise map:

-
    -
  • key: The message id of each submitted task.
  • -
  • value: An object that contains task's worker node key, execution response promise resolve and reject callbacks, async resource.
  • -
-

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

-
workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

Worker choice strategies context referencing worker choice algorithms implementation.

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

Pool worker nodes.

-

Accessors

  • get backPressure(): boolean
  • Whether the pool is back pressured or not.

    -

    Returns boolean

    The pool back pressure boolean status.

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

    -

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

    -

    Returns "fixed" | "dynamic"

Methods

  • 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. -Can be overridden.

    -

    Parameters

    • workerNodeKey: number

      The newly created worker node key.

      -

    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

  • 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

    • workerNodeKey: number

      The worker node key.

      -
    • listener: ((message: MessageValue<Message, unknown>) => void)

      The message listener callback.

      -

    Returns void

  • Terminates the worker node given its worker node key.

    -

    Parameters

    • workerNodeKey: number

      The worker node key.

      -

    Returns Promise<void>

  • Parameters

    • Optionaldata: Data

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

      -
    • Optionalname: string

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

      -
    • OptionaltransferList: readonly 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 with a task function response that will be fulfilled when the task is completed.

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

    -

    Parameters

    • workerNodeKey: number

      The worker node key.

      -

    Returns undefined | WorkerInfo

    The worker information.

    -
  • Whether the worker nodes are back pressured or not.

    -

    Returns boolean

    Worker nodes back pressure boolean status.

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

    -

    Returns boolean

    Worker nodes busyness boolean status.

    -
  • Returns whether the worker is the main worker or not.

    -

    Returns boolean

    true if the worker is the main worker, false otherwise.

    -
  • Parameters

    • data: Iterable<Data, any, any>

      The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

      -
    • Optionalname: string

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

      -
    • OptionaltransferList: readonly 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 with an array of task function responses that will be fulfilled when the tasks are completed.

    -
  • 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: MessageValue<Message, unknown>) => void)

      The message listener callback.

      -

    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: MessageValue<Message, unknown>) => void)

      The message listener callback.

      -

    Returns void

  • Sends the startup 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.

    -

    Parameters

    • workerNodeKey: number

      The worker node key.

      -
    • message: MessageValue<Data, unknown>

      The message.

      -
    • OptionaltransferList: readonly TransferListItem[]

      The optional array of transferable objects.

      -

    Returns void

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

    -

    Returns void

  • Parameters

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

    Returns void

  • Conditions for dynamic worker creation.

    -

    Returns boolean

    Whether to create a dynamic worker or not.

    -
diff --git a/docs/classes/src.AbstractWorker.html b/docs/classes/src.AbstractWorker.html deleted file mode 100644 index 71cbfdaa9..000000000 --- a/docs/classes/src.AbstractWorker.html +++ /dev/null @@ -1,80 +0,0 @@ -AbstractWorker | poolifier - v4.4.5

Class AbstractWorker<MainWorker, Data, Response>Abstract

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

-

Type Parameters

  • MainWorker extends MessagePort | Worker

    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

Properties

activeInterval?: Timeout

Handler id of the activeInterval worker activity check.

-
id: number

Worker id.

-
isMain: undefined | 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, TaskFunctionObject<Data, Response>>

Task function object(s) processed by the worker when the pool's execute method is invoked.

-

Methods

  • Handles a worker error.

    -

    Parameters

    • error: Error

      The error raised by the worker.

      -

    Returns {
        error?: Error;
        message: string;
        stack?: string;
    }

    The worker error object.

    -
    • Optionalerror?: Error
    • message: string
    • Optionalstack?: string
diff --git a/docs/classes/src.CircularBuffer.html b/docs/classes/src.CircularBuffer.html deleted file mode 100644 index 672cd3a0d..000000000 --- a/docs/classes/src.CircularBuffer.html +++ /dev/null @@ -1,24 +0,0 @@ -CircularBuffer | poolifier - v4.4.5

Class CircularBufferInternal

Circular buffer designed for positive numbers.

-

Constructors

Properties

Methods

Constructors

Properties

size: number

Methods

  • Checks whether the buffer is empty.

    -

    Returns boolean

    Whether the buffer is empty.

    -
  • Checks whether the buffer is full.

    -

    Returns boolean

    Whether the buffer is full.

    -
  • Gets number from buffer.

    -

    Returns undefined | number

    Number from buffer.

    -
  • Puts number into buffer.

    -

    Parameters

    • number: number

      Number to put into buffer.

      -

    Returns void

diff --git a/docs/classes/src.ClusterWorker.html b/docs/classes/src.ClusterWorker.html index 5ee98042d..8f88e0f6c 100644 --- a/docs/classes/src.ClusterWorker.html +++ b/docs/classes/src.ClusterWorker.html @@ -1,83 +1,396 @@ -ClusterWorker | poolifier - v4.4.5

Class ClusterWorker<Data, Response>

A cluster worker used by a poolifier ClusterPool.

+ClusterWorker | poolifier - v5.0.0
poolifier - v5.0.0
    Preparing search index...

    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.

    -

    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 (view full)

    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 Summary)

    Index

    Constructors

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    -
    isMain: undefined | 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, TaskFunctionObject<Data, Response>>

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    -

    Accessors

    Methods

    Returns ClusterWorker<Data, Response>

    Properties

    activeInterval?: Timeout

    Handler id of the activeInterval worker activity check.

    +
    isMain: undefined | 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.

    +
    taskAbortFunctions: Map<
        `${string}-${string}-${string}-${string}-${string}`,
        () => void,
    >

    Task abort functions processed by the worker when task operation 'abort' is received.

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

    Task function object(s) processed by the worker when the pool's execute method is invoked.

    +
    captureRejections: boolean

    Value: boolean

    +

    Change the default captureRejections option on all new EventEmitter objects.

    +

    v13.4.0, v12.16.0

    +
    captureRejectionSymbol: typeof captureRejectionSymbol

    Value: Symbol.for('nodejs.rejection')

    +

    See how to write a custom rejection handler.

    +

    v13.4.0, v12.16.0

    +
    defaultMaxListeners: number

    By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

    +

    Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

    +

    This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

    +
    import { EventEmitter } from 'node:events';
    const emitter = new EventEmitter();
    emitter.setMaxListeners(emitter.getMaxListeners() + 1);
    emitter.once('event', () => {
    // do stuff
    emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
    }); +
    + +

    The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

    +

    The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

    +

    v0.11.2

    +
    errorMonitor: typeof errorMonitor

    This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

    +

    Installing a listener using this symbol does not change the behavior once an 'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

    +

    v13.6.0, v12.17.0

    +

    Accessors

    Methods

    • Type Parameters

      • K

      Parameters

      • error: Error
      • event: string | symbol
      • ...args: AnyRest

      Returns void

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

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: (...args: any[]) => void

      Returns this

      v0.1.26

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

      +

      Returns true if the event had listeners, false otherwise.

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

      // First listener
      myEmitter.on('event', function firstListener() {
      console.log('Helloooo! first listener');
      });
      // Second listener
      myEmitter.on('event', function secondListener(arg1, arg2) {
      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
      });
      // Third listener
      myEmitter.on('event', function thirdListener(...args) {
      const parameters = args.join(', ');
      console.log(`event with parameters ${parameters} in third listener`);
      });

      console.log(myEmitter.listeners('event'));

      myEmitter.emit('event', 1, 2, 3, 4, 5);

      // Prints:
      // [
      // [Function: firstListener],
      // [Function: secondListener],
      // [Function: thirdListener]
      // ]
      // Helloooo! first listener
      // event with parameters 1, 2 in second listener
      // event with parameters 1, 2, 3, 4, 5 in third listener +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • ...args: AnyRest

      Returns boolean

      v0.1.26

      +
    • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

      +
      import { EventEmitter } from 'node:events';

      const myEE = new EventEmitter();
      myEE.on('foo', () => {});
      myEE.on('bar', () => {});

      const sym = Symbol('symbol');
      myEE.on(sym, () => {});

      console.log(myEE.eventNames());
      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
      + +

      Returns (string | symbol)[]

      v6.0.0

      +
    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

      +

      Returns number

      v1.0.0

      +
    • Handles a worker error.

      Parameters

      • error: Error

        The error raised by the worker.

        -

      Returns {
          message: string;
          stack?: string;
      }

      The worker error object.

      -
      • message: string
      • Optionalstack?: string

    Returns { aborted: boolean; message: string; stack?: string }

    The worker error object.

    +
    • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event being listened for

        +
      • Optionallistener: Function

        The event handler function

        +

      Returns number

      v3.2.0

      +
    • 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] ] +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      v0.1.26

      +
    • Alias for emitter.removeListener().

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: (...args: any[]) => void

      Returns this

      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 eventName and +listener will result in the listener being added, and called, multiple times.

      +
      server.on('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

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

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.on('foo', () => console.log('a'));
      myEE.prependListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: (...args: any[]) => void

        The callback function

        +

      Returns this

      v0.1.101

      +
    • Adds a one-time listener 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!');
      }); +
      + +

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

      +

      By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

      +
      import { EventEmitter } from 'node:events';
      const myEE = new EventEmitter();
      myEE.once('foo', () => console.log('a'));
      myEE.prependOnceListener('foo', () => console.log('b'));
      myEE.emit('foo');
      // Prints:
      // b
      // a +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: (...args: any[]) => void

        The callback function

        +

      Returns this

      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 eventName +and listener will result in the listener being added, and called, multiple times.

      +
      server.prependListener('connection', (stream) => {
      console.log('someone connected!');
      }); +
      + +

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

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: (...args: any[]) => void

        The callback function

        +

      Returns this

      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.

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

        The name of the event.

        +
      • listener: (...args: any[]) => void

        The callback function

        +

      Returns this

      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'); +
      + +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol

      Returns Function[]

      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

      • OptionaleventName: string | symbol

      Returns this

      v0.1.26

      +
    • Removes the specified listener from the listener array for the event named eventName.

      +
      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 +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

      +

      Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

      +
      import { EventEmitter } from 'node:events';
      class MyEmitter extends EventEmitter {}
      const myEmitter = new MyEmitter();

      const callbackA = () => {
      console.log('A');
      myEmitter.removeListener('event', callbackB);
      };

      const callbackB = () => {
      console.log('B');
      };

      myEmitter.on('event', callbackA);

      myEmitter.on('event', callbackB);

      // callbackA removes listener callbackB but it will still be called.
      // Internal listener array at time of emit [callbackA, callbackB]
      myEmitter.emit('event');
      // Prints:
      // A
      // B

      // callbackB is now removed.
      // Internal listener array [callbackA]
      myEmitter.emit('event');
      // Prints:
      // A +
      + +

      Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

      +

      When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

      +
      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.

      +

      Type Parameters

      • K

      Parameters

      • eventName: string | symbol
      • listener: (...args: any[]) => void

      Returns this

      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 to Infinity (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 this

      v0.3.5

      +
    • Listens once to the abort event on the provided signal.

      +

      Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

      +

      This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

      +

      Returns a disposable so that it may be unsubscribed from more easily.

      +
      import { addAbortListener } from 'node:events';

      function example(signal) {
      let disposable;
      try {
      signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
      disposable = addAbortListener(signal, (e) => {
      // Do something when signal is aborted.
      });
      } finally {
      disposable?.[Symbol.dispose]();
      }
      } +
      + +

      Parameters

      • signal: AbortSignal
      • resource: (event: Event) => void

      Returns Disposable

      Disposable that removes the abort listener.

      +

      v20.5.0

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

      +

      For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

      +

      For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

      +
      import { getEventListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      const listener = () => console.log('Events are fun');
      ee.on('foo', listener);
      console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
      }
      {
      const et = new EventTarget();
      const listener = () => console.log('Events are fun');
      et.addEventListener('foo', listener);
      console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
      } +
      + +

      Parameters

      • emitter: EventTarget | EventEmitter<DefaultEventMap>
      • name: string | symbol

      Returns Function[]

      v15.2.0, v14.17.0

      +
    • Returns the currently set max amount of listeners.

      +

      For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

      +

      For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

      +
      import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

      {
      const ee = new EventEmitter();
      console.log(getMaxListeners(ee)); // 10
      setMaxListeners(11, ee);
      console.log(getMaxListeners(ee)); // 11
      }
      {
      const et = new EventTarget();
      console.log(getMaxListeners(et)); // 10
      setMaxListeners(11, et);
      console.log(getMaxListeners(et)); // 11
      } +
      + +

      Parameters

      • emitter: EventTarget | EventEmitter<DefaultEventMap>

      Returns number

      v19.9.0

      +
    • A class method that returns the number of listeners for the given eventName registered on the given emitter.

      +
      import { EventEmitter, listenerCount } from 'node:events';

      const myEmitter = new EventEmitter();
      myEmitter.on('event', () => {});
      myEmitter.on('event', () => {});
      console.log(listenerCount(myEmitter, 'event'));
      // Prints: 2 +
      + +

      Parameters

      • emitter: EventEmitter

        The emitter to query

        +
      • eventName: string | symbol

        The event name

        +

      Returns number

      v0.9.12

      +

      Since v3.2.0 - Use listenerCount instead.

      +
    • import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here +
      + +

      Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventEmitter
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[]>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo')) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here +
      + +

      Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

      +

      An AbortSignal can be used to cancel waiting on events:

      +
      import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ac = new AbortController();

      (async () => {
      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      });

      for await (const event of on(ee, 'foo', { signal: ac.signal })) {
      // The execution of this inner block is synchronous and it
      // processes one event at a time (even with await). Do not use
      // if concurrent execution is required.
      console.log(event); // prints ['bar'] [42]
      }
      // Unreachable here
      })();

      process.nextTick(() => ac.abort()); +
      + +

      Use the close option to specify an array of event names that will end the iteration:

      +
      import { on, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      // Emit later on
      process.nextTick(() => {
      ee.emit('foo', 'bar');
      ee.emit('foo', 42);
      ee.emit('close');
      });

      for await (const event of on(ee, 'foo', { close: ['close'] })) {
      console.log(event); // prints ['bar'] [42]
      }
      // the loop will exit after 'close' is emitted
      console.log('done'); // prints 'done' +
      + +

      Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterIteratorOptions

      Returns AsyncIterator<any[]>

      An AsyncIterator that iterates eventName events emitted by the emitter

      +

      v13.6.0, v12.16.0

      +
    • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

      +

      This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

      +
      import { once, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      process.nextTick(() => {
      ee.emit('myevent', 42);
      });

      const [value] = await once(ee, 'myevent');
      console.log(value);

      const err = new Error('kaboom');
      process.nextTick(() => {
      ee.emit('error', err);
      });

      try {
      await once(ee, 'myevent');
      } catch (err) {
      console.error('error happened', err);
      } +
      + +

      The special handling of the 'error' event is only used when events.once() is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();

      once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.error('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom +
      + +

      An AbortSignal can be used to cancel waiting for the event:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
      try {
      await once(emitter, event, { signal });
      console.log('event emitted!');
      } catch (error) {
      if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
      } else {
      console.error('There was an error', error.message);
      }
      }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled! +
      + +

      Parameters

      • emitter: EventEmitter
      • eventName: string | symbol
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

      +

      This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

      +
      import { once, EventEmitter } from 'node:events';
      import process from 'node:process';

      const ee = new EventEmitter();

      process.nextTick(() => {
      ee.emit('myevent', 42);
      });

      const [value] = await once(ee, 'myevent');
      console.log(value);

      const err = new Error('kaboom');
      process.nextTick(() => {
      ee.emit('error', err);
      });

      try {
      await once(ee, 'myevent');
      } catch (err) {
      console.error('error happened', err);
      } +
      + +

      The special handling of the 'error' event is only used when events.once() is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();

      once(ee, 'error')
      .then(([err]) => console.log('ok', err.message))
      .catch((err) => console.error('error', err.message));

      ee.emit('error', new Error('boom'));

      // Prints: ok boom +
      + +

      An AbortSignal can be used to cancel waiting for the event:

      +
      import { EventEmitter, once } from 'node:events';

      const ee = new EventEmitter();
      const ac = new AbortController();

      async function foo(emitter, event, signal) {
      try {
      await once(emitter, event, { signal });
      console.log('event emitted!');
      } catch (error) {
      if (error.name === 'AbortError') {
      console.error('Waiting for the event was canceled!');
      } else {
      console.error('There was an error', error.message);
      }
      }
      }

      foo(ee, 'foo', ac.signal);
      ac.abort(); // Abort waiting for the event
      ee.emit('foo'); // Prints: Waiting for the event was canceled! +
      + +

      Parameters

      • emitter: EventTarget
      • eventName: string
      • Optionaloptions: StaticEventEmitterOptions

      Returns Promise<any[]>

      v11.13.0, v10.16.0

      +
    • import { setMaxListeners, EventEmitter } from 'node:events';

      const target = new EventTarget();
      const emitter = new EventEmitter();

      setMaxListeners(5, target, emitter); +
      + +

      Parameters

      • Optionaln: number

        A non-negative number. The maximum number of listeners per EventTarget event.

        +
      • ...eventTargets: (EventTarget | EventEmitter<DefaultEventMap>)[]

        Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

        +

      Returns void

      v15.4.0

      +
    diff --git a/docs/classes/src.DynamicClusterPool.html b/docs/classes/src.DynamicClusterPool.html index 6daccb6c8..642435d48 100644 --- a/docs/classes/src.DynamicClusterPool.html +++ b/docs/classes/src.DynamicClusterPool.html @@ -1,166 +1,128 @@ -DynamicClusterPool | poolifier - v4.4.5

    Class DynamicClusterPool<Data, Response>

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

    +DynamicClusterPool | poolifier - v5.0.0
    poolifier - v5.0.0
      Preparing search index...

      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.

      -

      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 (view full)

      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 Summary)

      Index

      Constructors

      Properties

      emitter?: EventEmitterAsyncResource

      Pool event emitter integrated with async resource. -The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

      -

      Events that can currently be listened to:

      -
        -
      • 'ready': Emitted when the number of workers created in the pool has reached the minimum size expected and are ready. If the pool is dynamic with a minimum number of workers set to zero, this event is emitted when the pool is started.
      • -
      • 'busy': Emitted when the number of workers created in the pool has reached the maximum size expected and are executing concurrently their tasks quota.
      • -
      • 'busyEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer executing concurrently their tasks quota.
      • -
      • 'full': Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
      • -
      • 'fullEnd': Emitted when the pool is dynamic and the number of workers created has no longer reached the maximum size expected.
      • -
      • 'empty': Emitted when the pool is dynamic with a minimum number of workers set to zero and the number of workers has reached the minimum size expected.
      • -
      • 'destroy': Emitted when the pool is destroyed.
      • -
      • 'error': Emitted when an uncaught error occurs.
      • -
      • 'taskError': Emitted when an error occurs while executing a task.
      • -
      • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
      • -
      • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer 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}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

      The task execution response promise map:

      +

      Returns DynamicClusterPool<Data, Response>

      Properties

      emitter?: EventEmitterAsyncResource
      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}-${string}-${string}-${string}-${string}`,
          PromiseResponseWrapper<Response>,
      > = ...

      The task execution response promise map:

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

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

      -
      workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

      Worker choice strategies context referencing worker choice algorithms implementation.

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

      Pool worker nodes.

      -

      Accessors

      workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<
          Worker,
          Data,
          Response,
      >

      Worker choice strategies context referencing worker choice algorithms implementation.

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

      Accessors

      • get backPressure(): boolean

        Whether the pool is back pressured or not.

        Returns boolean

        The pool back pressure boolean status.

        -
      • get busy(): boolean

        Whether the pool is busy or not.

        Returns boolean

        The pool busyness boolean status.

        -
      • get type(): "fixed" | "dynamic"

        The pool type.

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

        -

        Returns "fixed" | "dynamic"

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

        -

        Returns "cluster" | "thread"

      Methods

      • Hook executed after the worker task execution. +

        Returns "fixed" | "dynamic"

      • get worker(): "cluster" | "thread"

        The worker type.

        +

        Returns "cluster" | "thread"

      Methods

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

      • message: MessageValue<Response>

        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

      • Parameters

        • Optionaldata: Data

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

          -
        • Optionalname: string

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

          -
        • OptionaltransferList: readonly 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 with a task function response that will be fulfilled when the task is completed.

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

        +

      Returns Promise<void>

      • Parameters

        • Optionaldata: Data
        • Optionalname: string
        • OptionalabortSignal: AbortSignal
        • OptionaltransferList: readonly Transferable[]

        Returns Promise<Response>

      • Whether the worker nodes are back pressured or not.

        +

      Returns undefined | WorkerInfo

      The worker information.

      +
      • Parameters

        • data: Iterable<Data, any, any>

          The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

          -
        • Optionalname: string

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

          -
        • OptionaltransferList: readonly 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 with an array of task function responses that will be fulfilled when the tasks are completed.

        -
      • Parameters

        • data: Iterable<Data>
        • Optionalname: string
        • OptionalabortSignals: Iterable<AbortSignal, any, any>
        • OptionaltransferList: readonly Transferable[]

        Returns Promise<Response[]>

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

        +

      Returns void

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

      • message: MessageValue<Data>

        The message.

        +

      Returns void

      • Parameters

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

        Returns void

      • Parameters

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

        Returns void

      +
      diff --git a/docs/classes/src.DynamicThreadPool.html b/docs/classes/src.DynamicThreadPool.html index efecf3f7d..29580c7d0 100644 --- a/docs/classes/src.DynamicThreadPool.html +++ b/docs/classes/src.DynamicThreadPool.html @@ -1,167 +1,129 @@ -DynamicThreadPool | poolifier - v4.4.5

      Class DynamicThreadPool<Data, Response>

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

      +DynamicThreadPool | poolifier - v5.0.0
      poolifier - v5.0.0
        Preparing search index...

        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.

        -

        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 (view full)

        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 Summary)

        Index

        Constructors

        Properties

        emitter?: EventEmitterAsyncResource

        Pool event emitter integrated with async resource. -The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

        -

        Events that can currently be listened to:

        -
          -
        • 'ready': Emitted when the number of workers created in the pool has reached the minimum size expected and are ready. If the pool is dynamic with a minimum number of workers set to zero, this event is emitted when the pool is started.
        • -
        • 'busy': Emitted when the number of workers created in the pool has reached the maximum size expected and are executing concurrently their tasks quota.
        • -
        • 'busyEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer executing concurrently their tasks quota.
        • -
        • 'full': Emitted when the pool is dynamic and the number of workers created has reached the maximum size expected.
        • -
        • 'fullEnd': Emitted when the pool is dynamic and the number of workers created has no longer reached the maximum size expected.
        • -
        • 'empty': Emitted when the pool is dynamic with a minimum number of workers set to zero and the number of workers has reached the minimum size expected.
        • -
        • 'destroy': Emitted when the pool is destroyed.
        • -
        • 'error': Emitted when an uncaught error occurs.
        • -
        • 'taskError': Emitted when an error occurs while executing a task.
        • -
        • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
        • -
        • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer 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}-${string}-${string}-${string}-${string}`, PromiseResponseWrapper<Response>> = ...

        The task execution response promise map:

        +

        Returns DynamicThreadPool<Data, Response>

        Properties

        emitter?: EventEmitterAsyncResource
        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}-${string}-${string}-${string}-${string}`,
            PromiseResponseWrapper<Response>,
        > = ...

        The task execution response promise map:

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

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

        -
        workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

        Worker choice strategies context referencing worker choice algorithms implementation.

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

        Pool worker nodes.

        -

        Accessors

        workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<
            Worker,
            Data,
            Response,
        >

        Worker choice strategies context referencing worker choice algorithms implementation.

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

        Accessors

        • get backPressure(): boolean

          Whether the pool is back pressured or not.

          Returns boolean

          The pool back pressure boolean status.

          -
        • get busy(): boolean

          Whether the pool is busy or not.

          Returns boolean

          The pool busyness boolean status.

          -
        • get type(): "fixed" | "dynamic"

          The pool type.

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

          -

          Returns "fixed" | "dynamic"

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

          -

          Returns "cluster" | "thread"

        Methods

        • Hook executed after the worker task execution. +

          Returns "fixed" | "dynamic"

        • get worker(): "cluster" | "thread"

          The worker type.

          +

          Returns "cluster" | "thread"

        Methods

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

        • message: MessageValue<Response>

          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

        • Parameters

          • Optionaldata: Data

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

            -
          • Optionalname: string

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

            -
          • OptionaltransferList: readonly 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 with a task function response that will be fulfilled when the task is completed.

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

          +

        Returns Promise<void>

        • Parameters

          • Optionaldata: Data
          • Optionalname: string
          • OptionalabortSignal: AbortSignal
          • OptionaltransferList: readonly Transferable[]

          Returns Promise<Response>

        • Whether the worker nodes are back pressured or not.

          +

        Returns undefined | WorkerInfo

        The worker information.

        +
        • Parameters

          • data: Iterable<Data, any, any>

            The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

            -
          • Optionalname: string

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

            -
          • OptionaltransferList: readonly 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 with an array of task function responses that will be fulfilled when the tasks are completed.

          -
        • Parameters

          • data: Iterable<Data>
          • Optionalname: string
          • OptionalabortSignals: Iterable<AbortSignal, any, any>
          • OptionaltransferList: readonly Transferable[]

          Returns Promise<Response[]>

        • 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.

            -
          • OptionaltransferList: readonly TransferListItem[]

            The optional array of transferable objects.

            -

          Returns void

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

        • message: MessageValue<Data>

          The message.

          +
        • OptionaltransferList: readonly Transferable[]

          The optional array of transferable objects.

          +

        Returns void

        • Parameters

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

          Returns void

        • Parameters

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

          Returns void

        +
        diff --git a/docs/classes/src.FixedClusterPool.html b/docs/classes/src.FixedClusterPool.html index 25406a8a6..f6e2d787a 100644 --- a/docs/classes/src.FixedClusterPool.html +++ b/docs/classes/src.FixedClusterPool.html @@ -1,164 +1,126 @@ -FixedClusterPool | poolifier - v4.4.5

        Class FixedClusterPool<Data, Response>

        A cluster pool with a fixed number of workers.

        -

        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 (view full)

        Constructors

        Properties

        emitter?: EventEmitterAsyncResource
        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}-${string}-${string}-${string}-${string}`,
            PromiseResponseWrapper<Response>,
        > = ...

        The task execution response promise map:

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

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

        -
        workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

        Worker choice strategies context referencing worker choice algorithms implementation.

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

        Pool worker nodes.

        -

        Accessors

        workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<
            Worker,
            Data,
            Response,
        >

        Worker choice strategies context referencing worker choice algorithms implementation.

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

        Accessors

        • get backPressure(): boolean

          Whether the pool is back pressured or not.

          Returns boolean

          The pool back pressure boolean status.

          -
        • get busy(): boolean

          Whether the pool is busy or not.

          Returns boolean

          The pool busyness boolean status.

          -
        • get type(): "fixed" | "dynamic"

          The pool type.

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

          -

          Returns "fixed" | "dynamic"

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

          -

          Returns "cluster" | "thread"

        Methods

        • Hook executed after the worker task execution. +

          Returns "fixed" | "dynamic"

        • get worker(): "cluster" | "thread"

          The worker type.

          +

          Returns "cluster" | "thread"

        Methods

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

        • message: MessageValue<Response>

          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

        • Parameters

          • Optionaldata: Data

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

            -
          • Optionalname: string

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

            -
          • OptionaltransferList: readonly 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 with a task function response that will be fulfilled when the task is completed.

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

          +

        Returns Promise<void>

        • Parameters

          • Optionaldata: Data
          • Optionalname: string
          • OptionalabortSignal: AbortSignal
          • OptionaltransferList: readonly Transferable[]

          Returns Promise<Response>

        • Whether the worker nodes are back pressured or not.

          +

        Returns undefined | WorkerInfo

        The worker information.

        +
        • Parameters

          • data: Iterable<Data, any, any>

            The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

            -
          • Optionalname: string

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

            -
          • OptionaltransferList: readonly 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 with an array of task function responses that will be fulfilled when the tasks are completed.

          -
        • Parameters

          • data: Iterable<Data>
          • Optionalname: string
          • OptionalabortSignals: Iterable<AbortSignal, any, any>
          • OptionaltransferList: readonly Transferable[]

          Returns Promise<Response[]>

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

          +

        Returns void

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

        • message: MessageValue<Data>

          The message.

          +

        Returns void

        • Parameters

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

          Returns void

        • Parameters

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

          Returns void

        +
        diff --git a/docs/classes/src.FixedThreadPool.html b/docs/classes/src.FixedThreadPool.html index 92da52b95..167a8afc5 100644 --- a/docs/classes/src.FixedThreadPool.html +++ b/docs/classes/src.FixedThreadPool.html @@ -1,165 +1,127 @@ -FixedThreadPool | poolifier - v4.4.5

        Class FixedThreadPool<Data, Response>

        A thread pool with a fixed number of threads.

        -

        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 (view full)

        Constructors

        Properties

        emitter?: EventEmitterAsyncResource
        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}-${string}-${string}-${string}-${string}`,
            PromiseResponseWrapper<Response>,
        > = ...

        The task execution response promise map:

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

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

        -
        workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<Worker, Data, Response>

        Worker choice strategies context referencing worker choice algorithms implementation.

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

        Pool worker nodes.

        -

        Accessors

        workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<
            Worker,
            Data,
            Response,
        >

        Worker choice strategies context referencing worker choice algorithms implementation.

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

        Accessors

        • get backPressure(): boolean

          Whether the pool is back pressured or not.

          Returns boolean

          The pool back pressure boolean status.

          -
        • get busy(): boolean

          Whether the pool is busy or not.

          Returns boolean

          The pool busyness boolean status.

          -
        • get type(): "fixed" | "dynamic"

          The pool type.

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

          -

          Returns "fixed" | "dynamic"

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

          -

          Returns "cluster" | "thread"

        Methods

        • Hook executed after the worker task execution. +

          Returns "fixed" | "dynamic"

        • get worker(): "cluster" | "thread"

          The worker type.

          +

          Returns "cluster" | "thread"

        Methods

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

        • message: MessageValue<Response>

          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

        • Parameters

          • Optionaldata: Data

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

            -
          • Optionalname: string

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

            -
          • OptionaltransferList: readonly 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 with a task function response that will be fulfilled when the task is completed.

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

          +

        Returns Promise<void>

        • Parameters

          • Optionaldata: Data
          • Optionalname: string
          • OptionalabortSignal: AbortSignal
          • OptionaltransferList: readonly Transferable[]

          Returns Promise<Response>

        • Whether the worker nodes are back pressured or not.

          +

        Returns undefined | WorkerInfo

        The worker information.

        +
        • Parameters

          • data: Iterable<Data, any, any>

            The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

            -
          • Optionalname: string

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

            -
          • OptionaltransferList: readonly 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 with an array of task function responses that will be fulfilled when the tasks are completed.

          -
        • Parameters

          • data: Iterable<Data>
          • Optionalname: string
          • OptionalabortSignals: Iterable<AbortSignal, any, any>
          • OptionaltransferList: readonly Transferable[]

          Returns Promise<Response[]>

        • 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.

            -
          • OptionaltransferList: readonly TransferListItem[]

            The optional array of transferable objects.

            -

          Returns void

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

        • message: MessageValue<Data>

          The message.

          +
        • OptionaltransferList: readonly Transferable[]

          The optional array of transferable objects.

          +

        Returns void

        • Parameters

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

          Returns void

        • Parameters

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

          Returns void

        +
        diff --git a/docs/classes/src.PriorityQueue.html b/docs/classes/src.PriorityQueue.html deleted file mode 100644 index 015fd5354..000000000 --- a/docs/classes/src.PriorityQueue.html +++ /dev/null @@ -1,42 +0,0 @@ -PriorityQueue | poolifier - v4.4.5

        Class PriorityQueue<T>Internal

        Priority queue.

        -

        Type Parameters

        • T

          Type of priority queue data.

          -

        Constructors

        Properties

        Accessors

        Methods

        Constructors

        • Constructs a priority queue.

          -

          Type Parameters

          • T

          Parameters

          • bucketSize: number = defaultBucketSize

            Prioritized bucket size.

            -
          • enablePriority: boolean = false

            Whether to enable priority.

            -

          Returns PriorityQueue<T>

          PriorityQueue.

          -
          defaultBucketSize
          -
          - -
          false
          -
          - -

        Properties

        maxSize: number

        The priority queue maximum size.

        -

        Accessors

        • get buckets(): number
        • The number of filled prioritized buckets.

          -

          Returns number

          The number of filled prioritized buckets.

          -
        • get enablePriority(): boolean
        • Whether priority is enabled.

          -

          Returns boolean

          Whether priority is enabled.

          -
        • set enablePriority(enablePriority): void
        • Enables/disables priority.

          -

          Parameters

          • enablePriority: boolean

            Whether to enable priority.

            -

          Returns void

        Methods

        • Dequeue data from the priority queue.

          -

          Parameters

          • Optionalbucket: number

            The prioritized bucket to dequeue from.

            -

          Returns undefined | T

          The dequeued data or undefined if the priority queue is empty.

          -
        • Enqueue data into the priority queue.

          -

          Parameters

          • data: T

            Data to enqueue.

            -
          • Optionalpriority: number

            Priority of the data. Lower values have higher priority.

            -

          Returns number

          The new size of the priority queue.

          -
        diff --git a/docs/classes/src.ThreadWorker.html b/docs/classes/src.ThreadWorker.html index e316f90ab..79b3eeb2a 100644 --- a/docs/classes/src.ThreadWorker.html +++ b/docs/classes/src.ThreadWorker.html @@ -1,83 +1,396 @@ -ThreadWorker | poolifier - v4.4.5

        Class ThreadWorker<Data, Response>

        A thread worker used by a poolifier ThreadPool.

        +ThreadWorker | poolifier - v5.0.0
        poolifier - v5.0.0
          Preparing search index...

          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.

          -

          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 (view full)

          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 Summary)

          Index

          Constructors

          Properties

          activeInterval?: Timeout

          Handler id of the activeInterval worker activity check.

          -
          isMain: undefined | 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, TaskFunctionObject<Data, Response>>

          Task function object(s) processed by the worker when the pool's execute method is invoked.

          -

          Accessors

          Methods

          Returns ThreadWorker<Data, Response>

          Properties

          activeInterval?: Timeout

          Handler id of the activeInterval worker activity check.

          +
          isMain: undefined | 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.

          +
          taskAbortFunctions: Map<
              `${string}-${string}-${string}-${string}-${string}`,
              () => void,
          >

          Task abort functions processed by the worker when task operation 'abort' is received.

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

          Task function object(s) processed by the worker when the pool's execute method is invoked.

          +
          captureRejections: boolean

          Value: boolean

          +

          Change the default captureRejections option on all new EventEmitter objects.

          +

          v13.4.0, v12.16.0

          +
          captureRejectionSymbol: typeof captureRejectionSymbol

          Value: Symbol.for('nodejs.rejection')

          +

          See how to write a custom rejection handler.

          +

          v13.4.0, v12.16.0

          +
          defaultMaxListeners: number

          By default, a maximum of 10 listeners can be registered for any single +event. This limit can be changed for individual EventEmitter instances +using the emitter.setMaxListeners(n) method. To change the default +for allEventEmitter instances, the events.defaultMaxListeners property +can be used. If this value is not a positive number, a RangeError is thrown.

          +

          Take caution when setting the events.defaultMaxListeners because the +change affects all EventEmitter instances, including those created before +the change is made. However, calling emitter.setMaxListeners(n) still has +precedence over events.defaultMaxListeners.

          +

          This is not a hard limit. The EventEmitter instance will allow +more listeners to be added but will output a trace warning to stderr indicating +that a "possible EventEmitter memory leak" has been detected. For any single +EventEmitter, the emitter.getMaxListeners() and emitter.setMaxListeners() methods can be used to +temporarily avoid this warning:

          +
          import { EventEmitter } from 'node:events';
          const emitter = new EventEmitter();
          emitter.setMaxListeners(emitter.getMaxListeners() + 1);
          emitter.once('event', () => {
          // do stuff
          emitter.setMaxListeners(Math.max(emitter.getMaxListeners() - 1, 0));
          }); +
          + +

          The --trace-warnings command-line flag can be used to display the +stack trace for such warnings.

          +

          The emitted warning can be inspected with process.on('warning') and will +have the additional emitter, type, and count properties, referring to +the event emitter instance, the event's name and the number of attached +listeners, respectively. +Its name property is set to 'MaxListenersExceededWarning'.

          +

          v0.11.2

          +
          errorMonitor: typeof errorMonitor

          This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

          +

          Installing a listener using this symbol does not change the behavior once an 'error' event is emitted. Therefore, the process will still crash if no +regular 'error' listener is installed.

          +

          v13.6.0, v12.17.0

          +

          Accessors

          Methods

          • Type Parameters

            • K

            Parameters

            • error: Error
            • event: string | symbol
            • ...args: AnyRest

            Returns void

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

            +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol
            • listener: (...args: any[]) => void

            Returns this

            v0.1.26

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

            +

            Returns true if the event had listeners, false otherwise.

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

            // First listener
            myEmitter.on('event', function firstListener() {
            console.log('Helloooo! first listener');
            });
            // Second listener
            myEmitter.on('event', function secondListener(arg1, arg2) {
            console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
            });
            // Third listener
            myEmitter.on('event', function thirdListener(...args) {
            const parameters = args.join(', ');
            console.log(`event with parameters ${parameters} in third listener`);
            });

            console.log(myEmitter.listeners('event'));

            myEmitter.emit('event', 1, 2, 3, 4, 5);

            // Prints:
            // [
            // [Function: firstListener],
            // [Function: secondListener],
            // [Function: thirdListener]
            // ]
            // Helloooo! first listener
            // event with parameters 1, 2 in second listener
            // event with parameters 1, 2, 3, 4, 5 in third listener +
            + +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol
            • ...args: AnyRest

            Returns boolean

            v0.1.26

            +
          • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

            +
            import { EventEmitter } from 'node:events';

            const myEE = new EventEmitter();
            myEE.on('foo', () => {});
            myEE.on('bar', () => {});

            const sym = Symbol('symbol');
            myEE.on(sym, () => {});

            console.log(myEE.eventNames());
            // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
            + +

            Returns (string | symbol)[]

            v6.0.0

            +
          • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

            +

            Returns number

            v1.0.0

            +
          • Handles a worker error.

            Parameters

            • error: Error

              The error raised by the worker.

              -

            Returns {
                error: Error;
                message: string;
                stack?: string;
            }

            The worker error object.

            -
            • error: Error
            • message: string
            • Optionalstack?: string

          Returns { aborted: boolean; error: Error; message: string; stack?: string }

          The worker error object.

          +
          • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

            +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol

              The name of the event being listened for

              +
            • Optionallistener: Function

              The event handler function

              +

            Returns number

            v3.2.0

            +
          • 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] ] +
            + +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol

            Returns Function[]

            v0.1.26

            +
          • Alias for emitter.removeListener().

            +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol
            • listener: (...args: any[]) => void

            Returns this

            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 eventName and +listener will result in the listener being added, and called, multiple times.

            +
            server.on('connection', (stream) => {
            console.log('someone connected!');
            }); +
            + +

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

            +

            By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

            +
            import { EventEmitter } from 'node:events';
            const myEE = new EventEmitter();
            myEE.on('foo', () => console.log('a'));
            myEE.prependListener('foo', () => console.log('b'));
            myEE.emit('foo');
            // Prints:
            // b
            // a +
            + +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol

              The name of the event.

              +
            • listener: (...args: any[]) => void

              The callback function

              +

            Returns this

            v0.1.101

            +
          • Adds a one-time listener 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!');
            }); +
            + +

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

            +

            By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

            +
            import { EventEmitter } from 'node:events';
            const myEE = new EventEmitter();
            myEE.once('foo', () => console.log('a'));
            myEE.prependOnceListener('foo', () => console.log('b'));
            myEE.emit('foo');
            // Prints:
            // b
            // a +
            + +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol

              The name of the event.

              +
            • listener: (...args: any[]) => void

              The callback function

              +

            Returns this

            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 eventName +and listener will result in the listener being added, and called, multiple times.

            +
            server.prependListener('connection', (stream) => {
            console.log('someone connected!');
            }); +
            + +

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

            +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol

              The name of the event.

              +
            • listener: (...args: any[]) => void

              The callback function

              +

            Returns this

            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.

            +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol

              The name of the event.

              +
            • listener: (...args: any[]) => void

              The callback function

              +

            Returns this

            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'); +
            + +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol

            Returns Function[]

            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

            • OptionaleventName: string | symbol

            Returns this

            v0.1.26

            +
          • Removes the specified listener from the listener array for the event named eventName.

            +
            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 +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

            +

            Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

            +
            import { EventEmitter } from 'node:events';
            class MyEmitter extends EventEmitter {}
            const myEmitter = new MyEmitter();

            const callbackA = () => {
            console.log('A');
            myEmitter.removeListener('event', callbackB);
            };

            const callbackB = () => {
            console.log('B');
            };

            myEmitter.on('event', callbackA);

            myEmitter.on('event', callbackB);

            // callbackA removes listener callbackB but it will still be called.
            // Internal listener array at time of emit [callbackA, callbackB]
            myEmitter.emit('event');
            // Prints:
            // A
            // B

            // callbackB is now removed.
            // Internal listener array [callbackA]
            myEmitter.emit('event');
            // Prints:
            // A +
            + +

            Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

            +

            When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

            +
            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.

            +

            Type Parameters

            • K

            Parameters

            • eventName: string | symbol
            • listener: (...args: any[]) => void

            Returns this

            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 to Infinity (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 this

            v0.3.5

            +
          • Listens once to the abort event on the provided signal.

            +

            Listening to the abort event on abort signals is unsafe and may +lead to resource leaks since another third party with the signal can +call e.stopImmediatePropagation(). Unfortunately Node.js cannot change +this since it would violate the web standard. Additionally, the original +API makes it easy to forget to remove listeners.

            +

            This API allows safely using AbortSignals in Node.js APIs by solving these +two issues by listening to the event such that stopImmediatePropagation does +not prevent the listener from running.

            +

            Returns a disposable so that it may be unsubscribed from more easily.

            +
            import { addAbortListener } from 'node:events';

            function example(signal) {
            let disposable;
            try {
            signal.addEventListener('abort', (e) => e.stopImmediatePropagation());
            disposable = addAbortListener(signal, (e) => {
            // Do something when signal is aborted.
            });
            } finally {
            disposable?.[Symbol.dispose]();
            }
            } +
            + +

            Parameters

            • signal: AbortSignal
            • resource: (event: Event) => void

            Returns Disposable

            Disposable that removes the abort listener.

            +

            v20.5.0

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

            +

            For EventEmitters this behaves exactly the same as calling .listeners on +the emitter.

            +

            For EventTargets this is the only way to get the event listeners for the +event target. This is useful for debugging and diagnostic purposes.

            +
            import { getEventListeners, EventEmitter } from 'node:events';

            {
            const ee = new EventEmitter();
            const listener = () => console.log('Events are fun');
            ee.on('foo', listener);
            console.log(getEventListeners(ee, 'foo')); // [ [Function: listener] ]
            }
            {
            const et = new EventTarget();
            const listener = () => console.log('Events are fun');
            et.addEventListener('foo', listener);
            console.log(getEventListeners(et, 'foo')); // [ [Function: listener] ]
            } +
            + +

            Parameters

            • emitter: EventTarget | EventEmitter<DefaultEventMap>
            • name: string | symbol

            Returns Function[]

            v15.2.0, v14.17.0

            +
          • Returns the currently set max amount of listeners.

            +

            For EventEmitters this behaves exactly the same as calling .getMaxListeners on +the emitter.

            +

            For EventTargets this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning.

            +
            import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events';

            {
            const ee = new EventEmitter();
            console.log(getMaxListeners(ee)); // 10
            setMaxListeners(11, ee);
            console.log(getMaxListeners(ee)); // 11
            }
            {
            const et = new EventTarget();
            console.log(getMaxListeners(et)); // 10
            setMaxListeners(11, et);
            console.log(getMaxListeners(et)); // 11
            } +
            + +

            Parameters

            • emitter: EventTarget | EventEmitter<DefaultEventMap>

            Returns number

            v19.9.0

            +
          • A class method that returns the number of listeners for the given eventName registered on the given emitter.

            +
            import { EventEmitter, listenerCount } from 'node:events';

            const myEmitter = new EventEmitter();
            myEmitter.on('event', () => {});
            myEmitter.on('event', () => {});
            console.log(listenerCount(myEmitter, 'event'));
            // Prints: 2 +
            + +

            Parameters

            • emitter: EventEmitter

              The emitter to query

              +
            • eventName: string | symbol

              The event name

              +

            Returns number

            v0.9.12

            +

            Since v3.2.0 - Use listenerCount instead.

            +
          • import { on, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ee = new EventEmitter();

            // Emit later on
            process.nextTick(() => {
            ee.emit('foo', 'bar');
            ee.emit('foo', 42);
            });

            for await (const event of on(ee, 'foo')) {
            // The execution of this inner block is synchronous and it
            // processes one event at a time (even with await). Do not use
            // if concurrent execution is required.
            console.log(event); // prints ['bar'] [42]
            }
            // Unreachable here +
            + +

            Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

            +

            An AbortSignal can be used to cancel waiting on events:

            +
            import { on, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ac = new AbortController();

            (async () => {
            const ee = new EventEmitter();

            // Emit later on
            process.nextTick(() => {
            ee.emit('foo', 'bar');
            ee.emit('foo', 42);
            });

            for await (const event of on(ee, 'foo', { signal: ac.signal })) {
            // The execution of this inner block is synchronous and it
            // processes one event at a time (even with await). Do not use
            // if concurrent execution is required.
            console.log(event); // prints ['bar'] [42]
            }
            // Unreachable here
            })();

            process.nextTick(() => ac.abort()); +
            + +

            Use the close option to specify an array of event names that will end the iteration:

            +
            import { on, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ee = new EventEmitter();

            // Emit later on
            process.nextTick(() => {
            ee.emit('foo', 'bar');
            ee.emit('foo', 42);
            ee.emit('close');
            });

            for await (const event of on(ee, 'foo', { close: ['close'] })) {
            console.log(event); // prints ['bar'] [42]
            }
            // the loop will exit after 'close' is emitted
            console.log('done'); // prints 'done' +
            + +

            Parameters

            • emitter: EventEmitter
            • eventName: string | symbol
            • Optionaloptions: StaticEventEmitterIteratorOptions

            Returns AsyncIterator<any[]>

            An AsyncIterator that iterates eventName events emitted by the emitter

            +

            v13.6.0, v12.16.0

            +
          • import { on, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ee = new EventEmitter();

            // Emit later on
            process.nextTick(() => {
            ee.emit('foo', 'bar');
            ee.emit('foo', 42);
            });

            for await (const event of on(ee, 'foo')) {
            // The execution of this inner block is synchronous and it
            // processes one event at a time (even with await). Do not use
            // if concurrent execution is required.
            console.log(event); // prints ['bar'] [42]
            }
            // Unreachable here +
            + +

            Returns an AsyncIterator that iterates eventName events. It will throw +if the EventEmitter emits 'error'. It removes all listeners when +exiting the loop. The value returned by each iteration is an array +composed of the emitted event arguments.

            +

            An AbortSignal can be used to cancel waiting on events:

            +
            import { on, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ac = new AbortController();

            (async () => {
            const ee = new EventEmitter();

            // Emit later on
            process.nextTick(() => {
            ee.emit('foo', 'bar');
            ee.emit('foo', 42);
            });

            for await (const event of on(ee, 'foo', { signal: ac.signal })) {
            // The execution of this inner block is synchronous and it
            // processes one event at a time (even with await). Do not use
            // if concurrent execution is required.
            console.log(event); // prints ['bar'] [42]
            }
            // Unreachable here
            })();

            process.nextTick(() => ac.abort()); +
            + +

            Use the close option to specify an array of event names that will end the iteration:

            +
            import { on, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ee = new EventEmitter();

            // Emit later on
            process.nextTick(() => {
            ee.emit('foo', 'bar');
            ee.emit('foo', 42);
            ee.emit('close');
            });

            for await (const event of on(ee, 'foo', { close: ['close'] })) {
            console.log(event); // prints ['bar'] [42]
            }
            // the loop will exit after 'close' is emitted
            console.log('done'); // prints 'done' +
            + +

            Parameters

            • emitter: EventTarget
            • eventName: string
            • Optionaloptions: StaticEventEmitterIteratorOptions

            Returns AsyncIterator<any[]>

            An AsyncIterator that iterates eventName events emitted by the emitter

            +

            v13.6.0, v12.16.0

            +
          • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

            +

            This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

            +
            import { once, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ee = new EventEmitter();

            process.nextTick(() => {
            ee.emit('myevent', 42);
            });

            const [value] = await once(ee, 'myevent');
            console.log(value);

            const err = new Error('kaboom');
            process.nextTick(() => {
            ee.emit('error', err);
            });

            try {
            await once(ee, 'myevent');
            } catch (err) {
            console.error('error happened', err);
            } +
            + +

            The special handling of the 'error' event is only used when events.once() is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

            +
            import { EventEmitter, once } from 'node:events';

            const ee = new EventEmitter();

            once(ee, 'error')
            .then(([err]) => console.log('ok', err.message))
            .catch((err) => console.error('error', err.message));

            ee.emit('error', new Error('boom'));

            // Prints: ok boom +
            + +

            An AbortSignal can be used to cancel waiting for the event:

            +
            import { EventEmitter, once } from 'node:events';

            const ee = new EventEmitter();
            const ac = new AbortController();

            async function foo(emitter, event, signal) {
            try {
            await once(emitter, event, { signal });
            console.log('event emitted!');
            } catch (error) {
            if (error.name === 'AbortError') {
            console.error('Waiting for the event was canceled!');
            } else {
            console.error('There was an error', error.message);
            }
            }
            }

            foo(ee, 'foo', ac.signal);
            ac.abort(); // Abort waiting for the event
            ee.emit('foo'); // Prints: Waiting for the event was canceled! +
            + +

            Parameters

            • emitter: EventEmitter
            • eventName: string | symbol
            • Optionaloptions: StaticEventEmitterOptions

            Returns Promise<any[]>

            v11.13.0, v10.16.0

            +
          • Creates a Promise that is fulfilled when the EventEmitter emits the given +event or that is rejected if the EventEmitter emits 'error' while waiting. +The Promise will resolve with an array of all the arguments emitted to the +given event.

            +

            This method is intentionally generic and works with the web platform EventTarget interface, which has no special'error' event +semantics and does not listen to the 'error' event.

            +
            import { once, EventEmitter } from 'node:events';
            import process from 'node:process';

            const ee = new EventEmitter();

            process.nextTick(() => {
            ee.emit('myevent', 42);
            });

            const [value] = await once(ee, 'myevent');
            console.log(value);

            const err = new Error('kaboom');
            process.nextTick(() => {
            ee.emit('error', err);
            });

            try {
            await once(ee, 'myevent');
            } catch (err) {
            console.error('error happened', err);
            } +
            + +

            The special handling of the 'error' event is only used when events.once() is used to wait for another event. If events.once() is used to wait for the +'error' event itself, then it is treated as any other kind of event without +special handling:

            +
            import { EventEmitter, once } from 'node:events';

            const ee = new EventEmitter();

            once(ee, 'error')
            .then(([err]) => console.log('ok', err.message))
            .catch((err) => console.error('error', err.message));

            ee.emit('error', new Error('boom'));

            // Prints: ok boom +
            + +

            An AbortSignal can be used to cancel waiting for the event:

            +
            import { EventEmitter, once } from 'node:events';

            const ee = new EventEmitter();
            const ac = new AbortController();

            async function foo(emitter, event, signal) {
            try {
            await once(emitter, event, { signal });
            console.log('event emitted!');
            } catch (error) {
            if (error.name === 'AbortError') {
            console.error('Waiting for the event was canceled!');
            } else {
            console.error('There was an error', error.message);
            }
            }
            }

            foo(ee, 'foo', ac.signal);
            ac.abort(); // Abort waiting for the event
            ee.emit('foo'); // Prints: Waiting for the event was canceled! +
            + +

            Parameters

            • emitter: EventTarget
            • eventName: string
            • Optionaloptions: StaticEventEmitterOptions

            Returns Promise<any[]>

            v11.13.0, v10.16.0

            +
          • import { setMaxListeners, EventEmitter } from 'node:events';

            const target = new EventTarget();
            const emitter = new EventEmitter();

            setMaxListeners(5, target, emitter); +
            + +

            Parameters

            • Optionaln: number

              A non-negative number. The maximum number of listeners per EventTarget event.

              +
            • ...eventTargets: (EventTarget | EventEmitter<DefaultEventMap>)[]

              Zero or more {EventTarget} or {EventEmitter} instances. If none are specified, n is set as the default max for all newly created {EventTarget} and {EventEmitter} +objects.

              +

            Returns void

            v15.4.0

            +
          diff --git a/docs/classes/src.WorkerChoiceStrategiesContext.html b/docs/classes/src.WorkerChoiceStrategiesContext.html deleted file mode 100644 index 3a429701b..000000000 --- a/docs/classes/src.WorkerChoiceStrategiesContext.html +++ /dev/null @@ -1,48 +0,0 @@ -WorkerChoiceStrategiesContext | poolifier - v4.4.5

          Class WorkerChoiceStrategiesContext<Worker, Data, Response>Internal

          The worker choice strategies 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

          retriesCount: number

          The number of worker choice strategies execution retries.

          -

          Methods

          • Executes the given worker choice strategy in the context algorithm.

            -

            Parameters

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

              The worker choice strategy algorithm to execute.

              -

            Returns number

            The key of the worker node.

            -
            this.defaultWorkerChoiceStrategy
            -
            - -

            https://nodejs.org/api/errors.html#class-error If after computed retries the worker node key is null or undefined.

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

            -

            Parameters

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

              The default worker choice strategy to set.

              -
            • Optionalopts: WorkerChoiceStrategyOptions

              The worker choice strategy options.

              -

            Returns void

          • Synchronizes the active worker choice strategies in the context with the given worker choice strategies.

            -

            Parameters

            • workerChoiceStrategies: Set<
                  | "FAIR_SHARE"
                  | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                  | "LEAST_BUSY"
                  | "LEAST_ELU"
                  | "LEAST_USED"
                  | "ROUND_ROBIN"
                  | "WEIGHTED_ROUND_ROBIN">

              The worker choice strategies to synchronize.

              -
            • Optionalopts: WorkerChoiceStrategyOptions

              The worker choice strategy options.

              -

            Returns void

          diff --git a/docs/documents/api.html b/docs/documents/api.html index df2a9589a..9b28d62d6 100644 --- a/docs/documents/api.html +++ b/docs/documents/api.html @@ -1,62 +1,64 @@ -api | poolifier - v4.4.5

          API

            -
          • Pool +api | poolifier - v5.0.0
            poolifier - v5.0.0
              Preparing search index...

              API

              -

              numberOfThreads/numberOfWorkers (mandatory) Number of workers for this pool.
              +

              numberOfThreads/numberOfWorkers (mandatory) Number of workers for this pool.
              filePath (mandatory) Path to a file with a worker implementation.
              opts (optional) An object with the pool options properties described below.

              -

              min (mandatory) Same as FixedThreadPool/FixedClusterPool numberOfThreads/numberOfWorkers, this number of workers will be always active.
              +

              min (mandatory) Same as FixedThreadPool/FixedClusterPool numberOfThreads/numberOfWorkers, this number of workers will be always active.
              max (mandatory) Max number of workers that this pool can contain, the newly created workers will die after a threshold (default is 1 minute, you can override it in your worker implementation).
              filePath (mandatory) Path to a file with a worker implementation.
              opts (optional) An object with the pool options properties described below.

              -

              data (optional) An object that you want to pass to your worker task function implementation.
              +

              data (optional) An object that you want to pass to your worker task function implementation.
              name (optional) A string with the task function name that you want to execute on the worker. Default: 'default'
              -transferList (optional) An array of transferable objects that you want to transfer to your ThreadWorker worker implementation.

              +abortSignal (optional) An abort signal to abort the task function execution.
              +transferList (optional) An array of transferable objects that you want to transfer to your ThreadWorker worker implementation.

              This method is available on both pool implementations and returns a promise with the task function execution response.

              -

              data Iterable objects that you want to pass to your worker task function implementation.
              +

              data An iterable of objects that you want to pass to your worker task function implementation.
              name (optional) A string with the task function name that you want to execute on the worker. Default: 'default'
              -transferList (optional) An array of transferable objects that you want to transfer to your ThreadWorker worker implementation.

              +abortSignals (optional) An iterable of AbortSignal to abort the matching object task function execution.
              +transferList (optional) An array of transferable objects that you want to transfer to your ThreadWorker worker implementation.

              This method is available on both pool implementations and returns a promise with the task function execution responses array.

              -

              This method is available on both pool implementations and will start the minimum number of workers.

              -

              This method is available on both pool implementations and will call the terminate method on each worker.

              -

              name (mandatory) The task function name.

              +

              This method is available on both pool implementations and will start the minimum number of workers.

              +

              This method is available on both pool implementations and will call the terminate method on each worker.

              +

              name (mandatory) The task function name.

              This method is available on both pool implementations and returns a boolean.

              -

              name (mandatory) The task function name.
              +

              name (mandatory) The task function name.
              fn (mandatory) The task function (data?: Data) => Response | Promise<Response> or task function object { taskFunction: (data?: Data) => Response | Promise<Response>, priority?: number, strategy?: WorkerChoiceStrategy }. Priority range is the same as Unix nice levels.

              This method is available on both pool implementations and returns a boolean promise.

              -

              name (mandatory) The task function name.

              +

              name (mandatory) The task function name.

              This method is available on both pool implementations and returns a boolean promise.

              -

              This method is available on both pool implementations and returns an array of the task function properties.

              -

              name (mandatory) The task function name.

              +

              This method is available on both pool implementations and returns an array of the task function properties.

              +

              name (mandatory) The task function name.

              This method is available on both pool implementations and returns a boolean promise.

              -

              An object with these properties:

              +

              An object with these properties:

              • onlineHandler (optional) - A function that will listen for online event on each worker.
                @@ -81,9 +83,9 @@ Default: () => {}

              • WorkerChoiceStrategies.LEAST_USED: Submit tasks to the worker with the minimum number of executing and queued tasks
              • WorkerChoiceStrategies.LEAST_BUSY: Submit tasks to the worker with the minimum tasks execution time
              • WorkerChoiceStrategies.LEAST_ELU: Submit tasks to the worker with the minimum event loop utilization (ELU)
              • -
              • WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN: Submit tasks to worker by using a weighted round robin scheduling algorithm based on tasks execution time
              • -
              • WorkerChoiceStrategies.INTERLEAVED_WEIGHTED_ROUND_ROBIN: Submit tasks to worker by using an interleaved weighted round robin scheduling algorithm based on tasks execution time (experimental)
              • -
              • WorkerChoiceStrategies.FAIR_SHARE: Submit tasks to worker by using a fair share scheduling algorithm based on tasks execution time (the default) or ELU active time
              • +
              • WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN: Submit tasks to worker by using a weighted round robin scheduling algorithm based on tasks execution time
              • +
              • WorkerChoiceStrategies.INTERLEAVED_WEIGHTED_ROUND_ROBIN: Submit tasks to worker by using an interleaved weighted round robin scheduling algorithm based on tasks execution time (experimental)
              • +
              • WorkerChoiceStrategies.FAIR_SHARE: Submit tasks to worker by using a fair share scheduling algorithm based on tasks execution time (the default) or ELU active time

              WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN, WorkerChoiceStrategies.INTERLEAVED_WEIGHTED_ROUND_ROBIN and WorkerChoiceStrategies.FAIR_SHARE strategies are targeted to heavy and long tasks.
              Default: WorkerChoiceStrategies.ROUND_ROBIN

              @@ -93,9 +95,9 @@ Default: WorkerChoiceStrategies.ROUND_ROBIN

              Properties:

              • measurement (optional) - The measurement to use in worker choice strategies: runTime, waitTime or elu.
              • -
              • runTime (optional) - Use the tasks simple moving median runtime instead of the tasks simple moving average runtime in worker choice strategies.
              • -
              • waitTime (optional) - Use the tasks simple moving median wait time instead of the tasks simple moving average wait time in worker choice strategies.
              • -
              • elu (optional) - Use the tasks simple moving median ELU instead of the tasks simple moving average ELU in worker choice strategies.
              • +
              • runTime (optional) - Use the tasks simple moving median runtime instead of the tasks simple moving average runtime in worker choice strategies.
              • +
              • waitTime (optional) - Use the tasks simple moving median wait time instead of the tasks simple moving average wait time in worker choice strategies.
              • +
              • elu (optional) - Use the tasks simple moving median ELU instead of the tasks simple moving average ELU in worker choice strategies.
              • weights (optional) - The worker weights to use in weighted round robin worker choice strategies: Record<number, number>.

              Default: { runTime: { median: false }, waitTime: { median: false }, elu: { median: false } }

              @@ -130,16 +132,16 @@ Properties:

              Default: { size: (pool maximum size)^2, concurrency: 1, taskStealing: true, tasksStealingOnBackPressure: true, tasksStealingRatio: 0.6, tasksFinishedTimeout: 2000 }

            • -

              workerOptions (optional) - An object with the worker options to pass to worker. See worker_threads for more details.

              +

              workerOptions (optional) - An object with the worker options to pass to worker. See worker_threads for more details.

            • -

              env (optional) - An object with the environment variables to pass to worker. See cluster for more details.

              +

              env (optional) - An object with the environment variables to pass to worker. See cluster for more details.

            • -

              settings (optional) - An object with the cluster settings. See cluster for more details.

              +

              settings (optional) - An object with the cluster settings. See cluster for more details.

            -

            taskFunctions (mandatory) The task function or task functions object Record<string, (data?: Data) => Response | Promise<Response> | { taskFunction: (data?: Data) => Response | Promise<Response>, priority?: number, strategy?: WorkerChoiceStrategy }> that you want to execute on the worker. Priority range is the same as Unix nice levels.
            +

            taskFunctions (mandatory) The task function or task functions object Record<string, (data?: Data) => Response | Promise<Response> | { taskFunction: (data?: Data) => Response | Promise<Response>, priority?: number, strategy?: WorkerChoiceStrategy }> that you want to execute on the worker. Priority range is the same as Unix nice levels.
            opts (optional) An object with these properties:

            • @@ -161,14 +163,14 @@ Default: 60000

              Default: () => {}

            -

            name (mandatory) The task function name.

            +

            name (mandatory) The task function name.

            This method is available on both worker implementations and returns { status: boolean, error?: Error }.

            -

            name (mandatory) The task function name.
            +

            name (mandatory) The task function name.
            fn (mandatory) The task function (data?: Data) => Response | Promise<Response> or task function object { taskFunction: (data?: Data) => Response | Promise<Response>, priority?: number, strategy?: WorkerChoiceStrategy }. Priority range is the same as Unix nice levels.

            This method is available on both worker implementations and returns { status: boolean, error?: Error }.

            -

            name (mandatory) The task function name.

            +

            name (mandatory) The task function name.

            This method is available on both worker implementations and returns { status: boolean, error?: Error }.

            -

            This method is available on both worker implementations and returns an array of the task function properties.

            -

            name (mandatory) The task function name.

            +

            This method is available on both worker implementations and returns an array of the task function properties.

            +

            name (mandatory) The task function name.

            This method is available on both worker implementations and returns { status: boolean, error?: Error }.

            -
            +
            diff --git a/docs/documents/general-guidelines.html b/docs/documents/general-guidelines.html new file mode 100644 index 000000000..9d8c59b16 --- /dev/null +++ b/docs/documents/general-guidelines.html @@ -0,0 +1,30 @@ +general-guidelines | poolifier - v5.0.0
            poolifier - v5.0.0
              Preparing search index...

              General guidelines

              Performance is one of the main target of these worker pool implementations, poolifier team wants to have a strong focus on this.
              +Poolifier already has benchmarks where you can find some comparisons.

              + +

              Before to jump into each poolifier pool type, let highlight that Node.js comes with a thread pool already, the libuv thread pool where some particular tasks already run by default.
              +Please take a look at which tasks run on the libuv thread pool.

              +

              If your task runs on libuv thread pool, you can try to:

              + +

              and/or

              +
                +
              • Use poolifier cluster pools that are spawning child processes, they will also increase the number of libuv threads since that any new child process comes with a separated libuv thread pool. More threads does not mean more fast, so please tune your application.
              • +
              +

              If your task does not run into libuv thread pool and is CPU intensive then poolifier thread pools (FixedThreadPool and DynamicThreadPool) are suggested to run CPU intensive tasks, you can still run I/O intensive tasks into thread pools, but performance enhancement is expected to be minimal.
              +Thread pools are built on top of Node.js worker_threads module.

              +

              If your task does not run into libuv thread pool and is I/O intensive then poolifier cluster pools (FixedClusterPool and DynamicClusterPool) are suggested to run I/O intensive tasks, again you can still run CPU intensive tasks into cluster pools, but performance enhancement is expected to be minimal.
              +Consider that by default Node.js already has great performance for I/O tasks (asynchronous I/O).
              +Cluster pools are built on top of Node.js cluster module.

              +

              If your task contains code that runs on libuv plus code that is CPU intensive or I/O intensive you either split it either combine more strategies (i.e. tune the number of libuv threads and use cluster/thread pools).
              +But in general, always profile your application.

              +

              To choose your pool consider first that with a FixedThreadPool/FixedClusterPool or a DynamicThreadPool/DynamicClusterPool your application memory footprint will increase.
              +By doing so, your application will be ready to execute in parallel more tasks, but during idle time your application will consume more memory.
              +One good choice from poolifier team point of view is to profile your application using a fixed or dynamic worker pool, and analyze your application metrics when you increase/decrease the number of workers.
              +For example you could keep the memory footprint low by choosing a DynamicThreadPool/DynamicClusterPool with a minimum of 5 workers, and allowing it to create new workers until a maximum of 50 workers if needed. This is the advantage of using a DynamicThreadPool/DynamicClusterPool.
              +But in general, always profile your application.

              +
              diff --git a/docs/documents/general_guidelines.html b/docs/documents/general_guidelines.html deleted file mode 100644 index bdf1c31b0..000000000 --- a/docs/documents/general_guidelines.html +++ /dev/null @@ -1,30 +0,0 @@ -general-guidelines | poolifier - v4.4.5

              General guidelines

              Performance is one of the main target of these worker pool implementations, poolifier team wants to have a strong focus on this.
              -Poolifier already has benchmarks where you can find some comparisons.

              - -

              Before to jump into each poolifier pool type, let highlight that Node.js comes with a thread pool already, the libuv thread pool where some particular tasks already run by default.
              -Please take a look at which tasks run on the libuv thread pool.

              -

              If your task runs on libuv thread pool, you can try to:

              - -

              and/or

              -
                -
              • Use poolifier cluster pools that are spawning child processes, they will also increase the number of libuv threads since that any new child process comes with a separated libuv thread pool. More threads does not mean more fast, so please tune your application.
              • -
              -

              If your task does not run into libuv thread pool and is CPU intensive then poolifier thread pools (FixedThreadPool and DynamicThreadPool) are suggested to run CPU intensive tasks, you can still run I/O intensive tasks into thread pools, but performance enhancement is expected to be minimal.
              -Thread pools are built on top of Node.js worker_threads module.

              -

              If your task does not run into libuv thread pool and is I/O intensive then poolifier cluster pools (FixedClusterPool and DynamicClusterPool) are suggested to run I/O intensive tasks, again you can still run CPU intensive tasks into cluster pools, but performance enhancement is expected to be minimal.
              -Consider that by default Node.js already has great performance for I/O tasks (asynchronous I/O).
              -Cluster pools are built on top of Node.js cluster module.

              -

              If your task contains code that runs on libuv plus code that is CPU intensive or I/O intensive you either split it either combine more strategies (i.e. tune the number of libuv threads and use cluster/thread pools).
              -But in general, always profile your application.

              -

              To choose your pool consider first that with a FixedThreadPool/FixedClusterPool or a DynamicThreadPool/DynamicClusterPool your application memory footprint will increase.
              -By doing so, your application will be ready to execute in parallel more tasks, but during idle time your application will consume more memory.
              -One good choice from poolifier team point of view is to profile your application using a fixed or dynamic worker pool, and analyze your application metrics when you increase/decrease the number of workers.
              -For example you could keep the memory footprint low by choosing a DynamicThreadPool/DynamicClusterPool with a minimum of 5 workers, and allowing it to create new workers until a maximum of 50 workers if needed. This is the advantage of using a DynamicThreadPool/DynamicClusterPool.
              -But in general, always profile your application.

              -
              diff --git a/docs/documents/worker-choice-strategies.html b/docs/documents/worker-choice-strategies.html new file mode 100644 index 000000000..3dc309254 --- /dev/null +++ b/docs/documents/worker-choice-strategies.html @@ -0,0 +1,24 @@ +worker-choice-strategies | poolifier - v5.0.0
              poolifier - v5.0.0
                Preparing search index...

                Worker choice strategies

                All duration or timestamp are expressed in milliseconds.

                + +

                Its goal is to distribute the load evenly across all workers. To achieve this, the strategy keeps track of the simple moving average task execution time for each worker and assigns the next task to the worker with the lowest task end prediction time: task_end_prediction = max(current_time, task_end_prediction) + simple_moving_average_task_execution_time.
                +By default, the strategy uses the simple moving average task execution time for each worker but it can be configured to use the simple moving average task event loop utilization (ELU) active time instead.

                +

                The worker weights are maximum tasks execution time. Once the worker has reached its maximum tasks execution time, the next task is assigned to the next worker. The default worker weight is the same for each and computed given the CPU cores speed and theirs numbers.

                +

                The worker weights are maximum tasks execution time. The rounds are the deduplicated worker weights in ascending order.
                +During a round, if the worker weight is superior or equal to the current round weight and its tasks execution time is inferior to the current round weight, the task is assigned to the worker. Once all workers weight have been tested, the next round starts.
                +The default worker weights is the same for each and computed given the CPU cores speed and theirs numbers. So the default 'rounds' consists of a unique worker weight.

                +

                Worker choice strategies enable only the statistics that are needed to choose the next worker to avoid unnecessary overhead.

                +

                Strategies using the simple moving average task execution time for each worker can use the simple moving median instead. Simple moving median is more robust to outliers and can be used to avoid assigning tasks to workers that are currently overloaded.

                +
                diff --git a/docs/documents/worker_choice_strategies.html b/docs/documents/worker_choice_strategies.html deleted file mode 100644 index d30df27cb..000000000 --- a/docs/documents/worker_choice_strategies.html +++ /dev/null @@ -1,24 +0,0 @@ -worker-choice-strategies | poolifier - v4.4.5

                Worker choice strategies

                All duration or timestamp are expressed in milliseconds.

                - -

                Its goal is to distribute the load evenly across all workers. To achieve this, the strategy keeps track of the simple moving average task execution time for each worker and assigns the next task to the worker with the lowest task end prediction time: task_end_prediction = max(current_time, task_end_prediction) + simple_moving_average_task_execution_time.
                -By default, the strategy uses the simple moving average task execution time for each worker but it can be configured to use the simple moving average task event loop utilization (ELU) active time instead.

                -

                The worker weights are maximum tasks execution time. Once the worker has reached its maximum tasks execution time, the next task is assigned to the next worker. The default worker weight is the same for each and computed given the CPU cores speed and theirs numbers.

                -

                The worker weights are maximum tasks execution time. The rounds are the deduplicated worker weights in ascending order.
                -During a round, if the worker weight is superior or equal to the current round weight and its tasks execution time is inferior to the current round weight, the task is assigned to the worker. Once all workers weight have been tested, the next round starts.
                -The default worker weights is the same for each and computed given the CPU cores speed and theirs numbers. So the default 'rounds' consists of a unique worker weight.

                -

                Worker choice strategies enable only the statistics that are needed to choose the next worker to avoid unnecessary overhead.

                -

                Strategies using the simple moving average task execution time for each worker can use the simple moving median instead. Simple moving median is more robust to outliers and can be used to avoid assigning tasks to workers that are currently overloaded.

                -
                diff --git a/docs/functions/src.availableParallelism.html b/docs/functions/src.availableParallelism.html index 2e8dfd60c..11b1cfade 100644 --- a/docs/functions/src.availableParallelism.html +++ b/docs/functions/src.availableParallelism.html @@ -1,4 +1,4 @@ -availableParallelism | poolifier - v4.4.5

                Function availableParallelism

                Returns safe host OS optimized estimate of the default amount of parallelism a pool should use. +availableParallelism | poolifier - v5.0.0

                poolifier - v5.0.0
                  Preparing search index...

                  Function availableParallelism

                  • Returns safe host OS optimized estimate of the default amount of parallelism a pool should use. Always returns a value greater than zero.

                    -
                  • Returns number

                    The host OS optimized maximum pool size.

                    -
                  +

                  Returns number

                  The host OS optimized maximum pool size.

                  +
                  diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 803d9b0a7..28c579254 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -poolifier - v4.4.5
                  +poolifier - v5.0.0
                  poolifier - v5.0.0
                    Preparing search index...
                    diff --git a/docs/index.html b/docs/index.html index da0dfa685..580350650 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,5 +1 @@ -poolifier - v4.4.5

                    poolifier - v4.4.5

                    Index

                    Documents

                    Modules

                    src -
                    +poolifier - v5.0.0
                    poolifier - v5.0.0
                      Preparing search index...

                      poolifier - v5.0.0

                      Documents

                      api
                      general-guidelines
                      worker-choice-strategies

                      Modules

                      src
                      diff --git a/docs/interfaces/src.AbstractPool.html b/docs/interfaces/src.AbstractPool.html new file mode 100644 index 000000000..ec70c4c90 --- /dev/null +++ b/docs/interfaces/src.AbstractPool.html @@ -0,0 +1,120 @@ +AbstractPool | poolifier - v5.0.0
                      poolifier - v5.0.0
                        Preparing search index...

                        Interface AbstractPool<Worker, Data, Response>Abstract

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

                        +
                        interface AbstractPool<
                            Worker extends IWorker,
                            Data = unknown,
                            Response = unknown,
                        > {
                            emitter?: EventEmitterAsyncResource;
                            filePath: string;
                            maximumNumberOfWorkers?: number;
                            minimumNumberOfWorkers: number;
                            opts: PoolOptions<Worker>;
                            promiseResponseMap: Map<
                                `${string}-${string}-${string}-${string}-${string}`,
                                PromiseResponseWrapper<Response>,
                            >;
                            workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<
                                Worker,
                                Data,
                                Response,
                            >;
                            workerNodes: IWorkerNode<Worker, Data>[];
                            get backPressure(): boolean;
                            get busy(): boolean;
                            get info(): PoolInfo;
                            get type(): "fixed" | "dynamic";
                            get worker(): "cluster" | "thread";
                            addTaskFunction(
                                name: string,
                                fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>,
                            ): Promise<boolean>;
                            afterTaskExecutionHook(
                                workerNodeKey: number,
                                message: MessageValue<Response>,
                            ): void;
                            afterWorkerNodeSetup(workerNodeKey: number): void;
                            beforeTaskExecutionHook(workerNodeKey: number, task: Task<Data>): void;
                            checkAndEmitDynamicWorkerCreationEvents(): void;
                            checkAndEmitDynamicWorkerDestructionEvents(): void;
                            createAndSetupDynamicWorkerNode(): number;
                            createAndSetupWorkerNode(): number;
                            deregisterWorkerMessageListener<Message>(
                                workerNodeKey: number,
                                listener: (message: MessageValue<Message>) => void,
                            ): void;
                            destroy(): Promise<void>;
                            destroyWorkerNode(workerNodeKey: number): Promise<void>;
                            enableTasksQueue(
                                enable: boolean,
                                tasksQueueOptions?: TasksQueueOptions,
                            ): void;
                            execute(
                                data?: Data,
                                name?: string,
                                abortSignal?: AbortSignal,
                                transferList?: readonly Transferable[],
                            ): Promise<Response>;
                            flagWorkerNodeAsNotReady(workerNodeKey: number): void;
                            flushTasksQueue(workerNodeKey: number): number;
                            getWorkerInfo(workerNodeKey: number): undefined | WorkerInfo;
                            hasTaskFunction(name: string): boolean;
                            internalBackPressure(): boolean;
                            internalBusy(): boolean;
                            isMain(): boolean;
                            listTaskFunctionsProperties(): TaskFunctionProperties[];
                            mapExecute(
                                data: Iterable<Data>,
                                name?: string,
                                abortSignals?: Iterable<AbortSignal, any, any>,
                                transferList?: readonly Transferable[],
                            ): Promise<Response[]>;
                            registerOnceWorkerMessageListener<Message>(
                                workerNodeKey: number,
                                listener: (message: MessageValue<Message>) => void,
                            ): void;
                            registerWorkerMessageListener<Message>(
                                workerNodeKey: number,
                                listener: (message: MessageValue<Message>) => void,
                            ): void;
                            removeTaskFunction(name: string): Promise<boolean>;
                            sendStartupMessageToWorker(workerNodeKey: number): void;
                            sendToWorker(
                                workerNodeKey: number,
                                message: MessageValue<Data>,
                                transferList?: readonly Transferable[],
                            ): void;
                            setDefaultTaskFunction(name: string): Promise<boolean>;
                            setTasksQueueOptions(
                                tasksQueueOptions: undefined | TasksQueueOptions,
                            ): void;
                            setupHook(): void;
                            setWorkerChoiceStrategy(
                                workerChoiceStrategy:
                                    | "FAIR_SHARE"
                                    | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                    | "LEAST_BUSY"
                                    | "LEAST_ELU"
                                    | "LEAST_USED"
                                    | "ROUND_ROBIN"
                                    | "WEIGHTED_ROUND_ROBIN",
                                workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions,
                            ): void;
                            setWorkerChoiceStrategyOptions(
                                workerChoiceStrategyOptions: undefined | WorkerChoiceStrategyOptions,
                            ): boolean;
                            shallCreateDynamicWorker(): boolean;
                            start(): void;
                            workerMessageListener(message: MessageValue<Response>): void;
                        }

                        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 Summary)

                        Implements

                        Index

                        Properties

                        emitter?: EventEmitterAsyncResource
                        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}-${string}-${string}-${string}-${string}`,
                            PromiseResponseWrapper<Response>,
                        > = ...

                        The task execution response promise map:

                        +
                          +
                        • key: The message id of each submitted task.
                        • +
                        • value: An object that contains task's worker node key, execution response promise resolve and reject callbacks, async resource.
                        • +
                        +

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

                        +
                        workerChoiceStrategiesContext?: WorkerChoiceStrategiesContext<
                            Worker,
                            Data,
                            Response,
                        >

                        Worker choice strategies context referencing worker choice algorithms implementation.

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

                        Accessors

                        • get backPressure(): boolean

                          Whether the pool is back pressured or not.

                          +

                          Returns boolean

                          The pool back pressure boolean status.

                          +
                        • get type(): "fixed" | "dynamic"

                          The pool type.

                          +

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

                          +

                          Returns "fixed" | "dynamic"

                        Methods

                        • 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. +Can be overridden.

                          +

                          Parameters

                          • workerNodeKey: number

                            The worker node key.

                            +
                          • task: Task<Data>

                            The task to execute.

                            +

                          Returns void

                        • 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

                          • workerNodeKey: number

                            The worker node key.

                            +
                          • listener: (message: MessageValue<Message>) => void

                            The message listener callback.

                            +

                          Returns void

                        • Terminates the worker node given its worker node key.

                          +

                          Parameters

                          • workerNodeKey: number

                            The worker node key.

                            +

                          Returns Promise<void>

                        • Parameters

                          • Optionaldata: Data
                          • Optionalname: string
                          • OptionalabortSignal: AbortSignal
                          • OptionaltransferList: readonly Transferable[]

                          Returns Promise<Response>

                        • Gets the worker information given its worker node key.

                          +

                          Parameters

                          • workerNodeKey: number

                            The worker node key.

                            +

                          Returns undefined | WorkerInfo

                          The worker information.

                          +
                        • Parameters

                          • name: string

                          Returns boolean

                        • Whether the worker nodes are back pressured or not.

                          +

                          Returns boolean

                          Worker nodes back pressure boolean status.

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

                          +

                          Returns boolean

                          Worker nodes busyness boolean status.

                          +
                        • Returns whether the worker is the main worker or not.

                          +

                          Returns boolean

                          true if the worker is the main worker, false otherwise.

                          +
                        • Parameters

                          • data: Iterable<Data>
                          • Optionalname: string
                          • OptionalabortSignals: Iterable<AbortSignal, any, any>
                          • OptionaltransferList: readonly Transferable[]

                          Returns Promise<Response[]>

                        • 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: MessageValue<Message>) => void

                            The message listener callback.

                            +

                          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: MessageValue<Message>) => void

                            The message listener callback.

                            +

                          Returns void

                        • Parameters

                          • name: string

                          Returns Promise<boolean>

                        • Sends the startup 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.

                          +

                          Parameters

                          • workerNodeKey: number

                            The worker node key.

                            +
                          • message: MessageValue<Data>

                            The message.

                            +
                          • OptionaltransferList: readonly Transferable[]

                            The optional array of transferable objects.

                            +

                          Returns void

                        • Parameters

                          • name: string

                          Returns Promise<boolean>

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

                          +

                          Returns void

                        • Parameters

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

                          Returns void

                        • Conditions for dynamic worker creation.

                          +

                          Returns boolean

                          Whether to create a dynamic worker or not.

                          +
                        diff --git a/docs/interfaces/src.AbstractWorker.html b/docs/interfaces/src.AbstractWorker.html new file mode 100644 index 000000000..7fe2e1955 --- /dev/null +++ b/docs/interfaces/src.AbstractWorker.html @@ -0,0 +1,218 @@ +AbstractWorker | poolifier - v5.0.0
                        poolifier - v5.0.0
                          Preparing search index...

                          Interface AbstractWorker<MainWorker, Data, Response>Abstract

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

                          +
                          interface AbstractWorker<
                              MainWorker extends MessagePort
                              | Worker,
                              Data = unknown,
                              Response = unknown,
                          > {
                              activeInterval?: Timeout;
                              id: number;
                              isMain: undefined | boolean;
                              lastTaskTimestamp: number;
                              opts: WorkerOptions;
                              statistics?: WorkerStatistics;
                              taskAbortFunctions: Map<
                                  `${string}-${string}-${string}-${string}-${string}`,
                                  () => void,
                              >;
                              taskFunctions: Map<string, TaskFunctionObject<Data, Response>>;
                              "[captureRejectionSymbol]"<K>(
                                  error: Error,
                                  event: string | symbol,
                                  ...args: AnyRest,
                              ): void;
                              addListener<K>(
                                  eventName: string | symbol,
                                  listener: (...args: any[]) => void,
                              ): this;
                              addTaskFunction(
                                  name: string,
                                  fn: TaskFunctionObject<Data, Response> | TaskFunction<Data, Response>,
                              ): TaskFunctionOperationResult;
                              emit<K>(eventName: string | symbol, ...args: AnyRest): boolean;
                              eventNames(): (string | symbol)[];
                              getMainWorker(): MainWorker;
                              getMaxListeners(): number;
                              handleError(
                                  error: Error,
                              ): { aborted: boolean; error?: Error; message: string; stack?: string };
                              handleKillMessage(message: MessageValue<Data>): void;
                              handleReadyMessage(message: MessageValue<Data>): void;
                              handleTaskFunctionOperationMessage(message: MessageValue<Data>): void;
                              hasTaskFunction(name: string): TaskFunctionOperationResult;
                              listenerCount<K>(eventName: string | symbol, listener?: Function): number;
                              listeners<K>(eventName: string | symbol): Function[];
                              listTaskFunctionsProperties(): TaskFunctionProperties[];
                              messageListener(message: MessageValue<Data>): void;
                              off<K>(
                                  eventName: string | symbol,
                                  listener: (...args: any[]) => void,
                              ): this;
                              on<K>(eventName: string | symbol, listener: (...args: any[]) => void): this;
                              once<K>(
                                  eventName: string | symbol,
                                  listener: (...args: any[]) => void,
                              ): this;
                              prependListener<K>(
                                  eventName: string | symbol,
                                  listener: (...args: any[]) => void,
                              ): this;
                              prependOnceListener<K>(
                                  eventName: string | symbol,
                                  listener: (...args: any[]) => void,
                              ): this;
                              rawListeners<K>(eventName: string | symbol): Function[];
                              removeAllListeners(eventName?: string | symbol): this;
                              removeListener<K>(
                                  eventName: string | symbol,
                                  listener: (...args: any[]) => void,
                              ): this;
                              removeTaskFunction(name: string): TaskFunctionOperationResult;
                              run(task: Task<Data>): void;
                              runAsync(fn: TaskAsyncFunction<Data, Response>, task: Task<Data>): void;
                              runSync(fn: TaskSyncFunction<Data, Response>, task: Task<Data>): void;
                              sendTaskFunctionsPropertiesToMainWorker(): void;
                              sendToMainWorker(message: MessageValue<Response, Data>): void;
                              setDefaultTaskFunction(name: string): TaskFunctionOperationResult;
                              setMaxListeners(n: number): this;
                          }

                          Type Parameters

                          • MainWorker extends MessagePort | Worker

                            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 Summary)

                          Index

                          Properties

                          activeInterval?: Timeout

                          Handler id of the activeInterval worker activity check.

                          +
                          id: number

                          Worker id.

                          +
                          isMain: undefined | 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.

                          +
                          taskAbortFunctions: Map<
                              `${string}-${string}-${string}-${string}-${string}`,
                              () => void,
                          >

                          Task abort functions processed by the worker when task operation 'abort' is received.

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

                          Task function object(s) processed by the worker when the pool's execute method is invoked.

                          +

                          Methods

                          • Type Parameters

                            • K

                            Parameters

                            • error: Error
                            • event: string | symbol
                            • ...args: AnyRest

                            Returns void

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

                            +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol
                            • listener: (...args: any[]) => void

                            Returns this

                            v0.1.26

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

                            +

                            Returns true if the event had listeners, false otherwise.

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

                            // First listener
                            myEmitter.on('event', function firstListener() {
                            console.log('Helloooo! first listener');
                            });
                            // Second listener
                            myEmitter.on('event', function secondListener(arg1, arg2) {
                            console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
                            });
                            // Third listener
                            myEmitter.on('event', function thirdListener(...args) {
                            const parameters = args.join(', ');
                            console.log(`event with parameters ${parameters} in third listener`);
                            });

                            console.log(myEmitter.listeners('event'));

                            myEmitter.emit('event', 1, 2, 3, 4, 5);

                            // Prints:
                            // [
                            // [Function: firstListener],
                            // [Function: secondListener],
                            // [Function: thirdListener]
                            // ]
                            // Helloooo! first listener
                            // event with parameters 1, 2 in second listener
                            // event with parameters 1, 2, 3, 4, 5 in third listener +
                            + +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol
                            • ...args: AnyRest

                            Returns boolean

                            v0.1.26

                            +
                          • Returns an array listing the events for which the emitter has registered +listeners. The values in the array are strings or Symbols.

                            +
                            import { EventEmitter } from 'node:events';

                            const myEE = new EventEmitter();
                            myEE.on('foo', () => {});
                            myEE.on('bar', () => {});

                            const sym = Symbol('symbol');
                            myEE.on(sym, () => {});

                            console.log(myEE.eventNames());
                            // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
                            + +

                            Returns (string | symbol)[]

                            v6.0.0

                            +
                          • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

                            +

                            Returns number

                            v1.0.0

                            +
                          • Handles a worker error.

                            +

                            Parameters

                            • error: Error

                              The error raised by the worker.

                              +

                            Returns { aborted: boolean; error?: Error; message: string; stack?: string }

                            The worker error object.

                            +
                          • Returns the number of listeners listening for the event named eventName. +If listener is provided, it will return how many times the listener is found +in the list of the listeners of the event.

                            +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol

                              The name of the event being listened for

                              +
                            • Optionallistener: Function

                              The event handler function

                              +

                            Returns number

                            v3.2.0

                            +
                          • 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] ] +
                            + +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol

                            Returns Function[]

                            v0.1.26

                            +
                          • Alias for emitter.removeListener().

                            +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol
                            • listener: (...args: any[]) => void

                            Returns this

                            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 eventName and +listener will result in the listener being added, and called, multiple times.

                            +
                            server.on('connection', (stream) => {
                            console.log('someone connected!');
                            }); +
                            + +

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

                            +

                            By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

                            +
                            import { EventEmitter } from 'node:events';
                            const myEE = new EventEmitter();
                            myEE.on('foo', () => console.log('a'));
                            myEE.prependListener('foo', () => console.log('b'));
                            myEE.emit('foo');
                            // Prints:
                            // b
                            // a +
                            + +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol

                              The name of the event.

                              +
                            • listener: (...args: any[]) => void

                              The callback function

                              +

                            Returns this

                            v0.1.101

                            +
                          • Adds a one-time listener 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!');
                            }); +
                            + +

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

                            +

                            By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the +event listener to the beginning of the listeners array.

                            +
                            import { EventEmitter } from 'node:events';
                            const myEE = new EventEmitter();
                            myEE.once('foo', () => console.log('a'));
                            myEE.prependOnceListener('foo', () => console.log('b'));
                            myEE.emit('foo');
                            // Prints:
                            // b
                            // a +
                            + +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol

                              The name of the event.

                              +
                            • listener: (...args: any[]) => void

                              The callback function

                              +

                            Returns this

                            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 eventName +and listener will result in the listener being added, and called, multiple times.

                            +
                            server.prependListener('connection', (stream) => {
                            console.log('someone connected!');
                            }); +
                            + +

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

                            +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol

                              The name of the event.

                              +
                            • listener: (...args: any[]) => void

                              The callback function

                              +

                            Returns this

                            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.

                            +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol

                              The name of the event.

                              +
                            • listener: (...args: any[]) => void

                              The callback function

                              +

                            Returns this

                            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'); +
                            + +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol

                            Returns Function[]

                            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

                            • OptionaleventName: string | symbol

                            Returns this

                            v0.1.26

                            +
                          • Removes the specified listener from the listener array for the event named eventName.

                            +
                            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 +listener array. If any single listener has been added multiple times to the +listener array for the specified eventName, then removeListener() must be +called multiple times to remove each instance.

                            +

                            Once an event is emitted, all listeners attached to it at the +time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution +will not remove them fromemit() in progress. Subsequent events behave as expected.

                            +
                            import { EventEmitter } from 'node:events';
                            class MyEmitter extends EventEmitter {}
                            const myEmitter = new MyEmitter();

                            const callbackA = () => {
                            console.log('A');
                            myEmitter.removeListener('event', callbackB);
                            };

                            const callbackB = () => {
                            console.log('B');
                            };

                            myEmitter.on('event', callbackA);

                            myEmitter.on('event', callbackB);

                            // callbackA removes listener callbackB but it will still be called.
                            // Internal listener array at time of emit [callbackA, callbackB]
                            myEmitter.emit('event');
                            // Prints:
                            // A
                            // B

                            // callbackB is now removed.
                            // Internal listener array [callbackA]
                            myEmitter.emit('event');
                            // Prints:
                            // A +
                            + +

                            Because listeners are managed using an internal array, calling this will +change the position indices of any listener registered after the listener +being removed. This will not impact the order in which listeners are called, +but it means that any copies of the listener array as returned by +the emitter.listeners() method will need to be recreated.

                            +

                            When a single function has been added as a handler multiple times for a single +event (as in the example below), removeListener() will remove the most +recently added instance. In the example the once('ping') listener is removed:

                            +
                            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.

                            +

                            Type Parameters

                            • K

                            Parameters

                            • eventName: string | symbol
                            • listener: (...args: any[]) => void

                            Returns this

                            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 to Infinity (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 this

                            v0.3.5

                            +
                          diff --git a/docs/interfaces/src.CircularBuffer.html b/docs/interfaces/src.CircularBuffer.html new file mode 100644 index 000000000..da86b0155 --- /dev/null +++ b/docs/interfaces/src.CircularBuffer.html @@ -0,0 +1,18 @@ +CircularBuffer | poolifier - v5.0.0
                          poolifier - v5.0.0
                            Preparing search index...

                            Interface CircularBufferInternal

                            Circular buffer designed for positive numbers.

                            +
                            interface CircularBuffer {
                                size: number;
                                empty(): boolean;
                                full(): boolean;
                                get(): undefined | number;
                                put(number: number): void;
                                toArray(): number[];
                            }
                            Index

                            Properties

                            Methods

                            Properties

                            size: number

                            Methods

                            • Checks whether the buffer is empty.

                              +

                              Returns boolean

                              Whether the buffer is empty.

                              +
                            • Checks whether the buffer is full.

                              +

                              Returns boolean

                              Whether the buffer is full.

                              +
                            • Gets number from buffer.

                              +

                              Returns undefined | number

                              Number from buffer.

                              +
                            • Puts number into buffer.

                              +

                              Parameters

                              • number: number

                                Number to put into buffer.

                                +

                              Returns void

                            diff --git a/docs/interfaces/src.EventLoopUtilizationMeasurementStatistics.html b/docs/interfaces/src.EventLoopUtilizationMeasurementStatistics.html index a9389fe4d..ef26d528f 100644 --- a/docs/interfaces/src.EventLoopUtilizationMeasurementStatistics.html +++ b/docs/interfaces/src.EventLoopUtilizationMeasurementStatistics.html @@ -1,5 +1,5 @@ -EventLoopUtilizationMeasurementStatistics | poolifier - v4.4.5

                            Interface EventLoopUtilizationMeasurementStatisticsInternal

                            Event loop utilization measurement statistics.

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

                            Properties

                            Properties

                            utilization?: number
                            +EventLoopUtilizationMeasurementStatistics | poolifier - v5.0.0
                            poolifier - v5.0.0
                              Preparing search index...

                              Interface EventLoopUtilizationMeasurementStatisticsInternal

                              Event loop utilization measurement statistics.

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

                              Properties

                              Properties

                              utilization?: number
                              diff --git a/docs/interfaces/src.FixedQueueNode.html b/docs/interfaces/src.FixedQueueNode.html index b492adf67..a82a2477d 100644 --- a/docs/interfaces/src.FixedQueueNode.html +++ b/docs/interfaces/src.FixedQueueNode.html @@ -1,5 +1,5 @@ -FixedQueueNode | poolifier - v4.4.5

                              Interface FixedQueueNode<T>Internal

                              Fixed queue node.

                              -
                              interface FixedQueueNode<T> {
                                  data: T;
                                  priority: number;
                              }

                              Type Parameters

                              • T

                                Type of fixed queue node data.

                                -

                              Properties

                              Properties

                              data: T
                              priority: number
                              +FixedQueueNode | poolifier - v5.0.0
                              poolifier - v5.0.0
                                Preparing search index...

                                Interface FixedQueueNode<T>Internal

                                Fixed queue node.

                                +
                                interface FixedQueueNode<T> {
                                    data: T;
                                    priority: number;
                                }

                                Type Parameters

                                • T

                                  Type of fixed queue node data.

                                  +
                                Index

                                Properties

                                Properties

                                data: T
                                priority: number
                                diff --git a/docs/interfaces/src.IFixedQueue.html b/docs/interfaces/src.IFixedQueue.html index a71ff397e..3a5a96985 100644 --- a/docs/interfaces/src.IFixedQueue.html +++ b/docs/interfaces/src.IFixedQueue.html @@ -1,34 +1,38 @@ -IFixedQueue | poolifier - v4.4.5

                                Interface IFixedQueue<T>Internal

                                Fixed queue.

                                -
                                interface IFixedQueue<T> {
                                    [iterator]: (() => Iterator<T, any, any>);
                                    capacity: number;
                                    clear: (() => void);
                                    dequeue: (() => undefined | T);
                                    empty: (() => boolean);
                                    enqueue: ((data: T, priority?: number) => number);
                                    full: (() => boolean);
                                    get: ((index: number) => undefined | T);
                                    nodeArray: FixedQueueNode<T>[];
                                    size: number;
                                }

                                Type Parameters

                                • T

                                  Type of fixed queue data.

                                  -

                                Properties

                                [iterator]: (() => Iterator<T, any, any>)

                                Returns an iterator for the fixed queue.

                                -

                                Type declaration

                                  • (): Iterator<T, any, any>
                                  • Returns Iterator<T, any, any>

                                    An iterator for the fixed queue.

                                    -
                                capacity: number

                                The fixed queue capacity.

                                -
                                clear: (() => void)

                                Clears the fixed queue.

                                -
                                dequeue: (() => undefined | T)

                                Dequeue data from the fixed queue.

                                -

                                Type declaration

                                  • (): undefined | T
                                  • Returns undefined | T

                                    The dequeued data or undefined if the fixed queue is empty.

                                    -
                                empty: (() => boolean)

                                Checks if the fixed queue is empty.

                                -

                                Type declaration

                                  • (): boolean
                                  • Returns boolean

                                    true if the fixed queue is empty, false otherwise.

                                    -
                                enqueue: ((data: T, priority?: number) => number)

                                Enqueue data into the fixed queue.

                                -

                                Type declaration

                                If the fixed queue is full.

                                +
                                full: () => boolean

                                Checks if the fixed queue is full.

                                +

                                Type declaration

                                  • (): boolean
                                  • Returns boolean

                                    true if the fixed queue is full, false otherwise.

                                    +
                                get: (index: number) => undefined | T

                                Gets data from the fixed queue.

                                +

                                Type declaration

                                  • (index: number): undefined | T
                                  • Parameters

                                    • index: number

                                      The index of the data to get.

                                      +

                                    Returns undefined | T

                                    The data at the index or undefined if the fixed queue is empty or the index is out of bounds.

                                    +
                                nodeArray: FixedQueueNode<T>[]

                                The fixed queue node array.

                                +
                                size: number

                                The fixed queue size.

                                +
                                diff --git a/docs/interfaces/src.IPool.html b/docs/interfaces/src.IPool.html index 81a5d5c41..12f7b7b31 100644 --- a/docs/interfaces/src.IPool.html +++ b/docs/interfaces/src.IPool.html @@ -1,32 +1,32 @@ -IPool | poolifier - v4.4.5

                                Interface IPool<Worker, Data, Response>

                                Contract definition for a poolifier pool.

                                -
                                interface IPool<Worker, Data, Response> {
                                    addTaskFunction: ((name: string, fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>) => Promise<boolean>);
                                    destroy: (() => Promise<void>);
                                    emitter?: EventEmitterAsyncResource;
                                    enableTasksQueue: ((enable: boolean, tasksQueueOptions?: TasksQueueOptions) => void);
                                    execute: ((data?: Data, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response>);
                                    hasTaskFunction: ((name: string) => boolean);
                                    info: PoolInfo;
                                    listTaskFunctionsProperties: (() => TaskFunctionProperties[]);
                                    mapExecute: ((data: Iterable<Data, any, any>, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response[]>);
                                    removeTaskFunction: ((name: string) => Promise<boolean>);
                                    setDefaultTaskFunction: ((name: string) => Promise<boolean>);
                                    setTasksQueueOptions: ((tasksQueueOptions: TasksQueueOptions) => void);
                                    setWorkerChoiceStrategy: ((workerChoiceStrategy:
                                        | "FAIR_SHARE"
                                        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                        | "LEAST_BUSY"
                                        | "LEAST_ELU"
                                        | "LEAST_USED"
                                        | "ROUND_ROBIN"
                                        | "WEIGHTED_ROUND_ROBIN", workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions) => void);
                                    setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions: WorkerChoiceStrategyOptions) => boolean);
                                    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: string, fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>) => Promise<boolean>)

                                Adds a task function to this pool. +IPool | poolifier - v5.0.0

                                poolifier - v5.0.0
                                  Preparing search index...

                                  Interface IPool<Worker, Data, Response>

                                  Contract definition for a poolifier pool.

                                  +
                                  interface IPool<Worker extends IWorker, Data = unknown, Response = unknown> {
                                      addTaskFunction: (
                                          name: string,
                                          fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>,
                                      ) => Promise<boolean>;
                                      destroy: () => Promise<void>;
                                      emitter?: EventEmitterAsyncResource;
                                      enableTasksQueue: (
                                          enable: boolean,
                                          tasksQueueOptions?: TasksQueueOptions,
                                      ) => void;
                                      execute: (
                                          data?: Data,
                                          name?: string,
                                          abortSignal?: AbortSignal,
                                          transferList?: readonly Transferable[],
                                      ) => Promise<Response>;
                                      hasTaskFunction: (name: string) => boolean;
                                      info: PoolInfo;
                                      listTaskFunctionsProperties: () => TaskFunctionProperties[];
                                      mapExecute: (
                                          data: Iterable<Data>,
                                          name?: string,
                                          abortSignals?: Iterable<AbortSignal, any, any>,
                                          transferList?: readonly Transferable[],
                                      ) => Promise<Response[]>;
                                      removeTaskFunction: (name: string) => Promise<boolean>;
                                      setDefaultTaskFunction: (name: string) => Promise<boolean>;
                                      setTasksQueueOptions: (tasksQueueOptions: TasksQueueOptions) => void;
                                      setWorkerChoiceStrategy: (
                                          workerChoiceStrategy:
                                              | "FAIR_SHARE"
                                              | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                              | "LEAST_BUSY"
                                              | "LEAST_ELU"
                                              | "LEAST_USED"
                                              | "ROUND_ROBIN"
                                              | "WEIGHTED_ROUND_ROBIN",
                                          workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions,
                                      ) => void;
                                      setWorkerChoiceStrategyOptions: (
                                          workerChoiceStrategyOptions: WorkerChoiceStrategyOptions,
                                      ) => boolean;
                                      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

                                  Index

                                  Properties

                                  addTaskFunction: (
                                      name: string,
                                      fn: TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>,
                                  ) => 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

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

                                  Terminates all workers in this pool.

                                  -
                                  emitter?: EventEmitterAsyncResource

                                  Pool event emitter integrated with async resource. +

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

                                  +

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

                                  +
                                  destroy: () => Promise<void>

                                  Terminates all workers in this pool.

                                  +
                                  emitter?: EventEmitterAsyncResource

                                  Pool event emitter integrated with async resource. The async tracking tooling identifier is poolifier:<PoolType>-<WorkerType>-pool.

                                  Events that can currently be listened to:

                                    @@ -42,39 +42,41 @@ The async tracking tooling identifier is poolifier:<PoolType>-<Wo
                                  • 'backPressure': Emitted when the number of workers created in the pool has reached the maximum size expected and are back pressured (i.e. their tasks queue is full: queue size >= maximum queue size).
                                  • 'backPressureEnd': Emitted when the number of workers created in the pool has reached the maximum size expected and are no longer back pressured (i.e. their tasks queue is no longer full: queue size < maximum queue size).
                                  -
                                  enableTasksQueue: ((enable: boolean, tasksQueueOptions?: TasksQueueOptions) => void)

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

                                  -

                                  Type declaration

                                    • (enable, tasksQueueOptions?): void
                                    • Parameters

                                      • enable: boolean

                                        Whether to enable or disable the worker node tasks queue.

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

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

                                  +

                                  Type declaration

                                    • (enable: boolean, tasksQueueOptions?: TasksQueueOptions): void
                                    • Parameters

                                      • enable: boolean

                                        Whether to enable or disable the worker node tasks queue.

                                      • OptionaltasksQueueOptions: TasksQueueOptions

                                        The worker node tasks queue options.

                                        -

                                      Returns void

                                  execute: ((data?: Data, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response>)

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

                                  -

                                  Type declaration

                                    • (data?, name?, transferList?): Promise<Response>
                                    • Parameters

                                      • Optionaldata: Data

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

                                        +

                                      Returns void

                                  execute: (
                                      data?: Data,
                                      name?: string,
                                      abortSignal?: AbortSignal,
                                      transferList?: readonly Transferable[],
                                  ) => Promise<Response>

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

                                  +

                                  Type declaration

                                    • (
                                          data?: Data,
                                          name?: string,
                                          abortSignal?: AbortSignal,
                                          transferList?: readonly Transferable[],
                                      ): Promise<Response>
                                    • Parameters

                                      • Optionaldata: Data

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

                                      • Optionalname: string

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

                                        -
                                      • OptionaltransferList: readonly 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 with a task function response that will be fulfilled when the task is completed.

                                      -
                                  hasTaskFunction: ((name: string) => boolean)

                                  Whether the specified task function exists in this pool.

                                  -

                                  Type declaration

                                    • (name): boolean
                                    • Parameters

                                      • name: string

                                        The name of the task function.

                                        +
                                      • OptionalabortSignal: AbortSignal

                                        The optional AbortSignal to abort the task.

                                        +
                                      • OptionaltransferList: readonly Transferable[]

                                        The 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 with a task function response that will be fulfilled when the task is completed.

                                      +
                                  hasTaskFunction: (name: string) => boolean

                                  Whether the specified task function exists in this pool.

                                  +

                                  Type declaration

                                    • (name: string): boolean
                                    • Parameters

                                      • name: string

                                        The name of the task function.

                                      Returns boolean

                                      true if the task function exists, false otherwise.

                                      -
                                  info: PoolInfo

                                  Pool information.

                                  -
                                  listTaskFunctionsProperties: (() => TaskFunctionProperties[])

                                  Lists the properties of task functions available in this pool.

                                  -

                                  Type declaration

                                  mapExecute: ((data: Iterable<Data, any, any>, name?: string, transferList?: readonly TransferListItem[]) => Promise<Response[]>)

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

                                  -

                                  Type declaration

                                    • (data, name?, transferList?): Promise<Response[]>
                                    • Parameters

                                      • data: Iterable<Data, any, any>

                                        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

                                        +
                                  info: PoolInfo

                                  Pool information.

                                  +
                                  listTaskFunctionsProperties: () => TaskFunctionProperties[]

                                  Lists the properties of task functions available in this pool.

                                  +

                                  Type declaration

                                  mapExecute: (
                                      data: Iterable<Data>,
                                      name?: string,
                                      abortSignals?: Iterable<AbortSignal, any, any>,
                                      transferList?: readonly Transferable[],
                                  ) => Promise<Response[]>

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

                                  +

                                  Type declaration

                                    • (
                                          data: Iterable<Data>,
                                          name?: string,
                                          abortSignals?: Iterable<AbortSignal, any, any>,
                                          transferList?: readonly Transferable[],
                                      ): Promise<Response[]>
                                    • Parameters

                                      • data: Iterable<Data>

                                        The tasks iterable input data for the specified task function. This can only be an iterable of structured-cloneable data.

                                      • Optionalname: string

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

                                        -
                                      • OptionaltransferList: readonly 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 with an array of task function responses that will be fulfilled when the tasks are completed.

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

                                  Removes a task function from this pool.

                                  -

                                  Type declaration

                                    • (name): Promise<boolean>
                                    • Parameters

                                      • name: string

                                        The name of the task function.

                                        +
                                      • OptionalabortSignals: Iterable<AbortSignal, any, any>

                                        The optional iterable of AbortSignal to abort the tasks iterable.

                                        +
                                      • OptionaltransferList: readonly Transferable[]

                                        The 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 with an array of task function responses that will be fulfilled when the tasks are completed.

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

                                  Removes a task function from this pool.

                                  +

                                  Type declaration

                                    • (name: string): Promise<boolean>
                                    • Parameters

                                      • name: string

                                        The name of the task function.

                                      Returns Promise<boolean>

                                      true if the task function was removed, false otherwise.

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

                                  Sets the default task function in this pool.

                                  -

                                  Type declaration

                                    • (name): Promise<boolean>
                                    • Parameters

                                      • name: string

                                        The name of the task function.

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

                                  Sets the default task function in this pool.

                                  +

                                  Type declaration

                                    • (name: string): Promise<boolean>
                                    • Parameters

                                      • name: string

                                        The name of the task function.

                                      Returns Promise<boolean>

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

                                      -
                                  setTasksQueueOptions: ((tasksQueueOptions: TasksQueueOptions) => void)

                                  Sets the worker node tasks queue options in this pool.

                                  -

                                  Type declaration

                                    • (tasksQueueOptions): void
                                    • Parameters

                                      Returns void

                                  setWorkerChoiceStrategy: ((workerChoiceStrategy:
                                      | "FAIR_SHARE"
                                      | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                      | "LEAST_BUSY"
                                      | "LEAST_ELU"
                                      | "LEAST_USED"
                                      | "ROUND_ROBIN"
                                      | "WEIGHTED_ROUND_ROBIN", workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions) => void)

                                  Sets the default worker choice strategy in this pool.

                                  -

                                  Type declaration

                                    • (workerChoiceStrategy, workerChoiceStrategyOptions?): void
                                    • Parameters

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

                                        The default worker choice strategy.

                                        +
                                  setTasksQueueOptions: (tasksQueueOptions: TasksQueueOptions) => void

                                  Sets the worker node tasks queue options in this pool.

                                  +

                                  Type declaration

                                  setWorkerChoiceStrategy: (
                                      workerChoiceStrategy:
                                          | "FAIR_SHARE"
                                          | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                          | "LEAST_BUSY"
                                          | "LEAST_ELU"
                                          | "LEAST_USED"
                                          | "ROUND_ROBIN"
                                          | "WEIGHTED_ROUND_ROBIN",
                                      workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions,
                                  ) => void

                                  Sets the default worker choice strategy in this pool.

                                  +

                                  Type declaration

                                    • (
                                          workerChoiceStrategy:
                                              | "FAIR_SHARE"
                                              | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                              | "LEAST_BUSY"
                                              | "LEAST_ELU"
                                              | "LEAST_USED"
                                              | "ROUND_ROBIN"
                                              | "WEIGHTED_ROUND_ROBIN",
                                          workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions,
                                      ): void
                                    • Parameters

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

                                        The default worker choice strategy.

                                      • OptionalworkerChoiceStrategyOptions: WorkerChoiceStrategyOptions

                                        The worker choice strategy options.

                                        -

                                      Returns void

                                  setWorkerChoiceStrategyOptions: ((workerChoiceStrategyOptions: WorkerChoiceStrategyOptions) => boolean)

                                  Sets the worker choice strategy options in this pool.

                                  -

                                  Type declaration

                                    • (workerChoiceStrategyOptions): boolean
                                    • Parameters

                                      Returns void

                                  setWorkerChoiceStrategyOptions: (
                                      workerChoiceStrategyOptions: WorkerChoiceStrategyOptions,
                                  ) => boolean

                                  Sets the worker choice strategy options in this pool.

                                  +

                                  Type declaration

                                  start: (() => void)

                                  Starts the minimum number of workers in this pool.

                                  -
                                  workerNodes: IWorkerNode<Worker, Data>[]

                                  Pool worker nodes.

                                  -
                                  +
                                  start: () => void

                                  Starts the minimum number of workers in this pool.

                                  +
                                  workerNodes: IWorkerNode<Worker, Data>[]

                                  Pool worker nodes.

                                  +
                                  diff --git a/docs/interfaces/src.IWorker.html b/docs/interfaces/src.IWorker.html index c1c0cccef..23492b6ba 100644 --- a/docs/interfaces/src.IWorker.html +++ b/docs/interfaces/src.IWorker.html @@ -1,106 +1,106 @@ -IWorker | poolifier - v4.4.5

                                  Interface IWorker

                                  Worker interface.

                                  -
                                  interface IWorker {
                                      disconnect?: (() => void);
                                      id?: number;
                                      kill?: ((signal?: string) => void);
                                      on: ((event: string, handler: EventHandler<IWorker>) => this);
                                      once: ((event: string, handler: EventHandler<IWorker>) => this);
                                      terminate?: (() => Promise<number>);
                                      threadId?: number;
                                      unref?: (() => void);
                                      [captureRejectionSymbol]?<K>(error: Error, event: string | symbol, ...args: AnyRest): void;
                                      addListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                      emit<K>(eventName: string | symbol, ...args: AnyRest): boolean;
                                      eventNames(): (string | symbol)[];
                                      getMaxListeners(): number;
                                      listenerCount<K>(eventName: string | symbol, listener?: Function): number;
                                      listeners<K>(eventName: string | symbol): Function[];
                                      off<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                      prependListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                      prependOnceListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                      rawListeners<K>(eventName: string | symbol): Function[];
                                      removeAllListeners(eventName?: string | symbol): this;
                                      removeListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                      setMaxListeners(n: number): this;
                                  }

                                  Hierarchy

                                  • EventEmitter
                                    • IWorker

                                  Properties

                                  disconnect?: (() => void)

                                  Cluster worker disconnect.

                                  -
                                  id?: number

                                  Cluster worker id.

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

                                  Cluster worker kill.

                                  -
                                  on: ((event: string, handler: EventHandler<IWorker>) => this)

                                  Registers an event handler.

                                  -

                                  Type declaration

                                    • (event, handler): this
                                    • Parameters

                                      Returns this

                                  once: ((event: string, handler: EventHandler<IWorker>) => this)

                                  Registers once an event handler.

                                  -

                                  Type declaration

                                    • (event, handler): this
                                    • Parameters

                                      Returns this

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

                                  Stop all JavaScript execution in the worker thread as soon as possible. +IWorker | poolifier - v5.0.0

                                  poolifier - v5.0.0
                                    Preparing search index...

                                    Interface IWorker

                                    Worker interface.

                                    +
                                    interface IWorker {
                                        disconnect?: () => void;
                                        id?: number;
                                        kill?: (signal?: string) => void;
                                        on: (event: string, handler: EventHandler<IWorker>) => this;
                                        once: (event: string, handler: EventHandler<IWorker>) => this;
                                        terminate?: () => Promise<number>;
                                        threadId?: number;
                                        unref?: () => void;
                                        "[captureRejectionSymbol]"<K>(
                                            error: Error,
                                            event: string | symbol,
                                            ...args: AnyRest,
                                        ): void;
                                        addListener<K>(
                                            eventName: string | symbol,
                                            listener: (...args: any[]) => void,
                                        ): this;
                                        emit<K>(eventName: string | symbol, ...args: AnyRest): boolean;
                                        eventNames(): (string | symbol)[];
                                        getMaxListeners(): number;
                                        listenerCount<K>(eventName: string | symbol, listener?: Function): number;
                                        listeners<K>(eventName: string | symbol): Function[];
                                        off<K>(
                                            eventName: string | symbol,
                                            listener: (...args: any[]) => void,
                                        ): this;
                                        prependListener<K>(
                                            eventName: string | symbol,
                                            listener: (...args: any[]) => void,
                                        ): this;
                                        prependOnceListener<K>(
                                            eventName: string | symbol,
                                            listener: (...args: any[]) => void,
                                        ): this;
                                        rawListeners<K>(eventName: string | symbol): Function[];
                                        removeAllListeners(eventName?: string | symbol): this;
                                        removeListener<K>(
                                            eventName: string | symbol,
                                            listener: (...args: any[]) => void,
                                        ): this;
                                        setMaxListeners(n: number): this;
                                    }

                                    Hierarchy

                                    • EventEmitter
                                      • IWorker
                                    Index

                                    Properties

                                    disconnect?: () => void

                                    Cluster worker disconnect.

                                    +
                                    id?: number

                                    Cluster worker id.

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

                                    Cluster worker kill.

                                    +
                                    on: (event: string, handler: EventHandler<IWorker>) => this

                                    Registers an event handler.

                                    +

                                    Type declaration

                                    once: (event: string, handler: EventHandler<IWorker>) => this

                                    Registers once an event handler.

                                    +

                                    Type declaration

                                    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.

                                    -
                                    threadId?: number

                                    Worker thread worker id.

                                    -
                                    unref?: (() => void)

                                    Calling unref() on a worker allows the thread to exit if this is the only +

                                    threadId?: number

                                    Worker thread worker id.

                                    +
                                    unref?: () => void

                                    Calling unref() on a worker allows the thread to exit if this is the only active handle in the event system. If the worker is already unref()ed callingunref() again has no effect.

                                    -

                                    v10.5.0

                                    -

                                    Methods

                                    • Type Parameters

                                      • K

                                      Parameters

                                      • error: Error
                                      • event: string | symbol
                                      • Rest...args: AnyRest

                                      Returns void

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

                                      -

                                      Type Parameters

                                      • K

                                      Parameters

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

                                            • Rest...args: any[]

                                            Returns void

                                      Returns this

                                      v0.1.26

                                      -
                                    • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

                                      v10.5.0

                                      +

                                    Methods

                                    • Type Parameters

                                      • K

                                      Parameters

                                      • error: Error
                                      • event: string | symbol
                                      • ...args: AnyRest

                                      Returns void

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

                                      +

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol
                                      • listener: (...args: any[]) => void

                                      Returns this

                                      v0.1.26

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

                                      Returns true if the event had listeners, false otherwise.

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

                                      // First listener
                                      myEmitter.on('event', function firstListener() {
                                      console.log('Helloooo! first listener');
                                      });
                                      // Second listener
                                      myEmitter.on('event', function secondListener(arg1, arg2) {
                                      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
                                      });
                                      // Third listener
                                      myEmitter.on('event', function thirdListener(...args) {
                                      const parameters = args.join(', ');
                                      console.log(`event with parameters ${parameters} in third listener`);
                                      });

                                      console.log(myEmitter.listeners('event'));

                                      myEmitter.emit('event', 1, 2, 3, 4, 5);

                                      // Prints:
                                      // [
                                      // [Function: firstListener],
                                      // [Function: secondListener],
                                      // [Function: thirdListener]
                                      // ]
                                      // Helloooo! first listener
                                      // event with parameters 1, 2 in second listener
                                      // event with parameters 1, 2, 3, 4, 5 in third listener +
                                      import { EventEmitter } from 'node:events';
                                      const myEmitter = new EventEmitter();

                                      // First listener
                                      myEmitter.on('event', function firstListener() {
                                      console.log('Helloooo! first listener');
                                      });
                                      // Second listener
                                      myEmitter.on('event', function secondListener(arg1, arg2) {
                                      console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
                                      });
                                      // Third listener
                                      myEmitter.on('event', function thirdListener(...args) {
                                      const parameters = args.join(', ');
                                      console.log(`event with parameters ${parameters} in third listener`);
                                      });

                                      console.log(myEmitter.listeners('event'));

                                      myEmitter.emit('event', 1, 2, 3, 4, 5);

                                      // Prints:
                                      // [
                                      // [Function: firstListener],
                                      // [Function: secondListener],
                                      // [Function: thirdListener]
                                      // ]
                                      // Helloooo! first listener
                                      // event with parameters 1, 2 in second listener
                                      // event with parameters 1, 2, 3, 4, 5 in third listener
                                      -

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol
                                      • Rest...args: AnyRest

                                      Returns boolean

                                      v0.1.26

                                      -
                                    • Returns an array listing the events for which the emitter has registered +

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol
                                      • ...args: AnyRest

                                      Returns boolean

                                      v0.1.26

                                      +
                                    • Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

                                      -
                                      import { EventEmitter } from 'node:events';

                                      const myEE = new EventEmitter();
                                      myEE.on('foo', () => {});
                                      myEE.on('bar', () => {});

                                      const sym = Symbol('symbol');
                                      myEE.on(sym, () => {});

                                      console.log(myEE.eventNames());
                                      // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
                                      import { EventEmitter } from 'node:events';

                                      const myEE = new EventEmitter();
                                      myEE.on('foo', () => {});
                                      myEE.on('bar', () => {});

                                      const sym = Symbol('symbol');
                                      myEE.on(sym, () => {});

                                      console.log(myEE.eventNames());
                                      // Prints: [ 'foo', 'bar', Symbol(symbol) ]
                                      -

                                      Returns (string | symbol)[]

                                      v6.0.0

                                      -
                                    • Returns the current max listener value for the EventEmitter which is either -set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

                                      -

                                      Returns number

                                      v1.0.0

                                      -
                                    • Returns the number of listeners listening for the event named eventName. +

                                      Returns (string | symbol)[]

                                      v6.0.0

                                      +
                                    • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

                                      +

                                      Returns number

                                      v1.0.0

                                      +
                                    • Returns the number of listeners listening for the event named eventName. If listener is provided, it will return how many times the listener is found in the list of the listeners of the event.

                                      -

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                        The name of the event being listened for

                                        +

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event being listened for

                                        • Optionallistener: Function

                                          The event handler function

                                          -

                                        Returns number

                                        v3.2.0

                                        -
                                    • 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] ] +

                                    Returns number

                                    v3.2.0

                                    +
                                    • 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] ]
                                      -

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                      Returns Function[]

                                      v0.1.26

                                      -
                                    • Alias for emitter.removeListener().

                                      -

                                      Type Parameters

                                      • K

                                      Parameters

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

                                            • Rest...args: any[]

                                            Returns void

                                      Returns this

                                      v10.0.0

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

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                      Returns Function[]

                                      v0.1.26

                                      +
                                    • Alias for emitter.removeListener().

                                      +

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol
                                      • listener: (...args: any[]) => void

                                      Returns this

                                      v10.0.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 eventName and listener will result in the listener being added, and called, multiple times.

                                      -
                                      server.prependListener('connection', (stream) => {
                                      console.log('someone connected!');
                                      }); +
                                      server.prependListener('connection', (stream) => {
                                      console.log('someone connected!');
                                      });

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

                                      -

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                        The name of the event.

                                        -
                                      • listener: ((...args: any[]) => void)

                                        The callback function

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

                                            • Rest...args: any[]

                                            Returns void

                                      Returns this

                                      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 +

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                        The name of the event.

                                        +
                                      • listener: (...args: any[]) => void

                                        The callback function

                                        +

                                      Returns this

                                      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!');
                                      }); +
                                      server.prependOnceListener('connection', (stream) => {
                                      console.log('Ah, we have our first user!');
                                      });

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

                                      -

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                        The name of the event.

                                        -
                                      • listener: ((...args: any[]) => void)

                                        The callback function

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

                                            • Rest...args: any[]

                                            Returns void

                                      Returns this

                                      v6.0.0

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

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                        The name of the event.

                                        +
                                      • listener: (...args: any[]) => void

                                        The callback function

                                        +

                                      Returns this

                                      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'); +
                                      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');
                                      -

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                      Returns Function[]

                                      v9.4.0

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

                                      +

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol

                                      Returns Function[]

                                      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

                                      • OptionaleventName: string | symbol

                                      Returns this

                                      v0.1.26

                                      -
                                    • Removes the specified listener from the listener array for the event named eventName.

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

                                      Parameters

                                      • OptionaleventName: string | symbol

                                      Returns this

                                      v0.1.26

                                      +
                                    • Removes the specified listener from the listener array for the event named eventName.

                                      +
                                      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 @@ -110,7 +110,7 @@ called multiple times to remove each instance.

                                      Once an event is emitted, all listeners attached to it at the time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution will not remove them fromemit() in progress. Subsequent events behave as expected.

                                      -
                                      import { EventEmitter } from 'node:events';
                                      class MyEmitter extends EventEmitter {}
                                      const myEmitter = new MyEmitter();

                                      const callbackA = () => {
                                      console.log('A');
                                      myEmitter.removeListener('event', callbackB);
                                      };

                                      const callbackB = () => {
                                      console.log('B');
                                      };

                                      myEmitter.on('event', callbackA);

                                      myEmitter.on('event', callbackB);

                                      // callbackA removes listener callbackB but it will still be called.
                                      // Internal listener array at time of emit [callbackA, callbackB]
                                      myEmitter.emit('event');
                                      // Prints:
                                      // A
                                      // B

                                      // callbackB is now removed.
                                      // Internal listener array [callbackA]
                                      myEmitter.emit('event');
                                      // Prints:
                                      // A +
                                      import { EventEmitter } from 'node:events';
                                      class MyEmitter extends EventEmitter {}
                                      const myEmitter = new MyEmitter();

                                      const callbackA = () => {
                                      console.log('A');
                                      myEmitter.removeListener('event', callbackB);
                                      };

                                      const callbackB = () => {
                                      console.log('B');
                                      };

                                      myEmitter.on('event', callbackA);

                                      myEmitter.on('event', callbackB);

                                      // callbackA removes listener callbackB but it will still be called.
                                      // Internal listener array at time of emit [callbackA, callbackB]
                                      myEmitter.emit('event');
                                      // Prints:
                                      // A
                                      // B

                                      // callbackB is now removed.
                                      // Internal listener array [callbackA]
                                      myEmitter.emit('event');
                                      // Prints:
                                      // A

                                      Because listeners are managed using an internal array, calling this will @@ -121,15 +121,15 @@ the emitter.listeners() method will need to be recreated.

                                      When a single function has been added as a handler multiple times for a single event (as in the example below), removeListener() will remove the most recently added instance. In the example the once('ping') listener is removed:

                                      -
                                      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'); +
                                      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.

                                      -

                                      Type Parameters

                                      • K

                                      Parameters

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

                                            • Rest...args: any[]

                                            Returns void

                                      Returns this

                                      v0.1.26

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

                                      Type Parameters

                                      • K

                                      Parameters

                                      • eventName: string | symbol
                                      • listener: (...args: any[]) => void

                                      Returns this

                                      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 to Infinity (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 this

                                      v0.3.5

                                      -
                                    +

                                    Parameters

                                    • n: number

                                    Returns this

                                    v0.3.5

                                    +
                                    diff --git a/docs/interfaces/src.IWorkerChoiceStrategy.html b/docs/interfaces/src.IWorkerChoiceStrategy.html index 16c7144b9..3c14c2baa 100644 --- a/docs/interfaces/src.IWorkerChoiceStrategy.html +++ b/docs/interfaces/src.IWorkerChoiceStrategy.html @@ -1,25 +1,25 @@ -IWorkerChoiceStrategy | poolifier - v4.4.5

                                    Interface IWorkerChoiceStrategyInternal

                                    Worker choice strategy interface.

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

                                    Properties

                                    choose: (() => undefined | number)

                                    Chooses a worker node in the pool and returns its key. +IWorkerChoiceStrategy | poolifier - v5.0.0

                                    poolifier - v5.0.0
                                      Preparing search index...

                                      Interface IWorkerChoiceStrategyInternal

                                      Worker choice strategy interface.

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

                                      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
                                        • Returns undefined | number

                                          The worker node key or undefined.

                                          -
                                      remove: ((workerNodeKey: number) => boolean)

                                      Removes the worker node key from strategy internals.

                                      -

                                      Type declaration

                                      remove: (workerNodeKey: number) => boolean

                                      Removes the worker node key from strategy internals.

                                      +

                                      Type declaration

                                        • (workerNodeKey: number): boolean
                                        • Parameters

                                          • workerNodeKey: number

                                            The worker node key.

                                          Returns boolean

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

                                          -
                                      reset: (() => boolean)

                                      Resets strategy internals.

                                      -

                                      Type declaration

                                        • (): boolean
                                        • Returns boolean

                                          true if the reset is successful, false otherwise.

                                          -
                                      setOptions: ((opts: undefined | WorkerChoiceStrategyOptions) => void)

                                      Sets the worker choice strategy options.

                                      -

                                      Type declaration

                                      strategyPolicy: StrategyPolicy

                                      Strategy policy.

                                      -
                                      taskStatisticsRequirements: TaskStatisticsRequirements

                                      Tasks statistics requirements.

                                      -
                                      update: ((workerNodeKey: number) => boolean)

                                      Updates the worker node key strategy internals. +

                                      reset: () => boolean

                                      Resets strategy internals.

                                      +

                                      Type declaration

                                        • (): boolean
                                        • Returns boolean

                                          true if the reset is successful, false otherwise.

                                          +
                                      setOptions: (opts: undefined | WorkerChoiceStrategyOptions) => void

                                      Sets the worker choice strategy options.

                                      +

                                      Type declaration

                                      strategyPolicy: StrategyPolicy

                                      Strategy policy.

                                      +
                                      taskStatisticsRequirements: TaskStatisticsRequirements

                                      Tasks statistics requirements.

                                      +
                                      update: (workerNodeKey: number) => 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
                                        • Parameters

                                          • workerNodeKey: number

                                          Returns boolean

                                          true if the update is successful, false otherwise.

                                          -
                                      +

                                      Type declaration

                                        • (workerNodeKey: number): boolean
                                        • Parameters

                                          • workerNodeKey: number

                                          Returns boolean

                                          true if the update is successful, false otherwise.

                                          +
                                      diff --git a/docs/interfaces/src.IWorkerNode.html b/docs/interfaces/src.IWorkerNode.html index c5cb17f69..5731bbc85 100644 --- a/docs/interfaces/src.IWorkerNode.html +++ b/docs/interfaces/src.IWorkerNode.html @@ -1,171 +1,177 @@ -IWorkerNode | poolifier - v4.4.5

                                      Interface IWorkerNode<Worker, Data>Internal

                                      Worker node interface.

                                      -
                                      interface IWorkerNode<Worker, Data> {
                                          clearTasksQueue: (() => void);
                                          deleteTaskFunctionWorkerUsage: ((name: string) => boolean);
                                          dequeueLastPrioritizedTask: (() => undefined | Task<Data>);
                                          dequeueTask: ((bucket?: number) => undefined | Task<Data>);
                                          enqueueTask: ((task: Task<Data>) => number);
                                          getTaskFunctionWorkerUsage: ((name: string) => undefined | WorkerUsage);
                                          info: WorkerInfo;
                                          messageChannel?: MessageChannel;
                                          registerOnceWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void);
                                          registerWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void);
                                          setTasksQueuePriority: ((enablePriority: boolean) => void);
                                          strategyData?: StrategyData;
                                          tasksQueueBackPressureSize: number;
                                          tasksQueueSize: (() => number);
                                          terminate: (() => Promise<void>);
                                          usage: WorkerUsage;
                                          worker: Worker;
                                          [captureRejectionSymbol]?<K>(error: Error, event: string | symbol, ...args: AnyRest): void;
                                          addListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                          emit<K>(eventName: string | symbol, ...args: AnyRest): boolean;
                                          eventNames(): (string | symbol)[];
                                          getMaxListeners(): number;
                                          listenerCount<K>(eventName: string | symbol, listener?: Function): number;
                                          listeners<K>(eventName: string | symbol): Function[];
                                          off<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                          on<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                          once<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                          prependListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                          prependOnceListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                          rawListeners<K>(eventName: string | symbol): Function[];
                                          removeAllListeners(eventName?: string | symbol): this;
                                          removeListener<K>(eventName: string | symbol, listener: ((...args: any[]) => void)): this;
                                          setMaxListeners(n: number): 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)

                                      Clears tasks queue.

                                      -
                                      deleteTaskFunctionWorkerUsage: ((name: string) => boolean)

                                      Deletes task function worker usage statistics.

                                      -

                                      Type declaration

                                      dequeueLastPrioritizedTask: () => undefined | Task<Data>

                                      Dequeue last prioritized task.

                                      +

                                      Type declaration

                                      dequeueTask: (bucket?: number) => undefined | Task<Data>

                                      Dequeue task.

                                      +

                                      Type declaration

                                        • (bucket?: number): undefined | Task<Data>
                                        • Parameters

                                          • Optionalbucket: number

                                            The prioritized bucket to dequeue from.

                                            +

                                          Returns undefined | Task<Data>

                                          The dequeued task.

                                          +
                                      0
                                       
                                      -
                                      enqueueTask: ((task: Task<Data>) => number)

                                      Enqueue task.

                                      -

                                      Type declaration

                                      enqueueTask: (task: Task<Data>) => number

                                      Enqueue task.

                                      +

                                      Type declaration

                                        • (task: Task<Data>): number
                                        • Parameters

                                          Returns number

                                          The tasks queue size.

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

                                      Gets task function worker usage statistics.

                                      -

                                      Type declaration

                                        • (name): undefined | WorkerUsage
                                        • 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.

                                          -

                                      Worker info.

                                      -
                                      messageChannel?: MessageChannel

                                      Message channel (worker thread only).

                                      -
                                      registerOnceWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void)

                                      Registers once a worker event handler.

                                      -

                                      Type declaration

                                        • (event, handler): void
                                        • Parameters

                                          Returns void

                                      registerWorkerEventHandler: ((event: string, handler: EventHandler<Worker>) => void)

                                      Registers a worker event handler.

                                      -

                                      Type declaration

                                        • (event, handler): void
                                        • Parameters

                                          Returns void

                                      setTasksQueuePriority: ((enablePriority: boolean) => void)

                                      Sets tasks queue priority.

                                      -

                                      Type declaration

                                        • (enablePriority): void
                                        • Parameters

                                          • enablePriority: boolean

                                            Whether to enable tasks queue priority.

                                            -

                                          Returns void

                                      strategyData?: StrategyData

                                      Worker choice strategy data. +

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

                                      Gets task function worker usage statistics.

                                      +

                                      Type declaration

                                        • (name: string): undefined | WorkerUsage
                                        • 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.

                                          +

                                      Worker info.

                                      +
                                      messageChannel?: MessageChannel

                                      Message channel (worker thread only).

                                      +
                                      registerOnceWorkerEventHandler: (
                                          event: string,
                                          handler: EventHandler<Worker>,
                                      ) => void

                                      Registers once a worker event handler.

                                      +

                                      Type declaration

                                      registerWorkerEventHandler: (
                                          event: string,
                                          handler: EventHandler<Worker>,
                                      ) => void

                                      Registers a worker event handler.

                                      +

                                      Type declaration

                                      setTasksQueuePriority: (enablePriority: boolean) => void

                                      Sets tasks queue priority.

                                      +

                                      Type declaration

                                        • (enablePriority: boolean): void
                                        • Parameters

                                          • enablePriority: boolean

                                            Whether to enable tasks queue priority.

                                            +

                                          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. +

                                      tasksQueue: PriorityQueue<Task<Data>>

                                      Tasks queue.

                                      +
                                      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)

                                      Tasks queue size.

                                      -

                                      Type declaration

                                        • (): number
                                        • Returns number

                                          The tasks queue size.

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

                                      Terminates the worker node.

                                      -

                                      Worker usage statistics.

                                      -
                                      worker: Worker

                                      Worker.

                                      -

                                      Methods

                                      • Type Parameters

                                        • K

                                        Parameters

                                        • error: Error
                                        • event: string | symbol
                                        • Rest...args: AnyRest

                                        Returns void

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

                                        -

                                        Type Parameters

                                        • K

                                        Parameters

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

                                              • Rest...args: any[]

                                              Returns void

                                        Returns this

                                        v0.1.26

                                        -
                                      • Synchronously calls each of the listeners registered for the event named eventName, in the order they were registered, passing the supplied arguments +

                                      tasksQueueSize: () => number

                                      Tasks queue size.

                                      +

                                      Type declaration

                                        • (): number
                                        • Returns number

                                          The tasks queue size.

                                          +
                                      terminate: () => Promise<void>

                                      Terminates the worker node.

                                      +

                                      Worker usage statistics.

                                      +
                                      worker: Worker

                                      Worker.

                                      +

                                      Methods

                                      • Type Parameters

                                        • K

                                        Parameters

                                        • error: Error
                                        • event: string | symbol
                                        • ...args: AnyRest

                                        Returns void

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

                                        +

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol
                                        • listener: (...args: any[]) => void

                                        Returns this

                                        v0.1.26

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

                                        Returns true if the event had listeners, false otherwise.

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

                                        // First listener
                                        myEmitter.on('event', function firstListener() {
                                        console.log('Helloooo! first listener');
                                        });
                                        // Second listener
                                        myEmitter.on('event', function secondListener(arg1, arg2) {
                                        console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
                                        });
                                        // Third listener
                                        myEmitter.on('event', function thirdListener(...args) {
                                        const parameters = args.join(', ');
                                        console.log(`event with parameters ${parameters} in third listener`);
                                        });

                                        console.log(myEmitter.listeners('event'));

                                        myEmitter.emit('event', 1, 2, 3, 4, 5);

                                        // Prints:
                                        // [
                                        // [Function: firstListener],
                                        // [Function: secondListener],
                                        // [Function: thirdListener]
                                        // ]
                                        // Helloooo! first listener
                                        // event with parameters 1, 2 in second listener
                                        // event with parameters 1, 2, 3, 4, 5 in third listener +
                                        import { EventEmitter } from 'node:events';
                                        const myEmitter = new EventEmitter();

                                        // First listener
                                        myEmitter.on('event', function firstListener() {
                                        console.log('Helloooo! first listener');
                                        });
                                        // Second listener
                                        myEmitter.on('event', function secondListener(arg1, arg2) {
                                        console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
                                        });
                                        // Third listener
                                        myEmitter.on('event', function thirdListener(...args) {
                                        const parameters = args.join(', ');
                                        console.log(`event with parameters ${parameters} in third listener`);
                                        });

                                        console.log(myEmitter.listeners('event'));

                                        myEmitter.emit('event', 1, 2, 3, 4, 5);

                                        // Prints:
                                        // [
                                        // [Function: firstListener],
                                        // [Function: secondListener],
                                        // [Function: thirdListener]
                                        // ]
                                        // Helloooo! first listener
                                        // event with parameters 1, 2 in second listener
                                        // event with parameters 1, 2, 3, 4, 5 in third listener
                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol
                                        • Rest...args: AnyRest

                                        Returns boolean

                                        v0.1.26

                                        -
                                      • Returns an array listing the events for which the emitter has registered +

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol
                                        • ...args: AnyRest

                                        Returns boolean

                                        v0.1.26

                                        +
                                      • Returns an array listing the events for which the emitter has registered listeners. The values in the array are strings or Symbols.

                                        -
                                        import { EventEmitter } from 'node:events';

                                        const myEE = new EventEmitter();
                                        myEE.on('foo', () => {});
                                        myEE.on('bar', () => {});

                                        const sym = Symbol('symbol');
                                        myEE.on(sym, () => {});

                                        console.log(myEE.eventNames());
                                        // Prints: [ 'foo', 'bar', Symbol(symbol) ] +
                                        import { EventEmitter } from 'node:events';

                                        const myEE = new EventEmitter();
                                        myEE.on('foo', () => {});
                                        myEE.on('bar', () => {});

                                        const sym = Symbol('symbol');
                                        myEE.on(sym, () => {});

                                        console.log(myEE.eventNames());
                                        // Prints: [ 'foo', 'bar', Symbol(symbol) ]
                                        -

                                        Returns (string | symbol)[]

                                        v6.0.0

                                        -
                                      • Returns the current max listener value for the EventEmitter which is either -set by emitter.setMaxListeners(n) or defaults to defaultMaxListeners.

                                        -

                                        Returns number

                                        v1.0.0

                                        -
                                      • Returns the number of listeners listening for the event named eventName. +

                                        Returns (string | symbol)[]

                                        v6.0.0

                                        +
                                      • Returns the current max listener value for the EventEmitter which is either +set by emitter.setMaxListeners(n) or defaults to EventEmitter.defaultMaxListeners.

                                        +

                                        Returns number

                                        v1.0.0

                                        +
                                      • Returns the number of listeners listening for the event named eventName. If listener is provided, it will return how many times the listener is found in the list of the listeners of the event.

                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event being listened for

                                          +

                                          Type Parameters

                                          • K

                                          Parameters

                                          • eventName: string | symbol

                                            The name of the event being listened for

                                          • Optionallistener: Function

                                            The event handler function

                                            -

                                          Returns number

                                          v3.2.0

                                          -
                                      • 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] ] +

                                      Returns number

                                      v3.2.0

                                      +
                                      • 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] ]
                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                        Returns Function[]

                                        v0.1.26

                                        -
                                      • Alias for emitter.removeListener().

                                        -

                                        Type Parameters

                                        • K

                                        Parameters

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

                                              • Rest...args: any[]

                                              Returns void

                                        Returns this

                                        v10.0.0

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

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                        Returns Function[]

                                        v0.1.26

                                        +
                                      • Alias for emitter.removeListener().

                                        +

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol
                                        • listener: (...args: any[]) => void

                                        Returns this

                                        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 eventName and listener will result in the listener being added, and called, multiple times.

                                        -
                                        server.on('connection', (stream) => {
                                        console.log('someone connected!');
                                        }); +
                                        server.on('connection', (stream) => {
                                        console.log('someone connected!');
                                        });

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

                                        By default, event listeners are invoked in the order they are added. The emitter.prependListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

                                        -
                                        import { EventEmitter } from 'node:events';
                                        const myEE = new EventEmitter();
                                        myEE.on('foo', () => console.log('a'));
                                        myEE.prependListener('foo', () => console.log('b'));
                                        myEE.emit('foo');
                                        // Prints:
                                        // b
                                        // a +
                                        import { EventEmitter } from 'node:events';
                                        const myEE = new EventEmitter();
                                        myEE.on('foo', () => console.log('a'));
                                        myEE.prependListener('foo', () => console.log('b'));
                                        myEE.emit('foo');
                                        // Prints:
                                        // b
                                        // a
                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          -
                                        • listener: ((...args: any[]) => void)

                                          The callback function

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

                                              • Rest...args: any[]

                                              Returns void

                                        Returns this

                                        v0.1.101

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

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          +
                                        • listener: (...args: any[]) => void

                                          The callback function

                                          +

                                        Returns this

                                        v0.1.101

                                        +
                                      • Adds a one-time listener 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!');
                                        }); +
                                        server.once('connection', (stream) => {
                                        console.log('Ah, we have our first user!');
                                        });

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

                                        By default, event listeners are invoked in the order they are added. The emitter.prependOnceListener() method can be used as an alternative to add the event listener to the beginning of the listeners array.

                                        -
                                        import { EventEmitter } from 'node:events';
                                        const myEE = new EventEmitter();
                                        myEE.once('foo', () => console.log('a'));
                                        myEE.prependOnceListener('foo', () => console.log('b'));
                                        myEE.emit('foo');
                                        // Prints:
                                        // b
                                        // a +
                                        import { EventEmitter } from 'node:events';
                                        const myEE = new EventEmitter();
                                        myEE.once('foo', () => console.log('a'));
                                        myEE.prependOnceListener('foo', () => console.log('b'));
                                        myEE.emit('foo');
                                        // Prints:
                                        // b
                                        // a
                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          -
                                        • listener: ((...args: any[]) => void)

                                          The callback function

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

                                              • Rest...args: any[]

                                              Returns void

                                        Returns this

                                        v0.3.0

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

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          +
                                        • listener: (...args: any[]) => void

                                          The callback function

                                          +

                                        Returns this

                                        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 eventName and listener will result in the listener being added, and called, multiple times.

                                        -
                                        server.prependListener('connection', (stream) => {
                                        console.log('someone connected!');
                                        }); +
                                        server.prependListener('connection', (stream) => {
                                        console.log('someone connected!');
                                        });

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

                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          -
                                        • listener: ((...args: any[]) => void)

                                          The callback function

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

                                              • Rest...args: any[]

                                              Returns void

                                        Returns this

                                        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 +

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          +
                                        • listener: (...args: any[]) => void

                                          The callback function

                                          +

                                        Returns this

                                        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!');
                                        }); +
                                        server.prependOnceListener('connection', (stream) => {
                                        console.log('Ah, we have our first user!');
                                        });

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

                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          -
                                        • listener: ((...args: any[]) => void)

                                          The callback function

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

                                              • Rest...args: any[]

                                              Returns void

                                        Returns this

                                        v6.0.0

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

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                          The name of the event.

                                          +
                                        • listener: (...args: any[]) => void

                                          The callback function

                                          +

                                        Returns this

                                        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'); +
                                        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');
                                        -

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                        Returns Function[]

                                        v9.4.0

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

                                        +

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol

                                        Returns Function[]

                                        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

                                        • OptionaleventName: string | symbol

                                        Returns this

                                        v0.1.26

                                        -
                                      • Removes the specified listener from the listener array for the event named eventName.

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

                                        Parameters

                                        • OptionaleventName: string | symbol

                                        Returns this

                                        v0.1.26

                                        +
                                      • Removes the specified listener from the listener array for the event named eventName.

                                        +
                                        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 @@ -175,7 +181,7 @@ called multiple times to remove each instance.

                                        Once an event is emitted, all listeners attached to it at the time of emitting are called in order. This implies that any removeListener() or removeAllListeners() calls after emitting and before the last listener finishes execution will not remove them fromemit() in progress. Subsequent events behave as expected.

                                        -
                                        import { EventEmitter } from 'node:events';
                                        class MyEmitter extends EventEmitter {}
                                        const myEmitter = new MyEmitter();

                                        const callbackA = () => {
                                        console.log('A');
                                        myEmitter.removeListener('event', callbackB);
                                        };

                                        const callbackB = () => {
                                        console.log('B');
                                        };

                                        myEmitter.on('event', callbackA);

                                        myEmitter.on('event', callbackB);

                                        // callbackA removes listener callbackB but it will still be called.
                                        // Internal listener array at time of emit [callbackA, callbackB]
                                        myEmitter.emit('event');
                                        // Prints:
                                        // A
                                        // B

                                        // callbackB is now removed.
                                        // Internal listener array [callbackA]
                                        myEmitter.emit('event');
                                        // Prints:
                                        // A +
                                        import { EventEmitter } from 'node:events';
                                        class MyEmitter extends EventEmitter {}
                                        const myEmitter = new MyEmitter();

                                        const callbackA = () => {
                                        console.log('A');
                                        myEmitter.removeListener('event', callbackB);
                                        };

                                        const callbackB = () => {
                                        console.log('B');
                                        };

                                        myEmitter.on('event', callbackA);

                                        myEmitter.on('event', callbackB);

                                        // callbackA removes listener callbackB but it will still be called.
                                        // Internal listener array at time of emit [callbackA, callbackB]
                                        myEmitter.emit('event');
                                        // Prints:
                                        // A
                                        // B

                                        // callbackB is now removed.
                                        // Internal listener array [callbackA]
                                        myEmitter.emit('event');
                                        // Prints:
                                        // A

                                        Because listeners are managed using an internal array, calling this will @@ -186,15 +192,15 @@ the emitter.listeners() method will need to be recreated.

                                        When a single function has been added as a handler multiple times for a single event (as in the example below), removeListener() will remove the most recently added instance. In the example the once('ping') listener is removed:

                                        -
                                        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'); +
                                        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.

                                        -

                                        Type Parameters

                                        • K

                                        Parameters

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

                                              • Rest...args: any[]

                                              Returns void

                                        Returns this

                                        v0.1.26

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

                                        Type Parameters

                                        • K

                                        Parameters

                                        • eventName: string | symbol
                                        • listener: (...args: any[]) => void

                                        Returns this

                                        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 to Infinity (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 this

                                        v0.3.5

                                        -
                                      +

                                      Parameters

                                      • n: number

                                      Returns this

                                      v0.3.5

                                      +
                                      diff --git a/docs/interfaces/src.MeasurementOptions.html b/docs/interfaces/src.MeasurementOptions.html index 760e27d58..1265a3a19 100644 --- a/docs/interfaces/src.MeasurementOptions.html +++ b/docs/interfaces/src.MeasurementOptions.html @@ -1,4 +1,4 @@ -MeasurementOptions | poolifier - v4.4.5

                                      Interface MeasurementOptions

                                      Measurement options.

                                      -
                                      interface MeasurementOptions {
                                          median: boolean;
                                      }

                                      Properties

                                      Properties

                                      median: boolean

                                      Set measurement median.

                                      -
                                      +MeasurementOptions | poolifier - v5.0.0
                                      poolifier - v5.0.0
                                        Preparing search index...

                                        Interface MeasurementOptions

                                        Measurement options.

                                        +
                                        interface MeasurementOptions {
                                            median: boolean;
                                        }
                                        Index

                                        Properties

                                        Properties

                                        median: boolean

                                        Set measurement median.

                                        +
                                        diff --git a/docs/interfaces/src.MeasurementStatistics.html b/docs/interfaces/src.MeasurementStatistics.html index 4e760afd6..e93867f81 100644 --- a/docs/interfaces/src.MeasurementStatistics.html +++ b/docs/interfaces/src.MeasurementStatistics.html @@ -1,14 +1,14 @@ -MeasurementStatistics | poolifier - v4.4.5

                                        Interface MeasurementStatisticsInternal

                                        Measurement statistics.

                                        -
                                        interface MeasurementStatistics {
                                            aggregate?: number;
                                            average?: number;
                                            history: CircularBuffer;
                                            maximum?: number;
                                            median?: number;
                                            minimum?: number;
                                        }

                                        Properties

                                        aggregate?: number

                                        Measurement aggregate.

                                        -
                                        average?: number

                                        Measurement average.

                                        -

                                        Measurement history.

                                        -
                                        maximum?: number

                                        Measurement maximum.

                                        -
                                        median?: number

                                        Measurement median.

                                        -
                                        minimum?: number

                                        Measurement minimum.

                                        -
                                        +MeasurementStatistics | poolifier - v5.0.0
                                        poolifier - v5.0.0
                                          Preparing search index...

                                          Interface MeasurementStatisticsInternal

                                          Measurement statistics.

                                          +
                                          interface MeasurementStatistics {
                                              aggregate?: number;
                                              average?: number;
                                              history: CircularBuffer;
                                              maximum?: number;
                                              median?: number;
                                              minimum?: number;
                                          }
                                          Index

                                          Properties

                                          aggregate?: number

                                          Measurement aggregate.

                                          +
                                          average?: number

                                          Measurement average.

                                          +

                                          Measurement history.

                                          +
                                          maximum?: number

                                          Measurement maximum.

                                          +
                                          median?: number

                                          Measurement median.

                                          +
                                          minimum?: number

                                          Measurement minimum.

                                          +
                                          diff --git a/docs/interfaces/src.MeasurementStatisticsRequirements.html b/docs/interfaces/src.MeasurementStatisticsRequirements.html index 2db52f1e1..c57d8480d 100644 --- a/docs/interfaces/src.MeasurementStatisticsRequirements.html +++ b/docs/interfaces/src.MeasurementStatisticsRequirements.html @@ -1,8 +1,8 @@ -MeasurementStatisticsRequirements | poolifier - v4.4.5

                                          Interface MeasurementStatisticsRequirementsInternal

                                          Measurement statistics requirements.

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

                                          Properties

                                          Properties

                                          aggregate: boolean

                                          Requires measurement aggregate.

                                          -
                                          average: boolean

                                          Requires measurement average.

                                          -
                                          median: boolean

                                          Requires measurement median.

                                          -
                                          +MeasurementStatisticsRequirements | poolifier - v5.0.0
                                          poolifier - v5.0.0
                                            Preparing search index...

                                            Interface MeasurementStatisticsRequirementsInternal

                                            Measurement statistics requirements.

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

                                            Properties

                                            Properties

                                            aggregate: boolean

                                            Requires measurement aggregate.

                                            +
                                            average: boolean

                                            Requires measurement average.

                                            +
                                            median: boolean

                                            Requires measurement median.

                                            +
                                            diff --git a/docs/interfaces/src.MessageValue.html b/docs/interfaces/src.MessageValue.html index be804416e..e789f9aad 100644 --- a/docs/interfaces/src.MessageValue.html +++ b/docs/interfaces/src.MessageValue.html @@ -1,52 +1,59 @@ -MessageValue | poolifier - v4.4.5

                                            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"
                                                    | "HARD"
                                                    | "SOFT"
                                                    | "failure";
                                                name?: string;
                                                port?: MessagePort;
                                                priority?: number;
                                                ready?: boolean;
                                                statistics?: WorkerStatistics;
                                                strategy?:
                                                    | "FAIR_SHARE"
                                                    | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                    | "LEAST_BUSY"
                                                    | "LEAST_ELU"
                                                    | "LEAST_USED"
                                                    | "ROUND_ROBIN"
                                                    | "WEIGHTED_ROUND_ROBIN";
                                                taskFunction?: string;
                                                taskFunctionOperation?: "add" | "default" | "remove";
                                                taskFunctionOperationStatus?: boolean;
                                                taskFunctionProperties?: TaskFunctionProperties;
                                                taskFunctionsProperties?: TaskFunctionProperties[];
                                                taskId?: `${string}-${string}-${string}-${string}-${string}`;
                                                taskPerformance?: TaskPerformance;
                                                timestamp?: number;
                                                transferList?: readonly 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

                                            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"
                                                | "HARD"
                                                | "SOFT"
                                                | "failure"

                                            Kill code.

                                            -
                                            name?: string

                                            Task name.

                                            -
                                            port?: MessagePort

                                            Message port.

                                            -
                                            priority?: number

                                            Task priority. Lower values have higher priority.

                                            -
                                            0
                                            +MessageValue | poolifier - v5.0.0
                                            poolifier - v5.0.0
                                              Preparing search index...

                                              Interface MessageValue<Data, ErrorData>Internal

                                              Message object that is passed between main worker and worker.

                                              +
                                              interface MessageValue<Data = unknown, ErrorData = unknown> {
                                                  abortable?: boolean;
                                                  checkActive?: boolean;
                                                  data?: Data;
                                                  kill?: true | "success" | "HARD" | "SOFT" | "failure";
                                                  name?: string;
                                                  port?: MessagePort;
                                                  priority?: number;
                                                  ready?: boolean;
                                                  statistics?: WorkerStatistics;
                                                  strategy?:
                                                      | "FAIR_SHARE"
                                                      | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                      | "LEAST_BUSY"
                                                      | "LEAST_ELU"
                                                      | "LEAST_USED"
                                                      | "ROUND_ROBIN"
                                                      | "WEIGHTED_ROUND_ROBIN";
                                                  taskFunction?: string;
                                                  taskFunctionOperation?: "add"
                                                  | "default"
                                                  | "remove";
                                                  taskFunctionOperationStatus?: boolean;
                                                  taskFunctionProperties?: TaskFunctionProperties;
                                                  taskFunctionsProperties?: TaskFunctionProperties[];
                                                  taskId?: `${string}-${string}-${string}-${string}-${string}`;
                                                  taskOperation?: "abort";
                                                  taskPerformance?: TaskPerformance;
                                                  timestamp?: number;
                                                  transferList?: readonly Transferable[];
                                                  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 Summary)

                                              Index

                                              Properties

                                              abortable?: boolean

                                              Whether the task is abortable or not.

                                              +
                                              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" | "HARD" | "SOFT" | "failure"

                                              Kill code.

                                              +
                                              name?: string

                                              Task name.

                                              +
                                              port?: MessagePort

                                              Message port.

                                              +
                                              priority?: number

                                              Task priority. Lower values have higher priority.

                                              +
                                              0
                                               
                                              -
                                              ready?: boolean

                                              Whether the worker is ready or not.

                                              -
                                              statistics?: WorkerStatistics

                                              Whether the worker computes the given statistics or not.

                                              -
                                              strategy?:
                                                  | "FAIR_SHARE"
                                                  | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                  | "LEAST_BUSY"
                                                  | "LEAST_ELU"
                                                  | "LEAST_USED"
                                                  | "ROUND_ROBIN"
                                                  | "WEIGHTED_ROUND_ROBIN"

                                              Task worker choice strategy.

                                              -
                                              taskFunction?: string

                                              Task function serialized to string.

                                              -
                                              taskFunctionOperation?: "add" | "default" | "remove"

                                              Task function operation:

                                              +
                                              ready?: boolean

                                              Whether the worker is ready or not.

                                              +
                                              statistics?: WorkerStatistics

                                              Whether the worker computes the given statistics or not.

                                              +
                                              strategy?:
                                                  | "FAIR_SHARE"
                                                  | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                  | "LEAST_BUSY"
                                                  | "LEAST_ELU"
                                                  | "LEAST_USED"
                                                  | "ROUND_ROBIN"
                                                  | "WEIGHTED_ROUND_ROBIN"

                                              Task worker choice strategy.

                                              +
                                              taskFunction?: string

                                              Task function serialized to string.

                                              +
                                              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.

                                              -
                                              taskFunctionProperties?: TaskFunctionProperties

                                              Task function properties.

                                              -
                                              taskFunctionsProperties?: TaskFunctionProperties[]

                                              Task functions properties.

                                              -
                                              taskId?: `${string}-${string}-${string}-${string}-${string}`

                                              Task UUID.

                                              -
                                              taskPerformance?: TaskPerformance

                                              Task performance.

                                              -
                                              timestamp?: number

                                              Timestamp.

                                              -
                                              transferList?: readonly TransferListItem[]

                                              Array of transferable objects.

                                              -
                                              workerError?: WorkerError<ErrorData>

                                              Worker error.

                                              -
                                              workerId?: number

                                              Worker id.

                                              -
                                              +
                                              taskFunctionOperationStatus?: boolean

                                              Whether the task function operation is successful or not.

                                              +
                                              taskFunctionProperties?: TaskFunctionProperties

                                              Task function properties.

                                              +
                                              taskFunctionsProperties?: TaskFunctionProperties[]

                                              Task functions properties.

                                              +
                                              taskId?: `${string}-${string}-${string}-${string}-${string}`

                                              Task UUID.

                                              +
                                              taskOperation?: "abort"

                                              Task operation:

                                              +
                                                +
                                              • 'abort' - Abort a task.
                                              • +
                                              +
                                              taskPerformance?: TaskPerformance

                                              Task performance.

                                              +
                                              timestamp?: number

                                              Timestamp.

                                              +
                                              transferList?: readonly Transferable[]

                                              Array of transferable objects.

                                              +
                                              workerError?: WorkerError<ErrorData>

                                              Worker error.

                                              +
                                              workerId?: number

                                              Worker id.

                                              +
                                              diff --git a/docs/interfaces/src.PoolInfo.html b/docs/interfaces/src.PoolInfo.html index e7db6a490..de38f8465 100644 --- a/docs/interfaces/src.PoolInfo.html +++ b/docs/interfaces/src.PoolInfo.html @@ -1,35 +1,35 @@ -PoolInfo | poolifier - v4.4.5

                                              Interface PoolInfo

                                              Pool information.

                                              -
                                              interface PoolInfo {
                                                  backPressure?: boolean;
                                                  backPressureWorkerNodes?: number;
                                                  busyWorkerNodes: number;
                                                  defaultStrategy:
                                                      | "FAIR_SHARE"
                                                      | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                      | "LEAST_BUSY"
                                                      | "LEAST_ELU"
                                                      | "LEAST_USED"
                                                      | "ROUND_ROBIN"
                                                      | "WEIGHTED_ROUND_ROBIN";
                                                  dynamicWorkerNodes?: number;
                                                  elu?: {
                                                      active: {
                                                          average?: number;
                                                          maximum: number;
                                                          median?: number;
                                                          minimum: number;
                                                      };
                                                      idle: {
                                                          average?: number;
                                                          maximum: number;
                                                          median?: number;
                                                          minimum: number;
                                                      };
                                                      utilization: {
                                                          average?: number;
                                                          median?: 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;
                                                  strategyRetries: number;
                                                  type: "fixed" | "dynamic";
                                                  utilization?: number;
                                                  version: string;
                                                  waitTime?: {
                                                      average?: number;
                                                      maximum: number;
                                                      median?: number;
                                                      minimum: number;
                                                  };
                                                  worker: "cluster" | "thread";
                                                  workerNodes: number;
                                              }

                                              Properties

                                              backPressure?: boolean
                                              backPressureWorkerNodes?: number

                                              Pool tasks back pressure worker nodes.

                                              -
                                              busyWorkerNodes: number

                                              Pool busy worker nodes.

                                              -
                                              defaultStrategy:
                                                  | "FAIR_SHARE"
                                                  | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                  | "LEAST_BUSY"
                                                  | "LEAST_ELU"
                                                  | "LEAST_USED"
                                                  | "ROUND_ROBIN"
                                                  | "WEIGHTED_ROUND_ROBIN"
                                              dynamicWorkerNodes?: number

                                              Pool dynamic worker nodes.

                                              -
                                              elu?: {
                                                  active: {
                                                      average?: number;
                                                      maximum: number;
                                                      median?: number;
                                                      minimum: number;
                                                  };
                                                  idle: {
                                                      average?: number;
                                                      maximum: number;
                                                      median?: number;
                                                      minimum: number;
                                                  };
                                                  utilization: {
                                                      average?: number;
                                                      median?: number;
                                                  };
                                              }
                                              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;
                                              }
                                              started: boolean
                                              stealingWorkerNodes?: number

                                              Pool tasks stealing worker nodes.

                                              -
                                              stolenTasks?: number
                                              strategyRetries: number
                                              type: "fixed" | "dynamic"
                                              utilization?: number

                                              Pool utilization.

                                              -
                                              version: string
                                              waitTime?: {
                                                  average?: number;
                                                  maximum: number;
                                                  median?: number;
                                                  minimum: number;
                                              }
                                              worker: "cluster" | "thread"
                                              workerNodes: number

                                              Pool total worker nodes.

                                              -
                                              +PoolInfo | poolifier - v5.0.0
                                              poolifier - v5.0.0
                                                Preparing search index...

                                                Interface PoolInfo

                                                Pool information.

                                                +
                                                interface PoolInfo {
                                                    backPressure?: boolean;
                                                    backPressureWorkerNodes?: number;
                                                    busyWorkerNodes: number;
                                                    defaultStrategy:
                                                        | "FAIR_SHARE"
                                                        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                        | "LEAST_BUSY"
                                                        | "LEAST_ELU"
                                                        | "LEAST_USED"
                                                        | "ROUND_ROBIN"
                                                        | "WEIGHTED_ROUND_ROBIN";
                                                    dynamicWorkerNodes?: number;
                                                    elu?: {
                                                        active: {
                                                            average?: number;
                                                            maximum: number;
                                                            median?: number;
                                                            minimum: number;
                                                        };
                                                        idle: {
                                                            average?: number;
                                                            maximum: number;
                                                            median?: number;
                                                            minimum: number;
                                                        };
                                                        utilization: { average?: number; median?: 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;
                                                    strategyRetries: number;
                                                    type: "fixed"
                                                    | "dynamic";
                                                    utilization?: number;
                                                    version: string;
                                                    waitTime?: {
                                                        average?: number;
                                                        maximum: number;
                                                        median?: number;
                                                        minimum: number;
                                                    };
                                                    worker: "cluster"
                                                    | "thread";
                                                    workerNodes: number;
                                                }
                                                Index

                                                Properties

                                                backPressure?: boolean
                                                backPressureWorkerNodes?: number

                                                Pool tasks back pressure worker nodes.

                                                +
                                                busyWorkerNodes: number

                                                Pool busy worker nodes.

                                                +
                                                defaultStrategy:
                                                    | "FAIR_SHARE"
                                                    | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                    | "LEAST_BUSY"
                                                    | "LEAST_ELU"
                                                    | "LEAST_USED"
                                                    | "ROUND_ROBIN"
                                                    | "WEIGHTED_ROUND_ROBIN"
                                                dynamicWorkerNodes?: number

                                                Pool dynamic worker nodes.

                                                +
                                                elu?: {
                                                    active: {
                                                        average?: number;
                                                        maximum: number;
                                                        median?: number;
                                                        minimum: number;
                                                    };
                                                    idle: {
                                                        average?: number;
                                                        maximum: number;
                                                        median?: number;
                                                        minimum: number;
                                                    };
                                                    utilization: { average?: number; median?: number };
                                                }
                                                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;
                                                }
                                                started: boolean
                                                stealingWorkerNodes?: number

                                                Pool tasks stealing worker nodes.

                                                +
                                                stolenTasks?: number
                                                strategyRetries: number
                                                type: "fixed" | "dynamic"
                                                utilization?: number

                                                Pool utilization.

                                                +
                                                version: string
                                                waitTime?: {
                                                    average?: number;
                                                    maximum: number;
                                                    median?: number;
                                                    minimum: number;
                                                }
                                                worker: "cluster" | "thread"
                                                workerNodes: number

                                                Pool total worker nodes.

                                                +
                                                diff --git a/docs/interfaces/src.PoolOptions.html b/docs/interfaces/src.PoolOptions.html index 6b31579c2..6d0cfb1d8 100644 --- a/docs/interfaces/src.PoolOptions.html +++ b/docs/interfaces/src.PoolOptions.html @@ -1,50 +1,50 @@ -PoolOptions | poolifier - v4.4.5

                                                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?:
                                                        | "FAIR_SHARE"
                                                        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                        | "LEAST_BUSY"
                                                        | "LEAST_ELU"
                                                        | "LEAST_USED"
                                                        | "ROUND_ROBIN"
                                                        | "WEIGHTED_ROUND_ROBIN";
                                                    workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions;
                                                    workerOptions?: WorkerOptions;
                                                }

                                                Type Parameters

                                                • Worker extends IWorker

                                                  Type of worker.

                                                  -

                                                Properties

                                                enableEvents?: boolean

                                                Pool events integrated with async resource emission.

                                                -
                                                true
                                                +PoolOptions | poolifier - v5.0.0
                                                poolifier - v5.0.0
                                                  Preparing search index...

                                                  Interface PoolOptions<Worker>

                                                  Options for a poolifier pool.

                                                  +
                                                  interface PoolOptions<Worker extends IWorker> {
                                                      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?:
                                                          | "FAIR_SHARE"
                                                          | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                          | "LEAST_BUSY"
                                                          | "LEAST_ELU"
                                                          | "LEAST_USED"
                                                          | "ROUND_ROBIN"
                                                          | "WEIGHTED_ROUND_ROBIN";
                                                      workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions;
                                                      workerOptions?: WorkerOptions;
                                                  }

                                                  Type Parameters

                                                  • Worker extends IWorker

                                                    Type of worker.

                                                    +
                                                  Index

                                                  Properties

                                                  enableEvents?: boolean

                                                  Pool events integrated with async resource emission.

                                                  +
                                                  true
                                                   
                                                  -
                                                  enableTasksQueue?: boolean

                                                  Pool worker node tasks queue.

                                                  -
                                                  false
                                                  +
                                                  enableTasksQueue?: boolean

                                                  Pool worker node tasks queue.

                                                  +
                                                  false
                                                   
                                                  -
                                                  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.

                                                  -

                                                  () => {}

                                                  -
                                                  exitHandler?: ExitHandler<Worker>

                                                  A function that will listen for exit event on each worker.

                                                  -

                                                  () => {}

                                                  -
                                                  messageHandler?: MessageHandler<Worker>

                                                  A function that will listen for message event on each worker.

                                                  -

                                                  () => {}

                                                  -
                                                  onlineHandler?: OnlineHandler<Worker>

                                                  A function that will listen for online event on each worker.

                                                  -

                                                  () => {}

                                                  -
                                                  restartWorkerOnError?: boolean

                                                  Restart worker on error.

                                                  -
                                                  settings?: ClusterSettings

                                                  Cluster settings.

                                                  -
                                                  startWorkers?: boolean

                                                  Whether to start the minimum number of workers at pool initialization.

                                                  -
                                                  true
                                                  +
                                                  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.

                                                  +

                                                  () => {}

                                                  +
                                                  exitHandler?: ExitHandler<Worker>

                                                  A function that will listen for exit event on each worker.

                                                  +

                                                  () => {}

                                                  +
                                                  messageHandler?: MessageHandler<Worker>

                                                  A function that will listen for message event on each worker.

                                                  +

                                                  () => {}

                                                  +
                                                  onlineHandler?: OnlineHandler<Worker>

                                                  A function that will listen for online event on each worker.

                                                  +

                                                  () => {}

                                                  +
                                                  restartWorkerOnError?: boolean

                                                  Restart worker on error.

                                                  +
                                                  settings?: ClusterSettings

                                                  Cluster settings.

                                                  +
                                                  startWorkers?: boolean

                                                  Whether to start the minimum number of workers at pool initialization.

                                                  +
                                                  true
                                                   
                                                  -
                                                  tasksQueueOptions?: TasksQueueOptions

                                                  Pool worker node tasks queue options.

                                                  -
                                                  workerChoiceStrategy?:
                                                      | "FAIR_SHARE"
                                                      | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                      | "LEAST_BUSY"
                                                      | "LEAST_ELU"
                                                      | "LEAST_USED"
                                                      | "ROUND_ROBIN"
                                                      | "WEIGHTED_ROUND_ROBIN"

                                                  The default worker choice strategy to use in this pool.

                                                  -
                                                  WorkerChoiceStrategies.ROUND_ROBIN
                                                  +
                                                  tasksQueueOptions?: TasksQueueOptions

                                                  Pool worker node tasks queue options.

                                                  +
                                                  workerChoiceStrategy?:
                                                      | "FAIR_SHARE"
                                                      | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                      | "LEAST_BUSY"
                                                      | "LEAST_ELU"
                                                      | "LEAST_USED"
                                                      | "ROUND_ROBIN"
                                                      | "WEIGHTED_ROUND_ROBIN"

                                                  The default worker choice strategy to use in this pool.

                                                  +
                                                  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.

                                                  +
                                                  diff --git a/docs/interfaces/src.PriorityQueue.html b/docs/interfaces/src.PriorityQueue.html new file mode 100644 index 000000000..7ef9652c2 --- /dev/null +++ b/docs/interfaces/src.PriorityQueue.html @@ -0,0 +1,35 @@ +PriorityQueue | poolifier - v5.0.0
                                                  poolifier - v5.0.0
                                                    Preparing search index...

                                                    Interface PriorityQueue<T>Internal

                                                    Priority queue.

                                                    +
                                                    interface PriorityQueue<T> {
                                                        maxSize: number;
                                                        get buckets(): number;
                                                        get enablePriority(): boolean;
                                                        set enablePriority(enablePriority: boolean): void;
                                                        get size(): number;
                                                        "[iterator]"(): Iterator<T>;
                                                        clear(): void;
                                                        delete(data: T): boolean;
                                                        dequeue(bucket?: number): undefined | T;
                                                        enqueue(data: T, priority?: number): number;
                                                    }

                                                    Type Parameters

                                                    • T

                                                      Type of priority queue data.

                                                      +
                                                    Index

                                                    Properties

                                                    maxSize: number

                                                    The priority queue maximum size.

                                                    +

                                                    Accessors

                                                    • get buckets(): number

                                                      The number of filled prioritized buckets.

                                                      +

                                                      Returns number

                                                      The number of filled prioritized buckets.

                                                      +
                                                    • get enablePriority(): boolean

                                                      Whether priority is enabled.

                                                      +

                                                      Returns boolean

                                                      Whether priority is enabled.

                                                      +
                                                    • set enablePriority(enablePriority: boolean): void

                                                      Enables/disables priority.

                                                      +

                                                      Parameters

                                                      • enablePriority: boolean

                                                        Whether to enable priority.

                                                        +

                                                      Returns void

                                                    Methods

                                                    • Deletes the given data from the priority queue.

                                                      +

                                                      Parameters

                                                      • data: T

                                                        Data to delete.

                                                        +

                                                      Returns boolean

                                                      true if the data was deleted, false otherwise.

                                                      +
                                                    • Dequeue data from the priority queue.

                                                      +

                                                      Parameters

                                                      • Optionalbucket: number

                                                        The prioritized bucket to dequeue from.

                                                        +

                                                      Returns undefined | T

                                                      The dequeued data or undefined if the priority queue is empty.

                                                      +
                                                    • Enqueue data into the priority queue.

                                                      +

                                                      Parameters

                                                      • data: T

                                                        Data to enqueue.

                                                        +
                                                      • Optionalpriority: number

                                                        Priority of the data. Lower values have higher priority.

                                                        +

                                                      Returns number

                                                      The new size of the priority queue.

                                                      +
                                                    diff --git a/docs/interfaces/src.PromiseResponseWrapper.html b/docs/interfaces/src.PromiseResponseWrapper.html index 0a14d86a6..3f680944b 100644 --- a/docs/interfaces/src.PromiseResponseWrapper.html +++ b/docs/interfaces/src.PromiseResponseWrapper.html @@ -1,11 +1,13 @@ -PromiseResponseWrapper | poolifier - v4.4.5

                                                    Interface PromiseResponseWrapper<Response>Internal

                                                    An object holding the task execution response promise resolve/reject callbacks.

                                                    -
                                                    interface PromiseResponseWrapper<Response> {
                                                        asyncResource?: AsyncResource;
                                                        reject: ((reason?: unknown) => void);
                                                        resolve: ((value: Response | PromiseLike<Response>) => 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?: unknown) => void)

                                                    Reject callback to reject the promise.

                                                    -
                                                    resolve: ((value: Response | PromiseLike<Response>) => void)

                                                    Resolve callback to fulfill the promise.

                                                    -
                                                    workerNodeKey: number

                                                    The worker node key executing the task.

                                                    -
                                                    +PromiseResponseWrapper | poolifier - v5.0.0
                                                    poolifier - v5.0.0
                                                      Preparing search index...

                                                      Interface PromiseResponseWrapper<Response>Internal

                                                      An object holding the task execution response promise resolve/reject callbacks.

                                                      +
                                                      interface PromiseResponseWrapper<Response = unknown> {
                                                          abortSignal?: AbortSignal;
                                                          asyncResource?: AsyncResource;
                                                          reject: (reason?: unknown) => void;
                                                          resolve: (value: Response | PromiseLike<Response>) => void;
                                                          workerNodeKey: number;
                                                      }

                                                      Type Parameters

                                                      • Response = unknown

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

                                                        +
                                                      Index

                                                      Properties

                                                      abortSignal?: AbortSignal

                                                      The task abort signal.

                                                      +
                                                      asyncResource?: AsyncResource

                                                      The asynchronous resource used to track the task execution.

                                                      +
                                                      reject: (reason?: unknown) => void

                                                      Reject callback to reject the promise.

                                                      +
                                                      resolve: (value: Response | PromiseLike<Response>) => void

                                                      Resolve callback to fulfill the promise.

                                                      +
                                                      workerNodeKey: number

                                                      The worker node key executing the task.

                                                      +
                                                      diff --git a/docs/interfaces/src.StrategyData.html b/docs/interfaces/src.StrategyData.html index faf49bd81..d42450882 100644 --- a/docs/interfaces/src.StrategyData.html +++ b/docs/interfaces/src.StrategyData.html @@ -1,3 +1,3 @@ -StrategyData | poolifier - v4.4.5

                                                      Interface StrategyDataInternal

                                                      Worker choice strategy data.

                                                      -
                                                      interface StrategyData {
                                                          virtualTaskEndTimestamp?: number;
                                                      }

                                                      Properties

                                                      virtualTaskEndTimestamp?: number
                                                      +StrategyData | poolifier - v5.0.0
                                                      poolifier - v5.0.0
                                                        Preparing search index...

                                                        Interface StrategyDataInternal

                                                        Worker choice strategy data.

                                                        +
                                                        interface StrategyData {
                                                            virtualTaskEndTimestamp?: number;
                                                        }
                                                        Index

                                                        Properties

                                                        virtualTaskEndTimestamp?: number
                                                        diff --git a/docs/interfaces/src.StrategyPolicy.html b/docs/interfaces/src.StrategyPolicy.html index 3b968046d..6ab35e173 100644 --- a/docs/interfaces/src.StrategyPolicy.html +++ b/docs/interfaces/src.StrategyPolicy.html @@ -1,6 +1,6 @@ -StrategyPolicy | poolifier - v4.4.5

                                                        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.

                                                        -
                                                        +StrategyPolicy | poolifier - v5.0.0
                                                        poolifier - v5.0.0
                                                          Preparing search index...

                                                          Interface StrategyPolicyInternal

                                                          Strategy policy.

                                                          +
                                                          interface StrategyPolicy {
                                                              dynamicWorkerReady: boolean;
                                                              dynamicWorkerUsage: boolean;
                                                          }
                                                          Index

                                                          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.

                                                          +
                                                          diff --git a/docs/interfaces/src.Task.html b/docs/interfaces/src.Task.html index 4d713a9ef..76bc3624f 100644 --- a/docs/interfaces/src.Task.html +++ b/docs/interfaces/src.Task.html @@ -1,20 +1,22 @@ -Task | poolifier - v4.4.5

                                                          Interface Task<Data>Internal

                                                          Message object that is passed as a task between main worker and worker.

                                                          -
                                                          interface Task<Data> {
                                                              data?: Data;
                                                              name?: string;
                                                              priority?: number;
                                                              strategy?:
                                                                  | "FAIR_SHARE"
                                                                  | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                  | "LEAST_BUSY"
                                                                  | "LEAST_ELU"
                                                                  | "LEAST_USED"
                                                                  | "ROUND_ROBIN"
                                                                  | "WEIGHTED_ROUND_ROBIN";
                                                              taskId?: `${string}-${string}-${string}-${string}-${string}`;
                                                              timestamp?: number;
                                                              transferList?: readonly 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.

                                                          -
                                                          priority?: number

                                                          Task priority. Lower values have higher priority.

                                                          -
                                                          0
                                                          +Task | poolifier - v5.0.0
                                                          poolifier - v5.0.0
                                                            Preparing search index...

                                                            Interface Task<Data>Internal

                                                            Message object that is passed as a task between main worker and worker.

                                                            +
                                                            interface Task<Data = unknown> {
                                                                abortable?: boolean;
                                                                data?: Data;
                                                                name?: string;
                                                                priority?: number;
                                                                strategy?:
                                                                    | "FAIR_SHARE"
                                                                    | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                    | "LEAST_BUSY"
                                                                    | "LEAST_ELU"
                                                                    | "LEAST_USED"
                                                                    | "ROUND_ROBIN"
                                                                    | "WEIGHTED_ROUND_ROBIN";
                                                                taskId?: `${string}-${string}-${string}-${string}-${string}`;
                                                                timestamp?: number;
                                                                transferList?: readonly Transferable[];
                                                            }

                                                            Type Parameters

                                                            • Data = unknown

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

                                                              +

                                                            Hierarchy (View Summary)

                                                            Index

                                                            Properties

                                                            abortable?: boolean

                                                            Whether the task is abortable or not.

                                                            +
                                                            data?: Data

                                                            Task input data that will be passed to the worker.

                                                            +
                                                            name?: string

                                                            Task name.

                                                            +
                                                            priority?: number

                                                            Task priority. Lower values have higher priority.

                                                            +
                                                            0
                                                             
                                                            -
                                                            strategy?:
                                                                | "FAIR_SHARE"
                                                                | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                | "LEAST_BUSY"
                                                                | "LEAST_ELU"
                                                                | "LEAST_USED"
                                                                | "ROUND_ROBIN"
                                                                | "WEIGHTED_ROUND_ROBIN"

                                                            Task worker choice strategy.

                                                            -
                                                            taskId?: `${string}-${string}-${string}-${string}-${string}`

                                                            Task UUID.

                                                            -
                                                            timestamp?: number

                                                            Timestamp.

                                                            -
                                                            transferList?: readonly TransferListItem[]

                                                            Array of transferable objects.

                                                            -
                                                            +
                                                            strategy?:
                                                                | "FAIR_SHARE"
                                                                | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                | "LEAST_BUSY"
                                                                | "LEAST_ELU"
                                                                | "LEAST_USED"
                                                                | "ROUND_ROBIN"
                                                                | "WEIGHTED_ROUND_ROBIN"

                                                            Task worker choice strategy.

                                                            +
                                                            taskId?: `${string}-${string}-${string}-${string}-${string}`

                                                            Task UUID.

                                                            +
                                                            timestamp?: number

                                                            Timestamp.

                                                            +
                                                            transferList?: readonly Transferable[]

                                                            Array of transferable objects.

                                                            +
                                                            diff --git a/docs/interfaces/src.TaskFunctionObject.html b/docs/interfaces/src.TaskFunctionObject.html index f5716bfe9..be8d619f4 100644 --- a/docs/interfaces/src.TaskFunctionObject.html +++ b/docs/interfaces/src.TaskFunctionObject.html @@ -1,10 +1,10 @@ -TaskFunctionObject | poolifier - v4.4.5

                                                            Interface TaskFunctionObject<Data, Response>

                                                            Task function object.

                                                            -
                                                            interface TaskFunctionObject<Data, Response> {
                                                                priority?: number;
                                                                strategy?:
                                                                    | "FAIR_SHARE"
                                                                    | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                    | "LEAST_BUSY"
                                                                    | "LEAST_ELU"
                                                                    | "LEAST_USED"
                                                                    | "ROUND_ROBIN"
                                                                    | "WEIGHTED_ROUND_ROBIN";
                                                                taskFunction: TaskFunction<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.

                                                              -

                                                            Properties

                                                            priority?: number

                                                            Task function priority. Lower values have higher priority.

                                                            -
                                                            strategy?:
                                                                | "FAIR_SHARE"
                                                                | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                | "LEAST_BUSY"
                                                                | "LEAST_ELU"
                                                                | "LEAST_USED"
                                                                | "ROUND_ROBIN"
                                                                | "WEIGHTED_ROUND_ROBIN"

                                                            Task function worker choice strategy.

                                                            -
                                                            taskFunction: TaskFunction<Data, Response>

                                                            Task function.

                                                            -
                                                            +TaskFunctionObject | poolifier - v5.0.0
                                                            poolifier - v5.0.0
                                                              Preparing search index...

                                                              Interface TaskFunctionObject<Data, Response>

                                                              Task function object.

                                                              +
                                                              interface TaskFunctionObject<Data = unknown, Response = unknown> {
                                                                  priority?: number;
                                                                  strategy?:
                                                                      | "FAIR_SHARE"
                                                                      | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                      | "LEAST_BUSY"
                                                                      | "LEAST_ELU"
                                                                      | "LEAST_USED"
                                                                      | "ROUND_ROBIN"
                                                                      | "WEIGHTED_ROUND_ROBIN";
                                                                  taskFunction: TaskFunction<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.

                                                                +
                                                              Index

                                                              Properties

                                                              priority?: number

                                                              Task function priority. Lower values have higher priority.

                                                              +
                                                              strategy?:
                                                                  | "FAIR_SHARE"
                                                                  | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                  | "LEAST_BUSY"
                                                                  | "LEAST_ELU"
                                                                  | "LEAST_USED"
                                                                  | "ROUND_ROBIN"
                                                                  | "WEIGHTED_ROUND_ROBIN"

                                                              Task function worker choice strategy.

                                                              +
                                                              taskFunction: TaskFunction<Data, Response>

                                                              Task function.

                                                              +
                                                              diff --git a/docs/interfaces/src.TaskFunctionOperationResult.html b/docs/interfaces/src.TaskFunctionOperationResult.html index a8cf66683..41317ac47 100644 --- a/docs/interfaces/src.TaskFunctionOperationResult.html +++ b/docs/interfaces/src.TaskFunctionOperationResult.html @@ -1,4 +1,4 @@ -TaskFunctionOperationResult | poolifier - v4.4.5

                                                              Interface TaskFunctionOperationResult

                                                              Task function operation result.

                                                              -
                                                              interface TaskFunctionOperationResult {
                                                                  error?: Error;
                                                                  status: boolean;
                                                              }

                                                              Properties

                                                              Properties

                                                              error?: Error
                                                              status: boolean
                                                              +TaskFunctionOperationResult | poolifier - v5.0.0
                                                              poolifier - v5.0.0
                                                                Preparing search index...

                                                                Interface TaskFunctionOperationResult

                                                                Task function operation result.

                                                                +
                                                                interface TaskFunctionOperationResult {
                                                                    error?: Error;
                                                                    status: boolean;
                                                                }
                                                                Index

                                                                Properties

                                                                Properties

                                                                error?: Error
                                                                status: boolean
                                                                diff --git a/docs/interfaces/src.TaskFunctionProperties.html b/docs/interfaces/src.TaskFunctionProperties.html index 909eb7f90..f1b6968f6 100644 --- a/docs/interfaces/src.TaskFunctionProperties.html +++ b/docs/interfaces/src.TaskFunctionProperties.html @@ -1,8 +1,8 @@ -TaskFunctionProperties | poolifier - v4.4.5

                                                                Interface TaskFunctionProperties

                                                                Task function properties.

                                                                -
                                                                interface TaskFunctionProperties {
                                                                    name: string;
                                                                    priority?: number;
                                                                    strategy?:
                                                                        | "FAIR_SHARE"
                                                                        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                        | "LEAST_BUSY"
                                                                        | "LEAST_ELU"
                                                                        | "LEAST_USED"
                                                                        | "ROUND_ROBIN"
                                                                        | "WEIGHTED_ROUND_ROBIN";
                                                                }

                                                                Properties

                                                                Properties

                                                                name: string

                                                                Task function name.

                                                                -
                                                                priority?: number

                                                                Task function priority. Lower values have higher priority.

                                                                -
                                                                strategy?:
                                                                    | "FAIR_SHARE"
                                                                    | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                    | "LEAST_BUSY"
                                                                    | "LEAST_ELU"
                                                                    | "LEAST_USED"
                                                                    | "ROUND_ROBIN"
                                                                    | "WEIGHTED_ROUND_ROBIN"

                                                                Task function worker choice strategy.

                                                                -
                                                                +TaskFunctionProperties | poolifier - v5.0.0
                                                                poolifier - v5.0.0
                                                                  Preparing search index...

                                                                  Interface TaskFunctionProperties

                                                                  Task function properties.

                                                                  +
                                                                  interface TaskFunctionProperties {
                                                                      name: string;
                                                                      priority?: number;
                                                                      strategy?:
                                                                          | "FAIR_SHARE"
                                                                          | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                          | "LEAST_BUSY"
                                                                          | "LEAST_ELU"
                                                                          | "LEAST_USED"
                                                                          | "ROUND_ROBIN"
                                                                          | "WEIGHTED_ROUND_ROBIN";
                                                                  }
                                                                  Index

                                                                  Properties

                                                                  Properties

                                                                  name: string

                                                                  Task function name.

                                                                  +
                                                                  priority?: number

                                                                  Task function priority. Lower values have higher priority.

                                                                  +
                                                                  strategy?:
                                                                      | "FAIR_SHARE"
                                                                      | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                      | "LEAST_BUSY"
                                                                      | "LEAST_ELU"
                                                                      | "LEAST_USED"
                                                                      | "ROUND_ROBIN"
                                                                      | "WEIGHTED_ROUND_ROBIN"

                                                                  Task function worker choice strategy.

                                                                  +
                                                                  diff --git a/docs/interfaces/src.TaskPerformance.html b/docs/interfaces/src.TaskPerformance.html index 0463bbc61..d2a670e0d 100644 --- a/docs/interfaces/src.TaskPerformance.html +++ b/docs/interfaces/src.TaskPerformance.html @@ -1,10 +1,10 @@ -TaskPerformance | poolifier - v4.4.5

                                                                  Interface TaskPerformanceInternal

                                                                  Task performance.

                                                                  -
                                                                  interface TaskPerformance {
                                                                      elu?: EventLoopUtilization;
                                                                      name: string;
                                                                      runTime?: number;
                                                                      timestamp: number;
                                                                  }

                                                                  Properties

                                                                  Properties

                                                                  elu?: EventLoopUtilization

                                                                  Task event loop utilization.

                                                                  -
                                                                  name: string

                                                                  Task name.

                                                                  -
                                                                  runTime?: number

                                                                  Task runtime.

                                                                  -
                                                                  timestamp: number

                                                                  Task performance timestamp.

                                                                  -
                                                                  +TaskPerformance | poolifier - v5.0.0
                                                                  poolifier - v5.0.0
                                                                    Preparing search index...

                                                                    Interface TaskPerformanceInternal

                                                                    Task performance.

                                                                    +
                                                                    interface TaskPerformance {
                                                                        elu?: EventLoopUtilization;
                                                                        name: string;
                                                                        runTime?: number;
                                                                        timestamp: number;
                                                                    }
                                                                    Index

                                                                    Properties

                                                                    Properties

                                                                    elu?: EventLoopUtilization

                                                                    Task event loop utilization.

                                                                    +
                                                                    name: string

                                                                    Task name.

                                                                    +
                                                                    runTime?: number

                                                                    Task runtime.

                                                                    +
                                                                    timestamp: number

                                                                    Task performance timestamp.

                                                                    +
                                                                    diff --git a/docs/interfaces/src.TaskStatistics.html b/docs/interfaces/src.TaskStatistics.html index 2588353d8..233a3f248 100644 --- a/docs/interfaces/src.TaskStatistics.html +++ b/docs/interfaces/src.TaskStatistics.html @@ -1,16 +1,16 @@ -TaskStatistics | poolifier - v4.4.5

                                                                    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.

                                                                    -
                                                                    +TaskStatistics | poolifier - v5.0.0
                                                                    poolifier - v5.0.0
                                                                      Preparing search index...

                                                                      Interface TaskStatisticsInternal

                                                                      Task statistics.

                                                                      +
                                                                      interface TaskStatistics {
                                                                          executed: number;
                                                                          executing: number;
                                                                          failed: number;
                                                                          maxQueued?: number;
                                                                          queued: number;
                                                                          sequentiallyStolen: number;
                                                                          stolen: number;
                                                                      }
                                                                      Index

                                                                      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.

                                                                      +
                                                                      diff --git a/docs/interfaces/src.TaskStatisticsRequirements.html b/docs/interfaces/src.TaskStatisticsRequirements.html index e5d3fd036..94eeea499 100644 --- a/docs/interfaces/src.TaskStatisticsRequirements.html +++ b/docs/interfaces/src.TaskStatisticsRequirements.html @@ -1,8 +1,8 @@ -TaskStatisticsRequirements | poolifier - v4.4.5

                                                                      Interface TaskStatisticsRequirementsInternal

                                                                      Pool worker node worker usage statistics requirements.

                                                                      -
                                                                      interface TaskStatisticsRequirements {
                                                                          elu: MeasurementStatisticsRequirements;
                                                                          runTime: MeasurementStatisticsRequirements;
                                                                          waitTime: MeasurementStatisticsRequirements;
                                                                      }

                                                                      Properties

                                                                      Properties

                                                                      Tasks event loop utilization requirements.

                                                                      -

                                                                      Tasks runtime requirements.

                                                                      -

                                                                      Tasks wait time requirements.

                                                                      -
                                                                      +TaskStatisticsRequirements | poolifier - v5.0.0
                                                                      poolifier - v5.0.0
                                                                        Preparing search index...

                                                                        Interface TaskStatisticsRequirementsInternal

                                                                        Pool worker node worker usage statistics requirements.

                                                                        +
                                                                        interface TaskStatisticsRequirements {
                                                                            elu: MeasurementStatisticsRequirements;
                                                                            runTime: MeasurementStatisticsRequirements;
                                                                            waitTime: MeasurementStatisticsRequirements;
                                                                        }
                                                                        Index

                                                                        Properties

                                                                        Properties

                                                                        Tasks event loop utilization requirements.

                                                                        +

                                                                        Tasks runtime requirements.

                                                                        +

                                                                        Tasks wait time requirements.

                                                                        +
                                                                        diff --git a/docs/interfaces/src.TasksQueueOptions.html b/docs/interfaces/src.TasksQueueOptions.html index 149e0834f..c1d055a34 100644 --- a/docs/interfaces/src.TasksQueueOptions.html +++ b/docs/interfaces/src.TasksQueueOptions.html @@ -1,32 +1,32 @@ -TasksQueueOptions | poolifier - v4.4.5

                                                                        Interface TasksQueueOptions

                                                                        Worker node tasks queue options.

                                                                        -
                                                                        interface TasksQueueOptions {
                                                                            concurrency?: number;
                                                                            size?: number;
                                                                            tasksFinishedTimeout?: number;
                                                                            tasksStealingOnBackPressure?: boolean;
                                                                            tasksStealingRatio?: number;
                                                                            taskStealing?: boolean;
                                                                        }

                                                                        Properties

                                                                        concurrency?: number

                                                                        Maximum number of tasks that can be executed concurrently on a worker node.

                                                                        -
                                                                        1
                                                                        +TasksQueueOptions | poolifier - v5.0.0
                                                                        poolifier - v5.0.0
                                                                          Preparing search index...

                                                                          Interface TasksQueueOptions

                                                                          Worker node tasks queue options.

                                                                          +
                                                                          interface TasksQueueOptions {
                                                                              concurrency?: number;
                                                                              size?: number;
                                                                              tasksFinishedTimeout?: number;
                                                                              tasksStealingOnBackPressure?: boolean;
                                                                              tasksStealingRatio?: number;
                                                                              taskStealing?: boolean;
                                                                          }
                                                                          Index

                                                                          Properties

                                                                          concurrency?: number

                                                                          Maximum number of tasks that can be executed concurrently on a worker node.

                                                                          +
                                                                          1
                                                                           
                                                                          -
                                                                          size?: number

                                                                          Maximum tasks queue size per worker node flagging it as back pressured.

                                                                          -
                                                                          (pool maximum size)^2
                                                                          +
                                                                          size?: number

                                                                          Maximum tasks queue size per worker node flagging it as back pressured.

                                                                          +
                                                                          (pool maximum size)^2
                                                                           
                                                                          -
                                                                          tasksFinishedTimeout?: number

                                                                          Queued tasks finished timeout in milliseconds at worker node termination.

                                                                          -
                                                                          2000
                                                                          +
                                                                          tasksFinishedTimeout?: number

                                                                          Queued tasks finished timeout in milliseconds at worker node termination.

                                                                          +
                                                                          2000
                                                                           
                                                                          -
                                                                          tasksStealingOnBackPressure?: boolean

                                                                          Whether to enable tasks stealing under back pressure.

                                                                          -
                                                                          true
                                                                          +
                                                                          tasksStealingOnBackPressure?: boolean

                                                                          Whether to enable tasks stealing under back pressure.

                                                                          +
                                                                          true
                                                                           
                                                                          -
                                                                          tasksStealingRatio?: number

                                                                          Ratio of worker nodes that can steal tasks from another worker node.

                                                                          -
                                                                          0.6
                                                                          +
                                                                          tasksStealingRatio?: number

                                                                          Ratio of worker nodes that can steal tasks from another worker node.

                                                                          +
                                                                          0.6
                                                                           
                                                                          -
                                                                          taskStealing?: boolean

                                                                          Whether to enable task stealing on idle.

                                                                          -
                                                                          true
                                                                          +
                                                                          taskStealing?: boolean

                                                                          Whether to enable task stealing on idle.

                                                                          +
                                                                          true
                                                                           
                                                                          -
                                                                          +
                                                                          diff --git a/docs/interfaces/src.WorkerChoiceStrategiesContext.html b/docs/interfaces/src.WorkerChoiceStrategiesContext.html new file mode 100644 index 000000000..c4806c6a0 --- /dev/null +++ b/docs/interfaces/src.WorkerChoiceStrategiesContext.html @@ -0,0 +1,40 @@ +WorkerChoiceStrategiesContext | poolifier - v5.0.0
                                                                          poolifier - v5.0.0
                                                                            Preparing search index...

                                                                            Interface WorkerChoiceStrategiesContext<Worker, Data, Response>Internal

                                                                            The worker choice strategies context.

                                                                            +
                                                                            interface WorkerChoiceStrategiesContext<
                                                                                Worker extends IWorker,
                                                                                Data = unknown,
                                                                                Response = unknown,
                                                                            > {
                                                                                retriesCount: number;
                                                                                execute(
                                                                                    workerChoiceStrategy?:
                                                                                        | "FAIR_SHARE"
                                                                                        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                                        | "LEAST_BUSY"
                                                                                        | "LEAST_ELU"
                                                                                        | "LEAST_USED"
                                                                                        | "ROUND_ROBIN"
                                                                                        | "WEIGHTED_ROUND_ROBIN",
                                                                                ): number;
                                                                                getPolicy(): StrategyPolicy;
                                                                                getTaskStatisticsRequirements(): TaskStatisticsRequirements;
                                                                                remove(workerNodeKey: number): boolean;
                                                                                setDefaultWorkerChoiceStrategy(
                                                                                    workerChoiceStrategy:
                                                                                        | "FAIR_SHARE"
                                                                                        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                                        | "LEAST_BUSY"
                                                                                        | "LEAST_ELU"
                                                                                        | "LEAST_USED"
                                                                                        | "ROUND_ROBIN"
                                                                                        | "WEIGHTED_ROUND_ROBIN",
                                                                                    opts?: WorkerChoiceStrategyOptions,
                                                                                ): void;
                                                                                setOptions(opts: undefined | WorkerChoiceStrategyOptions): void;
                                                                                syncWorkerChoiceStrategies(
                                                                                    workerChoiceStrategies: Set<
                                                                                        | "FAIR_SHARE"
                                                                                        | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                                        | "LEAST_BUSY"
                                                                                        | "LEAST_ELU"
                                                                                        | "LEAST_USED"
                                                                                        | "ROUND_ROBIN"
                                                                                        | "WEIGHTED_ROUND_ROBIN",
                                                                                    >,
                                                                                    opts?: WorkerChoiceStrategyOptions,
                                                                                ): void;
                                                                                update(workerNodeKey: number): boolean;
                                                                            }

                                                                            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.

                                                                              +
                                                                            Index

                                                                            Properties

                                                                            retriesCount: number

                                                                            The number of worker choice strategies execution retries.

                                                                            +

                                                                            Methods

                                                                            • Executes the given worker choice strategy in the context algorithm.

                                                                              +

                                                                              Parameters

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

                                                                                The worker choice strategy algorithm to execute.

                                                                                +

                                                                              Returns number

                                                                              The key of the worker node.

                                                                              +
                                                                              this.defaultWorkerChoiceStrategy
                                                                              +
                                                                              + +

                                                                              https://nodejs.org/api/errors.html#class-error If after computed retries the worker node key is null or undefined.

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

                                                                              +

                                                                              Parameters

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

                                                                                The default worker choice strategy to set.

                                                                                +
                                                                              • Optionalopts: WorkerChoiceStrategyOptions

                                                                                The worker choice strategy options.

                                                                                +

                                                                              Returns void

                                                                            • Synchronizes the active worker choice strategies in the context with the given worker choice strategies.

                                                                              +

                                                                              Parameters

                                                                              • workerChoiceStrategies: Set<
                                                                                    | "FAIR_SHARE"
                                                                                    | "INTERLEAVED_WEIGHTED_ROUND_ROBIN"
                                                                                    | "LEAST_BUSY"
                                                                                    | "LEAST_ELU"
                                                                                    | "LEAST_USED"
                                                                                    | "ROUND_ROBIN"
                                                                                    | "WEIGHTED_ROUND_ROBIN",
                                                                                >

                                                                                The worker choice strategies to synchronize.

                                                                                +
                                                                              • Optionalopts: WorkerChoiceStrategyOptions

                                                                                The worker choice strategy options.

                                                                                +

                                                                              Returns void

                                                                            diff --git a/docs/interfaces/src.WorkerChoiceStrategyOptions.html b/docs/interfaces/src.WorkerChoiceStrategyOptions.html index b8233b19e..80a25b392 100644 --- a/docs/interfaces/src.WorkerChoiceStrategyOptions.html +++ b/docs/interfaces/src.WorkerChoiceStrategyOptions.html @@ -1,25 +1,25 @@ -WorkerChoiceStrategyOptions | poolifier - v4.4.5

                                                                            Interface WorkerChoiceStrategyOptions

                                                                            Worker choice strategy options.

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

                                                                            Properties

                                                                            Event loop utilization options.

                                                                            -
                                                                            { median: false }
                                                                            +WorkerChoiceStrategyOptions | poolifier - v5.0.0
                                                                            poolifier - v5.0.0
                                                                              Preparing search index...

                                                                              Interface WorkerChoiceStrategyOptions

                                                                              Worker choice strategy options.

                                                                              +
                                                                              interface WorkerChoiceStrategyOptions {
                                                                                  elu?: MeasurementOptions;
                                                                                  measurement?: "elu" | "runTime" | "waitTime";
                                                                                  runTime?: MeasurementOptions;
                                                                                  waitTime?: MeasurementOptions;
                                                                                  weights?: Record<number, number>;
                                                                              }
                                                                              Index

                                                                              Properties

                                                                              Event loop utilization options.

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

                                                                              Measurement to use in worker choice strategy supporting it.

                                                                              -

                                                                              Runtime options.

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

                                                                              Measurement to use in worker choice strategy supporting it.

                                                                              +

                                                                              Runtime options.

                                                                              +
                                                                              { median: false }
                                                                               
                                                                              -

                                                                              Wait time options.

                                                                              -
                                                                              { median: false }
                                                                              +

                                                                              Wait time options.

                                                                              +
                                                                              { 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.

                                                                              -
                                                                              Weights computed automatically given the CPU performance.
                                                                              +
                                                                              Weights computed automatically given the CPU performance.
                                                                               
                                                                              -
                                                                              +
                                                                              diff --git a/docs/interfaces/src.WorkerError.html b/docs/interfaces/src.WorkerError.html index d0b484278..f0792870b 100644 --- a/docs/interfaces/src.WorkerError.html +++ b/docs/interfaces/src.WorkerError.html @@ -1,13 +1,15 @@ -WorkerError | poolifier - v4.4.5

                                                                              Interface WorkerError<Data>

                                                                              Worker error.

                                                                              -
                                                                              interface WorkerError<Data> {
                                                                                  data?: Data;
                                                                                  error?: Error;
                                                                                  message: string;
                                                                                  name?: string;
                                                                                  stack?: 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.

                                                                              -
                                                                              error?: Error

                                                                              Error object.

                                                                              -
                                                                              message: string

                                                                              Error message.

                                                                              -
                                                                              name?: string

                                                                              Task function name triggering the error.

                                                                              -
                                                                              stack?: string

                                                                              Error stack trace.

                                                                              -
                                                                              +WorkerError | poolifier - v5.0.0
                                                                              poolifier - v5.0.0
                                                                                Preparing search index...

                                                                                Interface WorkerError<Data>

                                                                                Worker error.

                                                                                +
                                                                                interface WorkerError<Data = unknown> {
                                                                                    aborted: boolean;
                                                                                    data?: Data;
                                                                                    error?: Error;
                                                                                    message: string;
                                                                                    name?: string;
                                                                                    stack?: string;
                                                                                }

                                                                                Type Parameters

                                                                                • Data = unknown

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

                                                                                  +
                                                                                Index

                                                                                Properties

                                                                                aborted: boolean

                                                                                Whether the error is an abort error or not.

                                                                                +
                                                                                data?: Data

                                                                                Data triggering the error.

                                                                                +
                                                                                error?: Error

                                                                                Error object.

                                                                                +
                                                                                message: string

                                                                                Error message.

                                                                                +
                                                                                name?: string

                                                                                Task function name triggering the error.

                                                                                +
                                                                                stack?: string

                                                                                Error stack trace.

                                                                                +
                                                                                diff --git a/docs/interfaces/src.WorkerInfo.html b/docs/interfaces/src.WorkerInfo.html index 1b0581682..4a5c2f8dd 100644 --- a/docs/interfaces/src.WorkerInfo.html +++ b/docs/interfaces/src.WorkerInfo.html @@ -1,27 +1,30 @@ -WorkerInfo | poolifier - v4.4.5

                                                                                Interface WorkerInfoInternal

                                                                                Worker information.

                                                                                -
                                                                                interface WorkerInfo {
                                                                                    backPressure: boolean;
                                                                                    backPressureStealing: boolean;
                                                                                    continuousStealing: boolean;
                                                                                    dynamic: boolean;
                                                                                    id: undefined | number;
                                                                                    ready: boolean;
                                                                                    stealing: boolean;
                                                                                    stolen: boolean;
                                                                                    taskFunctionsProperties?: TaskFunctionProperties[];
                                                                                    type: "cluster" | "thread";
                                                                                }

                                                                                Properties

                                                                                backPressure: boolean

                                                                                Back pressure flag. +WorkerInfo | poolifier - v5.0.0

                                                                                poolifier - v5.0.0
                                                                                  Preparing search index...

                                                                                  Interface WorkerInfoInternal

                                                                                  Worker information.

                                                                                  +
                                                                                  interface WorkerInfo {
                                                                                      backPressure: boolean;
                                                                                      backPressureStealing: boolean;
                                                                                      continuousStealing: boolean;
                                                                                      dynamic: boolean;
                                                                                      id: undefined | number;
                                                                                      queuedTaskAbortion: boolean;
                                                                                      ready: boolean;
                                                                                      stealing: boolean;
                                                                                      stolen: boolean;
                                                                                      taskFunctionsProperties?: TaskFunctionProperties[];
                                                                                      type: "cluster" | "thread";
                                                                                  }
                                                                                  Index

                                                                                  Properties

                                                                                  backPressure: boolean

                                                                                  Back pressure flag. This flag is set to true when worker node tasks queue is back pressured.

                                                                                  -
                                                                                  backPressureStealing: boolean

                                                                                  Back pressure stealing flag. +

                                                                                  backPressureStealing: boolean

                                                                                  Back pressure stealing flag. This flag is set to true when worker node is stealing one task from another back pressured worker node.

                                                                                  -
                                                                                  continuousStealing: boolean

                                                                                  Continuous stealing flag. +

                                                                                  continuousStealing: boolean

                                                                                  Continuous stealing flag. This flag is set to true when worker node is continuously stealing tasks from other worker nodes.

                                                                                  -
                                                                                  dynamic: boolean

                                                                                  Dynamic flag.

                                                                                  -
                                                                                  id: undefined | number

                                                                                  Worker id.

                                                                                  -
                                                                                  ready: boolean

                                                                                  Ready flag.

                                                                                  -
                                                                                  stealing: boolean

                                                                                  Stealing flag. +

                                                                                  dynamic: boolean

                                                                                  Dynamic flag.

                                                                                  +
                                                                                  id: undefined | number

                                                                                  Worker id.

                                                                                  +
                                                                                  queuedTaskAbortion: boolean

                                                                                  Queued task abortion flag. +This flag is set to true when worker node is aborting a queued task.

                                                                                  +
                                                                                  ready: boolean

                                                                                  Ready flag.

                                                                                  +
                                                                                  stealing: boolean

                                                                                  Stealing flag. This flag is set to true when worker node is stealing one task from another worker node.

                                                                                  -
                                                                                  stolen: boolean

                                                                                  Stolen flag. +

                                                                                  stolen: boolean

                                                                                  Stolen flag. This flag is set to true when worker node has one task stolen from another worker node.

                                                                                  -
                                                                                  taskFunctionsProperties?: TaskFunctionProperties[]

                                                                                  Task functions properties.

                                                                                  -
                                                                                  type: "cluster" | "thread"

                                                                                  Worker type.

                                                                                  -
                                                                                  +
                                                                                  taskFunctionsProperties?: TaskFunctionProperties[]

                                                                                  Task functions properties.

                                                                                  +
                                                                                  type: "cluster" | "thread"

                                                                                  Worker type.

                                                                                  +
                                                                                  diff --git a/docs/interfaces/src.WorkerNodeEventDetail.html b/docs/interfaces/src.WorkerNodeEventDetail.html index 491b1956e..d1e4cfe9e 100644 --- a/docs/interfaces/src.WorkerNodeEventDetail.html +++ b/docs/interfaces/src.WorkerNodeEventDetail.html @@ -1,4 +1,5 @@ -WorkerNodeEventDetail | poolifier - v4.4.5

                                                                                  Interface WorkerNodeEventDetailInternal

                                                                                  Worker node event detail.

                                                                                  -
                                                                                  interface WorkerNodeEventDetail {
                                                                                      workerId?: number;
                                                                                      workerNodeKey?: number;
                                                                                  }

                                                                                  Properties

                                                                                  workerId?: number
                                                                                  workerNodeKey?: number
                                                                                  +WorkerNodeEventDetail | poolifier - v5.0.0
                                                                                  poolifier - v5.0.0
                                                                                    Preparing search index...

                                                                                    Interface WorkerNodeEventDetailInternal

                                                                                    Worker node event detail.

                                                                                    +
                                                                                    interface WorkerNodeEventDetail {
                                                                                        taskId?: `${string}-${string}-${string}-${string}-${string}`;
                                                                                        workerId?: number;
                                                                                        workerNodeKey?: number;
                                                                                    }
                                                                                    Index

                                                                                    Properties

                                                                                    taskId?: `${string}-${string}-${string}-${string}-${string}`
                                                                                    workerId?: number
                                                                                    workerNodeKey?: number
                                                                                    diff --git a/docs/interfaces/src.WorkerNodeOptions.html b/docs/interfaces/src.WorkerNodeOptions.html index 3bc73444c..87574df15 100644 --- a/docs/interfaces/src.WorkerNodeOptions.html +++ b/docs/interfaces/src.WorkerNodeOptions.html @@ -1,7 +1,7 @@ -WorkerNodeOptions | poolifier - v4.4.5

                                                                                    Interface WorkerNodeOptionsInternal

                                                                                    Worker node options.

                                                                                    -
                                                                                    interface WorkerNodeOptions {
                                                                                        env?: Record<string, unknown>;
                                                                                        tasksQueueBackPressureSize: undefined | number;
                                                                                        tasksQueueBucketSize: undefined | number;
                                                                                        tasksQueuePriority: undefined | boolean;
                                                                                        workerOptions?: WorkerOptions;
                                                                                    }

                                                                                    Properties

                                                                                    env?: Record<string, unknown>
                                                                                    tasksQueueBackPressureSize: undefined | number
                                                                                    tasksQueueBucketSize: undefined | number
                                                                                    tasksQueuePriority: undefined | boolean
                                                                                    workerOptions?: WorkerOptions
                                                                                    +WorkerNodeOptions | poolifier - v5.0.0
                                                                                    poolifier - v5.0.0
                                                                                      Preparing search index...

                                                                                      Interface WorkerNodeOptionsInternal

                                                                                      Worker node options.

                                                                                      +
                                                                                      interface WorkerNodeOptions {
                                                                                          env?: Record<string, unknown>;
                                                                                          tasksQueueBackPressureSize: undefined | number;
                                                                                          tasksQueueBucketSize: undefined | number;
                                                                                          tasksQueuePriority: undefined | boolean;
                                                                                          workerOptions?: WorkerOptions;
                                                                                      }
                                                                                      Index

                                                                                      Properties

                                                                                      env?: Record<string, unknown>
                                                                                      tasksQueueBackPressureSize: undefined | number
                                                                                      tasksQueueBucketSize: undefined | number
                                                                                      tasksQueuePriority: undefined | boolean
                                                                                      workerOptions?: WorkerOptions
                                                                                      diff --git a/docs/interfaces/src.WorkerOptions.html b/docs/interfaces/src.WorkerOptions.html index 24e0b1bfe..035739731 100644 --- a/docs/interfaces/src.WorkerOptions.html +++ b/docs/interfaces/src.WorkerOptions.html @@ -1,19 +1,19 @@ -WorkerOptions | poolifier - v4.4.5

                                                                                      Interface WorkerOptions

                                                                                      Options for workers.

                                                                                      -
                                                                                      interface WorkerOptions {
                                                                                          killBehavior?: "HARD" | "SOFT";
                                                                                          killHandler?: KillHandler;
                                                                                          maxInactiveTime?: number;
                                                                                      }

                                                                                      Properties

                                                                                      killBehavior?: "HARD" | "SOFT"

                                                                                      killBehavior dictates if your worker will be deleted in case a task is active on it.

                                                                                      +WorkerOptions | poolifier - v5.0.0
                                                                                      poolifier - v5.0.0
                                                                                        Preparing search index...

                                                                                        Interface WorkerOptions

                                                                                        Options for workers.

                                                                                        +
                                                                                        interface WorkerOptions {
                                                                                            killBehavior?: "HARD" | "SOFT";
                                                                                            killHandler?: KillHandler;
                                                                                            maxInactiveTime?: number;
                                                                                        }
                                                                                        Index

                                                                                        Properties

                                                                                        killBehavior?: "HARD" | "SOFT"

                                                                                        killBehavior dictates if your worker will be deleted in case a task is active on it.

                                                                                        • SOFT: If currentTime - lastActiveTime is greater than maxInactiveTime but the worker is stealing tasks or a task is executing or queued, then the worker won't be deleted.
                                                                                        • HARD: If currentTime - lastActiveTime is greater than maxInactiveTime but the worker is stealing tasks or a task is executing or queued, then the worker will be deleted.

                                                                                        This option only apply to the newly created workers.

                                                                                        -
                                                                                        KillBehaviors.SOFT
                                                                                        +
                                                                                        KillBehaviors.SOFT
                                                                                         
                                                                                        -
                                                                                        killHandler?: KillHandler

                                                                                        The function to call when a worker is killed.

                                                                                        -

                                                                                        () => {}

                                                                                        -
                                                                                        maxInactiveTime?: number

                                                                                        Maximum waiting time in milliseconds for tasks on newly created workers. It must be greater or equal than 5.

                                                                                        +
                                                                                        killHandler?: KillHandler

                                                                                        The function to call when a worker is killed.

                                                                                        +

                                                                                        () => {}

                                                                                        +
                                                                                        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.

                                                                                          @@ -21,7 +21,7 @@ The last active time of your worker will be updated when it terminates a task.
                                                                                        • If killBehavior is set to KillBehaviors.SOFT your tasks have no timeout and your workers will not be terminated until your task is completed.
                                                                                        -
                                                                                        60000
                                                                                        +
                                                                                        60000
                                                                                         
                                                                                        -
                                                                                        +
                                                                                        diff --git a/docs/interfaces/src.WorkerStatistics.html b/docs/interfaces/src.WorkerStatistics.html index 945eec9a5..67cc8ea62 100644 --- a/docs/interfaces/src.WorkerStatistics.html +++ b/docs/interfaces/src.WorkerStatistics.html @@ -1,6 +1,6 @@ -WorkerStatistics | poolifier - v4.4.5

                                                                                        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.

                                                                                        -
                                                                                        +WorkerStatistics | poolifier - v5.0.0
                                                                                        poolifier - v5.0.0
                                                                                          Preparing search index...

                                                                                          Interface WorkerStatisticsInternal

                                                                                          Worker task performance statistics computation settings.

                                                                                          +
                                                                                          interface WorkerStatistics {
                                                                                              elu: boolean;
                                                                                              runTime: boolean;
                                                                                          }
                                                                                          Index

                                                                                          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.

                                                                                          +
                                                                                          diff --git a/docs/interfaces/src.WorkerUsage.html b/docs/interfaces/src.WorkerUsage.html index 3878eb489..9984d34fe 100644 --- a/docs/interfaces/src.WorkerUsage.html +++ b/docs/interfaces/src.WorkerUsage.html @@ -1,10 +1,10 @@ -WorkerUsage | poolifier - v4.4.5

                                                                                          Interface WorkerUsageInternal

                                                                                          Worker usage statistics.

                                                                                          -
                                                                                          interface WorkerUsage {
                                                                                              elu: EventLoopUtilizationMeasurementStatistics;
                                                                                              runTime: MeasurementStatistics;
                                                                                              tasks: TaskStatistics;
                                                                                              waitTime: MeasurementStatistics;
                                                                                          }

                                                                                          Properties

                                                                                          Properties

                                                                                          Tasks event loop utilization statistics.

                                                                                          -

                                                                                          Tasks runtime statistics.

                                                                                          -

                                                                                          Tasks statistics.

                                                                                          -

                                                                                          Tasks wait time statistics.

                                                                                          -
                                                                                          +WorkerUsage | poolifier - v5.0.0
                                                                                          poolifier - v5.0.0
                                                                                            Preparing search index...

                                                                                            Interface WorkerUsageInternal

                                                                                            Worker usage statistics.

                                                                                            +
                                                                                            interface WorkerUsage {
                                                                                                elu: EventLoopUtilizationMeasurementStatistics;
                                                                                                runTime: MeasurementStatistics;
                                                                                                tasks: TaskStatistics;
                                                                                                waitTime: MeasurementStatistics;
                                                                                            }
                                                                                            Index

                                                                                            Properties

                                                                                            Properties

                                                                                            Tasks event loop utilization statistics.

                                                                                            +

                                                                                            Tasks runtime statistics.

                                                                                            +

                                                                                            Tasks statistics.

                                                                                            +

                                                                                            Tasks wait time statistics.

                                                                                            +
                                                                                            diff --git a/docs/modules/src.html b/docs/modules/src.html index ebbcec271..10b58420e 100644 --- a/docs/modules/src.html +++ b/docs/modules/src.html @@ -1,70 +1 @@ -src | poolifier - v4.4.5
                                                                                            +src | poolifier - v5.0.0
                                                                                            poolifier - v5.0.0
                                                                                              Preparing search index...
                                                                                              diff --git a/docs/types/src.ClusterPoolOptions.html b/docs/types/src.ClusterPoolOptions.html index 88ee67d5e..207db5e40 100644 --- a/docs/types/src.ClusterPoolOptions.html +++ b/docs/types/src.ClusterPoolOptions.html @@ -1,2 +1,2 @@ -ClusterPoolOptions | poolifier - v4.4.5

                                                                                              Type Alias ClusterPoolOptions

                                                                                              ClusterPoolOptions: PoolOptions<Worker>

                                                                                              Options for a poolifier cluster pool.

                                                                                              -
                                                                                              +ClusterPoolOptions | poolifier - v5.0.0
                                                                                              poolifier - v5.0.0
                                                                                                Preparing search index...

                                                                                                Type Alias ClusterPoolOptions

                                                                                                ClusterPoolOptions: PoolOptions<Worker>

                                                                                                Options for a poolifier cluster pool.

                                                                                                +
                                                                                                diff --git a/docs/types/src.ErrorHandler.html b/docs/types/src.ErrorHandler.html index 41d538d31..af17bff08 100644 --- a/docs/types/src.ErrorHandler.html +++ b/docs/types/src.ErrorHandler.html @@ -1,3 +1,3 @@ -ErrorHandler | poolifier - v4.4.5

                                                                                                Type Alias ErrorHandler<Worker>

                                                                                                ErrorHandler<Worker>: ((this: Worker, error: Error) => void)

                                                                                                Callback invoked if the worker raised an error.

                                                                                                -

                                                                                                Type Parameters

                                                                                                • Worker extends IWorker

                                                                                                  Type of worker.

                                                                                                  -
                                                                                                +ErrorHandler | poolifier - v5.0.0
                                                                                                poolifier - v5.0.0
                                                                                                  Preparing search index...

                                                                                                  Type Alias ErrorHandler<Worker>

                                                                                                  ErrorHandler: (this: Worker, error: Error) => void

                                                                                                  Callback invoked if the worker raised an error.

                                                                                                  +

                                                                                                  Type Parameters

                                                                                                  • Worker extends IWorker

                                                                                                    Type of worker.

                                                                                                    +

                                                                                                  Type declaration

                                                                                                    • (this: Worker, error: Error): void
                                                                                                    • Parameters

                                                                                                      Returns void

                                                                                                  diff --git a/docs/types/src.EventHandler.html b/docs/types/src.EventHandler.html index d9510f9e6..5eb1c213c 100644 --- a/docs/types/src.EventHandler.html +++ b/docs/types/src.EventHandler.html @@ -1,3 +1,3 @@ -EventHandler | poolifier - v4.4.5

                                                                                                  Type Alias EventHandler<Worker>

                                                                                                  EventHandler<Worker>:
                                                                                                      | ErrorHandler<Worker>
                                                                                                      | ExitHandler<Worker>
                                                                                                      | MessageHandler<Worker>
                                                                                                      | OnlineHandler<Worker>

                                                                                                  Worker event handler.

                                                                                                  -

                                                                                                  Type Parameters

                                                                                                  • Worker extends IWorker

                                                                                                    Type of worker.

                                                                                                    -
                                                                                                  +EventHandler | poolifier - v5.0.0
                                                                                                  poolifier - v5.0.0
                                                                                                    Preparing search index...

                                                                                                    Type Alias EventHandler<Worker>

                                                                                                    EventHandler:
                                                                                                        | ErrorHandler<Worker>
                                                                                                        | ExitHandler<Worker>
                                                                                                        | MessageHandler<Worker>
                                                                                                        | OnlineHandler<Worker>

                                                                                                    Worker event handler.

                                                                                                    +

                                                                                                    Type Parameters

                                                                                                    • Worker extends IWorker

                                                                                                      Type of worker.

                                                                                                      +
                                                                                                    diff --git a/docs/types/src.ExitHandler.html b/docs/types/src.ExitHandler.html index f19a8518f..a7c8c1f88 100644 --- a/docs/types/src.ExitHandler.html +++ b/docs/types/src.ExitHandler.html @@ -1,3 +1,3 @@ -ExitHandler | poolifier - v4.4.5

                                                                                                    Type Alias ExitHandler<Worker>

                                                                                                    ExitHandler<Worker>: ((this: Worker, exitCode: number) => void)

                                                                                                    Callback invoked when the worker exits successfully.

                                                                                                    -

                                                                                                    Type Parameters

                                                                                                    • Worker extends IWorker

                                                                                                      Type of worker.

                                                                                                      -
                                                                                                    +ExitHandler | poolifier - v5.0.0
                                                                                                    poolifier - v5.0.0
                                                                                                      Preparing search index...

                                                                                                      Type Alias ExitHandler<Worker>

                                                                                                      ExitHandler: (this: Worker, exitCode: number) => void

                                                                                                      Callback invoked when the worker exits successfully.

                                                                                                      +

                                                                                                      Type Parameters

                                                                                                      • Worker extends IWorker

                                                                                                        Type of worker.

                                                                                                        +

                                                                                                      Type declaration

                                                                                                        • (this: Worker, exitCode: number): void
                                                                                                        • Parameters

                                                                                                          Returns void

                                                                                                      diff --git a/docs/types/src.KillBehavior.html b/docs/types/src.KillBehavior.html index 8269038b4..16fe7900c 100644 --- a/docs/types/src.KillBehavior.html +++ b/docs/types/src.KillBehavior.html @@ -1,2 +1,2 @@ -KillBehavior | poolifier - v4.4.5

                                                                                                      Type Alias KillBehavior

                                                                                                      KillBehavior: keyof typeof KillBehaviors

                                                                                                      Kill behavior.

                                                                                                      -
                                                                                                      +KillBehavior | poolifier - v5.0.0
                                                                                                      poolifier - v5.0.0
                                                                                                        Preparing search index...

                                                                                                        Type Alias KillBehavior

                                                                                                        KillBehavior: keyof typeof KillBehaviors

                                                                                                        Kill behavior.

                                                                                                        +
                                                                                                        diff --git a/docs/types/src.KillHandler.html b/docs/types/src.KillHandler.html index 1d802c7dd..7dcd47543 100644 --- a/docs/types/src.KillHandler.html +++ b/docs/types/src.KillHandler.html @@ -1,2 +1,2 @@ -KillHandler | poolifier - v4.4.5

                                                                                                        Type Alias KillHandler

                                                                                                        KillHandler: (() => Promise<void> | void)

                                                                                                        Handler called when a worker is killed.

                                                                                                        -
                                                                                                        +KillHandler | poolifier - v5.0.0
                                                                                                        poolifier - v5.0.0
                                                                                                          Preparing search index...

                                                                                                          Type Alias KillHandler

                                                                                                          KillHandler: () => Promise<void> | void

                                                                                                          Handler called when a worker is killed.

                                                                                                          +

                                                                                                          Type declaration

                                                                                                            • (): Promise<void> | void
                                                                                                            • Returns Promise<void> | void

                                                                                                          diff --git a/docs/types/src.Measurement.html b/docs/types/src.Measurement.html index 6d48609c5..b6de8885a 100644 --- a/docs/types/src.Measurement.html +++ b/docs/types/src.Measurement.html @@ -1,2 +1,2 @@ -Measurement | poolifier - v4.4.5

                                                                                                          Type Alias Measurement

                                                                                                          Measurement: keyof typeof Measurements

                                                                                                          Measurement.

                                                                                                          -
                                                                                                          +Measurement | poolifier - v5.0.0
                                                                                                          poolifier - v5.0.0
                                                                                                            Preparing search index...

                                                                                                            Type Alias Measurement

                                                                                                            Measurement: keyof typeof Measurements

                                                                                                            Measurement.

                                                                                                            +
                                                                                                            diff --git a/docs/types/src.MessageHandler.html b/docs/types/src.MessageHandler.html index bd6df585c..78bd3bb85 100644 --- a/docs/types/src.MessageHandler.html +++ b/docs/types/src.MessageHandler.html @@ -1,3 +1,3 @@ -MessageHandler | poolifier - v4.4.5

                                                                                                            Type Alias MessageHandler<Worker>

                                                                                                            MessageHandler<Worker>: ((this: Worker, message: unknown) => void)

                                                                                                            Callback invoked if the worker has received a message.

                                                                                                            -

                                                                                                            Type Parameters

                                                                                                            • Worker extends IWorker

                                                                                                              Type of worker.

                                                                                                              -
                                                                                                            +MessageHandler | poolifier - v5.0.0
                                                                                                            poolifier - v5.0.0
                                                                                                              Preparing search index...

                                                                                                              Type Alias MessageHandler<Worker>

                                                                                                              MessageHandler: (this: Worker, message: unknown) => void

                                                                                                              Callback invoked if the worker has received a message.

                                                                                                              +

                                                                                                              Type Parameters

                                                                                                              • Worker extends IWorker

                                                                                                                Type of worker.

                                                                                                                +

                                                                                                              Type declaration

                                                                                                                • (this: Worker, message: unknown): void
                                                                                                                • Parameters

                                                                                                                  Returns void

                                                                                                              diff --git a/docs/types/src.OnlineHandler.html b/docs/types/src.OnlineHandler.html index cbfb223ea..313929e26 100644 --- a/docs/types/src.OnlineHandler.html +++ b/docs/types/src.OnlineHandler.html @@ -1,3 +1,3 @@ -OnlineHandler | poolifier - v4.4.5

                                                                                                              Type Alias OnlineHandler<Worker>

                                                                                                              OnlineHandler<Worker>: ((this: Worker) => void)

                                                                                                              Callback invoked when the worker has started successfully.

                                                                                                              -

                                                                                                              Type Parameters

                                                                                                              • Worker extends IWorker

                                                                                                                Type of worker.

                                                                                                                -
                                                                                                              +OnlineHandler | poolifier - v5.0.0
                                                                                                              poolifier - v5.0.0
                                                                                                                Preparing search index...

                                                                                                                Type Alias OnlineHandler<Worker>

                                                                                                                OnlineHandler: (this: Worker) => void

                                                                                                                Callback invoked when the worker has started successfully.

                                                                                                                +

                                                                                                                Type Parameters

                                                                                                                • Worker extends IWorker

                                                                                                                  Type of worker.

                                                                                                                  +

                                                                                                                Type declaration

                                                                                                                diff --git a/docs/types/src.PoolEvent.html b/docs/types/src.PoolEvent.html index d65deb63f..e596fedd9 100644 --- a/docs/types/src.PoolEvent.html +++ b/docs/types/src.PoolEvent.html @@ -1,2 +1,2 @@ -PoolEvent | poolifier - v4.4.5

                                                                                                                Type Alias PoolEvent

                                                                                                                PoolEvent: keyof typeof PoolEvents

                                                                                                                Pool event.

                                                                                                                -
                                                                                                                +PoolEvent | poolifier - v5.0.0
                                                                                                                poolifier - v5.0.0
                                                                                                                  Preparing search index...

                                                                                                                  Type Alias PoolEvent

                                                                                                                  PoolEvent: keyof typeof PoolEvents

                                                                                                                  Pool event.

                                                                                                                  +
                                                                                                                  diff --git a/docs/types/src.PoolType.html b/docs/types/src.PoolType.html index 33dd60750..68afc3c84 100644 --- a/docs/types/src.PoolType.html +++ b/docs/types/src.PoolType.html @@ -1,2 +1,2 @@ -PoolType | poolifier - v4.4.5

                                                                                                                  Type Alias PoolType

                                                                                                                  PoolType: keyof typeof PoolTypes

                                                                                                                  Pool type.

                                                                                                                  -
                                                                                                                  +PoolType | poolifier - v5.0.0
                                                                                                                  poolifier - v5.0.0
                                                                                                                    Preparing search index...

                                                                                                                    Type Alias PoolType

                                                                                                                    PoolType: keyof typeof PoolTypes

                                                                                                                    Pool type.

                                                                                                                    +
                                                                                                                    diff --git a/docs/types/src.TaskAsyncFunction.html b/docs/types/src.TaskAsyncFunction.html index d27a5cfd9..3babcf6d9 100644 --- a/docs/types/src.TaskAsyncFunction.html +++ b/docs/types/src.TaskAsyncFunction.html @@ -1,7 +1,7 @@ -TaskAsyncFunction | poolifier - v4.4.5

                                                                                                                    Type Alias TaskAsyncFunction<Data, Response>

                                                                                                                    TaskAsyncFunction<Data, Response>: ((data?: Data) => Promise<Response>)

                                                                                                                    Task asynchronous function that can be executed. +TaskAsyncFunction | poolifier - v5.0.0

                                                                                                                    poolifier - v5.0.0
                                                                                                                      Preparing search index...

                                                                                                                      Type Alias TaskAsyncFunction<Data, Response>

                                                                                                                      TaskAsyncFunction: (data?: Data) => Promise<Response>

                                                                                                                      Task asynchronous function that can be executed. This function must return a promise.

                                                                                                                      -

                                                                                                                      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

                                                                                                                          • Optionaldata: Data

                                                                                                                            Data sent to the worker.

                                                                                                                            -

                                                                                                                          Returns Promise<Response>

                                                                                                                          Execution response promise.

                                                                                                                          -
                                                                                                                      +

                                                                                                                      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?: Data): Promise<Response>
                                                                                                                        • Parameters

                                                                                                                          • Optionaldata: Data

                                                                                                                            Data sent to the worker.

                                                                                                                            +

                                                                                                                          Returns Promise<Response>

                                                                                                                          Execution response promise.

                                                                                                                          +
                                                                                                                      diff --git a/docs/types/src.TaskFunction.html b/docs/types/src.TaskFunction.html index 2162c747e..1ce3a0e1f 100644 --- a/docs/types/src.TaskFunction.html +++ b/docs/types/src.TaskFunction.html @@ -1,5 +1,5 @@ -TaskFunction | poolifier - v4.4.5

                                                                                                                      Type Alias TaskFunction<Data, Response>

                                                                                                                      Task function that can be executed. +TaskFunction | poolifier - v5.0.0

                                                                                                                      poolifier - v5.0.0
                                                                                                                        Preparing search index...

                                                                                                                        Type Alias TaskFunction<Data, Response>

                                                                                                                        TaskFunction:
                                                                                                                            | TaskAsyncFunction<Data, Response>
                                                                                                                            | TaskSyncFunction<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.

                                                                                                                          -
                                                                                                                        +

                                                                                                                        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.

                                                                                                                          +
                                                                                                                        diff --git a/docs/types/src.TaskFunctions.html b/docs/types/src.TaskFunctions.html index fadf61f0b..6cb4905f3 100644 --- a/docs/types/src.TaskFunctions.html +++ b/docs/types/src.TaskFunctions.html @@ -1,6 +1,6 @@ -TaskFunctions | poolifier - v4.4.5

                                                                                                                        Type Alias TaskFunctions<Data, Response>

                                                                                                                        TaskFunctions<Data, Response>: Record<string, TaskFunction<Data, Response> | TaskFunctionObject<Data, Response>>

                                                                                                                        Tasks functions that can be executed. +TaskFunctions | poolifier - v5.0.0

                                                                                                                        poolifier - v5.0.0
                                                                                                                          Preparing search index...

                                                                                                                          Type Alias TaskFunctions<Data, Response>

                                                                                                                          TaskFunctions: Record<
                                                                                                                              string,
                                                                                                                              TaskFunction<Data, Response>
                                                                                                                              | TaskFunctionObject<Data, Response>,
                                                                                                                          >

                                                                                                                          Tasks functions that can be executed. The key is the name of the task function or task function object. The value is the task function or task function object.

                                                                                                                          -

                                                                                                                          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 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.

                                                                                                                            +
                                                                                                                          diff --git a/docs/types/src.TaskSyncFunction.html b/docs/types/src.TaskSyncFunction.html index cba9945e9..514e07293 100644 --- a/docs/types/src.TaskSyncFunction.html +++ b/docs/types/src.TaskSyncFunction.html @@ -1,6 +1,6 @@ -TaskSyncFunction | poolifier - v4.4.5

                                                                                                                          Type Alias TaskSyncFunction<Data, Response>

                                                                                                                          TaskSyncFunction<Data, Response>: ((data?: 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

                                                                                                                            • (data?): Response
                                                                                                                            • Parameters

                                                                                                                              • Optionaldata: Data

                                                                                                                                Data sent to the worker.

                                                                                                                                -

                                                                                                                              Returns Response

                                                                                                                              Execution response.

                                                                                                                              -
                                                                                                                          +TaskSyncFunction | poolifier - v5.0.0
                                                                                                                          poolifier - v5.0.0
                                                                                                                            Preparing search index...

                                                                                                                            Type Alias TaskSyncFunction<Data, Response>

                                                                                                                            TaskSyncFunction: (data?: 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

                                                                                                                            diff --git a/docs/types/src.ThreadPoolOptions.html b/docs/types/src.ThreadPoolOptions.html index 120f91f97..80e161538 100644 --- a/docs/types/src.ThreadPoolOptions.html +++ b/docs/types/src.ThreadPoolOptions.html @@ -1,2 +1,2 @@ -ThreadPoolOptions | poolifier - v4.4.5

                                                                                                                            Type Alias ThreadPoolOptions

                                                                                                                            ThreadPoolOptions: PoolOptions<Worker>

                                                                                                                            Options for a poolifier thread pool.

                                                                                                                            -
                                                                                                                            +ThreadPoolOptions | poolifier - v5.0.0
                                                                                                                            poolifier - v5.0.0
                                                                                                                              Preparing search index...

                                                                                                                              Type Alias ThreadPoolOptions

                                                                                                                              ThreadPoolOptions: PoolOptions<Worker>

                                                                                                                              Options for a poolifier thread pool.

                                                                                                                              +
                                                                                                                              diff --git a/docs/types/src.WorkerChoiceStrategy.html b/docs/types/src.WorkerChoiceStrategy.html index 089762145..dc59db2cb 100644 --- a/docs/types/src.WorkerChoiceStrategy.html +++ b/docs/types/src.WorkerChoiceStrategy.html @@ -1,2 +1,2 @@ -WorkerChoiceStrategy | poolifier - v4.4.5

                                                                                                                              Type Alias WorkerChoiceStrategy

                                                                                                                              WorkerChoiceStrategy: keyof typeof WorkerChoiceStrategies

                                                                                                                              Worker choice strategy.

                                                                                                                              -
                                                                                                                              +WorkerChoiceStrategy | poolifier - v5.0.0
                                                                                                                              poolifier - v5.0.0
                                                                                                                                Preparing search index...

                                                                                                                                Type Alias WorkerChoiceStrategy

                                                                                                                                WorkerChoiceStrategy: keyof typeof WorkerChoiceStrategies

                                                                                                                                Worker choice strategy.

                                                                                                                                +
                                                                                                                                diff --git a/docs/types/src.WorkerType.html b/docs/types/src.WorkerType.html index 6190a290d..d82ec77e4 100644 --- a/docs/types/src.WorkerType.html +++ b/docs/types/src.WorkerType.html @@ -1,2 +1,2 @@ -WorkerType | poolifier - v4.4.5

                                                                                                                                Type Alias WorkerType

                                                                                                                                WorkerType: keyof typeof WorkerTypes

                                                                                                                                Worker type.

                                                                                                                                -
                                                                                                                                +WorkerType | poolifier - v5.0.0
                                                                                                                                poolifier - v5.0.0
                                                                                                                                  Preparing search index...

                                                                                                                                  Type Alias WorkerType

                                                                                                                                  WorkerType: keyof typeof WorkerTypes

                                                                                                                                  Worker type.

                                                                                                                                  +
                                                                                                                                  diff --git a/docs/types/src.Writable.html b/docs/types/src.Writable.html index f0b4b1a3b..9f3210601 100644 --- a/docs/types/src.Writable.html +++ b/docs/types/src.Writable.html @@ -1,3 +1,3 @@ -Writable | poolifier - v4.4.5

                                                                                                                                  Type Alias Writable<T>Internal

                                                                                                                                  Writable<T>: {
                                                                                                                                      -readonly [P in keyof T]: T[P]
                                                                                                                                  }

                                                                                                                                  Remove readonly modifier from all properties of T.

                                                                                                                                  -

                                                                                                                                  Type Parameters

                                                                                                                                  • T

                                                                                                                                    Type to remove readonly modifier.

                                                                                                                                    -
                                                                                                                                  +Writable | poolifier - v5.0.0
                                                                                                                                  poolifier - v5.0.0
                                                                                                                                    Preparing search index...

                                                                                                                                    Type Alias Writable<T>Internal

                                                                                                                                    Writable: { -readonly [P in keyof T]: T[P] }

                                                                                                                                    Remove readonly modifier from all properties of T.

                                                                                                                                    +

                                                                                                                                    Type Parameters

                                                                                                                                    • T

                                                                                                                                      Type to remove readonly modifier.

                                                                                                                                      +
                                                                                                                                    diff --git a/docs/variables/src.KillBehaviors.html b/docs/variables/src.KillBehaviors.html index 54cf70668..b34441645 100644 --- a/docs/variables/src.KillBehaviors.html +++ b/docs/variables/src.KillBehaviors.html @@ -1,2 +1,2 @@ -KillBehaviors | poolifier - v4.4.5

                                                                                                                                    Variable KillBehaviorsConst

                                                                                                                                    KillBehaviors: Readonly<{
                                                                                                                                        HARD: "HARD";
                                                                                                                                        SOFT: "SOFT";
                                                                                                                                    }> = ...

                                                                                                                                    Enumeration of kill behaviors.

                                                                                                                                    -
                                                                                                                                    +KillBehaviors | poolifier - v5.0.0
                                                                                                                                    poolifier - v5.0.0
                                                                                                                                      Preparing search index...

                                                                                                                                      Variable KillBehaviorsConst

                                                                                                                                      KillBehaviors: Readonly<{ HARD: "HARD"; SOFT: "SOFT" }> = ...

                                                                                                                                      Enumeration of kill behaviors.

                                                                                                                                      +
                                                                                                                                      diff --git a/docs/variables/src.Measurements.html b/docs/variables/src.Measurements.html index b33607aa6..c0383a0c8 100644 --- a/docs/variables/src.Measurements.html +++ b/docs/variables/src.Measurements.html @@ -1,2 +1,2 @@ -Measurements | poolifier - v4.4.5

                                                                                                                                      Variable MeasurementsConst

                                                                                                                                      Measurements: Readonly<{
                                                                                                                                          elu: "elu";
                                                                                                                                          runTime: "runTime";
                                                                                                                                          waitTime: "waitTime";
                                                                                                                                      }> = ...

                                                                                                                                      Enumeration of measurements.

                                                                                                                                      -
                                                                                                                                      +Measurements | poolifier - v5.0.0
                                                                                                                                      poolifier - v5.0.0
                                                                                                                                        Preparing search index...

                                                                                                                                        Variable MeasurementsConst

                                                                                                                                        Measurements: Readonly<{ elu: "elu"; runTime: "runTime"; waitTime: "waitTime" }> = ...

                                                                                                                                        Enumeration of measurements.

                                                                                                                                        +
                                                                                                                                        diff --git a/docs/variables/src.PoolEvents.html b/docs/variables/src.PoolEvents.html index 833560567..b86553cea 100644 --- a/docs/variables/src.PoolEvents.html +++ b/docs/variables/src.PoolEvents.html @@ -1,2 +1,2 @@ -PoolEvents | poolifier - v4.4.5

                                                                                                                                        Variable PoolEventsConst

                                                                                                                                        PoolEvents: Readonly<{
                                                                                                                                            backPressure: "backPressure";
                                                                                                                                            backPressureEnd: "backPressureEnd";
                                                                                                                                            busy: "busy";
                                                                                                                                            busyEnd: "busyEnd";
                                                                                                                                            destroy: "destroy";
                                                                                                                                            empty: "empty";
                                                                                                                                            error: "error";
                                                                                                                                            full: "full";
                                                                                                                                            fullEnd: "fullEnd";
                                                                                                                                            ready: "ready";
                                                                                                                                            taskError: "taskError";
                                                                                                                                        }> = ...

                                                                                                                                        Enumeration of pool events.

                                                                                                                                        -
                                                                                                                                        +PoolEvents | poolifier - v5.0.0
                                                                                                                                        poolifier - v5.0.0
                                                                                                                                          Preparing search index...

                                                                                                                                          Variable PoolEventsConst

                                                                                                                                          PoolEvents: Readonly<
                                                                                                                                              {
                                                                                                                                                  backPressure: "backPressure";
                                                                                                                                                  backPressureEnd: "backPressureEnd";
                                                                                                                                                  busy: "busy";
                                                                                                                                                  busyEnd: "busyEnd";
                                                                                                                                                  destroy: "destroy";
                                                                                                                                                  empty: "empty";
                                                                                                                                                  error: "error";
                                                                                                                                                  full: "full";
                                                                                                                                                  fullEnd: "fullEnd";
                                                                                                                                                  ready: "ready";
                                                                                                                                                  taskError: "taskError";
                                                                                                                                              },
                                                                                                                                          > = ...

                                                                                                                                          Enumeration of pool events.

                                                                                                                                          +
                                                                                                                                          diff --git a/docs/variables/src.PoolTypes.html b/docs/variables/src.PoolTypes.html index fa7fa2b91..0e7afe79b 100644 --- a/docs/variables/src.PoolTypes.html +++ b/docs/variables/src.PoolTypes.html @@ -1,2 +1,2 @@ -PoolTypes | poolifier - v4.4.5

                                                                                                                                          Variable PoolTypesConst

                                                                                                                                          PoolTypes: Readonly<{
                                                                                                                                              dynamic: "dynamic";
                                                                                                                                              fixed: "fixed";
                                                                                                                                          }> = ...

                                                                                                                                          Enumeration of pool types.

                                                                                                                                          -
                                                                                                                                          +PoolTypes | poolifier - v5.0.0
                                                                                                                                          poolifier - v5.0.0
                                                                                                                                            Preparing search index...

                                                                                                                                            Variable PoolTypesConst

                                                                                                                                            PoolTypes: Readonly<{ dynamic: "dynamic"; fixed: "fixed" }> = ...

                                                                                                                                            Enumeration of pool types.

                                                                                                                                            +
                                                                                                                                            diff --git a/docs/variables/src.WorkerChoiceStrategies.html b/docs/variables/src.WorkerChoiceStrategies.html index 2e56343ff..b7aa4b5de 100644 --- a/docs/variables/src.WorkerChoiceStrategies.html +++ b/docs/variables/src.WorkerChoiceStrategies.html @@ -1,2 +1,2 @@ -WorkerChoiceStrategies | poolifier - v4.4.5

                                                                                                                                            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 - v5.0.0
                                                                                                                                            poolifier - v5.0.0
                                                                                                                                              Preparing search index...

                                                                                                                                              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.

                                                                                                                                              +
                                                                                                                                              diff --git a/docs/variables/src.WorkerTypes.html b/docs/variables/src.WorkerTypes.html index 020872981..c8a03f10f 100644 --- a/docs/variables/src.WorkerTypes.html +++ b/docs/variables/src.WorkerTypes.html @@ -1,2 +1,2 @@ -WorkerTypes | poolifier - v4.4.5

                                                                                                                                              Variable WorkerTypesConst

                                                                                                                                              WorkerTypes: Readonly<{
                                                                                                                                                  cluster: "cluster";
                                                                                                                                                  thread: "thread";
                                                                                                                                              }> = ...

                                                                                                                                              Enumeration of worker types.

                                                                                                                                              -
                                                                                                                                              +WorkerTypes | poolifier - v5.0.0
                                                                                                                                              poolifier - v5.0.0
                                                                                                                                                Preparing search index...

                                                                                                                                                Variable WorkerTypesConst

                                                                                                                                                WorkerTypes: Readonly<{ cluster: "cluster"; thread: "thread" }> = ...

                                                                                                                                                Enumeration of worker types.

                                                                                                                                                +
                                                                                                                                                -- 2.43.0