diff --git a/docs/dev b/docs/dev index 8cbc86f..4365fd2 120000 --- a/docs/dev +++ b/docs/dev @@ -1 +1 @@ -v2.0.0-rc5 \ No newline at end of file +v2.0.0-rc6 \ No newline at end of file diff --git a/docs/stable b/docs/stable index 8cbc86f..0408c30 120000 --- a/docs/stable +++ b/docs/stable @@ -1 +1 @@ -v2.0.0-rc5 \ No newline at end of file +v1.2.0 \ No newline at end of file diff --git a/docs/v2.0 b/docs/v2.0 index 8cbc86f..4365fd2 120000 --- a/docs/v2.0 +++ b/docs/v2.0 @@ -1 +1 @@ -v2.0.0-rc5 \ No newline at end of file +v2.0.0-rc6 \ No newline at end of file diff --git a/docs/v2.0.0-rc6/assets/highlight.css b/docs/v2.0.0-rc6/assets/highlight.css new file mode 100644 index 0000000..ab73fb2 --- /dev/null +++ b/docs/v2.0.0-rc6/assets/highlight.css @@ -0,0 +1,106 @@ +: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: #008000; + --dark-hl-3: #6A9955; + --light-hl-4: #AF00DB; + --dark-hl-4: #C586C0; + --light-hl-5: #001080; + --dark-hl-5: #9CDCFE; + --light-hl-6: #0000FF; + --dark-hl-6: #569CD6; + --light-hl-7: #0070C1; + --dark-hl-7: #4FC1FF; + --light-hl-8: #000000FF; + --dark-hl-8: #D4D4D4; + --light-hl-9: #098658; + --dark-hl-9: #B5CEA8; + --light-hl-10: #0451A5; + --dark-hl-10: #9CDCFE; + --light-hl-11: #267F99; + --dark-hl-11: #4EC9B0; + --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); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --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); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --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); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --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); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --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); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +.hl-11 { color: var(--hl-11); } +pre, code { background: var(--code-background); } diff --git a/docs/v2.0.0-rc6/assets/icons.js b/docs/v2.0.0-rc6/assets/icons.js new file mode 100644 index 0000000..3dfbd32 --- /dev/null +++ b/docs/v2.0.0-rc6/assets/icons.js @@ -0,0 +1,18 @@ +(function() { + addIcons(); + function addIcons() { + if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); + const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); + svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; + svg.style.display = "none"; + if (location.protocol === "file:") updateUseElements(); + } + + function updateUseElements() { + document.querySelectorAll("use").forEach(el => { + if (el.getAttribute("href").includes("#icon-")) { + el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); + } + }); + } +})() \ No newline at end of file diff --git a/docs/v2.0.0-rc6/assets/icons.svg b/docs/v2.0.0-rc6/assets/icons.svg new file mode 100644 index 0000000..a19417d --- /dev/null +++ b/docs/v2.0.0-rc6/assets/icons.svg @@ -0,0 +1 @@ +MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file diff --git a/docs/v2.0.0-rc6/assets/main.js b/docs/v2.0.0-rc6/assets/main.js new file mode 100644 index 0000000..99097a0 --- /dev/null +++ b/docs/v2.0.0-rc6/assets/main.js @@ -0,0 +1,60 @@ +"use strict"; +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; +"use strict";(()=>{var Pe=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Pe(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!Ve(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function Ve(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),He(t,i,r,e)}function He(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Be(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Be(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var je={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>je[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",N="mouseup",J={x:0,y:0},me=!1,ne=!1,qe=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(qe=!0,F="touchstart",ye="touchmove",N="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(N,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else{let r=e.appendChild(document.createElement("span"));r.innerHTML='',r.appendChild(document.createElement("span")).textContent=t.text}}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var $e=new U;Object.defineProperty(window,"app",{value:$e});fe();we();})(); +/*! 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/v2.0.0-rc6/assets/navigation.js b/docs/v2.0.0-rc6/assets/navigation.js new file mode 100644 index 0000000..b6bf902 --- /dev/null +++ b/docs/v2.0.0-rc6/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA52aXW/bNhSG/8rg62Bt07XLcpe6XynytTgLChTFwEi0TZgiDYpykg377yNlxyEp6pzD3LSA9b7PS4kUeUjlx78Tyx/s5HjyZyeq1S8zy4ydHEzWzC7dj7WuuoYr277qL//dX/51aRvpNCuh6snx0dujo/evj/472JPcz/zhmdHoupO8fdX/HHsPDybVUsjacDU5/rEHnFydjtndpRjx2wiiboSa6qZhqr7mbSftt9nlxRWrVjy4PaEsN3NWRXjImjT/3fvgtj/oTlW8JmVEWhxawMSR0yWjP4xYDGK1lLwqIKd6GP6SnnxBJ061Uq5VxG5M1ASw0Oqaz7u2LCB1EYJK8GToX+uaWdpozDjggE7ZWt+rgs4dOKCAj8wyr2ILWvsHegj+hdtSfs6CRFC5BJhmkvygYzGE/er8ZGwshrCnasOkqE/MYrsWbR2kEMhKiNxNIOWBGSMYZ3kzXfKCeTnjwAJmXNVF/NgA4b9pQX9xYzGEPdMV83Ofu9Fq1ZLgOQsl4lTNdVHAs4GCn1W6s2V3EFqgiCtXkZGffSyGsNe84mLDaz8QaA3POOAAyVnLyU0f6GG4NYJviKtsogbBWjfksRKLMWzB4prKIfSMPZKYex0I42bDTVEFmbPAEfZCWzEntjpWI2AqkgS75mtJbmQgBrGW2a4tGAlDA4h/VBUNuxdCuBu2aF3HqgWnLyxZDxjSWW1EQb0yNED4k7r2ddjMeVwddrnmpp99nzPs4zrZHmYNScbrP35/8+4wzFGlOXkDljPlQgq1KMsCTGieFK6wSjtmEBCoUKKW2vjOO+dt29fGBiJn1HjC067qkzHaQPBIiHGDgn6cGYgoPHonvqT3PvI5c3vjwqBxE5b3WWptytJGLVjWF9ZwtDcCEcbblfb5zUDKzYhRvqubyMM+I8b4ZPYLuK7206aGkVsNheZKBjd/i3/YnQS6LlVi5DM+t7OlmBeOdtCGZu6KefKzHzFgOefsoeyuRgxojlCFOXkDmuMPfXVh1KgHTXOzmXD1WWEe4MISL7i912blz0DGAwIRkednBZTnRUTelWSPHFgfIxmROZMav2cvIvJuuWnBfop1GPWycHnK67GUK24a0fr23MCTXCKkc2+Z7EjcXohy9brssYwY8Jx7XtgBoxY0y4wcVw4SDHRUOc69cRwC1csw5jVv9IaXPZhxD562lm5TVRo3akLzxGL5kqUZ9mGp24MJrPNDFUa8cf+RV/qMGONvt/llz2jcg6Xd+gLWt7DfYsGDeagl04P7J2YkDizpe+mOY8SA5VT9Hnd7IMPbZ/yGuRr1Lv6EHWtj8tsQKvw5v2Rupp6LbWWIkDMGBN9+Zar22//Pki0I9FgPwNf7NQahBkIA17qawPc3AtvLBqif4Xd11vLdOLrQdTDqKv/s9sBEFiPfHIZ/9bA94hgDba+Cfv/mEJqU6iBmcNZwzpT714xRh0qMu3s9CNxYCXK5Y5wJtcKoiQ5iftq4B+/7sUagAyFEjSv3GDQs2GPvqT+1bHgtdhNzZkqKgaMGMCXaCyTAwRZg6CUMxUSGEVukA0INxHraIxNamJFC5J0MaWesgnhPbxS3zK3CbAyYyEBisiNLQJmNWM5PeHIDIU7F+jdWQTz/fcsvjlhPpDqIOdO+hEOAkQii+eqtY5LwIIdKfBW5XCcr/eBDR6Sj/d0RAZpqQXBQwuRrqVBBOerefhaaMinv3AuRZw51+BG3o/Rz+0gzAwHliBZCPV9Hj5y2wwGCRRIi70wvQJi7TiTFQzqDGo7kzFa4f+OhmwwV6Dbx6W2HgIkI3QT2LzwEDBUYTYo7w8zj4EgqrVNjHVDzWmYW3KK8SJape3/+DwDxdPznKwAA" \ No newline at end of file diff --git a/docs/v2.0.0-rc6/assets/search.js b/docs/v2.0.0-rc6/assets/search.js new file mode 100644 index 0000000..9acaa1b --- /dev/null +++ b/docs/v2.0.0-rc6/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAA8Wda5PjuJWm/8pG9ddyjnCV5G+e9tjuCY/t7fJMbITDkaHOZGZpWinl6lLdPQ7/9yUBggIOX5AHFFX7pTsrkwBegAcHl+cA/MeH4+Gn04df/+0fH37c7p8//HqlViu7WH38sN+8VR9+/eF/X7ZPP/6vT+fN8fzh44fLcVf/7vnwdHmr9ufTv7i/Prq/Pnw+v+3qR552m9OpqrP88OGfH0Oussuv/mf1c5fT2+H5sqtO/+J+O5iD7nL4zV++y6Sv/wLy+PjhfXOs1XaFXzNVV11Pu239TF2T86VJFwr4sjluNz+kRaSPMkpsUkWlWmOU7Qp+fDz/8l6VFvhNl2ykXJI4kiEW8tqoz9vT02G/r57O1fNELQ8kjzJhD22FMvpuFnc3Zcdq8/zLVFUh8ayK3nebX7b716marslnVfV62OymSmrT3qon6u7bc/X2bZPd9mX7tDlvD/vhPg+e/wodP1cqv/ejeubM5nh4PVb1k4f9LaIe0nwmCBwxpPrdvlyGTWlMYpfF/OrOx837TdraDOZXtj8c30a64Ji2LotZ1JHuePrDZv+8qz3P73ab1/HemD7+lTojKLSsL5JKZl7V23a/5byrvJyHaxblskYM6XD+XB0nvaAgrsthfm0/jTuvIWE/cX1WkapTM0EeG5JHpEV5zK5vs7vJ1nzyOVRFLuG9Or5t3SgybGrRc1/BCdDS+L0/rk9+Et6UNzzHzSh4iBIXSBkxjGo/XdA17Xx6RieROTHMGSRfyeZyPkxS0iacV8m/3fCe0vQ36Yq672l3OP+1/utw5+2e+gpdNy2L33GvNcl59/d6Ybk5H47lxT/EadlCGOu/aoqYLuFcSl6Ph8vwbBgLCelu0CEX66UwV3v8vqpr91T9dnPefKqbe/Na/bk2ZTc17QQ2WcTiBtLMbK+lJfOtd6jeuTnUzQ3TTaeinG4QOmJlXza7y81N+RBymVUntcLfVi+by+5cZIUDae5shWMl861wqN6TrZApr8gKh/K8xQq5WrlWWKSTWuFvnp+LLDDz/J2tb6hUvuXl6jrZ6hiyiiwul98t1sbRyLU0tj5qZf9R2+f2ffdLkakNJbqzvY0WzTe6wapPtjyuwCLzG8z0Fhtkq+UaYplSao1/OfxUHYtMMZviznY4XC7fCPM1nmyBLGlF5pfP8Rbb4+nkGl6Bxp4PbPj0ocwDZpPc2/8NF1zg/fKVnu77WOLKPF8+y5v8Hk8p2+sVqKTW97vd4VDm87Ip7mx7w+XyTS9f48mWx5JWZHj5HG+xO55OrtkVaKRW9221bXb4i+xuIM2dLW+sZL7tDdV7svUx5RXZ31Cet1ggVyvXBot09kbezc9lwy5+/t5j7kCpBQNupq7TR9txWWVDbSa/m8ZZhkb2IMvV17Oy7b7MyvDz97aygVILrCxT1+lWNi6rzMoy+d1kZQyNbCvj6uvt1+0L9+vw8/ferxsotWC/LlPX6ft147LK9usy+d20X8fQyN6v4+qjVvbnsqUCfvzONjZQKN/EMhWdbGHjoooMLJPdLfbFUMg1L646al3/p3Almnn+zvY1VCrfwHJ1nWxhDFlFJpbL7xYb42jkGhlbH7WyP1Yv50+fty9lhHUw1Z0tbrxsvt0N136y9bElFtngcK63WCJfL9ceC7X2Yk+2r58nmOVwsntHoIwXXhCEMtwA0+NQ2CLLQlGGs70pGoWvmB2QUqi2Hxn1dvhSGhiVS3L3uKjBgkvCorKVviEqiiOuMCgqm+VtMVEspfyQKL7KPpd9L6Sy8Pm7M9l8qSVEFtf1Bh47KquQxuL8bmOx4xr5JJapj1rZf74/b85lPi6f5M62NlIw39wGKj3Z4njiioxuIMtb7I6plGt6JSp7UZ8ldjePxVEJ352rt3//9Oc//Ud1OtU5/yU+zk8VgGfvbPK5Evm2juqXO6F5g5KH6XLGzo1WP5e/kU6VTzy/qpfkKGaprJB6fl3kiEOpMPZBB5ay3ibEwR955fa3zPP33ngYKLVgyyFT1yl9j6GI2/9yWd3QB1nqeP1wmroRm+foY9s9W2Ev+OOwOxy5ho8evne4R67IgjgPVMUp9j6mhWvsMJ8bLH1cF8/MJ+h6apJMFxaSz6OM2vZf62pzTRs8e2fLzpXIN2xUvyl2PaKEa9YomxuselQVz6hZqqjlcK3mZouhBf/XZrd9Jrn+dejd5RLMKMV1Pp6I7tHbi//W3Q30l83Tj9WA54seur3IT9XxS3UcKTJ+aEKR5uof/vVw2T9VpLjt/lwdXzZPSZnxk+Vlpg777bmwrG98krF+ltQmd19CvVQuLb1NM0fxr/X/TqXlh0RzCGiOPxcLCInmEHCOV4fM8s+8NWGm+Njgv/VXunEsPnn03ibfL4xp82mFcsuAOo+fDsdyDVHCWYQ0llwsok00i4D9FAH7GQVcLtvy19AmmkXAeP8DApgdkCWgHrqS++K4Gq7pZpHhrhZ6/NzeLVSsppd8FlGNo30cH6KAnjjlVCnAUfot7AJ3GSf4Sk6zV2SZ60yqOJ+x9FVNNRmOQHav7ssq69sZMbHp/L5ija/dY/c2k7QgpnFcK5Ep9sfql5EWJ+W2CaYUTFq3wT3NM26txWroXoqv0Oa4TH7z92s5fU6dl8OdW48Iit9Q2Aj99nP19OOJ84ZQinu/oWyZzDcEa5kRszvQ+3ILJcUZ3CgMvalPT4fLuehNxSm+1pvqlVn4ppJazvOm+pKmvCmOsKdjVY87j5t6AK0VTW4wmsuNEmNj+rT5hWNB3WP3Npu0IKatXCvB2S/llMvcI0UFJ63Lm1R8+lqTik9TJhWfxiYVz/6KpqKir2luLr6eohQV7Z+/udgu8mfE65DSk2Q3i/hpsz8/Hqv3XVkTJMmmiCBG/qfDefvCcyTpw1/B4HvF8c0+qdbkGTXUwJxX50Ukb8B9CIC/6u0/f/f3gEvkvop+/XJbEe7JaVq6tDfJSd7LL/sn1vvonrv7e0hL4rb/tR5DROaZj2SevyaTeS6vcVqhW7FIIqCMi4xIYIORREIZGRmRwEUjiYIiNjIigAvHEgFFdKwvAGw68syfPPyVNhundAFarezUevM2QUObbCYRjUFPENEmm0mEjznjbWimOq4pZ5LiLi7fvz4yF8ZQFMpjJnlPzSZH9XyTPJTHjNbE5xl9kyokGiw52/3LYaqcNu1Mcpo9iMf3Q/3fKa8tTT1dEnDAtRF8X71cTkWOmCb6Sg4ZFlvmmHvVzUiqjscD0ythVV0GtwuL31ohD/jqMOAmEsDGAONuJqOD6WO42//f7b80sWjfHt7eNvv2xXFeSz7dvd/PSMnMFzVQb05E6CRl3KM1xdIOx+3rdr/ZPd7ceCSnO7Ti6I7saCsyjwJxpIGe8Jvjq//0a3FfgCm/Um/Il13WH3Dtb+0RA+rK+kSZPK6pDckrMrYxeb0ziz4ZtLTeia/+s7dF0wZY9F09S+RYef/5r4USSYmFIDGq3zwYkcqZAhGhqMQbnau3T9XeBYmzfFDv+bt7Hlwi19/06zfdy2SUFBxl5UkZn7TlpDBnbXwpx+qp2n4ZDe/K6YmTzyeqiRmbpqdNeZMU2n2+/VxtziX9hyT4Gh0IFVnQg2gVb+pCUEtBH2KK4XUiKKagFzHFFHQjqKi0HzFl8ToSVFTQk7jWM7rTm7ce3m7vsJi4X/+hLp/bpdNn792bQWnMjkzqNLkPIwXM7suTMN5zkQRmp+VJYPZXpKOkq/LEjPdSpIPZQXkSXg6X/QTDDMkmi4j75L8ftntun0yfvXefBKUx+ySp0+Q+iRQw+yRPwnifRBKYfZLZCqPjA2wF3tDAkzDOAZEEJgZktsIoDoetwOPhWQlxP2xOMnP7YfrsvfshKI3ZD0mdJvdDpIB7px1Lwng/RBKY/ZDZCqP9ELYCrx/yJIz3QySB2Q+zEhIm+Jm/5kufvTsB7JfGBX+f51nkIQXcG1hYEhjsHEjgUnNeK4yHpaBWYEalsCQwglKABG5MCkvCm7/bolzFNeFkIWmIcHP3Q0mfRCnuHyycKZMdMQxqObmX5tUw+2qJnPEem5fD7Lclclh2m1fEt94RUbEN//VyPhy3mx3XgvvP39t+MyUyrRfUb7Lt5pRwL0RiSxm325wUptUOSknMo57B13a0f63YrAYmubuRZAvl2gms6HRTyevhWkuJIIbB5AVxbaaohUYnKkMtxJuvFAkan7YMCGLOXspaaHRFPdRCvIX1mKA03NCFknxfnS47/hoDJ7p/uGG+WHa4Ia7u9OXHkCb2TZBFojjBvAOi2PG8Y6JiM/rN89t2P8mWhlLe26BGy2Za1WDtJ5vWuDqmfU2RN25k4/KYlsaUl9zAceBPXdNn737rRr807n0bh3mmq0gB01B4EsZNA0lgGgOzFUbnGbAVeBMMnoTxmQWSwJxSZCXEneD7aldtThW3H/Qev3dXwAUye0O/cpM7REYH+5NDTCHj3SIjhNkz+C0y2jlyLcLrH2wh410kI4TZS4aEpHPc3a56KpjdksfvP69FBbJntLRyN8xloQ7+feY8IZz5KxTCnrlyW4Rx2hO3CPe8J1MI58QnFMI+85kXknaUy/78fPiJHfkAEty/s+Ai2d2lX8UbOkxGC7vLsMVwOk1GDLvbsMU8hUenvqoo/W2yet+lO+JYut7nzdLnJhw6yBU8eEV68tRtJx2+d5Ff1XMTZsi6Nw0kuP8MEBfJngP2q5iLWmsSTRQT0s4pp3lkqpw27W1yUlM5H7fVF95RYvLw/U2kXxzbPNJqZSSM32kENTDvNMqLGPwMSJmOB/bHQGgWrhYZqzgc3rjHpNJn724T/dK4JpHWKSOAdf01EsG//5on5LXaN/enHY6PkyWhLOYRN04qkB4mouBJ4F2aj2QU3JrPlFId3R0iowfqoJok8TyC3N0TT4dTec/9Jk46j5hwWvDRXWTCulADCctlM1Nv24zecAV72IZ3xRVPRDMZf9+4Kwx8LU+X0ZkCEJXLZh6Rp6p6fnQ/FwuLk87kh7ZTdLSpJkugIyX/PkL69NcYLafeRdir2ZCz4fbqvpiye3K4olhXVGFB/DuquGIKb4HKvLQJ10BxBfKG88nfJmC/NPaQDt5a2aDOklMyrANFxQM7u7fxhvZMXysY3DmCJg7vfXG3DPAsI2eNFcDI+aMF56bU6vx9cx0xZ7RIn71/UHCvNP4FwnGd8mvtcgHsK6wZAtKPy7MlcD8nzxPR3Tc0UU0v/WRZ/e/8hkvN/q25By27T0meu317NLq5K1to9Ex5gUUfXaUl8T+2GteDtcxgFv3AXWXE6Uc/YPr7+n9jrR49c+dWpyXxWz2ux8COq1t3PJ4Pj9H33ZgiHvrpC0SNfOC2G/Vu0IfzmE9jWEQWC4sS3qQGfXz3U9VEq2//Z/PDLm9W9MHbnVWT4/fVUzxLRYX6R+7caUhB/D4TVSJf0z9V53pC/WNzIj6rIHrmznWlJfErG9dj7JKFR7/4K1XxADIokDXS/V7qX92grZd8PmXB8RRrihLOpya5nYKrhHk5RcHbSi6oYL8k5v0UfB11yuNm/1Tcox6ihPO+m8eXXbzPUPKGuqQ3Kcp4uO8YdtM883U8XFdSsYdz9bihb9CSC/uGSz6Pv+gpKfcXDDU8f9rTUupHGUpYHaMnpLBPYB2ZPvEXVtv4p75Ov4jKKu4ZbW04oX7s0h+YgX5pBsN2kMT68ZUwI/1KlNQT5s2oRQIpId2cWhLYxJfCBE0jSjL94xPjTTXPfJ2+0ZVU3DNcPW5od1pyYau75MNv/3WKCuY36fkqpryFh/JXMdYWx8Pl/fGtevshZlvsRiGpb9KV6Rf/RWJVMtrax75O74gLK+4goUK5rZEmlwkCHkLCMhkj9vG2+e+BjdsBNSHhvGq2+4lq2oSzqvnhst2NrsuQmpDwVjW9qOCOD/5XggJ6ccHpczOEI3cZ/nVw84w8d+fOikrj91Zap+xGjzsVNEXEwzVtoZix3VV/AGOSpmvaeTUdq7fNdh/fOlrWUtfUt+uSqyui2m2raDeyzbtV5f/IsNIocyNk9B72p/Px8nSOnFa2hG/Sp4dq2YrOTfkPCQfOF9g9OL2sd4J78oVdn7yhZnXT8Eq7Pjm9tOPh8MYoqn3shjYkgUUDbciKIxouLT0rkC+Lcy5guKT2JilOYdGj08t7rjbnz3/c7n9kFBg/O73Ew3sae5Uv7/pkUWnSSqGjJfTl/Ll+YPu0OVfPjFLp87eUnSzd8kUyFmtjJb3ySmIsyEbbM3xrhtOW0bNlZS70dbjZHV63e0Zp4bnpJV1c4NCn9JvO+QLJ49PLfT1sdpy35x+7tX5/jXc5x2r31/HNTU6Z7gTUHzb75108mxkrnKaarsIhcM58on1uekmnp8OFNZFon5te0g/uW8GMoroHy7x2NONL6HNaEBM65x1KwkQyeXMurydkmZSS8sBcMRz+N1xOj/flimLyPcrLo5fyXROs9lY9b+ue0sQc/fm9OWYUb/ukZWefL3x9sQ0eq3p+la3tcInfXBMPtUC+mhlNz9XL5rLL2euIpmviWTVtnnPGN6LHJ5xVy1tdv+377pdpgqLUs6p6P/xU5VZ8I5JC0ln1+NXz81RNcfJZdb3sDtmV8YimkHRWPU/VdmBMH1F0TTyvhW9+nmjcm7FT5uVasnPXMS2jk9lyL5QdAse80OioWKxlqhHPb8E/T5Xy8/xadtXL+dPn7cvE0StOPq833L5+vkVYkn5uP334MnkC0qadeSR7nzqOvc+txa+jpsnp0s47Xhze3rYTrahLe6uiZBqdX38ww81yVT0fPp2PA2NjF0kUPThYszSyjKw8fPBrfr7SlRY9OL20UzU0N+rK6h6bXtLAJtq1HMYW2nAp2+zI2JUxGs4/XEIInvsTpz7k4dtL/W68fsmjt5f4+5J6/v7Weg5sgF5LY2x/Dpfyfjy8HqtTEluRKyx9dnqZl1P1csltD16L6x6bXtL5uMmOXFdf5R+aXsrLdrdjeI7usRtK2uV3OqOCGPGbNKY3Gj6i017/sdnX/81Vrf/gDUNLc5qAHhtjFfdNmnKo0qBmOTXV+enzRDlp0nn0bN/eD8fzNEE07TyKqp+nK6Jp51G0Oxx+vLw3hj0wIOUk9RLPqemP4wPlsK4/8gfPEW39E7L+ow3fbna7HzYRUYjjMvqPlXV0drxOpiBeuA6oTN7BffKhAeMOLn3wJi7QhCMMvX9Q1DchzVjFSX2G3FqhgpBmHgX7w3n7ktuozUnoEs2j4f1YNWkLRVxTzfgugsP5fRNCmxvZB99ML4cZ1cVuZ7pCmMtklUlHDvEbI92YPHZTJ672TThZbu0Bi/rmmmaw2rQ2uZHX5fbbkTiXISW/Zca9cBU9b0/TJYHEc2hq1unTBNGUc6jJrq6wBLLAOp+ef7U9/Wq7/1wdtz6IZ6qOl5cyIe75eyj5aZPdM8NS2gQzaYndyL99qRP96+ZUPQ/7kd5z94wJxYUVhIf2a1VqmxkJo6t/fslZa8wVTczxhrIH7C9TeM8Ay0qnO7SnYWOLH7lpwGo3R4d2y5JyvokSjO0gnEAjp6V/3uYD6/pFh6dvL9fd9s4uNzw9pVxWV+oXWeziWeVnOxQQUOzaOQoGulVfwgSXntWQLmz/w4cS//GADxpc/1zWteI+3OYx3IvTh27qx7tDDruAQr7xTw/ZM9Gfm0Ztcos1VKp/+vZSs/0IFVrck5gasn0JiijuTTwVA/0JyZjQowZ0kHvcXDwliSWOe1X8wPR+5Q9Mj4yO6UO37cpUu9yLBqV80z4+ZOOkBvmSd4fs2AiLbp+fo+zmkoGSssPz08rubfSnt0CMF58kul1D1r+gsov9C1ND1r9AEcX+hadiwL8gGRP8S1ZH3OmbS04bxzEynNLHbuz4zZfr6cFyRoHf0JRDBtmrGXNbvFjHQ/KvX4n2xOOvRKHAh4FceefD55Puz4/PWoWis+Vz1qTJ+GvWJD2XPmNNXMZ3rgmNhQgfHJnSW0Hi/18dlkp5oL/o2rm0dUdznq/r8ivBuv6hvCqzd+GSGjGukJi9RuVduaBGnGso5qgRCG/KTUAzddqM31Y80HnpBDgfSYOLZ3yTgF9688WSgWiAnH/uEs2jovddBI4K5gcRClSAzyGwhLC/g8DX0mxA/uUwsGeJpSTJ5lPybfw5Bq6Ob8c/w1Cu4i/V8anOYZMN9RnWkySfR1mIs/y2Od864ZXh9PNoc2a5f/1j77MsHGEg8Tyq2g+9TFMFEs+jarPbTVNEEs6j5pg/+olVHMePew6VztqUwCUXb0uwdWQ3JjJCircmuEoGNiewlAnbEwNa4g2KT+6WnOHdieSZm7YmnvynMLLQrl/SN3GSIWtMK5KP0T7mArRB2f7hSaXSkA1+oe3TN5faNlxxS89R9vP2VFx8kuZmBVmnA0ou9jg8BVl3gyQU+xqWhgFHA0RM8DI5FbGLaeIGWhjzp8NzbhgiTxVylvSKyYFLz1Ax33QpelV/Px7OwfuQqtNqZdTUqYq0tM/fQcnArg5UwtiuyZfcwzI/F7VC+/zEsguO9uHSeaf8BtqdxMSMmz956gbzHzA4VMgUg6NVKjc4qIRhcMySB26qgSUzLq3Jl8w3dVzrcVNn1nrQ8cGyGY7vf/FiV27vibhxUE+8RVHcM8Mya7x3gifv00NzBU3ppah65T01q4jRWwsUZE/1ZssfPeQ7XDq/1+ZbYLznFrTAYO/NapinB480VUEvzjfWtJ480oDxXbeH3eE43pXpY/fpx7CUKZ24V6vyHoy1MLovt+yn5rmiwkOKiaXz+26m7uMdl133wRuWceVn6bJDzVPQXzMNNK2zDjVa1FP/Wjf/ZbMb76v9B+/TWzPlTOmvoG7lPTanh9FnB8vn95usgvGew2+Bwb6TUzBP7xlupoL+k22oaT1ouPF60aTjXaj33H16EC5mSgfqV6y8/2TUMLoPu/T38UjPfmvwAz1v7b+5FhjvvuwWGOy9mfLn6byDTVTQd3ONNK3rDquCxziSfgvOcUzor7GLaG9LqM6b5815k2uE9Kkb3MPAxT6oEM4dP7QKOVOk31tmlM781DJTQbOBlH4chiEhTjSDhkD+i3XQhDNoOVZfquPJXQteLAeknU/RH6c2Uib9NGXFN85ASSXXzQy0Um9WMeguC/lvsTsu2oHvfaeSfyNdXNqe4YlGSkq//5gvivO9x7GyhhxtVBTHv46UNDrHKpxYDZ/b4ZQ0/g3RsZKSb4bmS2J8I3SsJPrdwXxhvG8MjtrF0FUmiWVwbivpl9a7R2Xw+xtxgenTt5Zav5nfDkxoeuVen7+x5D8MROP1iv0DI/SuV6a6zhHPm+NrdaYHA75sjttm6AnFJk+V+ebBqP/xcniXV6W1YMXqs4tmheGnqUsi7At0MILnS3SkcfF8HZyQ9xEdkQHutj8cN8dfxiwwfax0ekDubWsuNnGXTeCTuNHfZ7T1oRKYV7RFujPv1H2T63t6ZwWj6Aeakilk/IOazQx7oLGvf75TW5MCeE0diR5Yi50GWxoX/EAT8mSM9OUmVHyKGJJuNi2/Sz6vwxTyO8bXdopUnL7bb8/bejL8P+WtQtJO1ZTZkxnoEMkTd+oT/TJ43SJVnxvf/ENlBT9cU7EFjFhA09E+xZuHPCFRsjmVfPu5Sr44yBdzTTmnnmbiOElOl3AuNf1wbZ4Ybsx2iZZreHCxHJJ0ttb5vCm14DbJXAr8YeNvy3UkCedSc76cD/XUcFeoJUo2m5LN6+k/3TcxSk0lTTmXnkvd3t8e3t42mZE3rydNOZeezXO9YpkmiCSdS1Hzwczil9UlmktF+8XyUh1Rsvk8r/tO+QTPe003n5bL/vx8+GlfrOWa7gYtdJ7m90wGpmnxA3eapfWK4E3SEum5vtlsEA85r1zZDyQlV8h4i3dHyQYanTxzp3ZHpfCantYhG+LgD4EPvYABEQ/99AWiRvphdC58sjyUxXwKwdnjqUoHs5pPcTjIPVVmP/282m5rRJTD/G/79K0/Qz35HUcZ3KSO+i1/OG3AacUP3Mlj9YrguatEem6X2H0sGjd7rtiHayJu8TetEbM6yo71liipDer76uWSm8aNKUqSz6Ts+frtkjJNacKZ1Gz3X+qpgvu0UIUXjlk9NOlMirrvme1fDmWCSMqZ9Lwfa5/575/+/KcyMXGymZSEO6vd9cBlamjS2RSdj9sqt5k9oOaabC4l9XhQbjFRqhl1/Gf69U62kv/kfLmzQMupOn9fxV8MZymJUs1st1OcTC/tbG2zP/s8C3tSmnCuMWFsPzM/KPC3M4f1SHOdwvg7jv/8nt5X02woH182T9fjIvFjN8SKnrdv1eFyLinom2uaoSqnFcktsi/nw++aII3fgpGZoyWTwc3C3jY/b98u4exq0Yv4pp/2ZjnP1Q+X1z8eXlu4X6YHJJ4iKLHSbo42bqn00ZsOPpD75Jilce+U61crt5F82ZaLaBPNIiC5XZArgHHDIFvAFxKNwtVwTTdVxuCSr1AG7zLUfh5fSuKopmliBVVllRUFWE0VyIi2miowjbyaKJAThjVV4DZZCHAFbhlrAHYXPNH4S66KEy8QEwj5+8fWQf/6H50H+PUH+aAe1nX6l221e67z+luI926+Pl+5OIHnw9PF/fj39rH/qppPTDUP+6f/ZfHh498WH7V60OvlR9H+8Pe/f/xbyMU94X4RMrv+xuUg6n/Jj8Y+CGuShKKXUCQJZf0v9dGKB7m0SULZSyiThKr+l0YJVS+hShLq+l/mo7R1HXWSUPcS6iShqf9lPxr5sFyvkoSml9AkCW39r+VHs3iQK5UktL2ENkm4rP+1QnVc9hIuk4Sr+l9rlHDVS7hKEtam9DexQJVc91KuUwtoDEIIVKjoW48g5iNyL0UAA0otSDR2IbDx9Y1IpFYkGtsQCibuG5JILUk09iE0TNw3JpFak2hsRBjYXn2DEqlFicZOhIWJ+0YlUqsSy2xj9+1KpIYlGnMRS1hw37ZEalzCWRc0aNE3L5Hal3T2BY1a9u1LpvYlnX9awMR9A5PERTUmI6FlS+ClUgOTjclIiXq/7BuYTA1MZn2V7NuXTO1LNhYjsWvt25dM7Us2FiOhZcu+fcnUvuQy60Rk38BkamCyMRkJu4XsG5hMDUw2JiNht5B9A5OpganGZCQ0bdU3MJUamMo6MNW3L5Xal3L2BbuF6tuXIsOgs6/1R20f7IKUDEbC1L5UYzIKdgvVNzCVGphqTEbBbqH6BqZSA1M22159+1KpfanGYpT8qGrjVKl9qb59qdS+VGMxSn1U5sEKkSbu25dK7Us1FqPwrKNvXyq1L73ITjz65qVT89IiW2Xdty+d2peW2Srrvn3p1L50YzEK9kfdty9Nplr5uRaYbKXmpU2+yn3z0ql5aZuvct++dGpf2tkX9CK6b186tS+9yla5b146NS+9zle5b146NS+zyFbZ9O3LpPZlnH1B32f69mVS+zIyV2XTNy+TmpdR2SqbvnmZ1LyMzle5b1+GzOadfUGva8CEPrUvk3Vfpm9eJjUvk3dfpm9eJjUvk3dfpm9fJrUv4+wLTqFM375Mal82675s37xsal42775s37xsal42775s375sal/WLRPhCGf79mVT+7JZ92X75mVT87J592X75mXJgjHvvixYM6b2ZRuL0XBctn37sql92az7sn3zsql52bz7sn3zsql5LfPua9m3r2VqX8vGYrSEK+W+fS1T+1pm3deyb17L1LyWefe17JvXMjWvZd59Lfv2tUzta9lYjIbT+2XfvpapfS2z7mvZN68l2ZPIu68l2JZIzWuZd1/Lvn0tU/taNhaj4exr2bevZWpfq6z7WvXNa5Wa1yrvvlZ981ql5rXKu69V375WqX2tnPuCs69V375WqX2tsu5r1TevVWpeq7z7WvXNa5Wa1yrvvlZ9+1ql9rVy7gvOvlZ9+1qRfa+s+1qBna/UvFZ597Xqm9cqNa913n2t+/a1Tu1r7dwXnH2t+/a1Tu1rnXVf6755rVPzWufd17pvXuvUvNZ597Xu29c6ta+1c19w9rXu29c6ta911n2t++a1Ts1rnXdf6755rVPzWufd17pvX2uytercF5x9rcHmKt1dzfov/6c0dfS7Nnnehfm/0fRkj3WR92L+bzQ92WZdNLZj4DzM/42mJzuti6wv83+iycle6yLvzvzfaHqy3brIezT/N5qe7Lgu3JZrZnMcbLouyK7rwvk1OMHxf6PpycbrYp1vPrDzuiDG53brTV198aDtOk2PNvd7u/tud0x/VOsHuSbNBzf4ifW5TXtj0I6iQHv8dJNf5DfJBNrmp/v8buve4O12tNNPt/rd7n0GbwDro5v9bv8+1/zA+uh+v9/wzzQ/sD665++28XPNB6yPbvu7nXyDoQHa+Cc7/0LmfR/Y+hdk71+47fxM84Hdf0G2/4Xb0c80HwAAghAA4Tb1zQoDKmB9BAIITwHgwCEABxAEBAiZtz5AAgRBAUIOWB+AAYLQACEHrA/wAEGAgHB7/BYPHQAJCMIEhNvmt9j3AiogCBYQbqffYt8LwIAgZEC43X4LV2oCwAFB6IBwG/4WLnsE4AOCAALh9vwtBo0AEQjCCITb9rf2o1w9GE2cL6AEgmAC4Xb+7RKOvQAUCEIKhNv9tyvofQAsEIQWCAcA7BoOHoAXCAIMhGMAy8VHLR5WC4qIgf0RZiAcBlhi+wPUQBBsIBwKyLQ/IAeCoAPhaMBSftSrfvkAHghCD4QDAksF2x/wA0EAgnBMYKlxemB/hCEIxwWWBlN2hNmJ/Tk0kHl/gCQIghKEowNLGPghAEwQhCYIBwiWS6wf2B8BCsJBgiUePgBTEAQqCMcJlnj4AFhBEK4gzID9AbIgCFoQjhZk6g/ggiB0QThikHl/ADAIQhiEgwYrPH4AxiAIZBBmwP8BzCAIZxAOHawEtB9AGgRBDcLhgxUefwBtEAQ3CEcQcvqB/RHiIBxEyPhfwBwEgQ7CcYQVHv8AdhCEOwg7YH8APQjCHoTDCSsN2x/QB0Hwg3BEYYXHTwAgBCEQwkGFnH5gfwRCCAcWcvqB/REQIRxbWGVihYD9ERYhHF5Y4dk7oBGC4AhhB+wPAAlBiITwSALPHwGUEIRKCAcaVjjqCHAJQcCEWA7YH0ATgrAJ4XDDag39H6ATguAJ4ZDDeoHTA/sjiEI46rDG8w8AKQShFMKBhzX2P4BTCAIqhGMPa9z/AaoQhFUIxx9y7Q/sj/AK4RBExv8CYiEIshCOQqzx/BtAC0GohXAgIqcf2B8BF8LBiDX2P4BdCAIvhOMRa9z/Ab4QhF8IhyQy+gHBEARhCEcl1pmQQWB/hGKI1cD4C0CGICRDODiRGb8AyxAEZgjHJzLrB4AzBOEZwiGKzPwFEA1BkIZwmCKzfgJUQxCsIRypWGP/B8CGIGRDrAf8H2AbgsAN4XjFev1RLx5Wa1J/gDcE4RvCMQuxwA0IGIcgkEM4biEW2AMAziEI6BCOXYgFdoGAdQgCO4TjF2KBw4wB7xAEeAgHMTJrAMA8BIEeYu1DMrETA9xDEPAhHMsQC7wKA+xDEPgh1j6yHLshwD8EASBykTdDCQiIJAREOqIhFtAPSYBAJEEgcuHtEHYkCRiIJAxELvITQQkYiCQMRDqogR2BBBBEEggiF94KMyHUICaYUBC5yI/EElAQSSiI9BQE7iRKQEEkoSDSUQ0hcBg3wCCSYBDpMQicSkrAQSThILI944BDwQEIkQSESAc2Mi0IQIgkIER6EIJbEIAQSUCIdGAj0wAAhEgCQqQ/8SCgJ5SAhEhCQqQ/9SBwWDpgIZKwECkGbBCwEElYiHRsA6+mJGAhkrAQ6Q9ACOhJJYAhksAQKfLTQQlgiKTHIGSexUl0EIKehHB0I+NF0FmI3mEI5wYFhHESnocgNujwhhC2OWa2liQ9sEF6JkJ6G8SOHJ2LoAcjHODIvAF0NIKejRgAIhKdjqDHIxzgyL0BYIL0hIRcDb0BYIL0lIQjHLk3AEyQEBHpCAee0UlARCQhItIRDoEPAkmARCRBIlLllyQSIBFJkIh0iCPzBgESkQSJSDUwEgMkIgkSkcoMvEHARCRhItIxjswbBExEEiYiHeMQAi5qJIAikkAR6SCHyJyoAlREEioi1YAbBFREEioi9YAbBFREEioi9YAbBFREEioiHeXI9AFARSShIlL7RQlc1UiARSTBItJjkUx6dDqM2KDDHCJzrA1wEUm4iNQDIzHgIpJwEakHZoOAi0jCRaTOr4sl4CKScBHpOEfuDQILJFxEOs6Re4MAjEgCRqQDHULiyRQgI5KQEWkG3CAgI5KQEWkG3CAgI5KQEWkG3CAgI5KQEelIR+YNADIiCRmRjnRk3wAwQYJGpEMdQiroBgEbkYSNSOPdIJ4NAjgiCRyRZsANAjgiCRyRdsANAjgiCRyRdsANAjgiCRyRVg60IKAjktAR6WiHyBz4BHhEEjwibX57UAI8IgkekQ535FoQGCHBI9LhjlwLorOyxAatt0F8aBXwEUn4iHS8I9cAwAQJH5GOd+QaAJgg4SPS8xHcAICPSMJH5DK/PygBH5GEj8jlwP6gBIBEEkAiHfDIjKQAkEgCSKQDHgKfHJaAkEhCSORyYEECCIkkhEQuBxYkgJBIQkjkcmBBAgiJJIRELr0XxPN5gEgkQSRyAJFIgEgkQSRyNeAFASKRBJHI1YAXBIhEEkQiV94L4p01wEgkYSRyNbA1CBiJJIxE+qMemQYAFkgYiVzlY7QkYCSSMBLpmEemDwNGIgkjkavlQB8GkEQSSCId9BD4KLsElEQSSiJXAyYIKIkklESuB0wQUBJJKIlcD5ggoCSSUBK5HliPAEgiCSSR66H1CIAkkkAS6SEJvg9AAkgiCSSR6wEvCBiJJIxErge8IGAkkjASuR7wggCRSIJIpCMeuTcALJAQEtkSkswbQNdX0Psr3IJEwfWEAohEEUSiFvndaQUIiSKERC3yu9MKABJFAInygAS+AQUAiSKARC28CULMpgAhUYSQKE9IMhc8AEKiCCFRjngIfF2CAohEEUSiHPIQ+PIBBRiJIoxELfKzQQUQiSKIRDnkAS9TUoCQKEJIlCckaonWAwoQEkUIiXLEQ+Bz+QogEkUQiRL5RbECiEQRRKIc8sDhIgogEkUQiRLZk0oKABJFAInygAQf0lcAkCgCSNQAIFEAkCgCSJQDHjjcVQFAogggUR6Q4CP3CgASRQCJcsADT8cVACSKABLlgAeOd1YAkCgCSJS/Kwre2KQAIFEEkCgPSLSAfQgAEkUAifKARONOCAiJIoREOeCBI14UACSKABLlgIfAh8sVICSKEBLliIfAR7UVQCSKIBLlr5DSMNxAAUaiCCNRnpHgY8QKMBJFGImS+fmgAoxE0cuklN8dxDVA90nRC6U8JMFRKwpdKkVvlVJ+XYxHQ3SxVO9mqfy6WMG7pYgZOuqR6Yjoeil6v5SDHpmOiG6YoldMeUiS6Yjomil6z5SnJJmOiK6aondNeUqSMWN03RS9b8pRD4GPhit05RTBJGrg8IgCmEQRTKIc9sDBpwpgEkUwiRq4e0oBTKIIJlEek+CD4gpgEkUwidL+jkY8ngJOoggnUZ6TmEwTADMknETp/FVnAJMogkmUwx4ZZw4wiSKYRDnsIfDZYwU4iSKcROns2WEFMIkimER5TILPLiuASRTBJMpjEoNHI4BJFMEkymEPYeBthgpwEkU4iXLcQxg8qwegRBFQohz4EPgAsQKkRBFSokz2CKcCoEQRUKI8KMEncBUAJYqAEmWyV4YqgEkUwSTKYxKDezHAJIpgEuWwh8BnYBXgJIpwEuW4h7C4FwNQoggoUdbHLCDirgAoUQSUKA9KMHFXAJQoAkqUByUWj2YAlCgCSpQDHwIfZFWAlChCSpQjHwKfZFUAlSiCSpQduPQR3fpIjNCTkswrAFZIQIly4CNrA8AKCSlRjnxk7toEpEQRUqIc+cDXGChAShQhJcqRD4GPAiuAShRBJSp/1ZUCoEQRUKL8SRK4w6UAKFEElCgPSvAOlwKgRBFQopbeAvF8CpASRUiJcuQDn0VVgJQoQkqUIx/CYkcOUIkiqEQtsxcUKQBKFAElyoGPnH5ggQSUKAc+8FleBUCJIqBErfJXKSgAShQBJcqDEosHIgBKFAElauW9IB5JAClRhJSo/KVYCoASRUCJWnkLxAMRICWKkBLlyIdoVlVgVQRQiSKoRHlUshQ4A2CCBJUoj0oy6zKAShRBJcqhD7HE4wBgJYqwEuXYh1hm7tEFZkhgiVrnb1sGrEQRVqL8iZIlns8BWKIILFEeliyxGwCwRBFYojwsWeJ+AGCJIrBE+RMly3pZYB7qd0kyAHZIaIlaezuExxIVwCWK4BLlj5Tgc9UK8BJFeInyR0pWeGECgIkiwER5YIJPRisATBQBJtoDE3w0WQNgogkw0YuBPRoNiIkmxET7MyV4u1wDZKIJMtEOgYgV7EoaMBNNmIn2zAQfb9aAmWjCTLRnJvh8sQbMRBNmoj0zwQeMNWAmmjAT7RAIHhQ1QCaaIBPtEAgeFDVAJpogE73wdgjHJA2giSbQRHtosoKDigbQRBNooj00WcO+qAE00QSaaP8NDXhlvwbQRBNoov1nNPAhYw2oiSbURPuDJfiUsQbcRBNuoj03wceMNeAmmnAT7T+pgc/5agBONAEn2oEQgQ/qakBONCEn2pMTfFJXA3KiCTnRIh/XrwE50YScaP+JDbxG1QCdaIJOtPQLFLhG1YCdaMJOtGcn+LCwBuxEE3aiPTvBp101YCeasBPtWAg+ra8BO9GEnWjPTta4LwN2ogk70f7TGwvclwE70YSdaIdC5AL3RcBONGEn2n+CAx931YCdaMJOtP8MxwL3RQBPNIEn2n+KAx9X1QCeaAJPtPLfe8l8tgAYIoEn2n+TAx9X1QCeaAJPtP8uBz5uqgE90YSeaEdDJD5uqgE+0QSfaI9P8HFPDfiJJvxEOxwi8XFLDfiJJvxEOxwi8XFJDfiJJvxEOxwi8XFDDfiJJvxEOxwi8XFDDfiJpt/scDxE4uN+Gn23g364wwERib/zpNG3O+jHO7TMO3X0+Q76/Q4HRGQmPbDD3ic8nB3i43YafsaD2KHjIRKf9tLoUx70Wx46v2mj0dc86Oc8tDdD7NPRFz3oJz0cEZH4sJNGn/Wg3/VwTETiszYafdqDQBTtmIjER0U0gCiaQBTtL+HCc1zAUDRhKNozFEhCNUAomiAU7REKZNEaEBRNCIr2BAUiHA0AiiYARRvPkrEjAAhFE4Si/Rc/4N6tBgRFE4KiHRKR+KSIBgxFE4aijTdC7EgAQ9GEoWjjjRAPaYChaMJQtPVGiD0BYCiaMBRtfWQNvMZCA4iiCUTRjolIHGetAUTRBKJox0QkDhPWAKJoAlG0YyISR7lqAFE0gSjaZkmeBghFE4SiHROROMZTA4iiCUTRDopIhTsCoCiaUBTtoIjEMZIaUBRNKIr2FCXzSSmAUTTBKNphEZn7QBOwQ8JRtMMiEn/uSAOOoglH0Q6MSBykqAFJ0YSk6KW3Q2zIAKVoglK0IyP4A30akBRNSIp2YETiKD0NSIomJEU7MiLxZ2Y0QCmaoBTtyIjEH23RAKVoglK0YyNSK7QFqgFM0QSmaAdHpNY4A2CIhKZoR0ekNjADgFM0wSna4RGJo9Q04Cma8BTteQrexdWAp2jCU7TDI7lGBDxFE56iV3qgEQFR0YSo6JUZakRgiYSo6JW3RNybAVHRhKjolbdE3JsBUdGEqOiVt0TcmwFR0YSoaAdIJP48ggZERROioteLgdcIiIomREWvxcBrBExFE6aiHSLJvUbAVDRhKtohEonjlDRgKpowFe0QicSBRhowFU2YinaIROJAIw2YiiZMRTtEIg0eGgFT0YSp6PVy6DUCSyRMRa9XQ68RWCJhKnq9HnqNwBIJUzEOkUgcK2UAUzGEqRiHSCSOlTKAqRjCVIxDJBIHOxnAVAxhKsYfQ4G7oAYgFUOQill4Q8SfFgRIxRCkYhbeEPGH+gBSMQSpmIXN25EBSMUQpGIWy7wdGcBUDGEqZrHK25EBUMUQqGL8ORR87b8BUMUQqGIcI5H43n8DoIohUMXkv0luAFIxBKkYj1Qw6DeAqRjCVIxnKhj0G8BUDGEqxjMVDPoNYCqGMBXjEInEEWMGMBVDmIoR2YAvA4iKIUTFeKKSa0JghYSomPZr5ZkmBFZIiIrxRCXXhMAKCVIxjpDg6F0DiIohRMU4QIJj8A0AKoYAFeO/XY5j9gwAKoYAFeP4SKYBAE8xhKcYx0dwEL8BPMUQnmL8Z8xxzJsBPMUQnmI8T8HfvzCApxjCU4znKTjmywCeYghPMZ6n4KAnA3iKITzFtJ81xwMK4CmG8BTjeQqOWjKApxjCU4znKUvsjQFPMYSnGM9T8FcwDOAphvAUowYWKgbwFEN4ilEDCxUDeIohPMWogYWKATzFEJ5iPE9ZYncKeIohPMU4PLKEXQnQFENoivE0BcdtGUBTDKEpxtMUHLdlAE0xhKYYT1Nw4JUBNMUQmmI8TcGBVwbQFENoitFywIwATjEEpxiPUzJmBHiKITzFeJ6SMSPAUwzhKcbzFBw7ZgBPMYSnGO1Dv2DsmAFAxRCgYjxQWeJRDQAVQ4CK8R9Jh2GkBvAUQ3iK0fl7XA3AKYZ+Kt3jFMjEDPpYOv1auvFmiP0p+mA6/WK6kQMtiL6aTj+bPnB1l0EfTqdfTvc8JdMCwAh7H083+TcAP59ObNAM2SD6hjr9iLrnKZkKABOk31H3OAWHLxr0KXX6LXWPU3KvEBghwSlm4OouA2iKITTFeJqCsaYBNMUQmmIcHMm8QwBTDIEpxp9IybxDAFMMgSnGwxT8DgFLMYSlGAdHJI4gNYCmGEJTjKcpmXcIaIohNMXY/B2GBsAUQ2CK8d82gUDMAJZiCEsxdsARApRiCEoxy8XAKwQoxRCUYjxKwa8QkBRDSIrxJAXH8BpAUgwhKcaTlMwrBCTFEJJilvmrkwwgKYaQFLMc8IQApBgCUsxyyBMCkGIISDHLAU8IOIohHMV4joKjoA3gKIZwFLMc8oSAoxjCUczA9V0GYBRDMIrxGAWeyzKAohhCUcxqwBECiGIIRDGrIUcIIIohEMWsBhwhYCiGMBTjGQqOAjeAoRjCUIxnKDgK3ACGYghDMf4jJzC+xACEYghCMf5QCj6jawBCMQShGI9QcBi6AQjFEIRiPELBYegGIBRDEIrxCAWHgRuAUAxBKMYjFBwGbgBCMQShGI9QcHyFAQjFEIRiPELBHQkQFEMIivEEBdsxACiGABSzzkd6GcBPDOEnxp9JwecDDeAnhvATs84fBTAAnxiCT8w6f5emAfTEEHpiF/mb1S2AJ5bAE9seSIH7hRbAE0vgifXwBJ8ksACeWAJPrIMhEp8EsICeWEJPrKcn+CSABfTEEnpiPT3BJwEsoCeW0BPr6Qk+CWABPbGEnlhPT/BJAAvoiSX0xC6yp0QtYCeWsBPrD6TgfXML2Ikl7MT6Ayl439wCdmIJO7H+QAreNraAnlhCT6zwdgjduQX0xBJ6YttPvkN3bgE9sYSe2Pw9XhawE0vYifXsBB9EsICdWMJOrPBWCEcDC+iJJfTEiuydDRawE0vYiXUoROFzCBawE0vYiXUoROFzCBawE0vYiXUsROFzCBbAE0vgiXUwROFzCBbQE0voiXUwROFzCBbQE0voifWffofvAMATS+CJ9Z86wbdrW0BPLKEn1sEQhc9BWEBPLKEn1sEQhc9BWEBPLKEn1sEQhc9BWEBPLKEn1sEQuOltATuxhJ1Yf48XbkBgg4ScWOVtEHdjQE4sISdWeRvE3RiQE0vIiXUgROFTGBaQE0vIiXUgROFTGBaQE0vIiXUgROFTGBaQE0vIiXUgROFTGBaQE0vIiXUgROFTGBaQE0vIiXUoROFTGBawE0vYiXUoRAncDwA7sYSdWH+TF76b1AJ2Ygk7sQ6FKHwOwwJ2Ygk7sTobz2ABObGEnFh/kxc+xmEBObGEnFjt7RD3BEBOLCEnVudHZMBNLOEm1mEQhU9xWMBNLOEm1mEQhU9xWMBNLOEm1mEQhU9xWMBNLOEm1nEQhU8xWABOLAEn1oEQhU8hWEBOLCEn1pEQhU8hWIBOLEEn1pEQhU8hWIBOLEEn1mTvsLEAnFgCTqwDIQofYrCAnFhCTqwjIXg8AuDEEnBijbdC3I0AObGEnNj2Li94i5EF5MQScmKNt0LcDwE6sQSdWEdCFD5EYQE6sQSdWEdCFD5EYQE6sQSdWIdCFD4FYQE7sYSdWIdCFD4FYQE7sYSdWOvvNcQdCcATS+CJdSxE4VMQFsATS+CJdTBE4VMQFtATS+iJdTBE4VMQFtATS+iJdTBE4VMQFtATS+iJ9V+Gh3MzAE8sgSfWejvEhgzoiSX0xDoaovAhCAvwiSX4xDoaovAhCAvwiSX4xDocovAhCAv4iSX8xDocovBVvRbwE0v4iXU4ROGrei3gJ5bwE7vM3/JqAT+xhJ9Yx0OWcMvOAn5iCT+x/kovvOMF8Ikl+MQu8/ddW4BPLMEnNn+jlwXwxBJ4YpdDezUAnlgCT+xqaK8G0BNL6IldDe3VAHxiCT6xq4FLbCzgJ5bwE7vyNoh9IeAn4Xd///hhu/9SHc/V83f75+rnD7/+298+PD6ef3mvPnz8x4fHrf+l+ejK+fDrf3zQ9X/++fGDEO3/l/7/sv29an9fLx/c/+sptP9/+/d6OuX+X08q/P/b52z7nG2fs+1zy/a5Zfvcqn1u1T63ap9bt8+t2+fEYhF+CIoX6yDdtD/I8Iw0QX2ohrbhhzZVcyNo+8MyVDE8E0Q2l835H4K85uIsX2/bJjeh5ZpY3bbqbSobSrehVZvtjLZZRPghPBNa0PpC65/aF+5/HV61+1vz7jfPz/ErbS7YuL5U3wCcPJ43583pfDhuXqvDe3XcnLeHfZyvim1FMXN92+6bRzb7RGKz3u3yala0pZkdq9Nld/7v02H/vnn6sTon9a8nkF3mktuGu+3mlORio+o2dyX6V7te8rO7vNdNWpGKR9qaVSAvs12cR73IulaPncPu8OTeaFLJJmq1y8v4Hj6eWfoum3s8IrtgGsZ+1Nx0ZCJLpoW8b5PGjtqJl/746n6RGsIqemXau5rxnC7nz/W/t0/UAJq7vKLcLDe3Q9LkkWlKpn3XWVT7zQ+7VE691rzmxK7a4aU6P31uXmDT++oXmLS6juyzmdRxMv1hc6reqtOpzmt/eK5SG41arInXZOV3uOyfqtQrxu5L8LqxzybtwTKS0yyAC/Lp+6p1lJlYlWTWzyt2WILZD3+4bHepfdZznavbC2OwCeNXc4ajHcjCsLXieY2narvb7l9Tz6Fjz8GzlDafUe+xiAcYXs6fN0l7NjvbUR5MeXUmuWEpatnmc7W87KqnH1MzVrEZ83qDy6V6foRjQPMVjKvdrMNcSPFcZps1Hl3sOh5duA1YZ3i6vCUSTWQoqptgrniu72m3OZGhfR3bOLMNd9vmn0lXiexDhYYzYX5pwgTY2HaqZ5aL8EP4E7PL+8IP770mblb4Vxu13AZpcgMOJDYE5mTA53U6b86X9N2byBuZBfPdR5lVSXbx++dl9Za4NWvjqoV1Q1jCCNP9EP4UlgIiLF9EeIvChj+F1ynC6xTLsBBZyfBDyHDdPiwX3Q8q/NAml8GnStH9ps1QhnWMVDL8EP4UDE6GjtF8CNn/ENZcMiy6ZJjIyiBVroKMVfhN5wMWYckX1jHNB8HaH8IKSYZVlGa+48NuVz2RjmTjjsR8wT4fOr22sctmdgefU8Zrq3i2vdbcHA/HZJUdeQoRVn6G212b3Bp17QTpfXNMJJp4DiF4kziXZ27CtYqqbCzTPXLWZZHQ5ju/3Hy3STbNfXHXEVAz3dRhvydW1xy1iuaVXOt1+aRWF08I21erumV+2AEw3Pq2BYC5YmxEK+57dtnVw0Z1PKY22Xz359rrdJG8Oj80GOnITTd7oWU5HquX2u2TyXY8BTNcUyQ5AlNcxOPBuqgt+7ktRTy4FGXmtwhAltG7EZqd5el8vDydyXuO81JhF02vmPO7erGRdhsTzaw12wzrXJ4PP+1T1xrNN1TYzLPsBmyzzPnteB3DnX8cq/ptPG5Oj5+3aa1Xsb0wXWKzREnmILGfVmGnMiyxZGgAKcMsQIYd2DBhkWGvUIbNVhkmLNKGP4W9SxmmJ80nydsRPjyzCrOAsIkp12Hrc8Hrtk3l6rXO/rV62ux2P2zSVYqMR01teb4ls58gYoNT2gR/yts6iTJ9DEuLdDEQ7zMp5m5plGs96tX/TXpcc5PhtfaGt9UQZYn8VbylueB13WiJjETGHURbfmsOrbpN7AkXzIrXfe5z9YVuu8l4a6QJQGXntdvu0yXzKp4wLJjGGHKCTRdvsDPHOZfhsXqqtl/IFlw8rlvmiv65+uHyuju8fqmOp/4wHG+uL5nGUr1s6plb4vPiMWgZaIfktp/Lb5QpxAs7nuN/3p7625jxVi+zBdtskMXIeAtTL5l9Y3uCs0wbzzJ5s9VrVmk146xaNxiWX9byehvaA47egQzTA+b0vM0ON2I8UWDu4Nc/Hzd059ZGb0OFZbiWvLZ0816y4RWvQxbMbBoH1exSPyOHoG08J2Lm+PP74XgGA56MJ706jOuGuS52W/Np34hHI+aa0+XSTIKIT44n+Ex44bLanqu3JuHr8XB5T/NUMRBZ8trO5Rn2HHP5xq3I9IIuX/hK4hdseI7KZXbaHc50IijjPdzmhA0/t/4+21rGefF67ct2t6NTlnhbmbnQeqkTb/evj++7zS9pds3XKKMNW2Z71Ylh28fDt2Hab5NXT5aMZRluw+82r0mTxzubotsQC7NtzZyYvuwO6TpNxvvwmgnjXC6jg2xca2a+9eoq5UIiykSqLlBCBm/MW2G9NjnE69x4y1mHtgyhIDrsO2oTvOBqGdwhzxCaAuGiIh5TND+vxBJsvCMT4mKEaUWLsMpSXQiNDuq5zVXtm/d5OD62E7105RIvjASzDiFHkGFzm93VUJgz0dfqPLh0WUV5CmbfqPMEGS3ijHiD4eths0uH/mseYbe7fSVa8IaIJku66RyPiopZxTqb3DZp3NOY2zRu/EvhZWzf/Dwe36q3HyoyYYp3LlSJIjJUxYEBzH0GuhHTfAIq4p88o28yeXw6nNKc4km+ksH3MN+fy/L9QGdIYhEPDuuATZjss8mUypQx1jeSr67JqB4Nnurf0xE1pmFG8hYOIUsU1BRPHizTmTb59UaZ5kDjNSemk2xyynSlONpKMolmk13/xTa3LEZtxvON16xgq8Vug7nH2+SINhGao6TRJgI/s7SSMRLQTLzuctnut+ftZrf9Hyortgzmim2brk7jiYfuBlDLzOstu8iKlx2WZ2k+bZxL1Nnbrs4MEKsbrTq+Vc/bxizq8RNO3ES8B6aZsX7b/Zf6RTx3sWy+W6DOEZNNwW0Bl3lL+7JZL+IhjDnPbrPu56biAdEyt1OT3FDl42AcwRsgm0VsmkkcPRewrgxbMjLMCJXtQqe7yUb7jA5zXsPkg42Gx96SRMQzN8Xcb3dZNYkez4fHtNMJE+dnmLZR5/f0uer5uZi1WeYA1uWVc+zxFg5zS9Ll2cQCbV+2KA4q2btm54h2rmN7FfwKN56Utl28Cc4cqZushsIFYqe14Pn4JstseGa8umSGtTX5pY0f7wIp0a3/QiQ8c9Lp8n38XLsmGmsYB5GKMIqIErnV/jlnjPEGKnNK2mZJAg5N/LaZbrPJKNQYOIaYW/IzhJuc8WC0KsgMT1jiAM2CRjs3G85puEo8m2UC6f+uZ2W55dcinjPyhA10NxsvW5nB2k12daMdjsQpx2FSzPGiyepUHd3cjLaciHeyFHNJ/WP1SxKUElevOy3D5Bx1Xom1xoFHIpzKEQFfKyYE3FUv59Pn7QuJGoppBHOR1+U0Gm0cvZkVz0vvtj8cN8df0DZMvMS1zG2JsBmedv54EyAEMiomAgg5emyO1ro6niSE6Y9SzPqH7HMzkBjLM/10yNMpRmu4+CQBsy+CPOFiLl646rIm8HEJYMcr3hxlbtyGPOlGq4wFauaMLmRGVmTxASTNXLh2We1fkqMsKt6osszd/TgzNB7HNJi5jRmyHJo4xWMpc8kQss2GWsbnrwprv++94tjFMbdhYOD+SsezhnAetAsmZh6e6bJuzwik/SWe6hSa4+npcDmj/hLvvdkyvwmmFbGzWHMVpgdcYiem11xLfN2mbjwOxNDMpcnucPjx8h6wa2omcXbsZmqyy1pe3Ik187jN2+a/aaBiPFytQihtIGymOzobjvvaJc/3vG3STZtFcpCVN7TUeYxOApJzb9xct2+XsLQiUTzxiMLk4mDzXsYzNMsMHWsFpfPiJMYmhBQGAGiZi/A25/6qWcWHwSxzr6vNrdft4gGKGTfRZoUWPvGKWTOPAGQdfryNzDx6hMxDxBlpJkx5Sx2LjHdmNPPAV53HaEeI2otruNv99o2wuuRoJDcX6lJixtOxYxFOYIgW0Niw42BXPPf6tj2dmtCHzIm6eIuFazA+x8xBuohjGGZowNvh+bI7jMYGxDkzzfGyO2/fd7+kphSPAMxNvpDRqMbYTHmOlY5Qy3hGo8NSJZzbUuEwlF6EDdruFN+aV5d9df7pcPyxhyvjwzmKib/bvHrbzfH5PMUMQm/zAiE6MdBSzG7a5tYENaV5xTsTS+Yr8nmhwIbY3BXziGTd86kDiaeDzNY6nLcvqWEnt15YXtc7vLykO2exr+5sLRwN1N1NIoEXm2CGJkT+G+aFG2QnIY4E1uEKEx1O/OlwJlGH6H+z6A4wBRfJvKMCd9x4g6BDH+3/TSg7lNj+P8zywvnyEOnaPrdsnwu7QuFMQwi2CacY1+1zoWoiHGYUTB7V1ShxxXEMg2CGfoOjUiLetNRcRSReLA5wZMZ4jAeLxbbKnF8fjtt6ybLZPZJDtyLec5NM1NBl9mWzu6QzUB27BW6HOH+m0Sxx0BazguTgUkI3WTmgELR4t1Mxw9nCoZPqvOlFlcbLX8Pcn6d7HDI+02462t4duQ8ni004ZWSWXb/ltWVTYm7nPQbSzIs+3jen009kozy+wkIEf6PClVCq86ndFUzMYPdQFtz/i1dZXO3V0c366GwvRtNhqhIOhalwcMwwF1xRIVB3vGjVTKPpsuztmohlcqCD2Tm6/Pp9Pg4QVUy4AwJ/43DkcI5fdD+0A6MKY4xZdUH3zEZ2JYJFbbyIscwzxj6z7AIyahDDvNzK50jWKPFAtu4278PozDwW0eYMV80xlivIjoDb6M0xK3tIAiFlvBusmWeM6jxGx8lIGPMA8fvhJ9JG8UvQTLzvchldMsWbl8y2PzY73mRfL1l5Mc332Mbjpdv8sZ9hsowuJ3S8N/YzzPlTlx+9BFHEk3zFPNfyfjy8HqtTb/ESDz4hOt7wJtH/97JNz9FGgwqv8Y+bJxKdEd/lwNziOVab52QRFM0JeDYKzznG0zfNpKQho17AiIrXFpYZv5fkhowqXsYyj6+GPEHcWtwJLXO93maXuol4FNHMmxp8RsSZinhNLEPMswyXVEjmTYxd3vDoTzxLZyKtY7WrNicy8sd9cs21XJcPCc+PUROTTrcZ5ZxPvK5hhskeq7dNk54MAPHWMpNI+5zom40DnBRz2lLndPiS+ovYfWlm9IvPZnTAjOyCicLqEWm3odf4xV5E8haBbT6jg2a8IOMqPB+3FY1tii+2sMxI5S4nZG9xlxLc/JqdtSoTMhWv8tZFGQ4A0+SYGbPDbl8/o2CdeF7E7bJdVqOWGHUVbuUPh3QvNp6Ga+b1Ik0m/fiHGHsxaWzICJlKvNJh7no22TUnSxGVi/c6LHPPpcsPLQvimCTDDJZvMvSL17TpYsfOpM7XrEDjxWFciumNT5t0vzi+qlAz4UGdB4hmiPkX834OFxmRustYDjMC9FRVz4+UoIh4Y1AxCU+TUy9YIMYYhgl6a7+TbqnHXMUwqXYTwptOjmMYy1waNplk7juIh04mBGlyo5O9eIBj7iQ1kcTegsgkOb5ahGtDVXM2tH8ZauwImEET16xyO35x5DRzrugzBbdXxoiPudLxecGjsPG6iRlzc6rOHiCBu9viUD7mXRgneAo23r1m4qg6o2YG9EtqGnGQKfPESMgIuc54+sntShQjxhBZhHv/ZcC1MtzSKcPNqjIEHMuA9mXYyZLrcC+l39xtwoaYRlureqSb6/G2uAiXbwmue29ypAO/iONdBPNaeXSbRPNtiOubZNLSJqP0KHt82U9gdaILwmIGmDTZNpsr5JL5eFXNy+fQM7A4UlJxm8tlA2Y18XUelrk/5jNDU5qYNxhmaPnpvXo6b8hVffHFL1wPdiYEJ/JbzLZucujdzB35ZWbz9K4miS9cF8y4Gp9LboIWT2YEc++7XQikthRzaebmbZMP2RyNlwDMgL/TL/snUK84sph5fdCZnPSJgyeFCh4qUHYRCJ7oPGX43IgMBE+FQ4mqg/+BOlnmHViNKH8rYO6sVPLBAWajNbnCb2nEe8rMC+9rY3+tzvDURexGmZt/52qTLAvjk3+iu1tRhXFLd0NaOCIaDrnIcL+aDC5XduNfd4tAeFGWud5s1JFLueN1P/OyoHP1cxoGH3fC7mNBIThXhE1FES7WEN3d0yFuV3bxd13wR2gHE+JJTcfiuk+vMM8ANnqHovjjV8RkqE2Wl80ui+Ri/8+8aeq8pcureLsztJ1i7sA1uZGVn0q+gMCcKZ4Pp/ORjgXxGUIdJmMmTMZMCNgx4XyACbZsQoyOCaFOhrnxdz5u3tPWiadfPpFmnoA7X2rPvU1Dw5RIPg/BfGVtRjnPFm+tM3cjel/jipcJISZVhLvWRXDHIlzTJ0OgmBTdXn5wNt0zwZtL3fmhkCoEXclwOEyGcCsZ+p8MQZIy3Mokw9uU3Z324VZhFQ7sqo6gd58F6wK8QlkmnIY3YYpuQhGGOSj3N4VkbCqaSdzbwWXsctN4hGVOiH3OyRnddHsm3jNgninyefbnWyKO9NfMbWKfGZ1MiDjMTTPPXV6O6Weq4tANw3Rkl1P1ckmjOJOPUoSuz1RUr++bJ3pfH4vZITNy7nJJT8HFeEp0n25jLu3d3RSNH3H38FMvEF/mIJgrpi7HaNjr5RuHfDCjyHsROcml3W3fDvOaLmg6dOOuX7fNEw6LtM+FO/NC/w8RquHrGWEuFPzMun0uzIhEcDcixK0qZrgqmADGF7WK7iOB3aEj5obeTxvytYJ4XNfdxXarLvo1NF3YrzDhzjvTRXoxie9Pm/35sbfRE3sYwQx0+5lGmsYnxphk7GdGqGnUNJx9i79//PC+fa9qJ1on+dvf//nP/wdasYoQmYsCAA=="; \ No newline at end of file diff --git a/docs/v2.0.0-rc6/assets/style.css b/docs/v2.0.0-rc6/assets/style.css new file mode 100644 index 0000000..178bfb0 --- /dev/null +++ b/docs/v2.0.0-rc6/assets/style.css @@ -0,0 +1,1493 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + + --light-color-icon-background: var(--light-color-background); + --light-color-icon-text: var(--light-color-text); + + --light-color-comment-tag-text: var(--light-color-text); + --light-color-comment-tag: var(--light-color-background); + + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: #4d7fff; + --light-color-ts-property: #ff984d; + --light-color-ts-method: #ff4db8; + --light-color-ts-reference: #ff4d82; + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: #ff4d4d; + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-icon-text: var(--dark-color-text); + + --dark-color-comment-tag-text: var(--dark-color-text); + --dark-color-comment-tag: var(--dark-color-background); + + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: #4d7fff; + --dark-color-ts-property: #ff984d; + --dark-color-ts-method: #ff4db8; + --dark-color-ts-reference: #ff4d82; + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: #ff4d4d; + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@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-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + + --color-icon-background: var(--light-color-icon-background); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --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-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + + --color-icon-background: var(--dark-color-icon-background); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --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-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +*:focus-visible, +.tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +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; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} +footer > p { + margin: 0 1em; +} + +.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: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} +a.tsd-anchor-link { + color: var(--color-text); +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +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: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; +} + +.tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; +} + +.tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.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.25rem); + display: flex; + align-items: center; +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-navigation .tsd-nav-link { + display: none; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation-section { + margin-left: 10px; +} +.tsd-page-navigation-section > summary { + padding: 0.25rem; +} +.tsd-page-navigation-section > div { + margin-left: 20px; +} +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; + vertical-align: text-top; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-no-select { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} +.tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; +} +.tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-reference { + color: var(--color-ts-reference); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* 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%; + } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } +} + +/* 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; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/v2.0.0-rc6/assets/versionsMenu.js b/docs/v2.0.0-rc6/assets/versionsMenu.js new file mode 100644 index 0000000..b4bdf6b --- /dev/null +++ b/docs/v2.0.0-rc6/assets/versionsMenu.js @@ -0,0 +1,21 @@ +import { DOC_VERSIONS } from '../../versions.js'; + +const select = document.getElementById('plugin-versions-select'); + +DOC_VERSIONS.forEach((version) => { + const option = document.createElement('option'); + option.value = version; + option.innerHTML = version; + select.appendChild(option); +}); + +const locationSplit = location.pathname.split('/'); +const thisVersion = locationSplit.find((path) => ['stable', 'dev', ...DOC_VERSIONS].includes(path)); +select.value = DOC_VERSIONS.includes(thisVersion) + ? thisVersion + : DOC_VERSIONS[0]; +select.onchange = () => { + const newPaths = window.location.pathname.replace(`/${thisVersion}/`, `/${select.value}/`); + const newUrl = new URL(newPaths, window.location.origin); + window.location.assign(newUrl); +}; diff --git a/docs/v2.0.0-rc6/classes/index.BaseMessageNode.html b/docs/v2.0.0-rc6/classes/index.BaseMessageNode.html new file mode 100644 index 0000000..408c2c6 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.BaseMessageNode.html @@ -0,0 +1,16 @@ +BaseMessageNode | archipelago.js - v2.0.0-rc6

