From e1f985d9e722480ec1c56440b226bc0752f2443c Mon Sep 17 00:00:00 2001 From: Matt Braddock Date: Fri, 20 Oct 2023 23:00:12 -0400 Subject: [PATCH] commit docs --- .gitignore | 3 +- docs/.nojekyll | 1 + docs/assets/highlight.css | 78 + docs/assets/main.js | 59 + docs/assets/navigation.js | 1 + docs/assets/search.js | 1 + docs/assets/style.css | 1383 +++++++++++++++++ docs/classes/Manager.html | 184 +++ docs/classes/Match.html | 278 ++++ docs/classes/Player.html | 339 ++++ docs/classes/Tournament.html | 598 +++++++ docs/index.html | 68 + docs/interfaces/MatchValues.html | 239 +++ docs/interfaces/PlayerValues.html | 185 +++ docs/interfaces/SettableMatchValues.html | 164 ++ docs/interfaces/SettablePlayerValues.html | 133 ++ docs/interfaces/SettableTournamentValues.html | 196 +++ docs/interfaces/StandingsValues.html | 186 +++ docs/interfaces/TournamentValues.html | 299 ++++ docs/modules.html | 66 + 20 files changed, 4459 insertions(+), 2 deletions(-) create mode 100644 docs/.nojekyll create mode 100644 docs/assets/highlight.css create mode 100644 docs/assets/main.js create mode 100644 docs/assets/navigation.js create mode 100644 docs/assets/search.js create mode 100644 docs/assets/style.css create mode 100644 docs/classes/Manager.html create mode 100644 docs/classes/Match.html create mode 100644 docs/classes/Player.html create mode 100644 docs/classes/Tournament.html create mode 100644 docs/index.html create mode 100644 docs/interfaces/MatchValues.html create mode 100644 docs/interfaces/PlayerValues.html create mode 100644 docs/interfaces/SettableMatchValues.html create mode 100644 docs/interfaces/SettablePlayerValues.html create mode 100644 docs/interfaces/SettableTournamentValues.html create mode 100644 docs/interfaces/StandingsValues.html create mode 100644 docs/interfaces/TournamentValues.html create mode 100644 docs/modules.html diff --git a/.gitignore b/.gitignore index c2c62fd..7bddb5a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ node_modules dist umd -docs package-lock.json -test.js +test.js \ No newline at end of file diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e2ac661 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 0000000..3d72847 --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,78 @@ +:root { + --light-hl-0: #795E26; + --dark-hl-0: #DCDCAA; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #A31515; + --dark-hl-2: #CE9178; + --light-hl-3: #AF00DB; + --dark-hl-3: #C586C0; + --light-hl-4: #001080; + --dark-hl-4: #9CDCFE; + --light-hl-5: #000000; + --dark-hl-5: #C8C8C8; + --light-hl-6: #0000FF; + --dark-hl-6: #569CD6; + --light-hl-7: #098658; + --dark-hl-7: #B5CEA8; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +pre, code { background: var(--code-background); } diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 0000000..d0aa8d5 --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var Z=class extends C{constructor(n){super(n);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 0000000..2813cd9 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA42QTQrCMBCF75J1USwo0jsIguJGXIzt2BbTUZIpKOLdDVRpa8Mk2/fzzUuOL8X4YJWpDRCUaFSi7sCVE3IN1qKdf41ZxY127rWmQmWLdP1OBl3OK1/TyVJvq+HpO9npUnN/aw1Bg8TTdu8FNx9At2h7RE2M5gL5b3znjzHpcjV5gsAZBiTQDpnhrDG0y5OLwQZ3+oIx4P63I+D/YfEAAxU1lVbijjMSLmpneN/pA+F9KAAyAwAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js new file mode 100644 index 0000000..ba0c08a --- /dev/null +++ b/docs/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css new file mode 100644 index 0000000..108428c --- /dev/null +++ b/docs/assets/style.css @@ -0,0 +1,1383 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a, +h2 > a, +h3 > a, +h4 > a, +h5 > a, +h6 > a { + text-decoration: none; + color: var(--color-text); +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.5rem); +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: inline-flex; + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-nested-navigation > li > a, +.tsd-nested-navigation > li > span { + width: calc(100% - 1.75rem - 0.5rem); +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/classes/Manager.html b/docs/classes/Manager.html new file mode 100644 index 0000000..6e098f9 --- /dev/null +++ b/docs/classes/Manager.html @@ -0,0 +1,184 @@ +Manager | tournament-organizer
+
+ +
+
+
+
+ +

Class Manager

+
+

Class representing a tournament manager.

+
+
+
+

Hierarchy

+
    +
  • Manager
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Methods

+
+
+

Constructors

+
+ +
+
+

Properties

+
+ +
tournaments: Tournament[]
+

Array of all tournaments being managed.

+
+
+
+

Methods

+
+ +
    + +
  • +

    Create a new tournament.

    +

    Throws an error if ID is specified and already exists.

    +
    +
    +

    Parameters

    +
      +
    • +
      name: string
      +

      Name of the tournament

      +
      +
    • +
    • +
      settings: SettableTournamentValues = {}
      +

      Settings of the tournament

      +
      +
    • +
    • +
      id: string = undefined
      +

      ID of the tournament (randomly assigned if omitted)

      +
      +
    +

    Returns Tournament

    The newly created tournament

    + +
+
+ +
    + +
  • +

    Reload an object representing a tournament.

    +
    +
    +

    Parameters

    +
    +

    Returns Tournament

    The newly reloaded tournament

    + +
+
+ +
    + +
  • +

    Remove a tournament from the manager.

    +

    Throws an error if no tournament has the specified ID.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      ID of the tournament to be removed

      +
      +
    +

    Returns Tournament

    The removed tournament

    + +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Match.html b/docs/classes/Match.html new file mode 100644 index 0000000..942831f --- /dev/null +++ b/docs/classes/Match.html @@ -0,0 +1,278 @@ +Match | tournament-organizer
+
+ +
+
+
+
+ +

Class Match

+
+

Class representing a match.

+

See MatchValues for detailed descriptions of properties.

+
+
+
+

Hierarchy

+
    +
  • Match
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Accessors

+
+
+

Constructors

+
+ +
    + +
  • +

    Create a new match.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
    • +
    • +
      round: number
    • +
    • +
      match: number
    +

    Returns Match

    +
+
+

Properties

+
+ +
active: boolean
+

If the match is active

+
+
+
+ +
bye: boolean
+

If the match is a bye

+
+
+
+ +
id: string
+

Unique ID of the match

+
+
+
+ +
match: number
+

Match number for the match

+
+
+
+ +
meta: {
    [key: string]: any;
}
+

Any extra information

+
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+
+ +
path: {
    loss: string;
    win: string;
}
+

Next match for winners and losers

+
+
+

Type declaration

+
    +
  • +
    loss: string
    +

    ID of the next match for the loser of the current match (or null if none).

    +
    +
  • +
  • +
    win: string
    +

    ID of the next match for the winner of the current match (or null if none).

    +
    +
+
+
+ +
player1: {
    draw: number;
    id: string;
    loss: number;
    win: number;
}
+

Details for player one

+
+
+

Type declaration

+
    +
  • +
    draw: number
    +

    Number of draws.

    +
    +
  • +
  • +
    id: string
    +

    ID for player one (or null if no player assigned).

    +
    +
  • +
  • +
    loss: number
    +

    Number of losses for player one.

    +
    +
  • +
  • +
    win: number
    +

    Number of wins for player one.

    +
    +
+
+
+ +
player2: {
    draw: number;
    id: string;
    loss: number;
    win: number;
}
+

Details for player two

+
+
+

Type declaration

+
    +
  • +
    draw: number
    +

    Number of draws for player two.

    +
    +
  • +
  • +
    id: string
    +

    ID for player two (or null if no player assigned).

    +
    +
  • +
  • +
    loss: number
    +

    Number of losses for player two.

    +
    +
  • +
  • +
    win: number
    +

    Number of wins for player two.

    +
    +
+
+
+ +
round: number
+

Round number for the match

+
+
+
+

Accessors

+
+ +
    +
  • set values(options): void
  • +
  • +

    Set information about the match (only changes in information need to be included in the object)

    +
    +
    +

    Parameters

    +
    +

    Returns void

    +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Player.html b/docs/classes/Player.html new file mode 100644 index 0000000..ea8a56e --- /dev/null +++ b/docs/classes/Player.html @@ -0,0 +1,339 @@ +Player | tournament-organizer
+
+ +
+
+
+
+ +

Class Player

+
+

Class representing a player

+

See PlayerValues for detailed descriptions of properties.

+
+
+
+

Hierarchy

+
    +
  • Player
+
+
+
+ +
+
+

Constructors

+
+
+

Properties

+
+
+

Accessors

+
+
+

Methods

+
+
+

Constructors

+
+ +
    + +
  • +

    Create a new player.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
    • +
    • +
      name: string
    +

    Returns Player

    +
+
+

Properties

+
+ +
active: boolean
+

If the player is active

+
+
+
+ +
id: string
+

Unique ID of the player

+
+
+
+ +
matches: {
    bye: boolean;
    color: "w" | "b";
    draw: number;
    id: string;
    loss: number;
    opponent: string;
    pairUpDown: boolean;
    win: number;
}[]
+

Array of matches the player is in

+
+
+

Type declaration

+
    +
  • +
    bye: boolean
    +

    If the match is a bye.

    +
    +
  • +
  • +
    color: "w" | "b"
    +

    If the player is player one ('w') or player two ('b') in the match (used in Swiss pairings if colored: true).

    +
    +
  • +
  • +
    draw: number
    +

    Number of draws in the match.

    +
    +
  • +
  • +
    id: string
    +

    The ID of the match.

    +
    +
  • +
  • +
    loss: number
    +

    Number of losses for the player in the match.

    +
    +
  • +
  • +
    opponent: string
    +

    The ID of the opponent (or null if no opponent).

    +
    +
  • +
  • +
    pairUpDown: boolean
    +

    If the opponent has a different point total before the match (used in Swiss pairings).

    +
    +
  • +
  • +
    win: number
    +

    Number of wins for the player in the match.

    +
    +
+
+
+ +
meta: {
    [key: string]: any;
}
+

Any extra information

+
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+
+ +
name: string
+

Name of the player

+
+
+
+ +
value: number
+

Numerical value for player, such as rating or seed

+
+
+
+

Accessors

+
+ +
    +
  • set values(options): void
  • +
  • +

    Set information about the player (only changes in information need to be included in the object).

    +
    +
    +

    Parameters

    +
    +

    Returns void

    +
+
+

Methods

+
+ +
    + +
  • +

    Adds a match to the player's record.

    +

    Throws an error if attempting to duplicate a match.

    +
    +
    +

    Parameters

    +
      +
    • +
      match: {
          bye?: boolean;
          color?: "w" | "b";
          draw?: number;
          id: string;
          loss?: number;
          opponent: string;
          pairUpDown?: boolean;
          win?: number;
      }
      +

      Object with match details

      +
      +
      +
        +
      • +
        Optional bye?: boolean
      • +
      • +
        Optional color?: "w" | "b"
      • +
      • +
        Optional draw?: number
      • +
      • +
        id: string
      • +
      • +
        Optional loss?: number
      • +
      • +
        opponent: string
      • +
      • +
        Optional pairUpDown?: boolean
      • +
      • +
        Optional win?: number
    +

    Returns void

    +
+
+ +
    + +
  • +

    Removes a match from player history.

    +

    Throws an error if the match doesn't exist in the player's records.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      The ID of the match

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Updates the details of a match.

    +

    Throws an error if the match doesn't exist in the player's records.

    +

    Only needs to contain properties that are being changed.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      The ID of the match

      +
      +
    • +
    • +
      values: {
          bye?: boolean;
          color?: "w" | "b";
          draw?: number;
          loss?: number;
          opponent?: string;
          pairUpDown?: boolean;
          win?: number;
      }
      +

      The match details being changed

      +
      +
      +
        +
      • +
        Optional bye?: boolean
      • +
      • +
        Optional color?: "w" | "b"
      • +
      • +
        Optional draw?: number
      • +
      • +
        Optional loss?: number
      • +
      • +
        Optional opponent?: string
      • +
      • +
        Optional pairUpDown?: boolean
      • +
      • +
        Optional win?: number
    +

    Returns void

    +
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/classes/Tournament.html b/docs/classes/Tournament.html new file mode 100644 index 0000000..294572f --- /dev/null +++ b/docs/classes/Tournament.html @@ -0,0 +1,598 @@ +Tournament | tournament-organizer
+
+ +
+
+
+
+ +

Class Tournament

+
+

Class representing a tournament.

+

See TournamentValues for detailed descriptions of properties.

+
+
+
+

Hierarchy

+
    +
  • Tournament
+
+
+
+ +
+
+

Constructors

+
+ +
    + +
  • +

    Create a new tournament.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      Unique ID of the tournament

      +
      +
    • +
    • +
      name: string
      +

      Name of the tournament

      +
      +
    +

    Returns Tournament

    +
+
+

Properties

+
+ +
colored: boolean
+

If order of players in matches matters

+
+
+
+ +
id: string
+

Unique ID of the tournament

+
+
+
+ +
matches: Match[]
+

All matches of the tournament

+
+
+
+ +
meta: {
    [key: string]: any;
}
+

Any extra information

+
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+
+ +
name: string
+

Name of the tournament

+
+
+
+ +
players: Player[]
+

All players in the tournament

+
+
+
+ +
round: number
+

Current round of the tournament

+
+
+
+ +
scoring: {
    bestOf: number;
    bye: number;
    draw: number;
    loss: number;
    tiebreaks: ("median buchholz" | "solkoff" | "sonneborn berger" | "cumulative" | "versus" | "game win percentage" | "opponent game win percentage" | "opponent match win percentage" | "opponent opponent match win percentage")[];
    win: number;
}
+

Details regarding scoring

+
+
+

Type declaration

+
    +
  • +
    bestOf: number
    +

    Number of possible games. Used to determine number of wins in a bye.

    +
    +
  • +
  • +
    bye: number
    +

    Points awarded for receiving a bye.

    +
    +
  • +
  • +
    draw: number
    +

    Points awarded for drawing a match.

    +
    +
  • +
  • +
    loss: number
    +

    Points awarded for losing a match.

    +
    +
  • +
  • +
    tiebreaks: ("median buchholz" | "solkoff" | "sonneborn berger" | "cumulative" | "versus" | "game win percentage" | "opponent game win percentage" | "opponent match win percentage" | "opponent opponent match win percentage")[]
    +

    Array of tiebreakers being used.

    +
    +
  • +
  • +
    win: number
    +

    Points awarded for winning a match.

    +
    +
+
+
+ +
sorting: "none" | "ascending" | "descending"
+

Sorting method, if players are rated/seeded

+
+
+
+ +
stageOne: {
    consolation: boolean;
    format: "single-elimination" | "double-elimination" | "stepladder" | "swiss" | "round-robin" | "double-round-robin";
    maxPlayers: number;
    rounds: number;
}
+

Details regarding the tournament

+
+
+

Type declaration

+
    +
  • +
    consolation: boolean
    +

    If there is a third place match for single elimination.

    +
    +
  • +
  • +
    format: "single-elimination" | "double-elimination" | "stepladder" | "swiss" | "round-robin" | "double-round-robin"
    +

    Format for the first stage.

    +
    +
  • +
  • +
    maxPlayers: number
    +

    Maximum number of players who can be enrolled. There is no maximum if this is zero.

    +
    +
  • +
  • +
    rounds: number
    +

    Number of rounds in the first stage.

    +
    +
+
+
+ +
stageTwo: {
    advance: {
        method: "points" | "rank" | "all";
        value: number;
    };
    consolation: boolean;
    format: "single-elimination" | "double-elimination" | "stepladder";
}
+

Details regarding playoffs

+
+
+

Type declaration

+
    +
  • +
    advance: {
        method: "points" | "rank" | "all";
        value: number;
    }
    +

    Determines how players advance from stage one to stage two.

    +
    +
    +
      +
    • +
      method: "points" | "rank" | "all"
      +

      The type of value to use if players advance.

      +
      +
    • +
    • +
      value: number
      +

      The breakpoint value for advancing players (greater than or equal to if method: 'points' and less than or equal to if method: 'rank').

      +
      +
  • +
  • +
    consolation: boolean
    +

    If there is a third place match for single elimination.

    +
    +
  • +
  • +
    format: "single-elimination" | "double-elimination" | "stepladder"
    +

    Format for the second stage. If null, then there is no stage two.

    +
    +
+
+
+ +
status: "setup" | "stage-one" | "stage-two" | "complete"
+

Current state of the tournament

+
+
+
+

Accessors

+
+ +
    +
  • set settings(options): void
  • +
  • +

    Set tournament options (only changes in options need to be included in the object)

    +
    +
    +

    Parameters

    +
    +

    Returns void

    +
+
+

Methods

+
+ +
+
+ +
    + +
  • +
    +

    Parameters

    +
    +

    Returns void

+
+ +
    + +
  • +

    Assigns a bye to a player in a specified round.

    +

    Throws an error if no player has the ID specified, if the player is already inactive, or if the player already has a match in the round.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      The ID of the player

      +
      +
    • +
    • +
      round: number
      +

      The round number

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Assigns a loss to a player in a specified round.

    +

    Throws an error if no player has the ID specified, if the player is already inactive, or if the player already has a match in the round.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      The ID of the player

      +
      +
    • +
    • +
      round: number
      +

      The round number

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Clears the results of a match.

    +

    Throws an error if no match has the ID specified or if the match is still active.

    +

    In elimination and stepladder formats, it reverses the progression of players in the bracket.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      The ID of the match

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Create a new player.

    +

    Throws an error if ID is specified and already exists, if the specified maximum number of players has been reached, or if the tournament is in stage two or complete.

    +
    +
    +

    Parameters

    +
      +
    • +
      name: string
      +

      Alias of the player

      +
      +
    • +
    • +
      id: string = undefined
      +

      ID of the player (randomly assigned if omitted)

      +
      +
    +

    Returns Player

    The newly created player

    + +
+
+ +
    + +
  • +

    Ends the tournament and marks all players and matches as inactive.

    +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Updates the result of a match.

    +

    Throws an error if no match has the ID specified.

    +

    In elimination and stepladder formats, moves players to their appropriate next matches.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      ID of the match

      +
      +
    • +
    • +
      player1Wins: number
      +

      Number of wins for player one

      +
      +
    • +
    • +
      player2Wins: number
      +

      Number of wins for player two

      +
      +
    • +
    • +
      draws: number = 0
      +

      Number of draws

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Progress to the next round in the tournament.

    +

    Throws an error if there are active matches, if the current format is elimination or stepladder, or when attempting to create matches for stage two and there are an insufficient number of players.

    +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Remove a player.

    +

    Throws an error if no player has the ID specified or if the player is already inactive.

    +

    In active elimination and stepladder formats, adjusts paths for any matches that interact with the match the player is in.

    +

    In active round-robin formats, replaces the player in all future matches with a bye.

    +
    +
    +

    Parameters

    +
      +
    • +
      id: string
      +

      ID of the player

      +
      +
    +

    Returns void

    +
+
+ +
    + +
  • +

    Computes tiebreakers for all players and ranks the players by points and tiebreakers.

    +
    +
    +

    Parameters

    +
      +
    • +
      activeOnly: boolean = true
      +

      If the array contains only active players

      +
      +
    +

    Returns StandingsValues[]

    A sorted array of players with scores and tiebreaker values

    + +
+
+ +
    + +
  • +

    Start the tournament.

    +

    Throws an error if there are an insufficient number of players (4 if double elimination, otherwise 2).

    +
    +

    Returns void

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..8c15cf0 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,68 @@ +tournament-organizer
+
+ +
+
+
+
+

tournament-organizer

+

A Node.js ESM module for organizing tournaments, written in TypeScript.

+

Installation

npm i tournament-organizer
+
+

Importing

In Node.js:

+
import TournamentOrganizer from 'tournament-organizer';
+
+

In the browser:

+
import TournamentOrganizer from "https://esm.sh/tournament-organizer/dist/index.module.js";
+
+

About

For more information, visit the repository.

+
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/MatchValues.html b/docs/interfaces/MatchValues.html new file mode 100644 index 0000000..0383a36 --- /dev/null +++ b/docs/interfaces/MatchValues.html @@ -0,0 +1,239 @@ +MatchValues | tournament-organizer
+
+ +
+
+
+
+ +

Interface MatchValues

+
+

Properties of matches

+
+
+
+

Hierarchy

+
    +
  • MatchValues
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
active: boolean
+

If the match is active in the tournament.

+

Initialized as false

+
+
+
+ +
bye: boolean
+

If the match is a bye.

+

Initialized as false

+
+
+
+ +
id: string
+

Unique identifier of the match.

+
+
+
+ +
match: number
+

Match number of the match.

+
+
+
+ +
meta: {
    [key: string]: any;
}
+

Object for storing any additional information, useful for implementations of the library.

+

Initialized as {}

+
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+
+ +
path: {
    loss: string;
    win: string;
}
+

Details about the subsequent matches for the players if the current format is elimination or stepladder.

+

Initialized as:

+
{
win: null,
loss: null
} +
+
+
+

Type declaration

+
    +
  • +
    loss: string
    +

    ID of the next match for the loser of the current match (or null if none).

    +
    +
  • +
  • +
    win: string
    +

    ID of the next match for the winner of the current match (or null if none).

    +
    +
+
+
+ +
player1: {
    draw: number;
    id: string;
    loss: number;
    win: number;
}
+

Details about player one in the match.

+

Initialized as:

+
{
id: null,
win: 0,
loss: 0,
draw: 0
} +
+
+
+

Type declaration

+
    +
  • +
    draw: number
    +

    Number of draws.

    +
    +
  • +
  • +
    id: string
    +

    ID for player one (or null if no player assigned).

    +
    +
  • +
  • +
    loss: number
    +

    Number of losses for player one.

    +
    +
  • +
  • +
    win: number
    +

    Number of wins for player one.

    +
    +
+
+
+ +
player2: {
    draw: number;
    id: string;
    loss: number;
    win: number;
}
+

Details about player two in the match.

+

Initialized as:

+
{
id: null,
win: 0,
loss: 0,
draw: 0
} +
+
+
+

Type declaration

+
    +
  • +
    draw: number
    +

    Number of draws for player two.

    +
    +
  • +
  • +
    id: string
    +

    ID for player two (or null if no player assigned).

    +
    +
  • +
  • +
    loss: number
    +

    Number of losses for player two.

    +
    +
  • +
  • +
    win: number
    +

    Number of wins for player two.

    +
    +
+
+
+ +
round: number
+

Round number of the match.

+
+
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/PlayerValues.html b/docs/interfaces/PlayerValues.html new file mode 100644 index 0000000..2d97663 --- /dev/null +++ b/docs/interfaces/PlayerValues.html @@ -0,0 +1,185 @@ +PlayerValues | tournament-organizer
+
+ +
+
+
+
+ +

Interface PlayerValues

+
+

Properties of players

+
+
+
+

Hierarchy

+
    +
  • PlayerValues
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
active: boolean
+

If the player is active in the tournament.

+

Initialized as true

+
+
+
+ +
id: string
+

Unique identifier of the player.

+
+
+
+ +
matches: {
    bye: boolean;
    color: "w" | "b";
    draw: number;
    id: string;
    loss: number;
    opponent: string;
    pairUpDown: boolean;
    win: number;
}[]
+

Array of matches that the player is involved in.

+

Initialized as []

+
+
+

Type declaration

+
    +
  • +
    bye: boolean
    +

    If the match is a bye.

    +
    +
  • +
  • +
    color: "w" | "b"
    +

    If the player is player one ('w') or player two ('b') in the match (used in Swiss pairings if colored: true).

    +
    +
  • +
  • +
    draw: number
    +

    Number of draws in the match.

    +
    +
  • +
  • +
    id: string
    +

    The ID of the match.

    +
    +
  • +
  • +
    loss: number
    +

    Number of losses for the player in the match.

    +
    +
  • +
  • +
    opponent: string
    +

    The ID of the opponent (or null if no opponent).

    +
    +
  • +
  • +
    pairUpDown: boolean
    +

    If the opponent has a different point total before the match (used in Swiss pairings).

    +
    +
  • +
  • +
    win: number
    +

    Number of wins for the player in the match.

    +
    +
+
+
+ +
meta: {
    [key: string]: any;
}
+

Object for storing any additional information, useful for implementations of the library.

+

Initialized as {}

+
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+
+ +
name: string
+

Name of the player.

+
+
+
+ +
value: number
+

A value used for seeding players, such as rank or rating.

+

Initialized as 0

+
+
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/SettableMatchValues.html b/docs/interfaces/SettableMatchValues.html new file mode 100644 index 0000000..550ec81 --- /dev/null +++ b/docs/interfaces/SettableMatchValues.html @@ -0,0 +1,164 @@ +SettableMatchValues | tournament-organizer
+
+ +
+
+
+
+ +

Interface SettableMatchValues

+
+

All properties that can be set with Match.values.

+

See MatchValues for detailed descriptions of properties.

+
+
+
+

Hierarchy

+
    +
  • SettableMatchValues
+
+
+
+ +
+
+

Properties

+
+ +
active?: boolean
+
+ +
bye?: boolean
+
+ +
match?: number
+
+ +
meta?: {
    [key: string]: any;
}
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+ +
path?: {
    loss?: string;
    win?: string;
}
+
+

Type declaration

+
    +
  • +
    Optional loss?: string
  • +
  • +
    Optional win?: string
+
+ +
player1?: {
    draw?: number;
    id?: string;
    loss?: number;
    win?: number;
}
+
+

Type declaration

+
    +
  • +
    Optional draw?: number
  • +
  • +
    Optional id?: string
  • +
  • +
    Optional loss?: number
  • +
  • +
    Optional win?: number
+
+ +
player2?: {
    draw?: number;
    id?: string;
    loss?: number;
    win?: number;
}
+
+

Type declaration

+
    +
  • +
    Optional draw?: number
  • +
  • +
    Optional id?: string
  • +
  • +
    Optional loss?: number
  • +
  • +
    Optional win?: number
+
+ +
round?: number
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/SettablePlayerValues.html b/docs/interfaces/SettablePlayerValues.html new file mode 100644 index 0000000..87f0391 --- /dev/null +++ b/docs/interfaces/SettablePlayerValues.html @@ -0,0 +1,133 @@ +SettablePlayerValues | tournament-organizer
+
+ +
+
+
+
+ +

Interface SettablePlayerValues

+
+

All properties that can be set with Player.values.

+

See PlayerValues for detailed descriptions of properties.

+
+
+
+

Hierarchy

+
    +
  • SettablePlayerValues
+
+
+
+ +
+
+

Properties

+
+
+

Properties

+
+ +
active?: boolean
+
+ +
matches?: {
    bye: boolean;
    color: "w" | "b";
    draw: number;
    id: string;
    loss: number;
    opponent: string;
    pairUpDown: boolean;
    win: number;
}[]
+
+

Type declaration

+
    +
  • +
    bye: boolean
  • +
  • +
    color: "w" | "b"
  • +
  • +
    draw: number
  • +
  • +
    id: string
  • +
  • +
    loss: number
  • +
  • +
    opponent: string
  • +
  • +
    pairUpDown: boolean
  • +
  • +
    win: number
+
+ +
meta?: {
    [key: string]: any;
}
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+ +
name?: string
+
+ +
value?: number
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/SettableTournamentValues.html b/docs/interfaces/SettableTournamentValues.html new file mode 100644 index 0000000..eee12c2 --- /dev/null +++ b/docs/interfaces/SettableTournamentValues.html @@ -0,0 +1,196 @@ +SettableTournamentValues | tournament-organizer
+
+ +
+
+
+
+ +

Interface SettableTournamentValues

+
+

All properties that can be set with Tournament.settings.

+

See TournamentValues for detailed descriptions of properties.

+
+
+
+

Hierarchy

+
    +
  • SettableTournamentValues
+
+
+
+ +
+
+

Properties

+
+ +
colored?: boolean
+
+ +
matches?: Match[]
+
+ +
meta?: {
    [key: string]: any;
}
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+ +
name?: string
+
+ +
players?: Player[]
+
+ +
round?: number
+
+ +
scoring?: {
    bestOf?: number;
    bye?: number;
    draw?: number;
    loss?: number;
    tiebreaks?: ("median buchholz" | "solkoff" | "sonneborn berger" | "cumulative" | "versus" | "game win percentage" | "opponent game win percentage" | "opponent match win percentage" | "opponent opponent match win percentage")[];
    win?: number;
}
+
+

Type declaration

+
    +
  • +
    Optional bestOf?: number
  • +
  • +
    Optional bye?: number
  • +
  • +
    Optional draw?: number
  • +
  • +
    Optional loss?: number
  • +
  • +
    Optional tiebreaks?: ("median buchholz" | "solkoff" | "sonneborn berger" | "cumulative" | "versus" | "game win percentage" | "opponent game win percentage" | "opponent match win percentage" | "opponent opponent match win percentage")[]
  • +
  • +
    Optional win?: number
+
+ +
sorting?: "none" | "ascending" | "descending"
+
+ +
stageOne?: {
    consolation?: boolean;
    format?: "single-elimination" | "double-elimination" | "stepladder" | "swiss" | "round-robin" | "double-round-robin";
    maxPlayers?: number;
    rounds?: number;
}
+
+

Type declaration

+
    +
  • +
    Optional consolation?: boolean
  • +
  • +
    Optional format?: "single-elimination" | "double-elimination" | "stepladder" | "swiss" | "round-robin" | "double-round-robin"
  • +
  • +
    Optional maxPlayers?: number
  • +
  • +
    Optional rounds?: number
+
+ +
stageTwo?: {
    advance?: {
        method?: "points" | "rank" | "all";
        value?: number;
    };
    consolation?: boolean;
    format?: "single-elimination" | "double-elimination" | "stepladder";
}
+
+

Type declaration

+
    +
  • +
    Optional advance?: {
        method?: "points" | "rank" | "all";
        value?: number;
    }
    +
      +
    • +
      Optional method?: "points" | "rank" | "all"
    • +
    • +
      Optional value?: number
  • +
  • +
    Optional consolation?: boolean
  • +
  • +
    Optional format?: "single-elimination" | "double-elimination" | "stepladder"
+
+ +
status?: "setup" | "stage-one" | "stage-two" | "complete"
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/StandingsValues.html b/docs/interfaces/StandingsValues.html new file mode 100644 index 0000000..81215bf --- /dev/null +++ b/docs/interfaces/StandingsValues.html @@ -0,0 +1,186 @@ +StandingsValues | tournament-organizer
+
+ +
+
+
+
+ +

Interface StandingsValues

+
+

Properties of standings

+
+
+
+

Hierarchy

+
    +
  • StandingsValues
+
+
+
+ +
+
+

Properties

+
+ +
gamePoints: number
+

Number of points earned based on games.

+
+
+
+ +
games: number
+

Number of games played.

+
+
+
+ +
matchPoints: number
+

Number of points earned based on matches.

+
+
+
+ +
matches: number
+

Number of matches played.

+
+
+
+ +
player: Player
+

The player represented by the values.

+
+
+
+ +
tiebreaks: {
    cumulative: number;
    gameWinPct: number;
    matchWinPct: number;
    medianBuchholz: number;
    oppCumulative: number;
    oppGameWinPct: number;
    oppMatchWinPct: number;
    oppOppMatchWinPct: number;
    solkoff: number;
    sonnebornBerger: number;
}
+

Values for all tiebreakers.

+
+
+

Type declaration

+
    +
  • +
    cumulative: number
    +

    A player's cumulative score.

    +
    +
  • +
  • +
    gameWinPct: number
    +

    A player's game win percentage.

    +
    +
  • +
  • +
    matchWinPct: number
    +

    A player's match win percentage.

    +
    +
  • +
  • +
    medianBuchholz: number
    +

    A player's Median-Buchholz (or Harkness) score.

    +
    +
  • +
  • +
    oppCumulative: number
    +

    A player's cumulative opponent's score.

    +
    +
  • +
  • +
    oppGameWinPct: number
    +

    A player's opponent's game win percentage.

    +
    +
  • +
  • +
    oppMatchWinPct: number
    +

    A player's opponent's match win percentage.

    +
    +
  • +
  • +
    oppOppMatchWinPct: number
    +

    A player's opponent's opponent's match win percentage.

    +
    +
  • +
  • +
    solkoff: number
    +

    A player's Solkoff score.

    +
    +
  • +
  • +
    sonnebornBerger: number
    +

    A player's Sonneborn-Berger score.

    +
    +
+
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/interfaces/TournamentValues.html b/docs/interfaces/TournamentValues.html new file mode 100644 index 0000000..b47e2df --- /dev/null +++ b/docs/interfaces/TournamentValues.html @@ -0,0 +1,299 @@ +TournamentValues | tournament-organizer
+
+ +
+
+
+
+ +

Interface TournamentValues

+
+

Properties of tournaments

+
+
+
+

Hierarchy

+
    +
  • TournamentValues
+
+
+
+ +
+
+

Properties

+
+ +
colored: boolean
+

If the order of players in matches matters. Used in tournaments that require color balance.

+

Initialized as false

+
+
+
+ +
id: string
+

Unique ID of the tournament.

+
+
+
+ +
matches: Match[]
+

Array of all matches in the tournament.

+

Initialized as []

+
+
+
+ +
meta: {
    [key: string]: any;
}
+

Object for storing any additional information, useful for implementations of the library.

+

Initialized as {}

+
+
+

Type declaration

+
    +
  • +
    [key: string]: any
+
+
+ +
name: string
+

Name of the tournament.

+
+
+
+ +
players: Player[]
+

Array of all players in the tournament.

+

Initialized as []

+
+
+
+ +
round: number
+

Current round of the tournament.

+

Initialized as 0

+
+
+
+ +
scoring: {
    bestOf: number;
    bye: number;
    draw: number;
    loss: number;
    tiebreaks: ("median buchholz" | "solkoff" | "sonneborn berger" | "cumulative" | "versus" | "game win percentage" | "opponent game win percentage" | "opponent match win percentage" | "opponent opponent match win percentage")[];
    win: number;
}
+

Details about scoring, including point values for all outcomes and a sorted list of tiebreakers.

+

Initialized as:

+
{
bestOf: 1,
win: 1,
draw: 0.5,
loss: 0,
bye: 1,
tiebreaks: []
} +
+
+
+

Type declaration

+
    +
  • +
    bestOf: number
    +

    Number of possible games. Used to determine number of wins in a bye.

    +
    +
  • +
  • +
    bye: number
    +

    Points awarded for receiving a bye.

    +
    +
  • +
  • +
    draw: number
    +

    Points awarded for drawing a match.

    +
    +
  • +
  • +
    loss: number
    +

    Points awarded for losing a match.

    +
    +
  • +
  • +
    tiebreaks: ("median buchholz" | "solkoff" | "sonneborn berger" | "cumulative" | "versus" | "game win percentage" | "opponent game win percentage" | "opponent match win percentage" | "opponent opponent match win percentage")[]
    +

    Array of tiebreakers being used.

    +
    +
  • +
  • +
    win: number
    +

    Points awarded for winning a match.

    +
    +
+
+
+ +
sorting: "none" | "ascending" | "descending"
+

Method of sorting players, if they are rated/seeded.

+

Initialized as 'none'

+
+
+
+ +
stageOne: {
    consolation: boolean;
    format: "single-elimination" | "double-elimination" | "stepladder" | "swiss" | "round-robin" | "double-round-robin";
    maxPlayers: number;
    rounds: number;
}
+

Details about the first stage of the tournament.

+

Initialized as:

+
{
format: 'single-elimination',
consolation: false,
rounds: 0,
maxPlayers: 0
} +
+
+
+

Type declaration

+
    +
  • +
    consolation: boolean
    +

    If there is a third place match for single elimination.

    +
    +
  • +
  • +
    format: "single-elimination" | "double-elimination" | "stepladder" | "swiss" | "round-robin" | "double-round-robin"
    +

    Format for the first stage.

    +
    +
  • +
  • +
    maxPlayers: number
    +

    Maximum number of players who can be enrolled. There is no maximum if this is zero.

    +
    +
  • +
  • +
    rounds: number
    +

    Number of rounds in the first stage.

    +
    +
+
+
+ +
stageTwo: {
    advance: {
        method: "points" | "rank" | "all";
        value: number;
    };
    consolation: boolean;
    format: "single-elimination" | "double-elimination" | "stepladder";
}
+

Details about the second stage of the tournament.

+

Initialized as:

+
{
format: null,
consolation: false,
advance: {
value: 0,
method: 'all'
}
} +
+
+
+

Type declaration

+
    +
  • +
    advance: {
        method: "points" | "rank" | "all";
        value: number;
    }
    +

    Determines how players advance from stage one to stage two.

    +
    +
    +
      +
    • +
      method: "points" | "rank" | "all"
      +

      The type of value to use if players advance.

      +
      +
    • +
    • +
      value: number
      +

      The breakpoint value for advancing players (greater than or equal to if method: 'points' and less than or equal to if method: 'rank').

      +
      +
  • +
  • +
    consolation: boolean
    +

    If there is a third place match for single elimination.

    +
    +
  • +
  • +
    format: "single-elimination" | "double-elimination" | "stepladder"
    +

    Format for the second stage. If null, then there is no stage two.

    +
    +
+
+
+ +
status: "setup" | "stage-one" | "stage-two" | "complete"
+

Current state of the tournament.

+

Initialized as 'setup'

+
+
+
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html new file mode 100644 index 0000000..6d02c53 --- /dev/null +++ b/docs/modules.html @@ -0,0 +1,66 @@ +tournament-organizer
+
+ +
+
+ +
+ +
+
+

Generated using TypeDoc

+
\ No newline at end of file