From cddf557713427f2e9ed5fb149ec7180266c50d99 Mon Sep 17 00:00:00 2001 From: Matthew McEachen Date: Wed, 6 Mar 2024 20:13:28 -0800 Subject: [PATCH] yarn docs --- docs/assets/icons.js | 15 ++++ docs/assets/icons.svg | 1 + docs/assets/main.js | 8 +- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/BatchCluster.html | 99 ++++++++++++------------ docs/classes/BatchClusterOptions.html | 72 +++++++++-------- docs/classes/BatchProcess.html | 80 +++++++++---------- docs/classes/Deferred.html | 38 ++++----- docs/classes/Rate.html | 32 ++++---- docs/classes/Task.html | 42 +++++----- docs/functions/SimpleParser.html | 10 +-- docs/functions/kill.html | 8 +- docs/functions/logger-1.html | 2 +- docs/functions/pidExists.html | 4 +- docs/functions/pids.html | 4 +- docs/functions/setLogger.html | 2 +- docs/index.html | 4 +- docs/interfaces/BatchClusterEvents.html | 81 ++++++++----------- docs/interfaces/BatchProcessOptions.html | 24 +++--- docs/interfaces/ChildProcessFactory.html | 14 +--- docs/interfaces/Logger.html | 14 ++-- docs/interfaces/Parser.html | 12 +-- docs/interfaces/TypedEventEmitter.html | 14 ++-- docs/modules.html | 54 ++++++------- docs/types/BatchClusterEmitter.html | 4 +- docs/types/ChildExitReason.html | 2 +- docs/types/WhyNotHealthy.html | 2 +- docs/types/WhyNotReady.html | 2 +- docs/variables/ConsoleLogger.html | 4 +- docs/variables/Log.html | 2 +- docs/variables/LogLevels.html | 2 +- docs/variables/NoLogger.html | 4 +- 33 files changed, 323 insertions(+), 337 deletions(-) create mode 100644 docs/assets/icons.js create mode 100644 docs/assets/icons.svg diff --git a/docs/assets/icons.js b/docs/assets/icons.js new file mode 100644 index 0000000..b79c9e8 --- /dev/null +++ b/docs/assets/icons.js @@ -0,0 +1,15 @@ +(function(svg) { + svg.innerHTML = ``; + svg.style.display = 'none'; + if (location.protocol === 'file:') { + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateUseElements); + else updateUseElements() + function updateUseElements() { + document.querySelectorAll('use').forEach(el => { + if (el.getAttribute('href').includes('#icon-')) { + el.setAttribute('href', el.getAttribute('href').replace(/.*#/, '#')); + } + }); + } + } +})(document.body.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))) \ No newline at end of file diff --git a/docs/assets/icons.svg b/docs/assets/icons.svg new file mode 100644 index 0000000..7dead61 --- /dev/null +++ b/docs/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js index 7270cff..1daeb69 100644 --- a/docs/assets/main.js +++ b/docs/assets/main.js @@ -1,8 +1,8 @@ "use strict"; -"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.handleValueChange()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(e=>{e.style.display="block";let n=Array.from(e.querySelectorAll(".tsd-index-link")).every(r=>r.offsetParent==null);e.style.display=n?"none":"block"})}};var Z=class extends C{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +"use strict";(()=>{var Ce=Object.create;var ne=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Ce(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),y=s.str.charAt(1),p;y in s.node.edges?p=s.node.edges[y]:(p=new t.TokenSet,s.node.edges[y]=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 se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.scrollToHash(),this.updateIndexVisibility())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.scrollToHash(),this.updateIndexVisibility())}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&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").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&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let y=document.createElement("li");y.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,y.append(p),e.appendChild(y)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var He={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>He[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",fe="mousemove",H="mouseup",J={x:0,y:0},pe=!1,ee=!1,Be=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",fe="touchmove",H="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ee=!1});document.addEventListener("click",t=>{pe&&(t.preventDefault(),t.stopImmediatePropagation(),pe=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ye=document.head.appendChild(document.createElement("style"));ye.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()),ye.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 ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ve(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ve(t.value)})}function ve(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 553b3a9..0fa6114 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA42UTVPCMBCG/0vPKFIFlaOI44FBBp3x4HiI7UIzhKaTLAwdx/9uSvlI02bLdd99njabbb9+A4QdBsPgiWGUjMRGI6igE2QME1ONBNMadNdOrxNcC9Oy4mkcDHvhw1+n0fKWIZeppmWHplbnTMkItE92SCnLMyxAKYjrhmNC0XOGUCeLKkV9ML2qU0X10hmOt5CidWqemuKCRc4Uy7aqNOwPPEOsXYxrrfZR2lHCRXxof2ERSpU3ahv6KO1ELpf2GlqmMqLgGVPaA5cRBX/kGcT7cY7XHNHjqXW1jv54Ua4Ujcm5y0bjzeN9rx+6kx/vOM6BaZm6Ridus30m+VTiKzCBSe66KuFlJvPU2OPZR62nM3snBbh7sGWKsx9RnM9uqNpuw+omNeGmTEMT2ILQHrQMCcFU+t/8mBH4O19nAtw9XmzSaP9Bdu28qhncWZoVF6IJL+oEJpxXP4NlctUj4IwXW6ftf9aZP4W0wMdSmAZ0R35mT2FN8P0PNd1pyAEHAAA=" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA42UUU/CMBDHv0ufUWQKKo8ixgeCBEl8MD7U7WANpV3ag7AYv7sZA+m69cZr//f7pb277fOHIeyRDdkTxzgdya1FMKzDMo4pG7JYcmvBdt30OsWNZB22Fiphw1708NtptLxlKLSytOxY1OqcGR2DDcmOKWV5hiUYA0ndcEooes4R6mRxSlELbtd1qji9tIfjHSh0Xi0Uglny2OtiWVaVRv1BoIm1wfjWah2lHaVCJsfyFx6jNnmjtqGO0k70auWuoWMqIwqecWMDcBlR8CLPIDm0c7wRiAFPraq19adB+VLMM3+Wjcabx/teP/I7P94LnAO3WvlGL26zfaT5VOMrcIlp7rsq4WWmOfAk4DlEra/TymoJ/h7suBH8WxbvcwuqttuouklN+ESvaGgCO5A2gJYhIZjq8M1PGYG/i00mwd/j5VbFhw+y6+ZVzeDO0ayFlE14cU5g0rv6GSyTqx4BZ6LYOuv+s878f0gLQiyFWUC/5Wf2P6wJvv4ANd1pyAEHAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 9000844..cf04735 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/BatchCluster.html b/docs/classes/BatchCluster.html index 86d5146..013cedc 100644 --- a/docs/classes/BatchCluster.html +++ b/docs/classes/BatchCluster.html @@ -1,66 +1,63 @@ -BatchCluster | batch-cluster

Class BatchCluster

BatchCluster instances manage 0 or more homogeneous child processes, and +BatchCluster | batch-cluster

Class BatchCluster

BatchCluster instances manage 0 or more homogeneous child processes, and provide the main interface for enqueuing Tasks via enqueueTask.

Given the large number of configuration options, the constructor receives a single options hash. The most important of these are the ChildProcessFactory, which specifies the factory that creates ChildProcess instances, and BatchProcessOptions, which specifies how child tasks can be verified and shut down.

-

Constructors

Properties

emitter: BatchClusterEmitter = ...
off: (<E>(eventName, listener) => this) = ...

Type declaration

    • <E>(eventName, listener): this
    • Type Parameters

      Parameters

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

      Returns this

      See

      BatchClusterEvents

      +

Constructors

Properties

emitter: BatchClusterEmitter = ...
off: (<E>(eventName, listener) => this) = ...

Type declaration

    • <E>(eventName, listener): this
    • Type Parameters

      Parameters

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

      Returns this

See

BatchClusterEvents

Since

v9.0.0

-

See

BatchClusterEvents

-

Since

v9.0.0

-
on: (<E>(eventName, listener) => this) = ...

Type declaration

    • <E>(eventName, listener): this
    • Type Parameters

      Parameters

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

      Returns this

      See

      BatchClusterEvents

      -

See

BatchClusterEvents

-
options: AllOpts

Accessors

  • get busyProcCount(): number
  • Returns number

    the current number of child processes currently servicing tasks

    -
  • get childEndCounts(): {
        broken: number;
        closed: number;
        ended: number;
        ending: number;
        idle: number;
        old: number;
        proc.close: number;
        proc.disconnect: number;
        proc.error: number;
        proc.exit: number;
        startError: number;
        stderr: number;
        stderr.error: number;
        stdin.error: number;
        stdout.error: number;
        timeout: number;
        tooMany: number;
        unhealthy: number;
        worn: number;
    }
  • Returns {
        broken: number;
        closed: number;
        ended: number;
        ending: number;
        idle: number;
        old: number;
        proc.close: number;
        proc.disconnect: number;
        proc.error: number;
        proc.exit: number;
        startError: number;
        stderr: number;
        stderr.error: number;
        stdin.error: number;
        stdout.error: number;
        timeout: number;
        tooMany: number;
        unhealthy: number;
        worn: number;
    }

    • broken: number
    • closed: number
    • ended: number
    • ending: number
    • idle: number
    • old: number
    • proc.close: number
    • proc.disconnect: number
    • proc.error: number
    • proc.exit: number
    • startError: number
    • stderr: number
    • stderr.error: number
    • stdin.error: number
    • stdout.error: number
    • timeout: number
    • tooMany: number
    • unhealthy: number
    • worn: number
  • get internalErrorCount(): number
  • For integration tests:

    -

    Returns number

  • get isIdle(): boolean
  • Returns boolean

    true if all previously-enqueued tasks have settled

    -
  • get meanTasksPerProc(): number
  • Returns number

    the mean number of tasks completed by child processes

    -
  • get pendingTaskCount(): number
  • Returns number

    the number of pending tasks

    -
  • get procCount(): number
  • Returns number

    the current number of spawned child processes. Some (or all) may be idle.

    -
  • get spawnedProcCount(): number
  • Returns number

    the total number of child processes created by this instance

    -

Methods

  • Shut down any currently-running child processes. New child processes will +

on: (<E>(eventName, listener) => this) = ...

Type declaration

    • <E>(eventName, listener): this
    • Type Parameters

      Parameters

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

      Returns this

See

BatchClusterEvents

+
options: AllOpts

Accessors

  • get busyProcCount(): number
  • Returns number

    the current number of child processes currently servicing tasks

    +
  • get childEndCounts(): {
        broken: number;
        closed: number;
        ended: number;
        ending: number;
        idle: number;
        old: number;
        proc.close: number;
        proc.disconnect: number;
        proc.error: number;
        proc.exit: number;
        startError: number;
        stderr: number;
        stderr.error: number;
        stdin.error: number;
        stdout.error: number;
        timeout: number;
        tooMany: number;
        unhealthy: number;
        worn: number;
    }
  • Returns {
        broken: number;
        closed: number;
        ended: number;
        ending: number;
        idle: number;
        old: number;
        proc.close: number;
        proc.disconnect: number;
        proc.error: number;
        proc.exit: number;
        startError: number;
        stderr: number;
        stderr.error: number;
        stdin.error: number;
        stdout.error: number;
        timeout: number;
        tooMany: number;
        unhealthy: number;
        worn: number;
    }

    • broken: number
    • closed: number
    • ended: number
    • ending: number
    • idle: number
    • old: number
    • proc.close: number
    • proc.disconnect: number
    • proc.error: number
    • proc.exit: number
    • startError: number
    • stderr: number
    • stderr.error: number
    • stdin.error: number
    • stdout.error: number
    • timeout: number
    • tooMany: number
    • unhealthy: number
    • worn: number
  • get internalErrorCount(): number
  • For integration tests:

    +

    Returns number

  • get isIdle(): boolean
  • Returns boolean

    true if all previously-enqueued tasks have settled

    +
  • get meanTasksPerProc(): number
  • Returns number

    the mean number of tasks completed by child processes

    +
  • get pendingTaskCount(): number
  • Returns number

    the number of pending tasks

    +
  • get procCount(): number
  • Returns number

    the current number of spawned child processes. Some (or all) may be idle.

    +
  • get spawnedProcCount(): number
  • Returns number

    the total number of child processes created by this instance

    +

Methods

  • Shut down any currently-running child processes. New child processes will be started automatically to handle new tasks.

    -

    Parameters

    • gracefully: boolean = true

    Returns Promise<void>

  • Shut down this instance, and all child processes.

    -

    Parameters

    • gracefully: boolean = true

      should an attempt be made to finish in-flight tasks, or +

      Parameters

      • gracefully: boolean = true

      Returns Promise<void>

  • Shut down this instance, and all child processes.

    +

    Parameters

    • gracefully: boolean = true

      should an attempt be made to finish in-flight tasks, or should we force-kill child PIDs.

      -

    Returns Deferred<void>

  • Submits task for processing by a BatchProcess instance

    -

    Type Parameters

    • T

    Parameters

    Returns Promise<T>

    a Promise that is resolved or rejected once the task has been +

Returns Deferred<void>

  • Submits task for processing by a BatchProcess instance

    +

    Type Parameters

    • T

    Parameters

    Returns Promise<T>

    a Promise that is resolved or rejected once the task has been attempted on an idle BatchProcess

    -
  • Verify that each BatchProcess PID is actually alive.

    +
  • Verify that each BatchProcess PID is actually alive.

    Returns number[]

    the spawned PIDs that are still in the process table.

    -
  • Reset the maximum number of active child processes to maxProcs. Note that +

  • Reset the maximum number of active child processes to maxProcs. Note that this is handled gracefully: child processes are only reduced as tasks are completed.

    -

    Parameters

    • maxProcs: number

    Returns void

  • For diagnostics. Contents may change.

    -

    Returns {
        childEndCounts: {
            broken: number;
            closed: number;
            ended: number;
            ending: number;
            idle: number;
            old: number;
            proc.close: number;
            proc.disconnect: number;
            proc.error: number;
            proc.exit: number;
            startError: number;
            stderr: number;
            stderr.error: number;
            stdin.error: number;
            stdout.error: number;
            timeout: number;
            tooMany: number;
            unhealthy: number;
            worn: number;
        };
        currentProcCount: number;
        ended: boolean;
        ending: boolean;
        internalErrorCount: number;
        maxProcCount: number;
        msBeforeNextSpawn: number;
        pendingTaskCount: number;
        readyProcCount: number;
        spawnedProcCount: number;
        startErrorRatePerMinute: number;
    }

    • childEndCounts: {
          broken: number;
          closed: number;
          ended: number;
          ending: number;
          idle: number;
          old: number;
          proc.close: number;
          proc.disconnect: number;
          proc.error: number;
          proc.exit: number;
          startError: number;
          stderr: number;
          stderr.error: number;
          stdin.error: number;
          stdout.error: number;
          timeout: number;
          tooMany: number;
          unhealthy: number;
          worn: number;
      }
      • broken: number
      • closed: number
      • ended: number
      • ending: number
      • idle: number
      • old: number
      • proc.close: number
      • proc.disconnect: number
      • proc.error: number
      • proc.exit: number
      • startError: number
      • stderr: number
      • stderr.error: number
      • stdin.error: number
      • stdout.error: number
      • timeout: number
      • tooMany: number
      • unhealthy: number
      • worn: number
    • currentProcCount: number
    • ended: boolean
    • ending: boolean
    • internalErrorCount: number
    • maxProcCount: number
    • msBeforeNextSpawn: number
    • pendingTaskCount: number
    • readyProcCount: number
    • spawnedProcCount: number
    • startErrorRatePerMinute: number
  • Run maintenance on currently spawned child processes. This method is +

    Parameters

    • maxProcs: number

    Returns void

  • For diagnostics. Contents may change.

    +

    Returns {
        childEndCounts: {
            broken: number;
            closed: number;
            ended: number;
            ending: number;
            idle: number;
            old: number;
            proc.close: number;
            proc.disconnect: number;
            proc.error: number;
            proc.exit: number;
            startError: number;
            stderr: number;
            stderr.error: number;
            stdin.error: number;
            stdout.error: number;
            timeout: number;
            tooMany: number;
            unhealthy: number;
            worn: number;
        };
        currentProcCount: number;
        ended: boolean;
        ending: boolean;
        internalErrorCount: number;
        maxProcCount: number;
        msBeforeNextSpawn: number;
        pendingTaskCount: number;
        readyProcCount: number;
        spawnedProcCount: number;
        startErrorRatePerMinute: number;
    }

    • childEndCounts: {
          broken: number;
          closed: number;
          ended: number;
          ending: number;
          idle: number;
          old: number;
          proc.close: number;
          proc.disconnect: number;
          proc.error: number;
          proc.exit: number;
          startError: number;
          stderr: number;
          stderr.error: number;
          stdin.error: number;
          stdout.error: number;
          timeout: number;
          tooMany: number;
          unhealthy: number;
          worn: number;
      }
      • broken: number
      • closed: number
      • ended: number
      • ending: number
      • idle: number
      • old: number
      • proc.close: number
      • proc.disconnect: number
      • proc.error: number
      • proc.exit: number
      • startError: number
      • stderr: number
      • stderr.error: number
      • stdin.error: number
      • stdout.error: number
      • timeout: number
      • tooMany: number
      • unhealthy: number
      • worn: number
    • currentProcCount: number
    • ended: boolean
    • ending: boolean
    • internalErrorCount: number
    • maxProcCount: number
    • msBeforeNextSpawn: number
    • pendingTaskCount: number
    • readyProcCount: number
    • spawnedProcCount: number
    • startErrorRatePerMinute: number
  • Run maintenance on currently spawned child processes. This method is normally invoked automatically as tasks are enqueued and processed.

    Only public for tests.

    -

    Returns Promise<void[]>

Generated using TypeDoc

\ No newline at end of file +

Returns Promise<void[]>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/BatchClusterOptions.html b/docs/classes/BatchClusterOptions.html index 249f32d..d05601e 100644 --- a/docs/classes/BatchClusterOptions.html +++ b/docs/classes/BatchClusterOptions.html @@ -1,60 +1,58 @@ -BatchClusterOptions | batch-cluster

Class BatchClusterOptions

These parameter values have somewhat sensible defaults, but can be +BatchClusterOptions | batch-cluster

Class BatchClusterOptions

These parameter values have somewhat sensible defaults, but can be overridden for a given BatchCluster.

-

Constructors

Properties

cleanupChildProcs: boolean = true

Should batch-cluster try to clean up after spawned processes that don't +

Constructors

Properties

cleanupChildProcs: boolean = true

Should batch-cluster try to clean up after spawned processes that don't shut down?

Only disable this if you have another means of PID cleanup.

Defaults to true.

-
endGracefulWaitTimeMillis: number = 500

When this.end() is called, or Node broadcasts the beforeExit event, +

endGracefulWaitTimeMillis: number = 500

When this.end() is called, or Node broadcasts the beforeExit event, this is the milliseconds spent waiting for currently running tasks to finish before sending kill signals to child processes.

Setting this value to 0 means child processes will immediately receive a kill signal to shut down. Any pending requests may be interrupted. Must be >= 0. Defaults to 500ms.

-
healthCheckIntervalMillis: number = 0

If healthCheckCommand is set, how frequently should we check for +

healthCheckIntervalMillis: number = 0

If healthCheckCommand is set, how frequently should we check for unhealthy child processes?

Set this to 0 to disable this feature.

-
logger: (() => Logger) = logger

A BatchCluster instance and associated BatchProcess instances will share +

logger: (() => Logger) = logger

A BatchCluster instance and associated BatchProcess instances will share this Logger. Defaults to the Logger instance provided to setLogger().

-

Type declaration

    • (): Logger
    • A BatchCluster instance and associated BatchProcess instances will share -this Logger. Defaults to the Logger instance provided to setLogger().

      -

      Returns Logger

maxFailedTasksPerProcess: number = 2

How many failed tasks should a process be allowed to process before it is +

Type declaration

maxFailedTasksPerProcess: number = 2

How many failed tasks should a process be allowed to process before it is recycled?

Set this to 0 to disable this feature.

-
maxIdleMsPerProcess: number = 0

If a child process is idle for more than this value (in milliseconds), shut +

maxIdleMsPerProcess: number = 0

If a child process is idle for more than this value (in milliseconds), shut it down to reduce system resource consumption.

A value of ~10 seconds to a couple minutes would be reasonable. Set this to 0 to disable this feature.

-
maxProcAgeMillis: number = ...

Child processes will be recycled when they reach this age.

+
maxProcAgeMillis: number = ...

Child processes will be recycled when they reach this age.

This value must not be less than spawnTimeoutMillis or taskTimeoutMillis.

Defaults to 5 minutes. Set to 0 to disable.

-
maxProcs: number = 1

No more than maxProcs child processes will be run at a given time +

maxProcs: number = 1

No more than maxProcs child processes will be run at a given time to serve pending tasks.

Defaults to 1.

-
maxReasonableProcessFailuresPerMinute: number = 10

If the initial versionCommand fails for new spawned processes more +

maxReasonableProcessFailuresPerMinute: number = 10

If the initial versionCommand fails for new spawned processes more than this rate, end this BatchCluster and throw an error, because something is terribly wrong.

If this backstop didn't exist, new (failing) child processes would be created indefinitely.

Defaults to 10. Set to 0 to disable.

-
maxTasksPerProcess: number = 500

Processes will be recycled after processing maxTasksPerProcess tasks. +

maxTasksPerProcess: number = 500

Processes will be recycled after processing maxTasksPerProcess tasks. Depending on the commands and platform, batch mode commands shouldn't exhibit unduly memory leaks for at least tens if not hundreds of tasks. Setting this to a low number (like less than 10) will impact performance @@ -62,21 +60,21 @@ high number (> 1000) may result in more memory being consumed than necessary.

Must be >= 0. Defaults to 500

-
minDelayBetweenSpawnMillis: number = ...

If maxProcs > 1, spawning new child processes to process tasks can slow +

minDelayBetweenSpawnMillis: number = ...

If maxProcs > 1, spawning new child processes to process tasks can slow down initial processing, and create unnecessary processes.

Must be >= 0ms. Defaults to 1.5 seconds.

-
onIdleIntervalMillis: number = ...

This is the minimum interval between calls to BatchCluster's #onIdle +

onIdleIntervalMillis: number = ...

This is the minimum interval between calls to BatchCluster's #onIdle method, which runs general janitorial processes like child process management and task queue validation.

Must be > 0. Defaults to 10 seconds.

-
pidCheckIntervalMillis: number = ...

Verify child processes are still running by checking the OS process table.

+
pidCheckIntervalMillis: number = ...

Verify child processes are still running by checking the OS process table.

Set this to 0 to disable this feature.

-
spawnTimeoutMillis: number = ...

Spawning new child processes and servicing a "version" task must not take +

spawnTimeoutMillis: number = ...

Spawning new child processes and servicing a "version" task must not take longer than spawnTimeoutMillis before the process is considered failed, and need to be restarted. Be pessimistic here--windows can regularly take several seconds to spin up a process, thanks to antivirus shenanigans.

Defaults to 15 seconds. Set to 0 to disable.

-
streamFlushMillis: number = ...

When a task sees a "pass" or "fail" from either stdout or stderr, it needs +

streamFlushMillis: number = ...

When a task sees a "pass" or "fail" from either stdout or stderr, it needs to wait for the other stream to finish flushing to ensure the task's Parser sees the entire relevant stream contents. A larger number may be required for slower computers to prevent internal errors due to lack of stream @@ -90,8 +88,8 @@

Setting this to 0 makes whatever flushes first--stdout and stderr--and will most likely result in internal errors (due to stream buffers not being able to be associated to tasks that were just settled)

-
taskTimeoutMillis: number = ...

If commands take longer than this, presume the underlying process is dead +

taskTimeoutMillis: number = ...

If commands take longer than this, presume the underlying process is dead and we should fail the task.

This should be set to something on the order of seconds.

Defaults to 10 seconds. Set to 0 to disable.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/BatchProcess.html b/docs/classes/BatchProcess.html index ea5fb15..9923a27 100644 --- a/docs/classes/BatchProcess.html +++ b/docs/classes/BatchProcess.html @@ -1,58 +1,58 @@ -BatchProcess | batch-cluster

Class BatchProcess

BatchProcess manages the care and feeding of a single child process.

-

Constructors

Properties

failedTaskCount: number = 0
name: string
opts: InternalBatchProcessOptions
pid: number
proc: ChildProcess
start: number = ...
startupTaskId: number

Accessors

  • get ended(): boolean
  • Returns boolean

    true if this.end() has completed running, which includes child process cleanup. Note that this may return true and the process table may still include the child pid. Call () for an authoritative (but expensive!) answer.

    -
  • get ending(): boolean
  • Returns boolean

    true if this.end() has been requested (which may be due to the +

  • get ending(): boolean
  • Returns boolean

    true if this.end() has been requested (which may be due to the child process exiting)

    -
  • get exited(): boolean
  • Returns boolean

    true if the child process has exited and is no longer in the +

  • get exited(): boolean
  • Returns boolean

    true if the child process has exited and is no longer in the process table. Note that this may be erroneously false if the process table hasn't been checked. Call () for an authoritative (but expensive!) answer.

    -
  • get healthy(): boolean
  • Returns boolean

    true if the process doesn't need to be recycled.

    -
  • get idle(): boolean
  • Returns boolean

    true iff no current task. Does not take into consideration if the +

  • get healthy(): boolean
  • Returns boolean

    true if the process doesn't need to be recycled.

    +
  • get idle(): boolean
  • Returns boolean

    true iff no current task. Does not take into consideration if the process has ended or should be recycled: see BatchProcess.ready.

    -
  • get ready(): boolean
  • Returns boolean

    true iff this process is both healthy and idle, and ready for a +

  • get ready(): boolean
  • Returns boolean

    true iff this process is both healthy and idle, and ready for a new task.

    -
  • get whyNotHealthy(): null | WhyNotHealthy
  • Returns null | WhyNotHealthy

    a string describing why this process should be recycled, or null if the process passes all health checks. Note that this doesn't include if we're already busy: see BatchProcess.whyNotReady if you need to know if a process can handle a new task.

    -
  • get whyNotReady(): null | WhyNotReady
  • Returns null | WhyNotReady

    a string describing why this process cannot currently handle a new task, or undefined if this process is idle and healthy.

    -

Methods

  • End this child process.

    -

    Parameters

    • gracefully: boolean = true

      Wait for any current task to be resolved or rejected +

Methods

  • End this child process.

    +

    Parameters

    • gracefully: boolean = true

      Wait for any current task to be resolved or rejected before shutting down the child process.

      -
    • reason: WhyNotHealthy

      who called end() (used for logging)

      +
    • reason: WhyNotHealthy

      who called end() (used for logging)

    Returns Promise<void>

    Promise that will be resolved when the process has completed. Subsequent calls to end() will ignore the parameters and return the first endPromise.

    -
  • Returns boolean

    true if the child process is in the process table

    -

Generated using TypeDoc

\ No newline at end of file +
  • Returns boolean

    true if the child process is in the process table

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/Deferred.html b/docs/classes/Deferred.html index 3285054..1936ffb 100644 --- a/docs/classes/Deferred.html +++ b/docs/classes/Deferred.html @@ -1,21 +1,21 @@ -Deferred | batch-cluster

Class Deferred<T>

Enables a Promise to be resolved or rejected at a future time, outside of +Deferred | batch-cluster

Class Deferred<T>

Enables a Promise to be resolved or rejected at a future time, outside of the context of the Promise construction. Also exposes the pending, fulfilled, or rejected state of the promise.

-

Type Parameters

  • T

Implements

  • PromiseLike<T>

Constructors

Properties

[toStringTag]: "Deferred" = "Deferred"
promise: Promise<T>

Accessors

  • get fulfilled(): boolean
  • Returns boolean

    true iff resolve has been invoked

    -
  • get pending(): boolean
  • Returns boolean

    true iff neither resolve nor rejected have been invoked

    -
  • get rejected(): boolean
  • Returns boolean

    true iff rejected has been invoked

    -
  • get settled(): boolean
  • Returns boolean

    true iff resolve or rejected have been invoked

    -

Methods

  • Parameters

    • Optional reason: string | Error

    Returns boolean

  • Parameters

    • value: T

    Returns boolean

Generated using TypeDoc

\ No newline at end of file +

Type Parameters

  • T

Implements

  • PromiseLike<T>

Constructors

Properties

[toStringTag]: "Deferred" = "Deferred"
promise: Promise<T>

Accessors

  • get fulfilled(): boolean
  • Returns boolean

    true iff resolve has been invoked

    +
  • get pending(): boolean
  • Returns boolean

    true iff neither resolve nor rejected have been invoked

    +
  • get rejected(): boolean
  • Returns boolean

    true iff rejected has been invoked

    +
  • get settled(): boolean
  • Returns boolean

    true iff resolve or rejected have been invoked

    +

Methods

  • Parameters

    • Optional reason: string | Error

    Returns boolean

  • Parameters

    • value: T

    Returns boolean

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/Rate.html b/docs/classes/Rate.html index 322023f..c45c132 100644 --- a/docs/classes/Rate.html +++ b/docs/classes/Rate.html @@ -1,20 +1,20 @@ -Rate | batch-cluster

Constructors

  • Parameters

    • periodMs: number = minuteMs

      the length of time to retain event timestamps for computing +Rate | batch-cluster

      Constructors

      • Parameters

        • periodMs: number = minuteMs

          the length of time to retain event timestamps for computing rate. Events older than this value will be discarded.

          -
        • warmupMs: number = secondMs

          return null from Rate#msPerEvent if it's been less +

        • warmupMs: number = secondMs

          return null from Rate#msPerEvent if it's been less than warmupMs since construction or Rate#clear.

          -

        Returns Rate

      Properties

      periodMs: number = minuteMs

      the length of time to retain event timestamps for computing +

    Returns Rate

Properties

periodMs: number = minuteMs

the length of time to retain event timestamps for computing rate. Events older than this value will be discarded.

-
warmupMs: number = secondMs

return null from Rate#msPerEvent if it's been less +

warmupMs: number = secondMs

return null from Rate#msPerEvent if it's been less than warmupMs since construction or Rate#clear.

-

Accessors

  • get eventCount(): number
  • Returns number

  • get eventsPerMinute(): number
  • Returns number

  • get eventsPerMs(): number
  • Returns number

  • get eventsPerSecond(): number
  • Returns number

  • get msPerEvent(): null | number
  • Returns null | number

  • get msSinceLastEvent(): null | number
  • Returns null | number

Methods

Generated using TypeDoc

\ No newline at end of file +

Accessors

  • get eventCount(): number
  • Returns number

  • get eventsPerMinute(): number
  • Returns number

  • get eventsPerMs(): number
  • Returns number

  • get eventsPerSecond(): number
  • Returns number

  • get msPerEvent(): null | number
  • Returns null | number

  • get msSinceLastEvent(): null | number
  • Returns null | number

Methods

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/Task.html b/docs/classes/Task.html index 768e4d9..d862a74 100644 --- a/docs/classes/Task.html +++ b/docs/classes/Task.html @@ -1,27 +1,27 @@ -Task | batch-cluster

Class Task<T>

Tasks embody individual jobs given to the underlying child processes. Each +Task | batch-cluster

Class Task<T>

Tasks embody individual jobs given to the underlying child processes. Each instance has a promise that will be resolved or rejected based on the result of the task.

-

Type Parameters

  • T = any

Constructors

Properties

Accessors

Methods

Constructors

  • Type Parameters

    • T = any

    Parameters

    • command: string

      is the value written to stdin to perform the given +

Type Parameters

  • T = any

Constructors

Properties

Accessors

Methods

Constructors

  • Type Parameters

    • T = any

    Parameters

    • command: string

      is the value written to stdin to perform the given task.

      -
    • parser: Parser<T>

      is used to parse resulting data from the +

    • parser: Parser<T>

      is used to parse resulting data from the underlying process to a typed object.

      -

    Returns Task<T>

Properties

command: string

is the value written to stdin to perform the given +

Returns Task<T>

Properties

command: string

is the value written to stdin to perform the given task.

-
parser: Parser<T>

is used to parse resulting data from the +

parser: Parser<T>

is used to parse resulting data from the underlying process to a typed object.

-
taskId: number = ...

Accessors

  • get pending(): boolean
  • Returns boolean

  • get promise(): Promise<T>
  • Returns Promise<T>

    the resolution or rejection of this task.

    -
  • get runtimeMs(): undefined | number
  • Returns undefined | number

  • get state(): string
  • Returns string

Methods

  • Parameters

    • opts: TaskOptions

    Returns void

  • Parameters

    • buf: string | Buffer

    Returns void

  • Parameters

    • buf: string | Buffer

    Returns void

  • Parameters

    • error: Error

    Returns boolean

    true if the wrapped promise was rejected

    -
  • Returns string

Generated using TypeDoc

\ No newline at end of file +
taskId: number = ...

Accessors

  • get pending(): boolean
  • Returns boolean

  • get promise(): Promise<T>
  • Returns Promise<T>

    the resolution or rejection of this task.

    +
  • get runtimeMs(): undefined | number
  • Returns undefined | number

  • get state(): string
  • Returns string

Methods

  • Parameters

    • opts: TaskOptions

    Returns void

  • Parameters

    • buf: string | Buffer

    Returns void

  • Parameters

    • buf: string | Buffer

    Returns void

  • Parameters

    • error: Error

    Returns boolean

    true if the wrapped promise was rejected

    +
  • Returns string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/SimpleParser.html b/docs/functions/SimpleParser.html index b5ccf2d..6869338 100644 --- a/docs/functions/SimpleParser.html +++ b/docs/functions/SimpleParser.html @@ -1,9 +1,9 @@ -SimpleParser | batch-cluster

Function SimpleParser

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/kill.html b/docs/functions/kill.html index 85e458e..17cb42f 100644 --- a/docs/functions/kill.html +++ b/docs/functions/kill.html @@ -1,5 +1,5 @@ -kill | batch-cluster

Function kill

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/logger-1.html b/docs/functions/logger-1.html index 32a1063..aa58757 100644 --- a/docs/functions/logger-1.html +++ b/docs/functions/logger-1.html @@ -1 +1 @@ -logger | batch-cluster

Generated using TypeDoc

\ No newline at end of file +logger | batch-cluster

Function logger

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/pidExists.html b/docs/functions/pidExists.html index cff55fc..b641c9c 100644 --- a/docs/functions/pidExists.html +++ b/docs/functions/pidExists.html @@ -1,4 +1,4 @@ -pidExists | batch-cluster

Function pidExists

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/pids.html b/docs/functions/pids.html index 422fa89..4ed6048 100644 --- a/docs/functions/pids.html +++ b/docs/functions/pids.html @@ -1,3 +1,3 @@ -pids | batch-cluster

Function pids

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/setLogger.html b/docs/functions/setLogger.html index 0c479ab..ebf4b1b 100644 --- a/docs/functions/setLogger.html +++ b/docs/functions/setLogger.html @@ -1 +1 @@ -setLogger | batch-cluster

Generated using TypeDoc

\ No newline at end of file +setLogger | batch-cluster

Function setLogger

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 4b9b5f7..7496adf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ -batch-cluster

batch-cluster

batch-cluster

Efficient, concurrent work via batch-mode command-line tools from within Node.js.

+batch-cluster

batch-cluster

batch-cluster

Efficient, concurrent work via batch-mode command-line tools from within Node.js.

npm version Build status GitHub issues @@ -66,4 +66,4 @@ processes are cleaned up.

If you run this in a docker image based off Alpine or Debian Slim, this won't work properly unless you install the procps package.

See issue #13 for details.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/BatchClusterEvents.html b/docs/interfaces/BatchClusterEvents.html index 9db732a..968768d 100644 --- a/docs/interfaces/BatchClusterEvents.html +++ b/docs/interfaces/BatchClusterEvents.html @@ -1,56 +1,37 @@ -BatchClusterEvents | batch-cluster

Interface BatchClusterEvents

This interface describes the BatchCluster's event names as fields. The type +BatchClusterEvents | batch-cluster

Interface BatchClusterEvents

This interface describes the BatchCluster's event names as fields. The type of the field describes the event data payload.

See BatchClusterEmitter for more details.

-
interface BatchClusterEvents {
    beforeEnd: (() => void);
    childEnd: ((childProcess, reason) => void);
    childStart: ((childProcess) => void);
    end: (() => void);
    endError: ((error, proc?) => void);
    fatalError: ((error) => void);
    healthCheckError: ((error, proc) => void);
    internalError: ((error) => void);
    noTaskData: ((stdoutData, stderrData, proc) => void);
    startError: ((error, childProcess?) => void);
    taskData: ((data, task, proc) => void);
    taskError: ((error, task, proc) => void);
    taskResolved: ((task, proc) => void);
    taskTimeout: ((timeoutMs, task, proc) => void);
}

Properties

beforeEnd: (() => void)

Emitted when this instance is in the process of ending.

-

Type declaration

    • (): void
    • Emitted when this instance is in the process of ending.

      -

      Returns void

childEnd: ((childProcess, reason) => void)

Emitted when a child process has ended

-

Type declaration

    • (childProcess, reason): void
    • Emitted when a child process has ended

      -

      Parameters

      Returns void

childStart: ((childProcess) => void)

Emitted when a child process has started

-

Type declaration

    • (childProcess): void
    • Emitted when a child process has started

      -

      Parameters

      Returns void

end: (() => void)

Emitted when this instance has ended. No child processes should remain at +

interface BatchClusterEvents {
    beforeEnd: (() => void);
    childEnd: ((childProcess, reason) => void);
    childStart: ((childProcess) => void);
    end: (() => void);
    endError: ((error, proc?) => void);
    fatalError: ((error) => void);
    healthCheckError: ((error, proc) => void);
    internalError: ((error) => void);
    noTaskData: ((stdoutData, stderrData, proc) => void);
    startError: ((error, childProcess?) => void);
    taskData: ((data, task, proc) => void);
    taskError: ((error, task, proc) => void);
    taskResolved: ((task, proc) => void);
    taskTimeout: ((timeoutMs, task, proc) => void);
}

Properties

beforeEnd: (() => void)

Emitted when this instance is in the process of ending.

+

Type declaration

    • (): void
    • Returns void

childEnd: ((childProcess, reason) => void)

Emitted when a child process has ended

+

Type declaration

childStart: ((childProcess) => void)

Emitted when a child process has started

+

Type declaration

    • (childProcess): void
    • Parameters

      Returns void

end: (() => void)

Emitted when this instance has ended. No child processes should remain at this point.

-

Type declaration

    • (): void
    • Emitted when this instance has ended. No child processes should remain at -this point.

      -

      Returns void

endError: ((error, proc?) => void)

Emitted when a child process has an error during shutdown

-

Type declaration

    • (error, proc?): void
    • Emitted when a child process has an error during shutdown

      -

      Parameters

      Returns void

fatalError: ((error) => void)

Emitted when .end() is called because the error rate has exceeded -BatchClusterOptions.maxReasonableProcessFailuresPerMinute

-

Type declaration

    • (error): void
    • Emitted when .end() is called because the error rate has exceeded +

      Type declaration

        • (): void
        • Returns void

endError: ((error, proc?) => void)

Emitted when a child process has an error during shutdown

+

Type declaration

    • (error, proc?): void
    • Parameters

      Returns void

fatalError: ((error) => void)

Emitted when .end() is called because the error rate has exceeded BatchClusterOptions.maxReasonableProcessFailuresPerMinute

-

Parameters

  • error: Error

Returns void

healthCheckError: ((error, proc) => void)

Emitted when a process fails health checks

-

Type declaration

    • (error, proc): void
    • Emitted when a process fails health checks

      -

      Parameters

      Returns void

internalError: ((error) => void)

Emitted when an internal consistency check fails

-

Type declaration

    • (error): void
    • Emitted when an internal consistency check fails

      -

      Parameters

      • error: Error

      Returns void

noTaskData: ((stdoutData, stderrData, proc) => void)

Emitted when child processes write to stdout or stderr without a current +

Type declaration

    • (error): void
    • Parameters

      • error: Error

      Returns void

healthCheckError: ((error, proc) => void)

Emitted when a process fails health checks

+

Type declaration

    • (error, proc): void
    • Parameters

      Returns void

internalError: ((error) => void)

Emitted when an internal consistency check fails

+

Type declaration

    • (error): void
    • Parameters

      • error: Error

      Returns void

noTaskData: ((stdoutData, stderrData, proc) => void)

Emitted when child processes write to stdout or stderr without a current task

-

Type declaration

    • (stdoutData, stderrData, proc): void
    • Emitted when child processes write to stdout or stderr without a current -task

      -

      Parameters

      • stdoutData: null | string | Buffer
      • stderrData: null | string | Buffer
      • proc: BatchProcess

      Returns void

startError: ((error, childProcess?) => void)

Emitted when a child process fails to spin up and run the BatchProcessOptions.versionCommand successfully within BatchClusterOptions.spawnTimeoutMillis.

-

Type declaration

Param: childProcess

will be undefined if the error is from ChildProcessFactory.processFactory

-
taskData: ((data, task, proc) => void)

Emitted when tasks receive data, which may be partial chunks from the task -stream.

-

Type declaration

    • (data, task, proc): void
    • Emitted when tasks receive data, which may be partial chunks from the task +

      Type declaration

        • (stdoutData, stderrData, proc): void
        • Parameters

          • stdoutData: null | string | Buffer
          • stderrData: null | string | Buffer
          • proc: BatchProcess

          Returns void

startError: ((error, childProcess?) => void)

Emitted when a child process fails to spin up and run the BatchProcessOptions.versionCommand successfully within BatchClusterOptions.spawnTimeoutMillis.

+

Type declaration

taskData: ((data, task, proc) => void)

Emitted when tasks receive data, which may be partial chunks from the task stream.

-

Parameters

Returns void

taskError: ((error, task, proc) => void)

Emitted when a task has an error

-

Type declaration

    • (error, task, proc): void
    • Emitted when a task has an error

      -

      Parameters

      Returns void

taskResolved: ((task, proc) => void)

Emitted when a task has been resolved

-

Type declaration

    • (task, proc): void
    • Emitted when a task has been resolved

      -

      Parameters

      Returns void

taskTimeout: ((timeoutMs, task, proc) => void)

Emitted when a task times out. Note that a taskError event always succeeds these events.

-

Type declaration

    • (timeoutMs, task, proc): void
    • Emitted when a task times out. Note that a taskError event always succeeds these events.

      -

      Parameters

      Returns void

Generated using TypeDoc

\ No newline at end of file +

Type declaration

    • (data, task, proc): void
    • Parameters

      Returns void

taskError: ((error, task, proc) => void)

Emitted when a task has an error

+

Type declaration

    • (error, task, proc): void
    • Parameters

      Returns void

taskResolved: ((task, proc) => void)

Emitted when a task has been resolved

+

Type declaration

taskTimeout: ((timeoutMs, task, proc) => void)

Emitted when a task times out. Note that a taskError event always succeeds these events.

+

Type declaration

    • (timeoutMs, task, proc): void
    • Parameters

      Returns void

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/BatchProcessOptions.html b/docs/interfaces/BatchProcessOptions.html index d12f207..17c3f8e 100644 --- a/docs/interfaces/BatchProcessOptions.html +++ b/docs/interfaces/BatchProcessOptions.html @@ -1,24 +1,24 @@ -BatchProcessOptions | batch-cluster

Interface BatchProcessOptions

BatchProcessOptions have no reasonable defaults, as they are specific to +BatchProcessOptions | batch-cluster

Interface BatchProcessOptions

BatchProcessOptions have no reasonable defaults, as they are specific to the API of the command that BatchCluster is spawning.

All fields must be set.

-
interface BatchProcessOptions {
    exitCommand?: string;
    fail: string | RegExp;
    healthCheckCommand?: string;
    pass: string | RegExp;
    versionCommand: string;
}

Properties

exitCommand?: string

Command to end the child batch process. If not provided (or undefined), +

interface BatchProcessOptions {
    exitCommand?: string;
    fail: string | RegExp;
    healthCheckCommand?: string;
    pass: string | RegExp;
    versionCommand: string;
}

Properties

exitCommand?: string

Command to end the child batch process. If not provided (or undefined), stdin will be closed to signal to the child process that it may terminate, and if it does not shut down within endGracefulWaitTimeMillis, it will be SIGHUP'ed.

-
fail: string | RegExp

Expected text to print if a command fails. Cannot be blank. Strings will +

fail: string | RegExp

Expected text to print if a command fails. Cannot be blank. Strings will be interpreted as a regular expression fragment.

-
healthCheckCommand?: string

If provided, and healthCheckIntervalMillis is greater than 0, or the +

healthCheckCommand?: string

If provided, and healthCheckIntervalMillis is greater than 0, or the previous task failed, this command will be sent to child processes.

If the command outputs to stderr or returns a fail string, the process will be considered unhealthy and recycled.

-
pass: string | RegExp

Expected text to print if a command passes. Cannot be blank. Strings will +

pass: string | RegExp

Expected text to print if a command passes. Cannot be blank. Strings will be interpreted as a regular expression fragment.

-
versionCommand: string

Low-overhead command to verify the child batch process has started. Will +

versionCommand: string

Low-overhead command to verify the child batch process has started. Will be invoked immediately after spawn. This command must return before any tasks will be given to a given process.

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/ChildProcessFactory.html b/docs/interfaces/ChildProcessFactory.html index 600cf5e..4afbedb 100644 --- a/docs/interfaces/ChildProcessFactory.html +++ b/docs/interfaces/ChildProcessFactory.html @@ -1,15 +1,9 @@ -ChildProcessFactory | batch-cluster

Interface ChildProcessFactory

These are required parameters for a given BatchCluster.

-
interface ChildProcessFactory {
    processFactory: (() => ChildProcess | Promise<ChildProcess>);
}

Properties

Properties

processFactory: (() => ChildProcess | Promise<ChildProcess>)

Expected to be a simple call to execFile. Platform-specific code is the +ChildProcessFactory | batch-cluster

Interface ChildProcessFactory

These are required parameters for a given BatchCluster.

+
interface ChildProcessFactory {
    processFactory: (() => ChildProcess | Promise<ChildProcess>);
}

Properties

Properties

processFactory: (() => ChildProcess | Promise<ChildProcess>)

Expected to be a simple call to execFile. Platform-specific code is the responsibility of this thunk. Error handlers will be registered as appropriate.

If this function throws an error or rejects the promise after you've spawned a child process, the child process may continue to run and leak system resources.

-

Type declaration

    • (): ChildProcess | Promise<ChildProcess>
    • Expected to be a simple call to execFile. Platform-specific code is the -responsibility of this thunk. Error handlers will be registered as -appropriate.

      -

      If this function throws an error or rejects the promise after you've -spawned a child process, the child process may continue to run and leak -system resources.

      -

      Returns ChildProcess | Promise<ChildProcess>

Generated using TypeDoc

\ No newline at end of file +

Type declaration

    • (): ChildProcess | Promise<ChildProcess>
    • Returns ChildProcess | Promise<ChildProcess>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Logger.html b/docs/interfaces/Logger.html index 83d2624..8bd1ce9 100644 --- a/docs/interfaces/Logger.html +++ b/docs/interfaces/Logger.html @@ -1,7 +1,7 @@ -Logger | batch-cluster

Interface Logger

Simple interface for logging.

-
interface Logger {
    debug: LogFunc;
    error: LogFunc;
    info: LogFunc;
    trace: LogFunc;
    warn: LogFunc;
}

Properties

Properties

debug: LogFunc
error: LogFunc
info: LogFunc
trace: LogFunc
warn: LogFunc

Generated using TypeDoc

\ No newline at end of file +Logger | batch-cluster

Interface Logger

Simple interface for logging.

+
interface Logger {
    debug: LogFunc;
    error: LogFunc;
    info: LogFunc;
    trace: LogFunc;
    warn: LogFunc;
}

Properties

Properties

debug: LogFunc
error: LogFunc
info: LogFunc
trace: LogFunc
warn: LogFunc

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Parser.html b/docs/interfaces/Parser.html index 015e523..6592626 100644 --- a/docs/interfaces/Parser.html +++ b/docs/interfaces/Parser.html @@ -1,12 +1,12 @@ -Parser | batch-cluster

Interface Parser<T>

Parser implementations convert stdout and stderr from the underlying child +Parser | batch-cluster

Interface Parser<T>

Parser implementations convert stdout and stderr from the underlying child process to a more useable format. This can be a no-op passthrough if no parsing is necessary.

-
interface Parser<T> ((stdout, stderr, passed) => T | Promise<T>)

Type Parameters

  • T

  • Invoked once per task.

    -

    Parameters

    • stdout: string

      the concatenated stream from stdin, stripped of the PASS +

interface Parser<T> ((stdout, stderr, passed) => T | Promise<T>)

Type Parameters

  • T
  • Invoked once per task.

    +

    Parameters

    • stdout: string

      the concatenated stream from stdin, stripped of the PASS or FAIL tokens from BatchProcessOptions.

      -
    • stderr: undefined | string

      if defined, includes all text emitted to stderr.

      -
    • passed: boolean

      true iff the PASS pattern was found in stdout.

      +
    • stderr: undefined | string

      if defined, includes all text emitted to stderr.

      +
    • passed: boolean

      true iff the PASS pattern was found in stdout.

    Returns T | Promise<T>

    Throws

    an error if the Parser implementation wants to reject the task. It is valid to raise Errors if stderr is undefined.

    See

    BatchProcessOptions

    -

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/TypedEventEmitter.html b/docs/interfaces/TypedEventEmitter.html index 88cc5fe..3e3d6fa 100644 --- a/docs/interfaces/TypedEventEmitter.html +++ b/docs/interfaces/TypedEventEmitter.html @@ -1,7 +1,7 @@ -TypedEventEmitter | batch-cluster

Interface TypedEventEmitter<T>

interface TypedEventEmitter<T> {
    emit<E>(eventName, ...args): boolean;
    listeners<E>(event): Function[];
    off<E>(eventName, listener): this;
    on<E>(eventName, listener): this;
    once<E>(eventName, listener): this;
    removeAllListeners(eventName?): this;
}

Type Parameters

  • T

Methods

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • Rest ...args: Args<T[E]>

    Returns boolean

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • event: E

    Returns Function[]

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: Args<T[E]>

          Returns void

    Returns this

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: Args<T[E]>

          Returns void

    Returns this

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: Args<T[E]>

          Returns void

    Returns this

Generated using TypeDoc

\ No newline at end of file +TypedEventEmitter | batch-cluster

Interface TypedEventEmitter<T>

interface TypedEventEmitter<T> {
    emit<E>(eventName, ...args): boolean;
    listeners<E>(event): Function[];
    off<E>(eventName, listener): this;
    on<E>(eventName, listener): this;
    once<E>(eventName, listener): this;
    removeAllListeners(eventName?): this;
}

Type Parameters

  • T

Methods

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • Rest ...args: Args<T[E]>

    Returns boolean

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • event: E

    Returns Function[]

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: Args<T[E]>

          Returns void

    Returns this

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: Args<T[E]>

          Returns void

    Returns this

  • Type Parameters

    • E extends string | number | symbol

    Parameters

    • eventName: E
    • listener: ((...args) => void)
        • (...args): void
        • Parameters

          • Rest ...args: Args<T[E]>

          Returns void

    Returns this

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index cbef775..6e5ec62 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,27 +1,27 @@ -batch-cluster

Generated using TypeDoc

\ No newline at end of file +batch-cluster

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/BatchClusterEmitter.html b/docs/types/BatchClusterEmitter.html index 94fc57e..bb24755 100644 --- a/docs/types/BatchClusterEmitter.html +++ b/docs/types/BatchClusterEmitter.html @@ -1,4 +1,4 @@ -BatchClusterEmitter | batch-cluster

Type alias BatchClusterEmitter

The BatchClusterEmitter signature is built up automatically by the +BatchClusterEmitter | batch-cluster

Type alias BatchClusterEmitter

The BatchClusterEmitter signature is built up automatically by the BatchClusterEvents interface, which ensures .on, .off, and .emit signatures are all consistent, and include the correct data payloads for all of BatchCluster's events.

@@ -15,4 +15,4 @@

See BatchClusterEvents for a the list of events and their payload signatures

-

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/ChildExitReason.html b/docs/types/ChildExitReason.html index a02b14f..afc79e5 100644 --- a/docs/types/ChildExitReason.html +++ b/docs/types/ChildExitReason.html @@ -1 +1 @@ -ChildExitReason | batch-cluster

Generated using TypeDoc

\ No newline at end of file +ChildExitReason | batch-cluster

Type alias ChildExitReason

ChildExitReason: WhyNotHealthy | "tooMany"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/WhyNotHealthy.html b/docs/types/WhyNotHealthy.html index 74974d7..0051758 100644 --- a/docs/types/WhyNotHealthy.html +++ b/docs/types/WhyNotHealthy.html @@ -1 +1 @@ -WhyNotHealthy | batch-cluster

Type alias WhyNotHealthy

WhyNotHealthy: "broken" | "closed" | "ending" | "ended" | "idle" | "old" | "proc.close" | "proc.disconnect" | "proc.error" | "proc.exit" | "stderr.error" | "stderr" | "stdin.error" | "stdout.error" | "timeout" | "tooMany" | "startError" | "unhealthy" | "worn"

Generated using TypeDoc

\ No newline at end of file +WhyNotHealthy | batch-cluster

Type alias WhyNotHealthy

WhyNotHealthy: "broken" | "closed" | "ending" | "ended" | "idle" | "old" | "proc.close" | "proc.disconnect" | "proc.error" | "proc.exit" | "stderr.error" | "stderr" | "stdin.error" | "stdout.error" | "timeout" | "tooMany" | "startError" | "unhealthy" | "worn"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/types/WhyNotReady.html b/docs/types/WhyNotReady.html index d2fa796..6e1d0cb 100644 --- a/docs/types/WhyNotReady.html +++ b/docs/types/WhyNotReady.html @@ -1 +1 @@ -WhyNotReady | batch-cluster

Generated using TypeDoc

\ No newline at end of file +WhyNotReady | batch-cluster

Type alias WhyNotReady

WhyNotReady: WhyNotHealthy | "busy"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/ConsoleLogger.html b/docs/variables/ConsoleLogger.html index df33ed4..3017ef4 100644 --- a/docs/variables/ConsoleLogger.html +++ b/docs/variables/ConsoleLogger.html @@ -1,4 +1,4 @@ -ConsoleLogger | batch-cluster

Variable ConsoleLoggerConst

ConsoleLogger: Logger = ...

Default Logger implementation.

+ConsoleLogger | batch-cluster

Generated using TypeDoc

\ No newline at end of file +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/Log.html b/docs/variables/Log.html index f563e71..c3845cb 100644 --- a/docs/variables/Log.html +++ b/docs/variables/Log.html @@ -1 +1 @@ -Log | batch-cluster

Variable LogConst

Log: {
    filterLevels: ((l, minLogLevel) => any);
    withLevels: ((delegate) => Logger);
    withTimestamps: ((delegate) => any);
} = ...

Type declaration

  • filterLevels: ((l, minLogLevel) => any)
      • (l, minLogLevel): any
      • Parameters

        Returns any

  • withLevels: ((delegate) => Logger)
  • withTimestamps: ((delegate) => any)
      • (delegate): any
      • Parameters

        Returns any

Generated using TypeDoc

\ No newline at end of file +Log | batch-cluster

Variable LogConst

Log: {
    filterLevels: ((l, minLogLevel) => any);
    withLevels: ((delegate) => Logger);
    withTimestamps: ((delegate) => any);
} = ...

Type declaration

  • filterLevels: ((l, minLogLevel) => any)
      • (l, minLogLevel): any
      • Parameters

        Returns any

  • withLevels: ((delegate) => Logger)
  • withTimestamps: ((delegate) => any)
      • (delegate): any
      • Parameters

        Returns any

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/LogLevels.html b/docs/variables/LogLevels.html index 974e82f..8a77734 100644 --- a/docs/variables/LogLevels.html +++ b/docs/variables/LogLevels.html @@ -1 +1 @@ -LogLevels | batch-cluster

Generated using TypeDoc

\ No newline at end of file +LogLevels | batch-cluster

Variable LogLevelsConst

LogLevels: (keyof Logger)[] = ...

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/NoLogger.html b/docs/variables/NoLogger.html index df78e77..1176eca 100644 --- a/docs/variables/NoLogger.html +++ b/docs/variables/NoLogger.html @@ -1,2 +1,2 @@ -NoLogger | batch-cluster

Generated using TypeDoc

\ No newline at end of file +NoLogger | batch-cluster

Variable NoLoggerConst

NoLogger: Logger = ...

Logger that disables all logging.

+

Generated using TypeDoc

\ No newline at end of file