Class BaseMessageNodeAbstract

The base class for all message node objects.

+

Hierarchy (view full)

Properties

Accessors

Methods

Properties

client: Client

The client object containing additional context metadata.

+

The underlying message part component.

+
type: string

The type of this message node.

+

Accessors

  • get text(): string
  • Returns the plaintext component of this message node.

    +

    Returns string

    Same value returned from .toString().

    +

Methods

diff --git a/docs/v2.0.0-rc6/classes/index.Client.html b/docs/v2.0.0-rc6/classes/index.Client.html new file mode 100644 index 0000000..1741f86 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.Client.html @@ -0,0 +1,105 @@ +Client | archipelago.js - v2.0.0-rc6

The client that connects to an Archipelago server and provides helper methods and objects to facilitate +communication, listen for events, and manage data.

+

Constructors

Properties

deathLink: DeathLinkManager = ...

A helper object for handling DeathLink mechanics.

+
items: ItemsManager = ...

A helper object for handling received items and hints.

+
messages: MessageManager = ...

A helper object for handling chat messages.

+
options: Required<ClientOptions>

Current options for this client.

+
package: DataPackageManager = ...

A helper object for handling game data packages.

+
players: PlayersManager = ...

A helper object for handling players (including self).

+
room: RoomStateManager = ...

A helper object for handling room state.

+
socket: SocketManager = ...

A helper object for handling websocket communication and AP network protocol.

+
storage: DataStorageManager = ...

A helper object for handling the data storage API.

+

Accessors

  • get authenticated(): boolean
  • Returns true if currently connected and authenticated to the Archipelago server.

    +

    Returns boolean

  • get game(): string
  • Returns the client's current game name (or an empty string, if never connected).

    +

    Returns string

  • get name(): string
  • Returns the client's current slot name (or an empty string, if never connected).

    +

    Returns string

Methods

  • Send a bounce packet targeting any clients that fulfil any target parameters. Can be listened for by listening to +"bounced" events on SocketManager.

    +

    Parameters

    • targets: {
          games?: string[];
          slots?: number[];
          tags?: string[];
      }

      The targets to receive this bounce packet.

      +
      • Optionalgames?: string[]

        Specific games that should receive this bounce.

        +
      • Optionalslots?: number[]

        Specific slots that should receive this bounce.

        +
      • Optionaltags?: string[]

        Specific clients with these tags that should receive this bounce.

        +
    • data: JSONRecord

      The json-serializable data to send.

      +

    Returns void

    UnauthenticatedError If attempting to send a bounce while not authenticated.

    +

    If no targets are specified, no clients will receive this bounce packet.

    +
  • Marks a list of locations as checked on the server.

    +

    Parameters

    • Rest...locations: number[]

      Location ids to check.

      +

    Returns void

    UnauthenticatedError If attempting to check locations while not authenticated.

    +

    Locations that do not exist or have already been checked in the multi-world are ignored.

    +
  • A shorthand for running Client.updateStatus(clientStatuses.goal). Once set, cannot be changed and if release +and/or collect is set to automatic, will release/collect all items.

    +

    Returns void

    UnauthenticatedError If not connected and authenticated.

    +
  • Connect and authenticate to an Archipelago server.

    +

    Type Parameters

    • SlotData extends JSONRecord

      If slot data is requested, this sets the type of the returning slot data.

      +

    Parameters

    • url: string | URL

      The url of the server, including the protocol (e.g., wss://archipelago.gg:38281).

      +
    • name: string

      The slot name this client will be connecting to.

      +
    • game: string = ""

      The game name this client will be connecting to. If omitted, client will connect in "TextOnly" mode.

      +
    • Optionaloptions: ConnectionOptions

      Additional optional connection arguments.

      +

    Returns Promise<SlotData>

    ArgumentError If slot name is empty.

    +

    LoginError If the server refuses the authentication attempt.

    +

    TypeError If provided URL is malformed or invalid protocol.

    +

    If the port is omitted, the client will default to 38281 (AP default).

    +

    If the protocol is omitted, client will attempt to connect via wss, then fallback to ws if unsuccessful.

    +

    Any paths, queries, fragments, or userinfo components of the provided url will be ignored.

    +
    import { Client } from "archipelago.js";

    const client = new Client();

    await client.login("wss://archipelago.gg:38281", "Phar", "Clique", {
    slotData: false,
    password: "4444"
    }); +
    + +
    import { Client } from "archipelago.js";

    interface CliqueSlotData {
    color: string
    hard_mode: boolean
    }

    const client = new Client();

    // slotData: CliqueSlotData { color: "red", hard_mode: false }
    const slotData = await client.login<CliqueSlotData>("wss://archipelago.gg:38281", "Phar", "Clique"); +
    + +
  • Scout a list of locations for their containing items.

    +

    Parameters

    • locations: number[]

      A list of location ids to scout.

      +
    • createHint: 0 | 1 | 2 = 0

      Whether to create hints for these locations.

      +
        +
      • If set to 0, this packet will not create hints for any locations in this packet.
      • +
      • If set to 1, this packet will create hints for all locations in this packet and broadcast them to all +relevant clients.
      • +
      • If set to 2, this packet will create hints for all locations in this packet and broadcast only new hints to +all relevant clients.
      • +
      +

    Returns Promise<Item[]>

    UnauthenticatedError If attempting to scout locations while not authenticated.

    +
  • Request the server update the kinds of item received events this client should receive.

    +

    Parameters

    • items: number

      New item handling flags.

      +

    Returns void

    UnauthenticatedError If not connected and authenticated.

    +
  • Update the client status for the current player. For a list of known client statuses, see clientStatuses.

    +

    Parameters

    Returns void

    UnauthenticatedError If not connected and authenticated.

    +

    The server will automatically set the player's status to clientStatuses.disconnected when all +clients connected to this slot have disconnected, set the status to clientStatuses.connected if a client +connects to this slot when previously set to clientStatuses.disconnected, or ignores any future updates +if ever set to clientStatuses.goal.

    +
    import { Client, clientStatuses } from "archipelago.js";

    const client = new Client();
    await client.login("wss://archipelago.gg:38281", "Phar", "Clique");

    // Mark client as ready to start.
    client.updateStatus(clientStatuses.ready); +
    + +
  • Request the server update this client's tags.

    +

    Parameters

    • tags: string[]

      Tags to replace the current ones.

      +

    Returns void

    UnauthenticatedError If not connected and authenticated.

    +
diff --git a/docs/v2.0.0-rc6/classes/index.ColorMessageNode.html b/docs/v2.0.0-rc6/classes/index.ColorMessageNode.html new file mode 100644 index 0000000..ef941df --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.ColorMessageNode.html @@ -0,0 +1,18 @@ +ColorMessageNode | archipelago.js - v2.0.0-rc6

A message node object containing explicit color metadata.

+

Hierarchy (view full)

Properties

Accessors

Methods

Properties

client: Client

The client object containing additional context metadata.

+

The explicit color (or style) of this node.

+

The underlying message part component.

+
type: "color" = ...

The type of this message node.

+

Accessors

  • get text(): string
  • Returns the plaintext component of this message node.

    +

    Returns string

    Same value returned from .toString().

    +

Methods

diff --git a/docs/v2.0.0-rc6/classes/index.DataPackageManager.html b/docs/v2.0.0-rc6/classes/index.DataPackageManager.html new file mode 100644 index 0000000..e8866c1 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.DataPackageManager.html @@ -0,0 +1,61 @@ +DataPackageManager | archipelago.js - v2.0.0-rc6

Managers data packages metadata and exposes name lookup methods.

+

Methods

  • Export a DataPackage object for local caching purposes.

    +

    Returns DataPackage

    It is recommended to export/import any data packages ahead of time to reduce unnecessary calls to +DataPackageManager.fetchPackage and reduce connection startup time and lighten network overhead. See +below for an example.

    +
    import fs from "node:fs";
    import { Client } from "archipelago.js";

    // ... misc client code (connecting and fetching data package).

    // Save data package to a local file.
    const data = client.package.exportPackage();
    fs.writeFileSync("path/to/cache/datapackage_cache.json", JSON.stringify(data), "utf8"); +
    + +
  • Fetches and returns the DataPackage from the server, if the games are not locally cached or checksums +do not match.

    +

    Parameters

    • games: string[] = []

      A list of game packages to fetch. If omitted, will fetch all available game packages from the +current room.

      +
    • update: boolean = true

      If true, after fetching the data package, any changes will automatically be updated without +needing to manually call DataPackageManager.importPackage.

      +

    Returns Promise<DataPackage>

    It is recommended to export and locally cache the data package after fetching, then prior to any future +connections, importing the locally cached package to reduce unnecessary network bandwidth.

    +

    Any requested games that do not exist in the current room will be ignored.

    +
  • Import a DataPackage object to prepopulate local cache.

    +

    Parameters

    Returns void

    It is recommended to export/import any data packages ahead of time to reduce unnecessary calls to +DataPackageManager.fetchPackage and reduce connection startup time and lighten network overhead. See +below for an example.

    +
    import fs from "node:fs";
    import { Client } from "archipelago.js";

    const data = fs.readFileSync("path/to/cache/datapackage_cache.json");
    const client = new Client();

    client.package.importPackage(JSON.parse(data));
    await client.login("wss://archipelago.gg:38281", "Phar", "Clique"); +
    + +
    <script src="archipelago.js" type="module">
    import { Client } from "archipelago.js";

    const data = localStorage.getItem("datapackage_cache");
    const client = new Client();

    client.package.importPackage(JSON.parse(data));
    await client.login("wss://archipelago.gg:38281", "Phar", "Clique");
    </script> +
    + +
  • Lookup an item name by its integer id.

    +

    Parameters

    • game: string

      The name of the game this item is associated with.

      +
    • id: number

      The id of the item to name lookup.

      +
    • fallback: true

      If true, returns "Unknown Item {id}" instead of undefined, if id does not exist in package. +Defaults to true, if omitted.

      +

    Returns string

  • Lookup an item name by its integer id.

    +

    Parameters

    • game: string

      The name of the game this item is associated with.

      +
    • id: number

      The id of the item to name lookup.

      +
    • fallback: false

      If true, returns "Unknown Item {id}" instead of undefined, if id does not exist in package. +Defaults to true, if omitted.

      +

    Returns undefined | string

  • Lookup a location name by its integer id.

    +

    Parameters

    • game: string

      The name of the game this location is associated with.

      +
    • id: number

      The id of the location to name lookup.

      +
    • fallback: true

      If true, returns "Unknown Location {id}" instead of undefined, if id does not exist in +package. Defaults to true, if omitted.

      +

    Returns string

  • Lookup a location name by its integer id.

    +

    Parameters

    • game: string

      The name of the game this location is associated with.

      +
    • id: number

      The id of the location to name lookup.

      +
    • fallback: false

      If true, returns "Unknown Location {id}" instead of undefined, if id does not exist in +package. Defaults to true, if omitted.

      +

    Returns undefined | string

diff --git a/docs/v2.0.0-rc6/classes/index.DataStorageManager.html b/docs/v2.0.0-rc6/classes/index.DataStorageManager.html new file mode 100644 index 0000000..930c847 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.DataStorageManager.html @@ -0,0 +1,47 @@ +DataStorageManager | archipelago.js - v2.0.0-rc6

Manages communication between the data storage API and notifies subscribers of changes to storage updates.

+

Accessors

Methods

  • Fetches a list of key-value pairs from data storage.

    +

    Type Parameters

    • T extends JSONRecord

      The expected key-value types to be returned.

      +

    Parameters

    • keys: (keyof T)[]

      A list of keys to fetch values for.

      +
    • Optionalmonitor: boolean

      Adds keys to local cache and request the server to update client when changes are made to speed up +subsequent lookups.

      +

    Returns Promise<T>

    An object containing all current values for each key requested.

    +

    Any keys not currently cached and monitored will be requested over the network instead of from memory.

    +
  • Fetches a single key-value pair from data storage.

    +

    Type Parameters

    Parameters

    • key: string

      The key to fetch a value for.

      +
    • Optionalmonitor: boolean

      Adds key to local cache and request the server to update client when changes are made to speed up +subsequent lookups.

      +

    Returns Promise<T>

    The current value for this key.

    +

    Any keys not currently cached and monitored will be requested over the network instead of from memory.

    +
  • Returns item name groups for this package from data storage API.

    +

    Parameters

    • game: string

      The game name to look up item name groups for.

      +

    Returns Promise<Record<string, string[]>>

  • Returns location name groups for this package from the data storage API.

    +

    Parameters

    • game: string

      The game name to look up location name groups for.

      +

    Returns Promise<Record<string, string[]>>

  • Add a list of keys to be monitored for changes and fire a callback when changes are detected.

    +

    Type Parameters

    Parameters

    • keys: (keyof T)[]

      A list of keys to fetch and watch for changes.

      +
    • callback: DataChangeCallback

      A callback to fire whenever one of these keys change.

      +

    Returns Promise<T>

    An object containing all current values for each key requested.

    +

    If connection to the Archipelago server is lost, keys will no longer be tracked for changes and need to +be monitored again.

    +
    const keys = ["key1", "key2"];
    const data = await client.storage.notify(keys, (key, value, oldValue) => {
    console.log(`Key '${key}' has been updated from ${oldValue} to ${value}!`);
    });

    client.storage
    .prepare("key2", 0)
    .add(5)
    .commit();
    // Key 'key2' has been updated from 0 to 5! +
    + +
  • Create a new transaction for setting a data storage key by returning an IntermediateDataOperation. To +perform certain operations, just chain additional methods until finished, then call prepare().

    +

    Type Parameters

    Parameters

    • key: string

      The key to manipulate.

      +
    • _default: T

      The default value to be used if key does not exist.

      +

    Returns IntermediateDataOperation<T>

    TypeError if attempting to modify a read only key.

    +
    // Prepare key "my-key" and set initial value to 100, if key doesn't exist.
    client.storage
    .prepare("my-key", 100)
    .multiply(0.25) // Multiply value by 0.25.
    .floor() // Round down to nearest integer.
    .max(0) // Clamp value above 0.
    .commit(); // Commit operations to data storage. +
    + +
diff --git a/docs/v2.0.0-rc6/classes/index.DeathLinkManager.html b/docs/v2.0.0-rc6/classes/index.DeathLinkManager.html new file mode 100644 index 0000000..37ac4db --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.DeathLinkManager.html @@ -0,0 +1,36 @@ +DeathLinkManager | archipelago.js - v2.0.0-rc6

Manages DeathLink mechanics for clients that choose to opt in to the mechanic.

+

Hierarchy (view full)

Accessors

Methods

  • If DeathLink is enabled, sends a DeathLink to all DeathLink enabled players, otherwise this method does nothing.

    +

    Parameters

    • source: string

      The name of the player who died. Can be a slot name, but could also be a name from within a +multiplayer game.

      +
    • Optionalcause: string

      Optional text explaining the cause of death. When provided, this should include the player's name. +(e.g., Phar drowned in a vat of kittens.)

      +

    Returns void

    UnauthenticatedError If attempting to send a death link before authenticating to the server.

    +

    DeathLinks sent from this client will not fire a DeathEvents.deathReceived event to avoid +an infinite feedback loop of deaths.

    +
  • Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments +dispatched with the event.

    +

    Type Parameters

    • Event extends "deathReceived"

    Parameters

    • event: Event

      The event name to listen for.

      +
    • clearPredicate: ((...args: DeathEvents[Event]) => boolean) = ...

      An optional predicate to check on incoming events to validate if the correct event has +been received. If omitted, will return immediately on next event type received.

      +

    Returns Promise<DeathEvents[Event]>

diff --git a/docs/v2.0.0-rc6/classes/index.EventBasedManager.html b/docs/v2.0.0-rc6/classes/index.EventBasedManager.html new file mode 100644 index 0000000..19186de --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.EventBasedManager.html @@ -0,0 +1,23 @@ +EventBasedManager | archipelago.js - v2.0.0-rc6

Class EventBasedManager<Events>Abstract

An abstract class for managers that offer an event-based API.

+

Type Parameters

  • Events extends {
        [p: string]: unknown[];
    }

    An interface of events supported by this derived manager.

    +

Hierarchy (view full)

Constructors

Methods

off +on +wait +

Constructors

Methods

  • Removes an existing event listener.

    +

    Type Parameters

    • Event extends string

    Parameters

    • event: Event

      The event name associated with this listener to remove.

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

      The callback function to remove.

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

          Returns void

    Returns this

    This object.

    +
  • Add an event listener for a specific event.

    +

    Type Parameters

    • Event extends string

    Parameters

    • event: Event

      The event name to listen for.

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

      The callback function to fire when this event is received.

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

          Returns void

    Returns this

    This object.

    +
  • Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments +dispatched with the event.

    +

    Type Parameters

    • Event extends string

    Parameters

    • event: Event

      The event name to listen for.

      +
    • clearPredicate: ((...args: Events[Event]) => boolean) = ...

      An optional predicate to check on incoming events to validate if the correct event has +been received. If omitted, will return immediately on next event type received.

      +
        • (...args): boolean
        • Parameters

          Returns boolean

    Returns Promise<Events[Event]>

diff --git a/docs/v2.0.0-rc6/classes/index.Hint.html b/docs/v2.0.0-rc6/classes/index.Hint.html new file mode 100644 index 0000000..3680993 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.Hint.html @@ -0,0 +1,11 @@ +Hint | archipelago.js - v2.0.0-rc6

An abstraction of NetworkHint that exposes additional helper methods and accessors received hint data.

+

Accessors

Accessors

  • get entrance(): string
  • Returns the entrance this location is at if entrance data is available, otherwise "Vanilla".

    +

    Returns string

  • get found(): boolean
  • Returns true if this item has been found.

    +

    Returns boolean

diff --git a/docs/v2.0.0-rc6/classes/index.IntermediateDataOperation.html b/docs/v2.0.0-rc6/classes/index.IntermediateDataOperation.html new file mode 100644 index 0000000..20c7f3b --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.IntermediateDataOperation.html @@ -0,0 +1,64 @@ +IntermediateDataOperation | archipelago.js - v2.0.0-rc6

Class IntermediateDataOperation<T>

An intermediate abstract object holding an array of data storage operations to be performed in order by the server.

+

Type Parameters

Methods

  • Commit the current operations to data store and return a Promise with the updated key, once fulfilled.

    +

    Parameters

    • awaitReply: true

      If true, a promise will be returned with the new value. Otherwise, immediately resolves.

      +

    Returns Promise<T>

  • Commit the current operations to data store.

    +

    Parameters

    • awaitReply: false

    Returns Promise<void>

diff --git a/docs/v2.0.0-rc6/classes/index.Item.html b/docs/v2.0.0-rc6/classes/index.Item.html new file mode 100644 index 0000000..f2e3bc3 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.Item.html @@ -0,0 +1,33 @@ +Item | archipelago.js - v2.0.0-rc6

An abstraction of NetworkItem that exposes additional helper methods and accessors for this item data.

+

Accessors

  • get filler(): boolean
  • Returns true if this item has no special flags.

    +

    Returns boolean

  • get flags(): number
  • Returns the item classification bitflags for this item.

    +

    Returns number

  • get locationGame(): string
  • Returns the game name for the location this item was contained.

    +

    Returns string

  • get locationId(): number
  • Returns the id of the location where this item was contained.

    +

    Returns number

  • get locationName(): string
  • Returns the name of the location where this item was contained.

    +

    Returns string

  • get progression(): boolean
  • Returns true if this item is flagged as progression.

    +

    Returns boolean

  • get trap(): boolean
  • Returns true if this item is flagged as a trap.

    +

    Returns boolean

  • get useful(): boolean
  • Returns true if this item is flagged as useful.

    +

    Returns boolean

Methods

diff --git a/docs/v2.0.0-rc6/classes/index.ItemMessageNode.html b/docs/v2.0.0-rc6/classes/index.ItemMessageNode.html new file mode 100644 index 0000000..39a90f9 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.ItemMessageNode.html @@ -0,0 +1,17 @@ +ItemMessageNode | archipelago.js - v2.0.0-rc6

A message node object containing item metadata.

+

Hierarchy (view full)

Properties

Accessors

Methods

Properties

client: Client

The client object containing additional context metadata.

+
item: Item

The item this node is referring to.

+

The underlying message part component.

+
type: "item" = ...

The type of this message node.

+

Accessors

Methods

diff --git a/docs/v2.0.0-rc6/classes/index.ItemsManager.html b/docs/v2.0.0-rc6/classes/index.ItemsManager.html new file mode 100644 index 0000000..3fecd49 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.ItemsManager.html @@ -0,0 +1,30 @@ +ItemsManager | archipelago.js - v2.0.0-rc6

Manages tracking and receiving of all received items and hints.

+

Hierarchy (view full)

Accessors

Methods

off +on +wait +

Accessors

  • get hints(): Hint[]
  • Returns a copy of all hints for this player.

    +

    Returns Hint[]

    Hints may take a moment to populate after establishing connection to server, as it needs to wait for +data storage to fetch all current hints. If you need hints right after connecting, listen for the +ItemEvents.hintsInitialized event.

    +

Methods

  • Removes an existing event listener.

    +

    Type Parameters

    • Event extends
          | "itemsReceived"
          | "hintReceived"
          | "hintFound"
          | "hintsInitialized"

    Parameters

    • event: Event

      The event name associated with this listener to remove.

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

      The callback function to remove.

      +

    Returns this

    This object.

    +
  • Add an event listener for a specific event.

    +

    Type Parameters

    • Event extends
          | "itemsReceived"
          | "hintReceived"
          | "hintFound"
          | "hintsInitialized"

    Parameters

    • event: Event

      The event name to listen for.

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

      The callback function to fire when this event is received.

      +

    Returns this

    This object.

    +
  • Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments +dispatched with the event.

    +

    Type Parameters

    • Event extends
          | "itemsReceived"
          | "hintReceived"
          | "hintFound"
          | "hintsInitialized"

    Parameters

    • event: Event

      The event name to listen for.

      +
    • clearPredicate: ((...args: ItemEvents[Event]) => boolean) = ...

      An optional predicate to check on incoming events to validate if the correct event has +been received. If omitted, will return immediately on next event type received.

      +

    Returns Promise<ItemEvents[Event]>

diff --git a/docs/v2.0.0-rc6/classes/index.LocationMessageNode.html b/docs/v2.0.0-rc6/classes/index.LocationMessageNode.html new file mode 100644 index 0000000..4583d2e --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.LocationMessageNode.html @@ -0,0 +1,17 @@ +LocationMessageNode | archipelago.js - v2.0.0-rc6

A message node object containing location metadata.

+

Hierarchy (view full)

Properties

Accessors

Methods

Properties

client: Client

The client object containing additional context metadata.

+
id: number

The integer id of this location.

+

The underlying message part component.

+
type: "location" = ...

The type of this message node.

+

Accessors

Methods

diff --git a/docs/v2.0.0-rc6/classes/index.MessageManager.html b/docs/v2.0.0-rc6/classes/index.MessageManager.html new file mode 100644 index 0000000..3294690 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.MessageManager.html @@ -0,0 +1,31 @@ +MessageManager | archipelago.js - v2.0.0-rc6

Manages and stores PrintJSONPacket messages, notifies subscribers of new messages, and exposes helper methods +to interact with the chat system.

+

Hierarchy (view full)

Accessors

log +

Methods

off +on +say +wait +

Accessors

Methods

  • Removes an existing event listener.

    +

    Type Parameters

    • Event extends
          | "disconnected"
          | "connected"
          | "message"
          | "itemSent"
          | "itemCheated"
          | "itemHinted"
          | "chat"
          | "serverChat"
          | "tutorial"
          | "tagsUpdated"
          | "userCommand"
          | "adminCommand"
          | "goaled"
          | "released"
          | "collected"
          | "countdown"

    Parameters

    • event: Event

      The event name associated with this listener to remove.

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

      The callback function to remove.

      +

    Returns this

    This object.

    +
  • Add an event listener for a specific event.

    +

    Type Parameters

    • Event extends
          | "disconnected"
          | "connected"
          | "message"
          | "itemSent"
          | "itemCheated"
          | "itemHinted"
          | "chat"
          | "serverChat"
          | "tutorial"
          | "tagsUpdated"
          | "userCommand"
          | "adminCommand"
          | "goaled"
          | "released"
          | "collected"
          | "countdown"

    Parameters

    • event: Event

      The event name to listen for.

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

      The callback function to fire when this event is received.

      +

    Returns this

    This object.

    +
  • Sends a chat message to the server.

    +

    Parameters

    • text: string

      The textual message to broadcast to all connected clients.

      +

    Returns Promise<void>

    A promise that resolves when the server has broadcast the chat message.

    +

    UnauthenticatedError if attempting to send a chat message when not connected or authenticated.

    +
  • Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments +dispatched with the event.

    +

    Type Parameters

    • Event extends
          | "disconnected"
          | "connected"
          | "message"
          | "itemSent"
          | "itemCheated"
          | "itemHinted"
          | "chat"
          | "serverChat"
          | "tutorial"
          | "tagsUpdated"
          | "userCommand"
          | "adminCommand"
          | "goaled"
          | "released"
          | "collected"
          | "countdown"

    Parameters

    • event: Event

      The event name to listen for.

      +
    • clearPredicate: ((...args: MessageEvents[Event]) => boolean) = ...

      An optional predicate to check on incoming events to validate if the correct event has +been received. If omitted, will return immediately on next event type received.

      +

    Returns Promise<MessageEvents[Event]>

diff --git a/docs/v2.0.0-rc6/classes/index.PackageMetadata.html b/docs/v2.0.0-rc6/classes/index.PackageMetadata.html new file mode 100644 index 0000000..8def881 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.PackageMetadata.html @@ -0,0 +1,20 @@ +PackageMetadata | archipelago.js - v2.0.0-rc6

An abstraction of a GamePackage object which includes additional helper methods for interacting with a game's +package.

+

Properties

checksum: string

The SHA256 hexadecimal string representation of this game package.

+
game: string

The name of the game this game package is for.

+
itemTable: Readonly<Record<string, number>>

A record of names to ids for all items in this game package.

+
locationTable: Readonly<Record<string, number>>

A record of names to ids for all locations in this game package.

+
reverseItemTable: Readonly<Record<number, string>>

A record of ids to names for all items in this game package.

+
reverseLocationTable: Readonly<Record<number, string>>

A record of ids to names for all locations in this game package.

+

Methods

diff --git a/docs/v2.0.0-rc6/classes/index.Player.html b/docs/v2.0.0-rc6/classes/index.Player.html new file mode 100644 index 0000000..92b243d --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.Player.html @@ -0,0 +1,32 @@ +Player | archipelago.js - v2.0.0-rc6

A collection of metadata and helper methods for interacting with a particular player.

+

Accessors

  • get alias(): string
  • Returns the current nickname for this player or the slot name if not set.

    +

    Returns string

Methods

  • Fetch this player's slot data over the network.

    +

    Type Parameters

    • SlotData extends JSONRecord

      The type of the slot data that is returned, for better typing information.

      +

    Returns Promise<SlotData>

    This data is not tracked after running, so slot data should be cached to reduce additional network +calls, if necessary.

    +
diff --git a/docs/v2.0.0-rc6/classes/index.PlayerMessageNode.html b/docs/v2.0.0-rc6/classes/index.PlayerMessageNode.html new file mode 100644 index 0000000..e37a8fb --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.PlayerMessageNode.html @@ -0,0 +1,17 @@ +PlayerMessageNode | archipelago.js - v2.0.0-rc6

A message node object containing explicit color metadata.

+

Hierarchy (view full)

Properties

Accessors

Methods

Properties

client: Client

The client object containing additional context metadata.

+

The underlying message part component.

+
player: Player

The player being referenced by this node.

+
type: "player" = ...

The type of this message node.

+

Accessors

Methods

diff --git a/docs/v2.0.0-rc6/classes/index.PlayersManager.html b/docs/v2.0.0-rc6/classes/index.PlayersManager.html new file mode 100644 index 0000000..c163d87 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.PlayersManager.html @@ -0,0 +1,38 @@ +PlayersManager | archipelago.js - v2.0.0-rc6

Manages tracking and updating all players in the room session.

+

Hierarchy (view full)

Accessors

Methods

Accessors

  • get teams(): Player[][]
  • Returns a 2D array of player metadata ranked by team number, then slot number.

    +

    Returns Player[][]

    for (const team of client.players.teams) {
    for (const player of team) {
    console.log(player.alias);
    }
    } +
    + +

Methods

  • Attempt to find a player by their team or slot name.

    +

    Parameters

    • slot: number

      The slot id associated with the searched player.

      +
    • Optionalteam: number

      The team id associated with the searched player. If omitted, defaults to the team of the client +player.

      +

    Returns undefined | Player

    The player's metadata or undefined if not found.

    +
  • Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments +dispatched with the event.

    +

    Type Parameters

    • Event extends "aliasUpdated"

    Parameters

    • event: Event

      The event name to listen for.

      +
    • clearPredicate: ((...args: PlayerEvents[Event]) => boolean) = ...

      An optional predicate to check on incoming events to validate if the correct event has +been received. If omitted, will return immediately on next event type received.

      +

    Returns Promise<PlayerEvents[Event]>

diff --git a/docs/v2.0.0-rc6/classes/index.RoomStateManager.html b/docs/v2.0.0-rc6/classes/index.RoomStateManager.html new file mode 100644 index 0000000..77c5e03 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.RoomStateManager.html @@ -0,0 +1,57 @@ +RoomStateManager | archipelago.js - v2.0.0-rc6

Managers room state information, notifies subscribers of changes, and exposes helper methods for interacting with the +room.

+

Hierarchy (view full)

Accessors

  • get generatorVersion(): {
        build: number;
        major: number;
        minor: number;
    }
  • Returns the version of Archipelago the seed was generated from.

    +

    Returns {
        build: number;
        major: number;
        minor: number;
    }

    • build: number
    • major: number
    • minor: number

    All properties will be -1 prior to initial connection.

    +
  • get race(): boolean
  • Experimental

    Returns if this seed was generated with race mode enabled (to be used to obscure unnecessary details to make +clients race legal depending on rules).

    +

    Returns boolean

  • get seedName(): string
  • Get the seed name for this room.

    +

    Returns string

    In non-race seeds, this is based on the seed to generate this multi-world, but not exactly the same to +prevent reverse engineering. In race seeds, this is completely random.

    +
  • get serverVersion(): {
        build: number;
        major: number;
        minor: number;
    }
  • Returns the version of Archipelago the server is currently running.

    +

    Returns {
        build: number;
        major: number;
        minor: number;
    }

    • build: number
    • major: number
    • minor: number

    All properties will be -1 prior to initial connection.

    +

Methods

  • Removes an existing event listener.

    +

    Type Parameters

    • Event extends
          | "passwordUpdated"
          | "permissionsUpdated"
          | "locationCheckPointsUpdated"
          | "hintCostUpdated"
          | "hintPointsUpdated"
          | "locationsChecked"

    Parameters

    • event: Event

      The event name associated with this listener to remove.

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

      The callback function to remove.

      +

    Returns this

    This object.

    +
  • Add an event listener for a specific event.

    +

    Type Parameters

    • Event extends
          | "passwordUpdated"
          | "permissionsUpdated"
          | "locationCheckPointsUpdated"
          | "hintCostUpdated"
          | "hintPointsUpdated"
          | "locationsChecked"

    Parameters

    • event: Event

      The event name to listen for.

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

      The callback function to fire when this event is received.

      +

    Returns this

    This object.

    +
  • Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments +dispatched with the event.

    +

    Type Parameters

    • Event extends
          | "passwordUpdated"
          | "permissionsUpdated"
          | "locationCheckPointsUpdated"
          | "hintCostUpdated"
          | "hintPointsUpdated"
          | "locationsChecked"

    Parameters

    • event: Event

      The event name to listen for.

      +
    • clearPredicate: ((...args: RoomStateEvents[Event]) => boolean) = ...

      An optional predicate to check on incoming events to validate if the correct event has +been received. If omitted, will return immediately on next event type received.

      +

    Returns Promise<RoomStateEvents[Event]>

diff --git a/docs/v2.0.0-rc6/classes/index.SocketManager.html b/docs/v2.0.0-rc6/classes/index.SocketManager.html new file mode 100644 index 0000000..133d529 --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.SocketManager.html @@ -0,0 +1,42 @@ +SocketManager | archipelago.js - v2.0.0-rc6

Manages socket-level communication and exposes helper methods/events for interacting with the Archipelago API +directly.

+

Hierarchy (view full)

Accessors

Methods

Accessors

Methods

  • Establish a connection to an Archipelago server before authenticating; useful if there might be tasked that are +needed to be performed before authenticating, but after connecting (e.g., DataPackage).

    +

    Parameters

    • url: string | URL

      The url of the server, including the protocol (e.g., wss://archipelago.gg:38281).

      +

    Returns Promise<RoomInfoPacket>

    The RoomInfoPacket received on initial connection.

    +

    SocketError If failed to connect or no websocket API is available.

    +

    TypeError If provided URL is malformed or invalid protocol.

    +

    If the port is omitted, client will default to 38281.

    +

    If the protocol is omitted, client will attempt to connect via wss, then fallback to ws if unsuccessful.

    +
  • Removes an existing event listener.

    +

    Type Parameters

    • Event extends
          | "disconnected"
          | "connected"
          | "bounced"
          | "connectionRefused"
          | "dataPackage"
          | "invalidPacket"
          | "locationInfo"
          | "printJSON"
          | "receivedItems"
          | "retrieved"
          | "roomInfo"
          | "roomUpdate"
          | "setReply"
          | "receivedPacket"
          | "sentPackets"

    Parameters

    • event: Event

      The event name associated with this listener to remove.

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

      The callback function to remove.

      +

    Returns this

    This object.

    +
  • Add an event listener for a specific event.

    +

    Type Parameters

    • Event extends
          | "disconnected"
          | "connected"
          | "bounced"
          | "connectionRefused"
          | "dataPackage"
          | "invalidPacket"
          | "locationInfo"
          | "printJSON"
          | "receivedItems"
          | "retrieved"
          | "roomInfo"
          | "roomUpdate"
          | "setReply"
          | "receivedPacket"
          | "sentPackets"

    Parameters

    • event: Event

      The event name to listen for.

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

      The callback function to fire when this event is received.

      +

    Returns this

    This object.

    +
  • Returns a promise that waits for a single specified event to be received. Resolves with the list of arguments +dispatched with the event.

    +

    Type Parameters

    • Event extends
          | "disconnected"
          | "connected"
          | "bounced"
          | "connectionRefused"
          | "dataPackage"
          | "invalidPacket"
          | "locationInfo"
          | "printJSON"
          | "receivedItems"
          | "retrieved"
          | "roomInfo"
          | "roomUpdate"
          | "setReply"
          | "receivedPacket"
          | "sentPackets"

    Parameters

    • event: Event

      The event name to listen for.

      +
    • clearPredicate: ((...args: SocketEvents[Event]) => boolean) = ...

      An optional predicate to check on incoming events to validate if the correct event has +been received. If omitted, will return immediately on next event type received.

      +

    Returns Promise<SocketEvents[Event]>

diff --git a/docs/v2.0.0-rc6/classes/index.TextualMessageNode.html b/docs/v2.0.0-rc6/classes/index.TextualMessageNode.html new file mode 100644 index 0000000..5128f2a --- /dev/null +++ b/docs/v2.0.0-rc6/classes/index.TextualMessageNode.html @@ -0,0 +1,16 @@ +TextualMessageNode | archipelago.js - v2.0.0-rc6

A message node object containing explicit color metadata.

+

Hierarchy (view full)

Properties

Accessors

Methods

Properties

client: Client

The client object containing additional context metadata.

+

The underlying message part component.

+
type: "text" | "entrance"

The type of this message node.

+

Accessors

  • get text(): string
  • Returns the plaintext component of this message node.

    +

    Returns string

    Same value returned from .toString().

    +

Methods

diff --git a/docs/v2.0.0-rc6/documents/Quick_Start.html b/docs/v2.0.0-rc6/documents/Quick_Start.html new file mode 100644 index 0000000..1f258aa --- /dev/null +++ b/docs/v2.0.0-rc6/documents/Quick_Start.html @@ -0,0 +1,61 @@ +Quick Start | archipelago.js - v2.0.0-rc6

Quick Start Guide

Before we begin, make sure you fulfil the following prerequisites:

+
    +
  • Have a basic understanding of JavaScript.
  • +
  • Have installed a JavaScript runtime or web server for starting in the web browser.
  • +
  • Have an Archipelago server to connect to.
  • +
+

To start a new project with archipelago.js, you'll need to set up a project directory.

+

If you're using a runtime like Node, you can install archipelago.js by running the following command in your +project directory: npm install archipelago.js, then following the rest of this tutorial.

+

If you're looking to run this in a web browser without packaging as a part of a tool like vite or webpack, you +can add a <script type="module"> tag to your HTML to write your JavaScript in and replace any mention of

+
import { /* ... */ } from "archipelago.js";
+
+ +

to

+
import { /* ... */ } from "https://unpkg.com/archipelago.js/dist/archipelago.min.js";
// or any other path to archipelago.js as desired +
+ +

as appropriate for your project and all the code examples will still work.

+

To create a basic client that can listen for chat messages and print them to the console, you can use the following +example:

+
import { Client } from "archipelago.js";

// Create a new instance of the Client class.
const client = new Client();

// Setup a listener for incoming chat messages and print them to the console.
client.messages.on("message", (message, sender) => {
console.log(`${sender}: ${message}`);
});

// Connect to the Archipelago server (replace url, slot name, and game as appropriate for your scenario).
await client.login("wss://archipelago.gg:38281", "Phar", "Clique");

// Send a message after connecting.
client.messages.say("Hello, multiworld!") +
+ +

Then, run this in your runtime of choice and see incoming messages print to console and your "Hello, multiworld!" +message get broadcast to all clients (and back to yourself).

+

You can also listen for events, such as when your client receives items from the server:

+
// Setup a listener for whenever items are received and log the details.
client.items.on("itemsReceived", (items) => {
for (const item of items) {
console.log(`Received item ${item} from player ${item.sender}.`);
}
});

// ... misc client code below ... +
+ +

Or if another player changes their alias:

+
// Setup a listener for when a player's alias (name) changes.
client.players.on("aliasUpdated", (_, oldAlias, newAlias) => {
console.log(`${oldAlias} has changed their alias to ${newAlias}.`);
});

// ... misc client code below ... +
+ +

Or if you're using the DeathLink mechanic and another player dies:

+
// Setup a listener for when another DeathLink player dies.
client.deathLink.on("deathReceived", (source, time, cause) => {
if (cause) {
console.log(`DeathLink received from ${source}: ${cause}`);
return;
}

// No cause was supplied.
console.log(`DeathLink received from ${source}!`);
});

// ... misc client code below ... +
+ +

You can also inform the server of actions you take as a client, such as checking locations:

+
// Mark a list of location ids as checked.
client.check(1001, 1002, 1003); +
+ +

Updating keys in the data storage:

+
// Add 1 to a data storage key.
client.storage
.prepare("my_key", 0) /* 0 is the default if the key doesn't exist yet. */
.add(1)
.commit() // Commit changes. +
+ +

Or sending your own DeathLinks to other players if you die.

+
// Send a DeathLink to all DeathLink enabled players.
client.deathLink.sendDeathLink("Phar", "Phar spontanously combusted after pressing a large red button."); +
+ +

Congratulations! You are now a client developer and hopefully got a taste of what this library is capable of. For more +information, check out the rest of the API documentation for archipelago.js (Client might be a good one to start +with) and explore the available features.

+

If you encounter any issues or have any questions, you can reach out on the GitHub repository for support, or in the +Archipelago Discord, specifically in this +thread once you've joined. Thanks for checking +out my little pet project for Archipelago!

+
diff --git a/docs/v2.0.0-rc6/hierarchy.html b/docs/v2.0.0-rc6/hierarchy.html new file mode 100644 index 0000000..04957ab --- /dev/null +++ b/docs/v2.0.0-rc6/hierarchy.html @@ -0,0 +1,4 @@ +archipelago.js - v2.0.0-rc6
diff --git a/docs/v2.0.0-rc6/index.html b/docs/v2.0.0-rc6/index.html new file mode 100644 index 0000000..267250e --- /dev/null +++ b/docs/v2.0.0-rc6/index.html @@ -0,0 +1,31 @@ +archipelago.js - v2.0.0-rc6

archipelago.js - v2.0.0-rc6

archipelago.js

GitHub License +Types +NPM Version +NPM Downloads +Static Badge

+

A runtime-agnostic and zero dependency TypeScript/JavaScript library for communicating with Archipelago servers.

+

Targeted to work on all major desktop and mobile browsers (Firefox, +Chromium, and Safari) and server-side runtimes such as +Node.js, Bun, and Deno.

+

Install via npm install archipelago.js (or via your preferred package manager's flavor).

+

Check out the quick start documentation here!

+

The full API documentation is located here. Please be sure to reference it +while you are developing your JavaScript-based clients.

+

This library supports 100% of the Archipelago network protocol referenced +here as of 2024-11-03 +(0.5.1 RC1). See more information about Archipelago at their website.

+

Archipelago.js is built using TypeScript and the Bun bundler. You can set up your development environment by cloning +this repository to a desired location on your computer and installing its devDependencies.

+
git clone https://github.com/ThePhar/archipelago.js
cd archipelago.js
npm install # or pnpm install +
+ +

Then to build, have Bun installed and run npm run build (or pnpm build).

+

Archipelago.js is written in TypeScript and includes a strong ESLint config file to ensure code consistency. Be sure +to follow the code standards of this repository and check your work with npm run lint.

+

Currently, there are no automated tests for this library, so all testing in browser, Node, Deno, and Bun are done +manually. This is certainly one area that can be expanded upon.

+

Alternatively, expanding upon the documentation (either through the JSDoc or tutorial-like guides) would be appreciated.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.AdminCommandResultJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.AdminCommandResultJSONPacket.html new file mode 100644 index 0000000..cd5fdb5 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.AdminCommandResultJSONPacket.html @@ -0,0 +1,11 @@ +AdminCommandResultJSONPacket | archipelago.js - v2.0.0-rc6

Interface AdminCommandResultJSONPacket

Sent to relevant clients to broadcast the result of an admin command.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface AdminCommandResultJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    type: "AdminCommandResult";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.BouncePacket.html b/docs/v2.0.0-rc6/interfaces/index.API.BouncePacket.html new file mode 100644 index 0000000..79bfffc --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.BouncePacket.html @@ -0,0 +1,16 @@ +BouncePacket | archipelago.js - v2.0.0-rc6

Sent by the client to be broadcast from the server to all connected clients that match any one of the filter +arguments.

+

Useful for commonly implemented features such as DeathLink.

+
interface BouncePacket {
    cmd: "Bounce";
    data: JSONRecord;
    games?: string[];
    slots?: number[];
    tags?: string[];
}

Properties

Properties

cmd

Any data you want to send.

+
games?: string[]

Optional. Games that should receive this message.

+
slots?: number[]

Optional. Player ids that should receive this message.

+
tags?: string[]

Optional. Client tags that should receive this message.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.BouncedPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.BouncedPacket.html new file mode 100644 index 0000000..cffe32b --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.BouncedPacket.html @@ -0,0 +1,14 @@ +BouncedPacket | archipelago.js - v2.0.0-rc6

Sent to clients after a client requested this message be sent to them, more info in the BouncePacket.

+
interface BouncedPacket {
    cmd: "Bounced";
    data: JSONRecord;
    games?: string[];
    slots?: number[];
    tags?: string[];
}

Properties

Properties

cmd

A verbatim copy of the data in the BouncePacket package.

+
games?: string[]

Optional. Game names this message is targeting.

+
slots?: number[]

Optional. Player slot IDs that this message is targeting.

+
tags?: string[]

Optional. Client tags this message is targeting.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ChatJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ChatJSONPacket.html new file mode 100644 index 0000000..9165b68 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ChatJSONPacket.html @@ -0,0 +1,17 @@ +ChatJSONPacket | archipelago.js - v2.0.0-rc6

Interface ChatJSONPacket

Sent to clients to broadcast a normal chat message.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface ChatJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    message: string;
    slot: number;
    team: number;
    type: "Chat";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
message: string

Original chat message without sender prefix.

+
slot: number

Slot of the triggering player.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.CollectJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.CollectJSONPacket.html new file mode 100644 index 0000000..5819ee4 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.CollectJSONPacket.html @@ -0,0 +1,15 @@ +CollectJSONPacket | archipelago.js - v2.0.0-rc6

Interface CollectJSONPacket

Sent to clients to broadcast a player has collected all their remaining items from the multi-world.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface CollectJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    slot: number;
    team: number;
    type: "Collect";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
slot: number

Slot of the triggering player.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.CommandResultJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.CommandResultJSONPacket.html new file mode 100644 index 0000000..9bf262a --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.CommandResultJSONPacket.html @@ -0,0 +1,11 @@ +CommandResultJSONPacket | archipelago.js - v2.0.0-rc6

Interface CommandResultJSONPacket

Sent to relevant clients to broadcast the result of a chat command.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface CommandResultJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    type: "CommandResult";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ConnectPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ConnectPacket.html new file mode 100644 index 0000000..0078dd1 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ConnectPacket.html @@ -0,0 +1,23 @@ +ConnectPacket | archipelago.js - v2.0.0-rc6

Sent by the client to authenticate a connection to an Archipelago session.

+
interface ConnectPacket {
    cmd: "Connect";
    game: string;
    items_handling: number;
    name: string;
    password: string;
    slot_data: boolean;
    tags: string[];
    uuid: string;
    version: NetworkVersion;
}

Properties

cmd
game: string

The name of the game the client is playing.

+
items_handling: number

Bit flags configuring which items should be sent by the server. See itemsHandlingFlags for information +on individual flags.

+
name: string

The slot name for this client.

+
password: string

If the game session requires a password, it should be passed here.

+
slot_data: boolean

If true, the ConnectedPacket will contain slot data.

+
tags: string[]

Denotes special features or capabilities that the sender is currently capable of.

+
uuid: string

Unique identifier for player client.

+

An object representing the minimum Archipelago server version this client supports.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ConnectUpdatePacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ConnectUpdatePacket.html new file mode 100644 index 0000000..f414c98 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ConnectUpdatePacket.html @@ -0,0 +1,11 @@ +ConnectUpdatePacket | archipelago.js - v2.0.0-rc6

Interface ConnectUpdatePacket

Update arguments from the Connect packet, currently only updating tags and items_handling is supported.

+
interface ConnectUpdatePacket {
    cmd: "ConnectUpdate";
    items_handling: number;
    tags: string[];
}

Properties

Properties

cmd
items_handling: number

Bit flags configuring which items should be sent by the server. See itemsHandlingFlags for additional +information.

+
tags: string[]

Denotes special features or capabilities that the sender is currently capable of.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ConnectedPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ConnectedPacket.html new file mode 100644 index 0000000..e4b5131 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ConnectedPacket.html @@ -0,0 +1,25 @@ +ConnectedPacket | archipelago.js - v2.0.0-rc6

Interface ConnectedPacket

Sent to clients when the connection handshake is successfully completed.

+
interface ConnectedPacket {
    checked_locations: number[];
    cmd: "Connected";
    hint_points: number;
    missing_locations: number[];
    players: NetworkPlayer[];
    slot: number;
    slot_data: JSONSerializable;
    slot_info: Record<string, NetworkSlot>;
    team: number;
}

Properties

checked_locations: number[]

Contains integer ids of all locations that have been checked. Useful for trackers, among other things. Location +ids are valid in the range of -2^53^ to +(2^53)-1 (inclusive), with negative values and zero reserved for +Archipelago.

+
cmd
hint_points: number

Number of hint points that the current player has.

+
missing_locations: number[]

Contains integer ids of remaining locations that need to be checked. Useful for trackers, among other things.

+
players: NetworkPlayer[]

List denoting other players in the multi-world, whether connected or not.

+
slot: number

Your slot number on your team. See NetworkPlayer for more info on the slot number.

+
slot_data: JSONSerializable

Contains an object of slot related data, which differs per slot. If slot data was not requested in the +ConnectPacket, this value be an empty object.

+
slot_info: Record<string, NetworkSlot>

Object of each slot with their NetworkSlot information.

+
team: number

Your team number. See NetworkPlayer for more info on team number.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ConnectionRefusedPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ConnectionRefusedPacket.html new file mode 100644 index 0000000..31b9d8a --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ConnectionRefusedPacket.html @@ -0,0 +1,9 @@ +ConnectionRefusedPacket | archipelago.js - v2.0.0-rc6

Interface ConnectionRefusedPacket

Sent to clients when the server refuses connection. This is sent during the initial connection handshake.

+
interface ConnectionRefusedPacket {
    cmd: "ConnectionRefused";
    errors?: ConnectionError[];
}

Properties

Properties

cmd
errors?: ConnectionError[]

Optional. When provided, should contain one or more ConnectionError values. See ConnectionError +for additional information on what each error means.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.CountdownJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.CountdownJSONPacket.html new file mode 100644 index 0000000..65b42ee --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.CountdownJSONPacket.html @@ -0,0 +1,13 @@ +CountdownJSONPacket | archipelago.js - v2.0.0-rc6

Interface CountdownJSONPacket

Sent to clients to broadcast a countdown message, usually for counting down the start of a game.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface CountdownJSONPacket {
    cmd: "PrintJSON";
    countdown: number;
    data: JSONMessagePart[];
    type: "Countdown";
}

Properties

Properties

cmd
countdown: number

Amount of seconds remaining on the countdown.

+

All the textual metadata for this packet.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.DataPackagePacket.html b/docs/v2.0.0-rc6/interfaces/index.API.DataPackagePacket.html new file mode 100644 index 0000000..56beb50 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.DataPackagePacket.html @@ -0,0 +1,10 @@ +DataPackagePacket | archipelago.js - v2.0.0-rc6

Interface DataPackagePacket

Sent to clients to provide what is known as a 'data package' which contains information to enable a client to most +easily communicate with the Archipelago server. Contents include things like location id to name mappings, among +others; see DataPackage for more info.

+
interface DataPackagePacket {
    cmd: "DataPackage";
    data: DataPackage;
}

Properties

Properties

cmd

The data package as an object of DataPackage.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.GetDataPackagePacket.html b/docs/v2.0.0-rc6/interfaces/index.API.GetDataPackagePacket.html new file mode 100644 index 0000000..59844af --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.GetDataPackagePacket.html @@ -0,0 +1,9 @@ +GetDataPackagePacket | archipelago.js - v2.0.0-rc6

Interface GetDataPackagePacket

Sent by the client to request the data package from the server. Does not require client authentication.

+
interface GetDataPackagePacket {
    cmd: "GetDataPackage";
    games?: string[];
}

Properties

Properties

cmd
games?: string[]

Optional. If specified, will only send back the specified data.

+

It is recommended to only request required data to reduce network bandwidth costs.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.GetPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.GetPacket.html new file mode 100644 index 0000000..f3b4c62 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.GetPacket.html @@ -0,0 +1,23 @@ +GetPacket | archipelago.js - v2.0.0-rc6

Sent by the client to request a single or multiple values from the server's data storage, see the SetPacket +for how to write values to the data storage. A GetPacket will be answered with a RetrievedPacket.

+

Additional properties sent in this package will also be added to the RetrievedPacket it triggers.

+

Some special read-only keys exist with specific return data:

+
    +
  • _read_hints_{team}_{slot}: NetworkHint[] - All hinted NetworkHint items relevant to the requested +player.
  • +
  • _read_slot_data_{slot}: JSONSerializable - slot_data belonging to the requested slot.
  • +
  • _read_item_name_groups_{game}: Record<string, string[]> - An object of item groups and their members.
  • +
  • _read_location_name_groups_{game}: Record<string, string[]> - An object of location groups and their +members.
  • +
  • _read_client_status_{team}_{slot}: number - The current status for the requested player. See +clientStatuses for all known client statues.
  • +
  • _read_race_mode: number - Returns 0 if race mode is disabled, 1 if it's enabled.
  • +
+
interface GetPacket {
    cmd: "Get";
    keys: string[];
    [p: string]: JSONSerializable;
}

Indexable

Properties

Properties

cmd
keys: string[]

Keys to retrieve the values for.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.GoalJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.GoalJSONPacket.html new file mode 100644 index 0000000..ffb6a52 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.GoalJSONPacket.html @@ -0,0 +1,15 @@ +GoalJSONPacket | archipelago.js - v2.0.0-rc6

Interface GoalJSONPacket

Sent to clients to broadcast a player has met their goal condition.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface GoalJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    slot: number;
    team: number;
    type: "Goal";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
slot: number

Slot of the triggering player.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.HintJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.HintJSONPacket.html new file mode 100644 index 0000000..e052c28 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.HintJSONPacket.html @@ -0,0 +1,17 @@ +HintJSONPacket | archipelago.js - v2.0.0-rc6

Interface HintJSONPacket

Sent to relevant clients to broadcast item hint information.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface HintJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    found: boolean;
    item: NetworkItem;
    receiving: number;
    type: "Hint";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
found: boolean

Whether the location hinted for was checked.

+

Source player's identifier, location identifier, item identifier and item flags.

+
receiving: number

Destination player's identifier.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.InvalidArgumentsPacketPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.InvalidArgumentsPacketPacket.html new file mode 100644 index 0000000..8078f07 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.InvalidArgumentsPacketPacket.html @@ -0,0 +1,11 @@ +InvalidArgumentsPacketPacket | archipelago.js - v2.0.0-rc6

Interface InvalidArgumentsPacketPacket

Sent to clients if the server caught a problem with a given packet's arguments.

+

InvalidPacketPacket for all possible InvalidPacket packet subtypes.

+
interface InvalidArgumentsPacketPacket {
    cmd: "InvalidPacket";
    text: string;
    type: "arguments";
}

Properties

Properties

cmd
text: string

A descriptive message of the problem at hand.

+
type

The type of problem that was detected in the packet.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.InvalidCommandPacketPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.InvalidCommandPacketPacket.html new file mode 100644 index 0000000..930f9b7 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.InvalidCommandPacketPacket.html @@ -0,0 +1,13 @@ +InvalidCommandPacketPacket | archipelago.js - v2.0.0-rc6

Interface InvalidCommandPacketPacket

Sent to clients if the server caught a problem with a given packet's cmd property.

+

InvalidPacketPacket for all possible InvalidPacket packet subtypes.

+
interface InvalidCommandPacketPacket {
    cmd: "InvalidPacket";
    original_cmd: string;
    text: string;
    type: "cmd";
}

Properties

Properties

cmd
original_cmd: string

The cmd argument of the faulty packet.

+
text: string

A descriptive message of the problem at hand.

+
type

The type of problem that was detected in the packet.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ItemCheatJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ItemCheatJSONPacket.html new file mode 100644 index 0000000..3404f09 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ItemCheatJSONPacket.html @@ -0,0 +1,17 @@ +ItemCheatJSONPacket | archipelago.js - v2.0.0-rc6

Interface ItemCheatJSONPacket

Sent to clients to broadcast a player has received a cheated item (via !getitem).

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface ItemCheatJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    item: NetworkItem;
    receiving: number;
    team: number;
    type: "ItemCheat";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+

Source player's identifier, location identifier, item identifier and item flags.

+
receiving: number

Destination player's identifier.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ItemSendJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ItemSendJSONPacket.html new file mode 100644 index 0000000..6fe221f --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ItemSendJSONPacket.html @@ -0,0 +1,15 @@ +ItemSendJSONPacket | archipelago.js - v2.0.0-rc6

Interface ItemSendJSONPacket

Sent to clients to broadcast a player has received an item.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface ItemSendJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    item: NetworkItem;
    receiving: number;
    type: "ItemSend";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+

Source player's identifier, location identifier, item identifier and item flags.

+
receiving: number

Destination player's identifier.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.JoinJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.JoinJSONPacket.html new file mode 100644 index 0000000..4db1af7 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.JoinJSONPacket.html @@ -0,0 +1,17 @@ +JoinJSONPacket | archipelago.js - v2.0.0-rc6

Interface JoinJSONPacket

Sent to clients to broadcast a client has connected.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface JoinJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    slot: number;
    tags: string[];
    team: number;
    type: "Join";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
slot: number

Slot of the triggering player.

+
tags: string[]

Tags of the triggering player.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.LocationChecksPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.LocationChecksPacket.html new file mode 100644 index 0000000..9a6db21 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.LocationChecksPacket.html @@ -0,0 +1,10 @@ +LocationChecksPacket | archipelago.js - v2.0.0-rc6

Interface LocationChecksPacket

Sent by the client to inform the server of locations that the client has checked. Used to inform the server of new +checks that are made, as well as to sync state.

+
interface LocationChecksPacket {
    cmd: "LocationChecks";
    locations: number[];
}

Properties

Properties

cmd
locations: number[]

The ids of the locations checked by the client. May contain any number of checks, even ones sent before; +duplicates do not cause issues with the Archipelago server.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.LocationInfoPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.LocationInfoPacket.html new file mode 100644 index 0000000..11eef86 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.LocationInfoPacket.html @@ -0,0 +1,9 @@ +LocationInfoPacket | archipelago.js - v2.0.0-rc6

Interface LocationInfoPacket

Sent to clients to acknowledge a received LocationScoutsPacket and responds with the item in each location +being scouted.

+
interface LocationInfoPacket {
    cmd: "LocationInfo";
    locations: NetworkItem[];
}

Properties

Properties

cmd
locations: NetworkItem[]

Contains the list of item(s) in the location(s) scouted.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.LocationScoutsPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.LocationScoutsPacket.html new file mode 100644 index 0000000..82d3ff4 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.LocationScoutsPacket.html @@ -0,0 +1,19 @@ +LocationScoutsPacket | archipelago.js - v2.0.0-rc6

Interface LocationScoutsPacket

Sent by the client to inform the server of locations the client has seen, but not checked. Useful in cases in which +the item may appear in the game world, but may not be immediately gettable. The server will always respond with a +LocationInfoPacket with the items located in the scouted location.

+
interface LocationScoutsPacket {
    cmd: "LocationScouts";
    create_as_hint: 0 | 1 | 2;
    locations: number[];
}

Properties

cmd
create_as_hint: 0 | 1 | 2
    +
  • If set to 0, this packet will not create hints for any locations in this packet.
  • +
  • If set to 1, this packet will create hints for all locations in this packet and broadcast them to all +relevant clients.
  • +
  • If set to 2, this packet will create hints for all locations in this packet and broadcast only new hints to +all relevant clients.
  • +
+
locations: number[]

The ids of the locations seen by the client. May contain any number of locations, even ones sent before; +duplicates do not cause issues with the Archipelago server.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.PartJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.PartJSONPacket.html new file mode 100644 index 0000000..d78ab7a --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.PartJSONPacket.html @@ -0,0 +1,15 @@ +PartJSONPacket | archipelago.js - v2.0.0-rc6

Interface PartJSONPacket

Sent to clients to broadcast a client has disconnected.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface PartJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    slot: number;
    team: number;
    type: "Part";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
slot: number

Slot of the triggering player.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ReceivedItemsPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ReceivedItemsPacket.html new file mode 100644 index 0000000..f69bd7c --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ReceivedItemsPacket.html @@ -0,0 +1,10 @@ +ReceivedItemsPacket | archipelago.js - v2.0.0-rc6

Interface ReceivedItemsPacket

Sent to clients when they receive an item.

+
interface ReceivedItemsPacket {
    cmd: "ReceivedItems";
    index: number;
    items: NetworkItem[];
}

Properties

Properties

cmd
index: number

The next empty slot in the list of items for the receiving client. Useful for tracking items.

+
items: NetworkItem[]

The items which the client is receiving.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ReleaseJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ReleaseJSONPacket.html new file mode 100644 index 0000000..0108126 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ReleaseJSONPacket.html @@ -0,0 +1,15 @@ +ReleaseJSONPacket | archipelago.js - v2.0.0-rc6

Interface ReleaseJSONPacket

Sent to clients to broadcast a player has released all remaining items in their world.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface ReleaseJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    slot: number;
    team: number;
    type: "Release";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
slot: number

Slot of the triggering player.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.RetrievedPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.RetrievedPacket.html new file mode 100644 index 0000000..446c118 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.RetrievedPacket.html @@ -0,0 +1,11 @@ +RetrievedPacket | archipelago.js - v2.0.0-rc6

Interface RetrievedPacket

Sent to clients as a response to a GetPacket.

+

Additional arguments added to the GetPacket that triggered this RetrievedPacket will also be passed +along.

+
interface RetrievedPacket {
    cmd: "Retrieved";
    keys: {
        [key: string]: JSONSerializable;
    };
    [p: string]: JSONSerializable;
}

Indexable

Properties

Properties

cmd
keys: {
    [key: string]: JSONSerializable;
}

A key-value collection containing all the values for the keys requested in the GetPacket.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.RoomInfoPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.RoomInfoPacket.html new file mode 100644 index 0000000..0463f31 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.RoomInfoPacket.html @@ -0,0 +1,30 @@ +RoomInfoPacket | archipelago.js - v2.0.0-rc6

Interface RoomInfoPacket

Sent to clients when they connect to an Archipelago server, but before they authenticate.

+
interface RoomInfoPacket {
    cmd: "RoomInfo";
    datapackage_checksums: Record<string, string>;
    games: string[];
    generator_version: NetworkVersion;
    hint_cost: number;
    location_check_points: number;
    password: boolean;
    permissions: PermissionTable;
    seed_name: string;
    tags: string[];
    time: number;
    version: NetworkVersion;
}

Properties

cmd
datapackage_checksums: Record<string, string>

Checksum hash of the individual games' data packages the server will send. Used by newer clients to decide which +games' caches are outdated. See DataPackage for more information on the data package.

+
games: string[]

List of games present in this multi-world.

+
generator_version: NetworkVersion

Object denoting the version of Archipelago which generated the multi-world.

+
hint_cost: number

The amount of points it costs to receive a hint from the server.

+
location_check_points: number

The amount of hint points you receive per item/location check completed.

+
password: boolean

Denoted whether a password is required to join this room.

+
permissions: PermissionTable

Mapping of restrict-able commands to their current PermissionValue level.

+
seed_name: string

Uniquely identifying name for this generation. Based on the seed, but not identical to prevent spoilers.

+
tags: string[]

Denotes special features or capabilities that the sender is capable of. Example: WebHost

+
time: number

Unix time stamp in seconds of "now". Sent for time synchronization if wanted for things like a DeathLink +BouncePacket.

+

Object denoting the version of Archipelago which the server is running.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.RoomUpdatePacket.html b/docs/v2.0.0-rc6/interfaces/index.API.RoomUpdatePacket.html new file mode 100644 index 0000000..e57a2fb --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.RoomUpdatePacket.html @@ -0,0 +1,28 @@ +RoomUpdatePacket | archipelago.js - v2.0.0-rc6

Interface RoomUpdatePacket

Sent when there is a need to update information about the present game session. Generally useful for async games. +Once authenticated, this may also contain data from ConnectedPacket.

+

All arguments for this packet are optional, only changes are sent.

+
interface RoomUpdatePacket {
    checked_locations?: number[];
    cmd: "RoomUpdate";
    hint_cost?: number;
    hint_points?: number;
    location_check_points?: number;
    password?: boolean;
    permissions: PermissionTable;
    players?: NetworkPlayer[];
    tags?: string[];
    time?: number;
}

Properties

checked_locations?: number[]

Might be a partial update, containing new locations that were checked, especially from a co-op partner in the +same slot.

+
cmd
hint_cost?: number

The amount of points it costs to receive a hint from the server.

+
hint_points?: number

Number of hint points that the current player has.

+
location_check_points?: number

The amount of hint points you receive per item/location check completed.

+
password?: boolean

Denoted whether a password is required to join this room.

+
permissions: PermissionTable

Mapping of restrict-able commands to their current PermissionValue level.

+
players?: NetworkPlayer[]

Information on the players, whether connected or not.

+
tags?: string[]

Denotes special features or capabilities that the sender is capable of. Example: WebHost

+
time?: number

Unix time stamp of "now". Send for time synchronization if wanted for things like a DeathLink +BouncePacket.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.SayPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.SayPacket.html new file mode 100644 index 0000000..b22f7b9 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.SayPacket.html @@ -0,0 +1,8 @@ +SayPacket | archipelago.js - v2.0.0-rc6

Basic chat-type packet which sends text to the server to be distributed to other clients.

+
interface SayPacket {
    cmd: "Say";
    text: string;
}

Properties

Properties

cmd
text: string

Text to send to others.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.ServerChatJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.ServerChatJSONPacket.html new file mode 100644 index 0000000..3e6540b --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.ServerChatJSONPacket.html @@ -0,0 +1,13 @@ +ServerChatJSONPacket | archipelago.js - v2.0.0-rc6

Interface ServerChatJSONPacket

Sent to clients to broadcast a server-side chat message.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface ServerChatJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    message: string;
    type: "ServerChat";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
message: string

Original chat message without sender prefix.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.SetNotifyPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.SetNotifyPacket.html new file mode 100644 index 0000000..0d2ac9c --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.SetNotifyPacket.html @@ -0,0 +1,9 @@ +SetNotifyPacket | archipelago.js - v2.0.0-rc6

Interface SetNotifyPacket

Used to register your current session for receiving all SetReplyPackets of certain keys to allow your client +to keep track of changes.

+
interface SetNotifyPacket {
    cmd: "SetNotify";
    keys: string[];
}

Properties

Properties

cmd
keys: string[]

Keys to receive all SetReplyPackets for.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.SetPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.SetPacket.html new file mode 100644 index 0000000..ee291bb --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.SetPacket.html @@ -0,0 +1,19 @@ +SetPacket | archipelago.js - v2.0.0-rc6

Sent by the client to write data to the server's data storage, that data can then be shared across worlds or just +saved for later. Values for keys in the data storage can be retrieved with a GetPacket, or monitored with a +SetNotifyPacket.

+

Additional arguments sent in this package will also be added to the SetReplyPacket it triggers.

+
interface SetPacket {
    cmd: "Set";
    default: JSONSerializable;
    key: string;
    operations: DataStorageOperation[];
    want_reply: boolean;
    [p: string]: JSONSerializable;
}

Indexable

Properties

cmd

The default value to use in case the key has no value on the server.

+
key: string

The key to manipulate.

+
operations: DataStorageOperation[]

Operations to apply to the value, multiple operations can be present, and they will be executed in order of +appearance. See DataStorageOperation for information on supported operations.

+
want_reply: boolean

If set, the server will send a SetReplyPacket back to the client.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.SetReplyPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.SetReplyPacket.html new file mode 100644 index 0000000..6775a59 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.SetReplyPacket.html @@ -0,0 +1,17 @@ +SetReplyPacket | archipelago.js - v2.0.0-rc6

Interface SetReplyPacket

Sent to clients in response to a SetPacket if want_reply was set to true, or if the client has registered +to receive updates for a certain key using the SetNotifyPacket. SetReplyPackets are sent even if a +SetPacket package did not alter the value for the key.

+

Additional arguments added to the SetPacket that triggered this SetReplyPacket will also be passed +along.

+
interface SetReplyPacket {
    cmd: "SetReply";
    key: string;
    original_value: JSONSerializable;
    value: JSONSerializable;
    [p: string]: JSONSerializable;
}

Indexable

Properties

Properties

cmd
key: string

The key that was updated.

+
original_value: JSONSerializable

The value the key had before it was updated.

+

The new value for the key.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.StatusUpdatePacket.html b/docs/v2.0.0-rc6/interfaces/index.API.StatusUpdatePacket.html new file mode 100644 index 0000000..aab406d --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.StatusUpdatePacket.html @@ -0,0 +1,9 @@ +StatusUpdatePacket | archipelago.js - v2.0.0-rc6

Interface StatusUpdatePacket

Sent to the server to update on the client's status. Examples include readiness or goal completion.

+
interface StatusUpdatePacket {
    cmd: "StatusUpdate";
    status:
        | 0
        | 5
        | 10
        | 20
        | 30;
}

Properties

Properties

cmd
status:
    | 0
    | 5
    | 10
    | 20
    | 30

The new client status value to set this slot to. See clientStatuses for all known values.

+

This packet is ignored if the client status was set to clientStatuses.goal.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.SyncPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.SyncPacket.html new file mode 100644 index 0000000..5533eba --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.SyncPacket.html @@ -0,0 +1,9 @@ +SyncPacket | archipelago.js - v2.0.0-rc6

Sent to server to request a ReceivedItemsPacket with all items ever received.

+

In principle, a network desync of items should never occur, as if connection is broken and then +re-established, the server will resend all items ever received on reconnection, so use of this packet should never be +needed.

+
interface SyncPacket {
    cmd: "Sync";
}

Properties

cmd +

Properties

cmd
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.TagsChangedJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.TagsChangedJSONPacket.html new file mode 100644 index 0000000..aa70b90 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.TagsChangedJSONPacket.html @@ -0,0 +1,17 @@ +TagsChangedJSONPacket | archipelago.js - v2.0.0-rc6

Interface TagsChangedJSONPacket

Sent to clients to broadcast a client has changed their tags.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface TagsChangedJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    slot: number;
    tags: string[];
    team: number;
    type: "TagsChanged";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
slot: number

Slot of the triggering player.

+
tags: string[]

Tags of the triggering player.

+
team: number

Team of the triggering player.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.API.TutorialJSONPacket.html b/docs/v2.0.0-rc6/interfaces/index.API.TutorialJSONPacket.html new file mode 100644 index 0000000..8161ca4 --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.API.TutorialJSONPacket.html @@ -0,0 +1,11 @@ +TutorialJSONPacket | archipelago.js - v2.0.0-rc6

Interface TutorialJSONPacket

Sent to relevant clients to broadcast tutorial information, usually on first connection.

+

PrintJSONPacket for all possible PrintJSON packet subtypes.

+
interface TutorialJSONPacket {
    cmd: "PrintJSON";
    data: JSONMessagePart[];
    type: "Tutorial";
}

Properties

Properties

cmd

All the textual metadata for this packet.

+
type

The PrintJSONPacket subtype.

+
diff --git a/docs/v2.0.0-rc6/interfaces/index.ClientOptions.html b/docs/v2.0.0-rc6/interfaces/index.ClientOptions.html new file mode 100644 index 0000000..2d5c5ed --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.ClientOptions.html @@ -0,0 +1,29 @@ +ClientOptions | archipelago.js - v2.0.0-rc6

Interface ClientOptions

An interface of client options that can be set on a Client object.

+
interface ClientOptions {
    autoFetchDataPackage?: boolean;
    debugLogVersions: boolean;
    maximumMessages?: number;
    timeout?: number;
}

Properties

autoFetchDataPackage?: boolean

Automatically requests the DataPackage from the server during Client.login, if the packages are missing +in the DataPackageManager.

+
true
+
+ +
debugLogVersions: boolean

If enabled, logs the game, library version, and user agent to data storage, which can be used for debugging +purposes.

+
true
+
+ +
maximumMessages?: number

Determines the maximum number of chat messages to log in MessageManager.

+
1000
+
+ +

If 0 or fewer, message logging will effectively be disabled.

+
timeout?: number

The maximum number of milliseconds to wait for a response from the server when awaiting a response to a client +packet.

+
10000
+
+ +
diff --git a/docs/v2.0.0-rc6/interfaces/index.ConnectionOptions.html b/docs/v2.0.0-rc6/interfaces/index.ConnectionOptions.html new file mode 100644 index 0000000..5336c8b --- /dev/null +++ b/docs/v2.0.0-rc6/interfaces/index.ConnectionOptions.html @@ -0,0 +1,39 @@ +ConnectionOptions | archipelago.js - v2.0.0-rc6

Interface ConnectionOptions

An interface of additional connection arguments when authenticating to an Archipelago server.

+
interface ConnectionOptions {
    items?: number;
    password?: string;
    slotData?: boolean;
    tags?: string[];
    uuid?: string;
    version?: {
        build: number;
        major: number;
        minor: number;
    };
}

Properties

items?: number

Determines the kinds of received item events the server will broadcast to this client when locations are checked.

+

Value is an integer bitflag combination of values that is documented in itemsHandlingFlags.

+

Defaults to request all received item events, so unless you need local-only functionality this property +can usually be omitted.

+
password?: string

The room password, if the server requires a password to join. Otherwise, optional.

+
""
+
+ +
slotData?: boolean

Request this slot's data during connection. If false, server will respond with an empty object ({}) instead.

+
true
+
+ +
tags?: string[]

A list of strings that denote special features or capabilities this sender is currently capable of. A list of +common tags is documented here:

+

https://github.com/ArchipelagoMW/Archipelago/blob/main/docs/network%20protocol.md#tags.

+
[]
+
+ +
uuid?: string

A unique identifier for this client.

+

Not currently used for anything server side, but may change or be deprecated in a future Archipelago update.

+

Defaults to a randomly generated v4 UUID.

+
version?: {
    build: number;
    major: number;
    minor: number;
}

The version of Archipelago this client was designed for. This can be enforced on the server side to force a user +to update their client, if a new version was released.

+

Type declaration

  • Readonlybuild: number

    The build version component.

    +
  • Readonlymajor: number

    The major version component.

    +
  • Readonlyminor: number

    The minor version component.

    +

targetVersion

+
diff --git a/docs/v2.0.0-rc6/modules.html b/docs/v2.0.0-rc6/modules.html new file mode 100644 index 0000000..f7a6127 --- /dev/null +++ b/docs/v2.0.0-rc6/modules.html @@ -0,0 +1,6 @@ +archipelago.js - v2.0.0-rc6

archipelago.js - v2.0.0-rc6

Index

Guides

Other

diff --git a/docs/v2.0.0-rc6/modules/index.API.html b/docs/v2.0.0-rc6/modules/index.API.html new file mode 100644 index 0000000..490707b --- /dev/null +++ b/docs/v2.0.0-rc6/modules/index.API.html @@ -0,0 +1,98 @@ +API | archipelago.js - v2.0.0-rc6

A collection of types, constants, and enumerations that get passed over the Archipelago network protocol.

+

You can read more information about the Network Protocol in the Archipelago +Network Protocol +documentation on their GitHub repository. +API

+

Users of this library should utilize built-in helper methods and objects, whenever available, but these +base types are still exposed, if needed.

+

Index

DataStorage

Network Packets

Other

diff --git a/docs/v2.0.0-rc6/modules/index.html b/docs/v2.0.0-rc6/modules/index.html new file mode 100644 index 0000000..960b683 --- /dev/null +++ b/docs/v2.0.0-rc6/modules/index.html @@ -0,0 +1,40 @@ +index | archipelago.js - v2.0.0-rc6
diff --git a/docs/v2.0.0-rc6/types/index.API.AddDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.AddDataStorageOperation.html new file mode 100644 index 0000000..d8665b3 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.AddDataStorageOperation.html @@ -0,0 +1,8 @@ +AddDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias AddDataStorageOperation

AddDataStorageOperation: {
    operation: "add";
    value: number | JSONSerializable[];
}

Adds value to the current value of the key, if both the current value and value are arrays then value will be +appended to the current value.

+

Type declaration

  • Readonlyoperation: "add"
  • Readonlyvalue: number | JSONSerializable[]

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.AndDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.AndDataStorageOperation.html new file mode 100644 index 0000000..dc0d498 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.AndDataStorageOperation.html @@ -0,0 +1,7 @@ +AndDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias AndDataStorageOperation

AndDataStorageOperation: {
    operation: "and";
    value: number;
}

Applies a bitwise AND to the current value of the key with value.

+

Type declaration

  • Readonlyoperation: "and"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.CeilingDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.CeilingDataStorageOperation.html new file mode 100644 index 0000000..fb31a08 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.CeilingDataStorageOperation.html @@ -0,0 +1,7 @@ +CeilingDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias CeilingDataStorageOperation

CeilingDataStorageOperation: {
    operation: "ceil";
    value: null;
}

Rounds up the current value to the nearest integer.

+

Type declaration

  • Readonlyoperation: "ceil"
  • Readonlyvalue: null

    Ignored for this operation.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ClientPacket.html b/docs/v2.0.0-rc6/types/index.API.ClientPacket.html new file mode 100644 index 0000000..c101922 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ClientPacket.html @@ -0,0 +1,4 @@ +ClientPacket | archipelago.js - v2.0.0-rc6

Type Alias ClientPacket

ClientPacket:
    | BouncePacket
    | ConnectPacket
    | ConnectUpdatePacket
    | GetPacket
    | GetDataPackagePacket
    | LocationChecksPacket
    | LocationScoutsPacket
    | SayPacket
    | SetPacket
    | SetNotifyPacket
    | StatusUpdatePacket
    | SyncPacket
diff --git a/docs/v2.0.0-rc6/types/index.API.ColorJSONMessagePart.html b/docs/v2.0.0-rc6/types/index.API.ColorJSONMessagePart.html new file mode 100644 index 0000000..5ca3d27 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ColorJSONMessagePart.html @@ -0,0 +1,9 @@ +ColorJSONMessagePart | archipelago.js - v2.0.0-rc6

Type Alias ColorJSONMessagePart

ColorJSONMessagePart: {
    color: ValidJSONColorType;
    text: string;
    type: "color";
}

A textual node containing color metadata.

+

Type declaration

  • Readonlycolor: ValidJSONColorType

    Includes the color to print this text with.

    +
  • Readonlytext: string

    Used to supply text data for this node.

    +
  • Readonlytype: "color"

    Used to denote the intent of the message part.

    +

JSONMessagePart for all possible message part node subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ConnectionError.html b/docs/v2.0.0-rc6/types/index.API.ConnectionError.html new file mode 100644 index 0000000..24d7933 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ConnectionError.html @@ -0,0 +1,6 @@ +ConnectionError | archipelago.js - v2.0.0-rc6

Type Alias ConnectionError

ConnectionError:
    | "InvalidSlot"
    | "InvalidGame"
    | "IncompatibleVersion"
    | "InvalidPassword"
    | "InvalidItemsHandling"

A union of known errors the Archipelago server can send back to the client when they receive a +ConnectionRefusedPacket.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.DataPackage.html b/docs/v2.0.0-rc6/types/index.API.DataPackage.html new file mode 100644 index 0000000..58eb1a9 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.DataPackage.html @@ -0,0 +1,13 @@ +DataPackage | archipelago.js - v2.0.0-rc6

Type Alias DataPackage

DataPackage: {
    games: Record<string, GamePackage>;
}

A DataPackage is an object which contains arbitrary metadata about each game to enable a client to interact +with the Archipelago server easily.

+

Note:

+
    +
  • Any name is unique to its type across its own Game only: Single Arrow can exist in two games.
  • +
  • The ids from the game Archipelago may be used in any other game. Especially Location ID -1: Cheat Console +and -2: Server (typically Remote Start Inventory).
  • +
+

Type declaration

  • Readonlygames: Record<string, GamePackage>

    Mapping of all Games and their respective data. See GamePackage for additional info.

    +
diff --git a/docs/v2.0.0-rc6/types/index.API.DataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.DataStorageOperation.html new file mode 100644 index 0000000..29a51d5 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.DataStorageOperation.html @@ -0,0 +1,14 @@ +DataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias DataStorageOperation

A union of all possible DataStorages. An operation manipulates or alters the value of a key in the data +storage. If the operation transforms the value from one state to another then the current value of the key is used +as the starting point otherwise the SetPacket's default is used if the key does not exist on the server +already.

+

Each operation object consists of an object containing both the operation to be applied, provided in the form of a +string, and the value to be used for that operation,

+

See each DataStorage subtype for more details.

+
{ "operation": "add", "value": 12 }
+
+ +
diff --git a/docs/v2.0.0-rc6/types/index.API.DefaultDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.DefaultDataStorageOperation.html new file mode 100644 index 0000000..f9cf137 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.DefaultDataStorageOperation.html @@ -0,0 +1,8 @@ +DefaultDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias DefaultDataStorageOperation

DefaultDataStorageOperation: {
    operation: "default";
    value: null;
}

If the key has no value yet, sets the current value of the key to default of the SetPacket's (value is +ignored).

+

Type declaration

  • Readonlyoperation: "default"
  • Readonlyvalue: null

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.FloorDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.FloorDataStorageOperation.html new file mode 100644 index 0000000..e4ebcdd --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.FloorDataStorageOperation.html @@ -0,0 +1,7 @@ +FloorDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias FloorDataStorageOperation

FloorDataStorageOperation: {
    operation: "floor";
    value: null;
}

Rounds down the current value to the nearest integer.

+

Type declaration

  • Readonlyoperation: "floor"
  • Readonlyvalue: null

    Ignored for this operation.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.GamePackage.html b/docs/v2.0.0-rc6/types/index.API.GamePackage.html new file mode 100644 index 0000000..ccf127f --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.GamePackage.html @@ -0,0 +1,8 @@ +GamePackage | archipelago.js - v2.0.0-rc6

Type Alias GamePackage

GamePackage: {
    checksum: string;
    item_name_to_id: Record<string, number>;
    location_name_to_id: Record<string, number>;
}

Collection of data that contains meta information for a particular game.

+

Type declaration

  • Readonlychecksum: string

    SHA1 checksum of this game's data.

    +
  • Readonlyitem_name_to_id: Record<string, number>

    Mapping of all item names to their respective id.

    +
  • Readonlylocation_name_to_id: Record<string, number>

    Mapping of all location names to their respective id.

    +
diff --git a/docs/v2.0.0-rc6/types/index.API.InvalidPacketPacket.html b/docs/v2.0.0-rc6/types/index.API.InvalidPacketPacket.html new file mode 100644 index 0000000..de98d31 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.InvalidPacketPacket.html @@ -0,0 +1,8 @@ +InvalidPacketPacket | archipelago.js - v2.0.0-rc6

Type Alias InvalidPacketPacket

A union of possible InvalidPacket packets. Sent to clients if the server caught a problem with a packet. See each +packet subtype for more details.

+

This only occurs for errors that are explicitly checked for. All other errors will cause the server to drop +the connection instead.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ItemJSONMessagePart.html b/docs/v2.0.0-rc6/types/index.API.ItemJSONMessagePart.html new file mode 100644 index 0000000..77c247f --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ItemJSONMessagePart.html @@ -0,0 +1,10 @@ +ItemJSONMessagePart | archipelago.js - v2.0.0-rc6

Type Alias ItemJSONMessagePart

ItemJSONMessagePart: {
    flags: number;
    player: number;
    text: string;
    type: "item_id" | "item_name";
}

A textual node containing item metadata.

+

Type declaration

  • Readonlyflags: number

    Bit flags that determine if an item is progression, "nice to have", filler, or a trap.

    +
  • Readonlyplayer: number

    The id of the player who owns this item.

    +
  • Readonlytext: string

    Used to supply text data for this node.

    +
  • Readonlytype: "item_id" | "item_name"

    Used to denote the intent of the message part.

    +

JSONMessagePart for all possible message part node subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.JSONMessagePart.html b/docs/v2.0.0-rc6/types/index.API.JSONMessagePart.html new file mode 100644 index 0000000..74a32e0 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.JSONMessagePart.html @@ -0,0 +1,7 @@ +JSONMessagePart | archipelago.js - v2.0.0-rc6

Type Alias JSONMessagePart

JSONMessagePart:
    | ItemJSONMessagePart
    | LocationJSONMessagePart
    | ColorJSONMessagePart
    | TextJSONMessagePart

A union of all message node subtypes sent along with PrintJSONPacket, which can be reconstructed into a +legible message. Each node is intended to be read in the order provided in the packet.

+

See each subtype for more specific information.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.JSONRecord.html b/docs/v2.0.0-rc6/types/index.API.JSONRecord.html new file mode 100644 index 0000000..e5ab7ee --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.JSONRecord.html @@ -0,0 +1,5 @@ +JSONRecord | archipelago.js - v2.0.0-rc6
JSONRecord: {
    [p: string]: JSONSerializable;
}

A record of JSON-serializable data.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.JSONSerializable.html b/docs/v2.0.0-rc6/types/index.API.JSONSerializable.html new file mode 100644 index 0000000..aac8e0b --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.JSONSerializable.html @@ -0,0 +1,5 @@ +JSONSerializable | archipelago.js - v2.0.0-rc6

Type Alias JSONSerializable

JSONSerializable:
    | string
    | number
    | boolean
    | null
    | JSONRecord
    | JSONSerializable[]

A type union of all basic JSON-compatible types.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.LeftShiftDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.LeftShiftDataStorageOperation.html new file mode 100644 index 0000000..7ed4fee --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.LeftShiftDataStorageOperation.html @@ -0,0 +1,7 @@ +LeftShiftDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias LeftShiftDataStorageOperation

LeftShiftDataStorageOperation: {
    operation: "left_shift";
    value: number;
}

Applies a bitwise left-shift to the current value of the key by value.

+

Type declaration

  • Readonlyoperation: "left_shift"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.LocationJSONMessagePart.html b/docs/v2.0.0-rc6/types/index.API.LocationJSONMessagePart.html new file mode 100644 index 0000000..82ca981 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.LocationJSONMessagePart.html @@ -0,0 +1,9 @@ +LocationJSONMessagePart | archipelago.js - v2.0.0-rc6

Type Alias LocationJSONMessagePart

LocationJSONMessagePart: {
    player: number;
    text: string;
    type: "location_id" | "location_name";
}

A textual node containing location metadata.

+

Type declaration

  • Readonlyplayer: number

    The id of the player who has this location.

    +
  • Readonlytext: string

    Used to supply text data for this node.

    +
  • Readonlytype: "location_id" | "location_name"

    Used to denote the intent of the message part.

    +

JSONMessagePart for all possible message part node subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.MaxDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.MaxDataStorageOperation.html new file mode 100644 index 0000000..fb2063b --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.MaxDataStorageOperation.html @@ -0,0 +1,7 @@ +MaxDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias MaxDataStorageOperation

MaxDataStorageOperation: {
    operation: "max";
    value: number;
}

Sets the current value of the key to value if value is bigger.

+

Type declaration

  • Readonlyoperation: "max"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.MinDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.MinDataStorageOperation.html new file mode 100644 index 0000000..c9f0b24 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.MinDataStorageOperation.html @@ -0,0 +1,7 @@ +MinDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias MinDataStorageOperation

MinDataStorageOperation: {
    operation: "min";
    value: number;
}

Sets the current value of the key to value if value is lower.

+

Type declaration

  • Readonlyoperation: "min"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ModuloDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.ModuloDataStorageOperation.html new file mode 100644 index 0000000..4af9b4d --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ModuloDataStorageOperation.html @@ -0,0 +1,7 @@ +ModuloDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias ModuloDataStorageOperation

ModuloDataStorageOperation: {
    operation: "mod";
    value: number;
}

Sets the current value of the key to the remainder after division by value.

+

Type declaration

  • Readonlyoperation: "mod"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.MultiplyDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.MultiplyDataStorageOperation.html new file mode 100644 index 0000000..b286546 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.MultiplyDataStorageOperation.html @@ -0,0 +1,7 @@ +MultiplyDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias MultiplyDataStorageOperation

MultiplyDataStorageOperation: {
    operation: "mul";
    value: number;
}

Multiplies the current value of the key by value.

+

Type declaration

  • Readonlyoperation: "mul"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.NetworkHint.html b/docs/v2.0.0-rc6/types/index.API.NetworkHint.html new file mode 100644 index 0000000..32c0971 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.NetworkHint.html @@ -0,0 +1,12 @@ +NetworkHint | archipelago.js - v2.0.0-rc6

Type Alias NetworkHint

NetworkHint: {
    entrance: string;
    finding_player: number;
    found: boolean;
    item: number;
    item_flags: number;
    location: number;
    receiving_player: number;
}

An object representing a hint information for a particular item and location that contains it.

+

Type declaration

  • Readonlyentrance: string

    The name of the entrance to the location where this item is located.

    +
  • Readonlyfinding_player: number

    The id of the player who has this item in their world.

    +
  • Readonlyfound: boolean

    Whether this item has already been found.

    +
  • Readonlyitem: number

    The id of this item.

    +
  • Readonlyitem_flags: number

    The classification bit flags for this item. See itemsHandlingFlags for known flags.

    +
  • Readonlylocation: number

    The id of the location for this item.

    +
  • Readonlyreceiving_player: number

    The id of the player who owns this item.

    +
diff --git a/docs/v2.0.0-rc6/types/index.API.NetworkItem.html b/docs/v2.0.0-rc6/types/index.API.NetworkItem.html new file mode 100644 index 0000000..a4f4db6 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.NetworkItem.html @@ -0,0 +1,10 @@ +NetworkItem | archipelago.js - v2.0.0-rc6

Type Alias NetworkItem

NetworkItem: {
    flags: number;
    item: number;
    location: number;
    player: number;
}

Items that are sent over the network.

+

Type declaration

  • Readonlyflags: number

    The classification bit flags for this item. See itemsHandlingFlags for known flags.

    +
  • Readonlyitem: number

    The item id of the item. Item ids are in the range of -2^53 to +2^53-1.

    +
  • Readonlylocation: number

    The location id of the location inside the world. Location ids are in the range of -2^53 to +2^53 - 1.

    +
  • Readonlyplayer: number

    The slot id for the player whose world the item was located in, except when inside a LocationInfoPacket, +then it will be the slot id of the player the item belongs to.

    +
diff --git a/docs/v2.0.0-rc6/types/index.API.NetworkPlayer.html b/docs/v2.0.0-rc6/types/index.API.NetworkPlayer.html new file mode 100644 index 0000000..148c2c4 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.NetworkPlayer.html @@ -0,0 +1,11 @@ +NetworkPlayer | archipelago.js - v2.0.0-rc6

Type Alias NetworkPlayer

NetworkPlayer: {
    alias: string;
    name: string;
    slot: number;
    team: number;
}

An object that contains metadata about an individual player on the network.

+

Type declaration

  • Readonlyalias: string

    Represents the player's name in current time. Can be changed during a game with the !alias <name> command by +the player.

    +
  • Readonlyname: string

    The original slot name as defined by the player's configuration file. Individual names are unique among players.

    +
  • Readonlyslot: number

    Determines the slot id for this player. Slot numbers are unique per team and start at 1. Slot number 0 refers +to the Archipelago server; this may appear in instances where the server grants the player an item.

    +
  • Readonlyteam: number

    Determines the team the player is on. Useful for competitive seeds. Team numbers start at 0.

    +
diff --git a/docs/v2.0.0-rc6/types/index.API.NetworkSlot.html b/docs/v2.0.0-rc6/types/index.API.NetworkSlot.html new file mode 100644 index 0000000..c200dc8 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.NetworkSlot.html @@ -0,0 +1,9 @@ +NetworkSlot | archipelago.js - v2.0.0-rc6

Type Alias NetworkSlot

NetworkSlot: {
    game: string;
    group_members: number[];
    name: string;
    type: typeof slotTypes[keyof typeof slotTypes];
}

An object representing metadata about a given slot on each team.

+

Type declaration

  • Readonlygame: string

    The game this slot is playing.

    +
  • Readonlygroup_members: number[]

    Contains a list of player ids, if the type is slotTypes.group. Used for item links, otherwise empty.

    +
  • Readonlyname: string

    The original slot name as defined by the player's configuration file. Individual names are unique among players.

    +
  • Readonlytype: typeof slotTypes[keyof typeof slotTypes]

    The type of slot this is. See slotTypes for known slot types.

    +
diff --git a/docs/v2.0.0-rc6/types/index.API.NetworkVersion.html b/docs/v2.0.0-rc6/types/index.API.NetworkVersion.html new file mode 100644 index 0000000..6ff3450 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.NetworkVersion.html @@ -0,0 +1,11 @@ +NetworkVersion | archipelago.js - v2.0.0-rc6

Type Alias NetworkVersion

NetworkVersion: {
    build: number;
    class: "Version";
    major: number;
    minor: number;
}

An object representing software versioning. Used in the ConnectPacket to allow the client to inform the +server the minimum Archipelago version it supports.

+

Type declaration

  • Readonlybuild: number

    The build/patch component of the version number. (e.g., 0.0.X)

    +
  • Readonlyclass: "Version"

    Apparently required to be present to ensure the Archipelago server parses this object correctly.

    +
  • Readonlymajor: number

    The major component of the version number. (e.g., X.0.0)

    +
  • Readonlyminor: number

    The minor component of the version number. (e.g., 0.X.0)

    +

Archipelago does not follow a semver versioning standard.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.OrDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.OrDataStorageOperation.html new file mode 100644 index 0000000..598758c --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.OrDataStorageOperation.html @@ -0,0 +1,7 @@ +OrDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias OrDataStorageOperation

OrDataStorageOperation: {
    operation: "or";
    value: number;
}

Applies a bitwise OR to the current value of the key with value.

+

Type declaration

  • Readonlyoperation: "or"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.PermissionTable.html b/docs/v2.0.0-rc6/types/index.API.PermissionTable.html new file mode 100644 index 0000000..04114af --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.PermissionTable.html @@ -0,0 +1,34 @@ +PermissionTable | archipelago.js - v2.0.0-rc6

Type Alias PermissionTable

PermissionTable: {
    collect: PermissionValue;
    release: PermissionValue;
    remaining: Omit<PermissionValue, typeof auto | typeof autoEnabled>;
}

Mapping of restrict-able commands to their current permissions level.

+

Type declaration

  • Readonlycollect: PermissionValue

    Dictates what is allowed when it comes to a player collecting their run. A collect is an action which sends +the rest of the items in a player's run.

    + +
  • Readonlyrelease: PermissionValue

    Dictates what is allowed when it comes to a player releasing their run. A release is an action which +distributes the rest of the items in a player's run to those other players awaiting them.

    + +
  • Readonlyremaining: Omit<PermissionValue, typeof auto | typeof autoEnabled>

    Dictates what is allowed when it comes to a player querying the items remaining in their run.

    +
      +
    • permissions.goal: Allows a player to query for items remaining in their run but only after they +completed their own goal.
    • +
    • permissions.enabled: Denotes that players may query for any items remaining in their run (even +those belonging to other players).
    • +
    • permissions.disabled: All remaining item query modes disabled.
    • +
    +

    This command cannot have the permissions.auto or permissions.autoEnabled permission.

    +
diff --git a/docs/v2.0.0-rc6/types/index.API.PermissionValue.html b/docs/v2.0.0-rc6/types/index.API.PermissionValue.html new file mode 100644 index 0000000..830ac0e --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.PermissionValue.html @@ -0,0 +1,5 @@ +PermissionValue | archipelago.js - v2.0.0-rc6

Type Alias PermissionValue

PermissionValue: typeof permissions[keyof typeof permissions]

The type for a given permission value.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.PopDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.PopDataStorageOperation.html new file mode 100644 index 0000000..13310da --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.PopDataStorageOperation.html @@ -0,0 +1,8 @@ +PopDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias PopDataStorageOperation

PopDataStorageOperation: {
    operation: "pop";
    value: JSONSerializable;
}

List or Dict only: for lists it will remove the index of the value given. For dicts it removes the element with +the specified key of value.

+

Type declaration

  • Readonlyoperation: "pop"
  • Readonlyvalue: JSONSerializable

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.PowerDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.PowerDataStorageOperation.html new file mode 100644 index 0000000..fa742e7 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.PowerDataStorageOperation.html @@ -0,0 +1,7 @@ +PowerDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias PowerDataStorageOperation

PowerDataStorageOperation: {
    operation: "pow";
    value: number;
}

Multiplies the current value of the key to the power of value.

+

Type declaration

  • Readonlyoperation: "pow"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.PrintJSONPacket.html b/docs/v2.0.0-rc6/types/index.API.PrintJSONPacket.html new file mode 100644 index 0000000..5f2c0b9 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.PrintJSONPacket.html @@ -0,0 +1,8 @@ +PrintJSONPacket | archipelago.js - v2.0.0-rc6

Type Alias PrintJSONPacket

A union of possible PrintJSON packets. Sent to clients purely to display a message to the player. While various +message types provide additional arguments, clients only need to evaluate the data argument to construct the +human-readable message text. All other arguments may be ignored safely.

+

Only some of these attributes are present on each subtype, see each subtype for more information.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.PrintJSONType.html b/docs/v2.0.0-rc6/types/index.API.PrintJSONType.html new file mode 100644 index 0000000..f2d9584 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.PrintJSONType.html @@ -0,0 +1,5 @@ +PrintJSONType | archipelago.js - v2.0.0-rc6

Type Alias PrintJSONType

PrintJSONType:
    | "ItemSend"
    | "ItemCheat"
    | "Hint"
    | "Join"
    | "Part"
    | "Chat"
    | "ServerChat"
    | "Tutorial"
    | "TagsChanged"
    | "CommandResult"
    | "AdminCommandResult"
    | "Goal"
    | "Release"
    | "Collect"
    | "Countdown"

A union of all known PrintJSONPacket types.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.RemoveDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.RemoveDataStorageOperation.html new file mode 100644 index 0000000..0f6cfea --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.RemoveDataStorageOperation.html @@ -0,0 +1,7 @@ +RemoveDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias RemoveDataStorageOperation

RemoveDataStorageOperation: {
    operation: "remove";
    value: JSONSerializable;
}

List only: removes the first instance of value found in the list.

+

Type declaration

  • Readonlyoperation: "remove"
  • Readonlyvalue: JSONSerializable

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ReplaceDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.ReplaceDataStorageOperation.html new file mode 100644 index 0000000..9f80a46 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ReplaceDataStorageOperation.html @@ -0,0 +1,7 @@ +ReplaceDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias ReplaceDataStorageOperation

ReplaceDataStorageOperation: {
    operation: "replace";
    value: JSONSerializable;
}

Sets the current value of the key to value.

+

Type declaration

  • Readonlyoperation: "replace"
  • Readonlyvalue: JSONSerializable

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.RightShiftDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.RightShiftDataStorageOperation.html new file mode 100644 index 0000000..783ed6d --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.RightShiftDataStorageOperation.html @@ -0,0 +1,7 @@ +RightShiftDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias RightShiftDataStorageOperation

RightShiftDataStorageOperation: {
    operation: "right_shift";
    value: number;
}

Applies a bitwise right-shift to the current value of the key by value.

+

Type declaration

  • Readonlyoperation: "right_shift"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ServerPacket.html b/docs/v2.0.0-rc6/types/index.API.ServerPacket.html new file mode 100644 index 0000000..1267834 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ServerPacket.html @@ -0,0 +1,4 @@ +ServerPacket | archipelago.js - v2.0.0-rc6
diff --git a/docs/v2.0.0-rc6/types/index.API.TextJSONMessagePart.html b/docs/v2.0.0-rc6/types/index.API.TextJSONMessagePart.html new file mode 100644 index 0000000..3d18014 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.TextJSONMessagePart.html @@ -0,0 +1,9 @@ +TextJSONMessagePart | archipelago.js - v2.0.0-rc6

Type Alias TextJSONMessagePart

TextJSONMessagePart: {
    text: string;
    type?:
        | "text"
        | "entrance_name"
        | "player_id"
        | "player_name";
}

A textual node containing plaintext metadata.

+

Type declaration

  • Readonlytext: string

    Used to supply text data for this node.

    +
  • Optional Readonlytype?:
        | "text"
        | "entrance_name"
        | "player_id"
        | "player_name"

    Used to denote the intent of the message part.

    +

    If type is omitted, it should be treated as the text type.

    +

JSONMessagePart for all possible message part node subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.UpdateDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.UpdateDataStorageOperation.html new file mode 100644 index 0000000..886ae07 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.UpdateDataStorageOperation.html @@ -0,0 +1,8 @@ +UpdateDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias UpdateDataStorageOperation

UpdateDataStorageOperation: {
    operation: "update";
    value: JSONSerializable;
}

Dict only: Updates the dictionary with the specified elements given in value creating new keys, or updating old +ones if they previously existed.

+

Type declaration

  • Readonlyoperation: "update"
  • Readonlyvalue: JSONSerializable

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ValidJSONColorType.html b/docs/v2.0.0-rc6/types/index.API.ValidJSONColorType.html new file mode 100644 index 0000000..6d4b340 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ValidJSONColorType.html @@ -0,0 +1,8 @@ +ValidJSONColorType | archipelago.js - v2.0.0-rc6

Type Alias ValidJSONColorType

ValidJSONColorType:
    | "bold"
    | "underline"
    | "black"
    | "red"
    | "green"
    | "yellow"
    | "blue"
    | "magenta"
    | "cyan"
    | "white"
    | "black_bg"
    | "red_bg"
    | "green_bg"
    | "yellow_bg"
    | "blue_bg"
    | "purple_bg"
    | "cyan_bg"
    | "white_bg"

This is a type union of all supported "colors" denoting a console color to display the message part with and is only +sent if the type is color. This is limited to console colors due to backwards compatibility needs with games such +as A Link to the Past. Although background colors as well as foreground colors are listed, only one may be applied +to a JSONMessagePart at a time.

+
diff --git a/docs/v2.0.0-rc6/types/index.API.ValidJSONMessagePartType.html b/docs/v2.0.0-rc6/types/index.API.ValidJSONMessagePartType.html new file mode 100644 index 0000000..6787c9e --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.ValidJSONMessagePartType.html @@ -0,0 +1,17 @@ +ValidJSONMessagePartType | archipelago.js - v2.0.0-rc6

Type Alias ValidJSONMessagePartType

ValidJSONMessagePartType:
    | "text"
    | "player_id"
    | "player_name"
    | "item_id"
    | "item_name"
    | "location_id"
    | "location_name"
    | "entrance_name"
    | "color"

This is a type union of all supported message types for denoting the intent of the message part. This can be used to +indicate special information which may be rendered differently depending on client.

+
    +
  • text: Regular text content. This is also the default type and is often omitted.
  • +
  • player_id: Player id of someone on your team, should be resolved to player Name.
  • +
  • player_name: Player Name, could be a player within a multiplayer game or from another team, not id resolvable.
  • +
  • item_id: Item id, should be resolved to an item name.
  • +
  • item_name: Item name, not currently used over network, but supported by reference clients.
  • +
  • location_id: Location id, should be resolved to a location name.
  • +
  • location_name: Location name, not currently used over network, but supported by reference clients.
  • +
  • entrance_name: Entrance name. No id mapping exists.
  • +
  • color: Regular text that should be colored. Only type that will contain color data.
  • +
+
diff --git a/docs/v2.0.0-rc6/types/index.API.XorDataStorageOperation.html b/docs/v2.0.0-rc6/types/index.API.XorDataStorageOperation.html new file mode 100644 index 0000000..417cf45 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.API.XorDataStorageOperation.html @@ -0,0 +1,7 @@ +XorDataStorageOperation | archipelago.js - v2.0.0-rc6

Type Alias XorDataStorageOperation

XorDataStorageOperation: {
    operation: "xor";
    value: number;
}

Applies a bitwise XOR to the current value of the key with value.

+

Type declaration

  • Readonlyoperation: "xor"
  • Readonlyvalue: number

    A value for the operation to apply against the current data storage value.

    +

DataStorageOperation for all possible operation subtypes.

+
diff --git a/docs/v2.0.0-rc6/types/index.ClientStatus.html b/docs/v2.0.0-rc6/types/index.ClientStatus.html new file mode 100644 index 0000000..57e4746 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.ClientStatus.html @@ -0,0 +1,5 @@ +ClientStatus | archipelago.js - v2.0.0-rc6

Type Alias ClientStatus

ClientStatus: typeof clientStatuses[keyof typeof clientStatuses]

A type alias for any known client status. See clientStatuses for more information.

+
diff --git a/docs/v2.0.0-rc6/types/index.DataChangeCallback.html b/docs/v2.0.0-rc6/types/index.DataChangeCallback.html new file mode 100644 index 0000000..ee103db --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.DataChangeCallback.html @@ -0,0 +1,5 @@ +DataChangeCallback | archipelago.js - v2.0.0-rc6

Type Alias DataChangeCallback

DataChangeCallback: ((key: string, value: JSONSerializable, oldValue?: JSONSerializable) => void)

A callback that fires when a monitored key is updated in data storage.

+
diff --git a/docs/v2.0.0-rc6/types/index.DeathEvents.html b/docs/v2.0.0-rc6/types/index.DeathEvents.html new file mode 100644 index 0000000..6e500bf --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.DeathEvents.html @@ -0,0 +1,11 @@ +DeathEvents | archipelago.js - v2.0.0-rc6

Type Alias DeathEvents

DeathEvents: {
    deathReceived: [source: string, time: number, cause?: string];
}

An interface with all supported death events and their respective callback arguments. To be called from +MessageManager.

+

Type declaration

  • deathReceived: [source: string, time: number, cause?: string]

    Fired when a DeathLink-enabled player has sent a DeathLink.

    +

    The player who sent this DeathLink.

    +

    The timestamp this player died. Time is in number of milliseconds from unix epoch (same timestamp +system in JavaScript).

    +

    Optional description detailing the specific cause of death.

    +
diff --git a/docs/v2.0.0-rc6/types/index.ItemEvents.html b/docs/v2.0.0-rc6/types/index.ItemEvents.html new file mode 100644 index 0000000..a3c613a --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.ItemEvents.html @@ -0,0 +1,15 @@ +ItemEvents | archipelago.js - v2.0.0-rc6

Type Alias ItemEvents

ItemEvents: {
    hintFound: [hint: Hint];
    hintReceived: [hint: Hint];
    hintsInitialized: [hints: Hint[]];
    itemsReceived: [items: Item[], startingIndex: number];
}

An interface with all supported item/hint events and their respective callback arguments. To be called from +ItemsManager.

+

Type declaration

  • hintFound: [hint: Hint]

    Fired when a hint has been found.

    +

    The hint that has been found.

    +
  • hintReceived: [hint: Hint]

    Fired when a new hint has been received.

    +

    The hint that has been created.

    +
  • hintsInitialized: [hints: Hint[]]

    Fired shortly after initial connection with all current hints relevant to this player.

    +

    All hints ever created relevant to this player.

    +
  • itemsReceived: [items: Item[], startingIndex: number]

    Fired when items have been received.

    +

    An array of item metadata in the order they are sent.

    +

    The ItemsManager.received index for the first item in the items array.

    +
diff --git a/docs/v2.0.0-rc6/types/index.MessageEvents.html b/docs/v2.0.0-rc6/types/index.MessageEvents.html new file mode 100644 index 0000000..6eb8e8d --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.MessageEvents.html @@ -0,0 +1,72 @@ +MessageEvents | archipelago.js - v2.0.0-rc6

Type Alias MessageEvents

MessageEvents: {
    adminCommand: [text: string, nodes: MessageNode[]];
    chat: [message: string, player: Player, nodes: MessageNode[]];
    collected: [text: string, player: Player, nodes: MessageNode[]];
    connected: [text: string, player: Player, tags: string[], nodes: MessageNode[]];
    countdown: [text: string, value: number, nodes: MessageNode[]];
    disconnected: [text: string, player: Player, nodes: MessageNode[]];
    goaled: [text: string, player: Player, nodes: MessageNode[]];
    itemCheated: [text: string, item: Item, nodes: MessageNode[]];
    itemHinted: [text: string, item: Item, found: boolean, nodes: MessageNode[]];
    itemSent: [text: string, item: Item, nodes: MessageNode[]];
    message: [text: string, nodes: MessageNode[]];
    released: [text: string, player: Player, nodes: MessageNode[]];
    serverChat: [message: string, nodes: MessageNode[]];
    tagsUpdated: [text: string, player: Player, tags: string[], nodes: MessageNode[]];
    tutorial: [text: string, nodes: MessageNode[]];
    userCommand: [text: string, nodes: MessageNode[]];
}

An interface with all supported message events and their respective callback arguments. To be called from +MessageManager.

+

Type declaration

  • adminCommand: [text: string, nodes: MessageNode[]]

    Fires on the result of running an admin command via !admin.

    +

    The plaintext message content.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • chat: [message: string, player: Player, nodes: MessageNode[]]

    Fires when a player chat message is received.

    +

    The plaintext message content without the sender name prefix.

    +

    The metadata of the player who sent this message.

    +

    An array of message nodes in this message with additional context for each textual component.

    +

    nodes will contain the sender name prefix from the server, but message will not.

    +
  • collected: [text: string, player: Player, nodes: MessageNode[]]

    Fires when a player has collected their remaining items from the multi-world.

    +

    The plaintext message content.

    +

    The player that collected.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • connected: [text: string, player: Player, tags: string[], nodes: MessageNode[]]

    Fires when a client connects to the room session.

    +

    The plaintext message content.

    +

    The player being connected as.

    +

    The tags of the joining client.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • countdown: [text: string, value: number, nodes: MessageNode[]]

    Fires when a countdown message is received.

    +

    The plaintext message content.

    +

    The current countdown value.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • disconnected: [text: string, player: Player, nodes: MessageNode[]]

    Fires when a client disconnects from the room session.

    +

    The plaintext message content.

    +

    The player being disconnected from.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • goaled: [text: string, player: Player, nodes: MessageNode[]]

    Fires when a connected player has met their goal condition.

    +

    The plaintext message content.

    +

    The player that reached their goal.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • itemCheated: [text: string, item: Item, nodes: MessageNode[]]

    Fires when another player is sent a cheated item.

    +

    The plaintext message content.

    +

    The item being sent.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • itemHinted: [text: string, item: Item, found: boolean, nodes: MessageNode[]]

    Fires when a hint-style message is received.

    +

    The plaintext message content.

    +

    The item being hinted.

    +

    If the item was found.

    +

    An array of message nodes in this message with additional context for each textual component.

    +

    This event is for hint messages received. To track more information on when hints are updated, utilize +one of the hint-type events on ItemsManager instead.

    +
  • itemSent: [text: string, item: Item, nodes: MessageNode[]]

    Fires when another player is sent an item (except for cheated items).

    +

    The plaintext message content.

    +

    The item being sent.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • message: [text: string, nodes: MessageNode[]]

    Fires when any kind of message is received.

    +

    The plaintext message content.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • released: [text: string, player: Player, nodes: MessageNode[]]

    Fires when a player has released their remaining items to the multi-world.

    +

    The plaintext message content.

    +

    The player that released.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • serverChat: [message: string, nodes: MessageNode[]]

    Fires when a server chat message is received.

    +

    The plaintext message content without the sender name prefix.

    +

    An array of message nodes in this message with additional context for each textual component.

    +

    nodes will contain the sender name prefix from the server, but message will not.

    +
  • tagsUpdated: [text: string, player: Player, tags: string[], nodes: MessageNode[]]

    Fires when a client updates their tags.

    +

    The plaintext message content.

    +

    The player this client is connected to.

    +

    The new tags for this client.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • tutorial: [text: string, nodes: MessageNode[]]

    Fires when tutorial-like information is received, such as on first connection explaining !help.

    +

    The plaintext message content.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
  • userCommand: [text: string, nodes: MessageNode[]]

    Fires on the result of running a user command, such as !status.

    +

    The plaintext message content.

    +

    An array of message nodes in this message with additional context for each textual component.

    +
diff --git a/docs/v2.0.0-rc6/types/index.MessageLog.html b/docs/v2.0.0-rc6/types/index.MessageLog.html new file mode 100644 index 0000000..78ad070 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.MessageLog.html @@ -0,0 +1,5 @@ +MessageLog | archipelago.js - v2.0.0-rc6

Type Alias MessageLog

MessageLog: {
    nodes: MessageNode[];
    text: string;
}[]

A type for logged messages on MessageManager.

+
diff --git a/docs/v2.0.0-rc6/types/index.MessageNode.html b/docs/v2.0.0-rc6/types/index.MessageNode.html new file mode 100644 index 0000000..4962d5b --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.MessageNode.html @@ -0,0 +1,5 @@ +MessageNode | archipelago.js - v2.0.0-rc6

Type Alias MessageNode

MessageNode:
    | ItemMessageNode
    | LocationMessageNode
    | ColorMessageNode
    | TextualMessageNode
    | PlayerMessageNode

A type union of all known message node types. See each type for more information.

+
diff --git a/docs/v2.0.0-rc6/types/index.PlayerEvents.html b/docs/v2.0.0-rc6/types/index.PlayerEvents.html new file mode 100644 index 0000000..15ee458 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.PlayerEvents.html @@ -0,0 +1,8 @@ +PlayerEvents | archipelago.js - v2.0.0-rc6

Type Alias PlayerEvents

PlayerEvents: {
    aliasUpdated: [player: Player, oldAlias: string, newAlias: string];
}

Type declaration

  • aliasUpdated: [player: Player, oldAlias: string, newAlias: string]

    Fires when a player updates their alias.

    +

    The Player for this player with the changes applied.

    +

    The player's previous alias.

    +

    The player's new alias.

    +
diff --git a/docs/v2.0.0-rc6/types/index.RoomStateEvents.html b/docs/v2.0.0-rc6/types/index.RoomStateEvents.html new file mode 100644 index 0000000..bd0b95c --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.RoomStateEvents.html @@ -0,0 +1,24 @@ +RoomStateEvents | archipelago.js - v2.0.0-rc6

Type Alias RoomStateEvents

RoomStateEvents: {
    hintCostUpdated: [oldCost: number, newCost: number, oldPercentage: number, newPercentage: number];
    hintPointsUpdated: [oldValue: number, newValue: number];
    locationCheckPointsUpdated: [oldValue: number, newValue: number];
    locationsChecked: [locations: number[]];
    passwordUpdated: [password: boolean];
    permissionsUpdated: [oldValue: PermissionTable, newValue: PermissionTable];
}

An interface with all supported room events and their respective callback arguments. To be called from +RoomStateManager.

+

Type declaration

  • hintCostUpdated: [oldCost: number, newCost: number, oldPercentage: number, newPercentage: number]

    Fires when the hint cost has been updated.

    +

    The previous amount of hint points required to request a hint.

    +

    The new amount of hint points required to request a hint.

    +

    The old hint cost percentage.

    +

    The new hint cost percentage.

    +
  • hintPointsUpdated: [oldValue: number, newValue: number]

    Fires when the player's hint points value has updated.

    +

    The old hint point value.

    +

    The new hint point value.

    +
  • locationCheckPointsUpdated: [oldValue: number, newValue: number]

    Fires when the location check points have been updated.

    +

    The previous location check points value.

    +

    The new location check points value.

    +
  • locationsChecked: [locations: number[]]

    Fires when new locations have been checked (or all locations on initial connection).

    +

    All the newly checked locations.

    +
  • passwordUpdated: [password: boolean]

    Fires when the room password has been toggled.

    +

    If the room now requires a password to join.

    +
  • permissionsUpdated: [oldValue: PermissionTable, newValue: PermissionTable]

    Fires when command permissions have been updated.

    +

    The previous command permissions table.

    +

    The new command permissions table.

    +
diff --git a/docs/v2.0.0-rc6/types/index.SocketEvents.html b/docs/v2.0.0-rc6/types/index.SocketEvents.html new file mode 100644 index 0000000..24bc681 --- /dev/null +++ b/docs/v2.0.0-rc6/types/index.SocketEvents.html @@ -0,0 +1,44 @@ +SocketEvents | archipelago.js - v2.0.0-rc6

Type Alias SocketEvents

SocketEvents: {
    bounced: [packet: BouncedPacket, data: JSONRecord];
    connected: [packet: ConnectedPacket];
    connectionRefused: [packet: ConnectionRefusedPacket];
    dataPackage: [packet: DataPackagePacket];
    disconnected: [];
    invalidPacket: [packet: InvalidPacketPacket];
    locationInfo: [packet: LocationInfoPacket];
    printJSON: [packet: PrintJSONPacket];
    receivedItems: [packet: ReceivedItemsPacket];
    receivedPacket: [packet: ServerPacket];
    retrieved: [packet: RetrievedPacket];
    roomInfo: [packet: RoomInfoPacket];
    roomUpdate: [packet: RoomUpdatePacket];
    sentPackets: [packets: ClientPacket[]];
    setReply: [packet: SetReplyPacket];
}

An interface with all supported socket events and their respective callback arguments. To be called from +SocketManager.

+

Type declaration

// Print all chat messages to the console when received.
client.socket.on("PrintJSON", (packet, message) => {
console.log(message);
});

// Warn when lost connection.
client.socket.on("Disconnect", () => {
console.warn("Lost connection to the server!");
} +
+ +
diff --git a/docs/v2.0.0-rc6/variables/index.API.clientStatuses.html b/docs/v2.0.0-rc6/variables/index.API.clientStatuses.html new file mode 100644 index 0000000..69ad3ea --- /dev/null +++ b/docs/v2.0.0-rc6/variables/index.API.clientStatuses.html @@ -0,0 +1,11 @@ +clientStatuses | archipelago.js - v2.0.0-rc6

Variable clientStatusesConst

clientStatuses: {
    connected: 5;
    disconnected: 0;
    goal: 30;
    playing: 20;
    ready: 10;
} = ...

A const of known containing the possible client states that may be used to inform the server during a status update.

+

Type declaration

  • Readonlyconnected: 5

    Client is currently connected. This status is set automatically when a client connects.

    +
  • Readonlydisconnected: 0

    Client is in an unknown or disconnected state. This status is set automatically initially and when all connected +clients have disconnected from the server.

    +
  • Readonlygoal: 30

    Client has completed their goal. Once set, cannot be changed.

    +
  • Readonlyplaying: 20

    Client is currently playing.

    +
  • Readonlyready: 10

    Client is ready to start, but hasn't started playing yet.

    +
diff --git a/docs/v2.0.0-rc6/variables/index.API.itemClassifications.html b/docs/v2.0.0-rc6/variables/index.API.itemClassifications.html new file mode 100644 index 0000000..eccfc25 --- /dev/null +++ b/docs/v2.0.0-rc6/variables/index.API.itemClassifications.html @@ -0,0 +1,9 @@ +itemClassifications | archipelago.js - v2.0.0-rc6

Variable itemClassificationsConst

itemClassifications: {
    normal: 0;
    progression: 1;
    trap: 4;
    useful: 2;
} = ...

Bit flags that define the special characteristics of a NetworkItem.

+

Type declaration

  • Readonlynormal: 0

    A shorthand with no flags set, also known as 'filler' or 'junk' items.

    +
  • Readonlyprogression: 1

    If set, indicates the item may unlock logical advancement.

    +
  • Readonlytrap: 4

    If set, indicates the item can inconvenience a player.

    +
  • Readonlyuseful: 2

    If set, indicates the item is classified as useful to have.

    +
diff --git a/docs/v2.0.0-rc6/variables/index.API.itemsHandlingFlags.html b/docs/v2.0.0-rc6/variables/index.API.itemsHandlingFlags.html new file mode 100644 index 0000000..3d64fb8 --- /dev/null +++ b/docs/v2.0.0-rc6/variables/index.API.itemsHandlingFlags.html @@ -0,0 +1,10 @@ +itemsHandlingFlags | archipelago.js - v2.0.0-rc6

Variable itemsHandlingFlagsConst

itemsHandlingFlags: {
    all: 7;
    minimal: 0;
    others: 1;
    own: 2;
    starting: 4;
} = ...

Bit flags configuring which items should be sent by the server to this client.

+

Type declaration

  • Readonlyall: 7

    Shorthand for REMOTE_DIFFERENT_WORLDS, REMOTE_OWN_WORLD, and REMOTE_STARTING_INVENTORY.

    +
  • Readonlyminimal: 0

    Indicates the client only receives items created by cheat commands.

    +
  • Readonlyothers: 1

    Indicates the client get items sent from other worlds.

    +
  • Readonlyown: 2

    Indicates the client get items sent from your own world. Requires REMOTE_DIFFERENT_WORLDS to be set.

    +
  • Readonlystarting: 4

    Indicates the client get your starting inventory sent. Requires REMOTE_DIFFERENT_WORLDS to be set.

    +
diff --git a/docs/v2.0.0-rc6/variables/index.API.permissions.html b/docs/v2.0.0-rc6/variables/index.API.permissions.html new file mode 100644 index 0000000..9618412 --- /dev/null +++ b/docs/v2.0.0-rc6/variables/index.API.permissions.html @@ -0,0 +1,13 @@ +permissions | archipelago.js - v2.0.0-rc6

Variable permissionsConst

permissions: {
    auto: 6;
    autoEnabled: 7;
    disabled: 0;
    enabled: 1;
    goal: 2;
} = ...

A const containing the possible command permissions, for commands that may be restricted.

+

Type declaration

  • Readonlyauto: 6

    Forces players to use this command after they have completed their goal.

    +

    Only allowed on release and collect permissions.

    +
  • ReadonlyautoEnabled: 7

    Allows players to use this command manually at any time and forces them to use this command after they have +completed their goal.

    +

    Only allowed on release and collect permissions.

    +
  • Readonlydisabled: 0

    Prevents players from using this command at any time.

    +
  • Readonlyenabled: 1

    Allows players to use this command manually at any time.

    +
  • Readonlygoal: 2

    Allows players to use this command manually after they have completed their goal.

    +
diff --git a/docs/v2.0.0-rc6/variables/index.API.slotTypes.html b/docs/v2.0.0-rc6/variables/index.API.slotTypes.html new file mode 100644 index 0000000..d18f0aa --- /dev/null +++ b/docs/v2.0.0-rc6/variables/index.API.slotTypes.html @@ -0,0 +1,8 @@ +slotTypes | archipelago.js - v2.0.0-rc6

Variable slotTypesConst

slotTypes: {
    group: 2;
    player: 1;
    spectator: 0;
} = ...

An enumeration representing the nature of the slot.

+

Type declaration

  • Readonlygroup: 2

    This client is an item links group containing at least 1 player with active item links.

    +
  • Readonlyplayer: 1

    This client is a player and is participating in the current game.

    +
  • Readonlyspectator: 0

    This client is a spectator and not participating in the current game.

    +
diff --git a/docs/v2.0.0-rc6/variables/index.libraryVersion.html b/docs/v2.0.0-rc6/variables/index.libraryVersion.html new file mode 100644 index 0000000..1926a9b --- /dev/null +++ b/docs/v2.0.0-rc6/variables/index.libraryVersion.html @@ -0,0 +1,4 @@ +libraryVersion | archipelago.js - v2.0.0-rc6

Variable libraryVersionConst

libraryVersion = "2.0.0-rc6"
diff --git a/docs/v2.0.0-rc6/variables/index.targetVersion.html b/docs/v2.0.0-rc6/variables/index.targetVersion.html new file mode 100644 index 0000000..9fe401b --- /dev/null +++ b/docs/v2.0.0-rc6/variables/index.targetVersion.html @@ -0,0 +1,6 @@ +targetVersion | archipelago.js - v2.0.0-rc6

Variable targetVersionConst

targetVersion: {
    build: number;
    major: number;
    minor: number;
} = ...

Archipelago version this library attempts to target. Support for older versions of the Archipelago API is not +guaranteed and some newer enhancements may no longer work or be supported.

+
diff --git a/docs/versions.js b/docs/versions.js index 0c586f4..3bd04d7 100644 --- a/docs/versions.js +++ b/docs/versions.js @@ -5,4 +5,5 @@ export const DOC_VERSIONS = [ 'v1.2', 'v1.1', 'v1.0', + 'dev', ];