diff --git a/typedoc/assets/main.js b/typedoc/assets/main.js index b13205a..bd45452 100644 --- a/typedoc/assets/main.js +++ b/typedoc/assets/main.js @@ -1,5 +1,5 @@ -(()=>{var Ce=Object.create;var ue=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t};var Fe=(t,e,r)=>(r=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ue(r,"default",{value:t,enumerable:!0}):r,t));var pe=Me((de,fe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,l],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}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,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?h+=2:a==u&&(r+=n[l+1]*i[h+1],l+=2,h+=2);return r},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),r=1,n=0;r0){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 u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),p=s.str.charAt(1),v;p in s.node.edges?v=s.node.edges[p]:(v=new t.TokenSet,s.node.edges[p]=v),s.str.length==1&&(v.final=!0),i.push({node:v,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.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(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},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,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<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 r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,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 r=e.peekLexeme();if(r!=null)switch(r.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 n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.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 r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.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 '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;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 r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;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,r){typeof define=="function"&&define.amd?define(r):typeof de=="object"?fe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ce=[];function N(t,e){ce.push({selector:e,constructor:t})}var Y=class{constructor(){this.createComponents(document.body)}createComponents(e){ce.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n}),n.dataset.hasInstance=String(!0))})})}};var k=class{constructor(e){this.el=e.el}};var J=class{constructor(){this.listeners={}}addEventListener(e,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){if(!(e in this.listeners))return;let n=this.listeners[e];for(let i=0,s=n.length;i{let r=Date.now();return(...n)=>{r+e-Date.now()<0&&(t(...n),r=Date.now())}};var ie=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.secondaryNav=document.querySelector(".tsd-navigation.secondary"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.onResize(),this.onScroll()}triggerResize(){let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onScroll(){this.scrollTop=window.scrollY||0;let r=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(r),this.hideShowToolbar()}hideShowToolbar(){var n;let r=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0,r!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),(n=this.secondaryNav)==null||n.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop}},Q=ie;Q.instance=new ie;var X=class extends k{constructor(r){super(r);this.anchors=[];this.index=-1;Q.instance.addEventListener("resize",()=>this.onResize()),Q.instance.addEventListener("scroll",n=>this.onScroll(n)),this.createAnchors()}createAnchors(){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substr(0,r.indexOf("#"))),this.el.querySelectorAll("a").forEach(n=>{let i=n.href;if(i.indexOf("#")==-1||i.substr(0,r.length)!=r)return;let s=i.substr(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=n.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let r;for(let i=0,s=this.anchors.length;ii.position-s.position);let n=new CustomEvent("scroll",{detail:{scrollTop:Q.instance.scrollTop}});this.onScroll(n)}onScroll(r){let n=r.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>n;)o-=1;for(;o-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var he=(t,e=100)=>{let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>t(n),e)}};var ge=Fe(pe());function ye(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Ae(t,n,r,s)}function Ae(t,e,r,n){r.addEventListener("input",he(()=>{He(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?ze(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?me(e,-1):s.key==="ArrowDown"?me(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function Ve(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ge.Index.load(window.searchData.index))}function He(t,e,r,n){if(Ve(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0,a=Math.min(10,s.length);o${ve(u.parent,i)}.${l}`);let h=document.createElement("li");h.classList.value=u.classes;let p=document.createElement("a");p.href=n.base+u.url,p.classList.add("tsd-kind-icon"),p.innerHTML=l,h.append(p),e.appendChild(h)}}function me(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function ze(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function ve(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(se(t.substring(s,o)),`${se(t.substring(o,o+n.length))}`),s=o+n.length,o=r.indexOf(n,s);return i.push(se(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function se(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var oe=class{constructor(e,r){this.signature=e,this.description=r}addClass(e){return this.signature.classList.add(e),this.description.classList.add(e),this}removeClass(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this}},Z=class extends k{constructor(r){super(r);this.groups=[];this.index=-1;this.createGroups(),this.container&&(this.el.classList.add("active"),Array.from(this.el.children).forEach(n=>{n.addEventListener("touchstart",i=>this.onClick(i)),n.addEventListener("click",i=>this.onClick(i))}),this.container.classList.add("active"),this.setIndex(0))}setIndex(r){if(r<0&&(r=0),r>this.groups.length-1&&(r=this.groups.length-1),this.index==r)return;let n=this.groups[r];if(this.index>-1){let i=this.groups[this.index];i.removeClass("current").addClass("fade-out"),n.addClass("current"),n.addClass("fade-in"),Q.instance.triggerResize(),setTimeout(()=>{i.removeClass("fade-out"),n.removeClass("fade-in")},300)}else n.addClass("current"),Q.instance.triggerResize();this.index=r}createGroups(){let r=this.el.children;if(r.length<2)return;this.container=this.el.nextElementSibling;let n=this.container.children;this.groups=[];for(let i=0;i{n.signature===r.currentTarget&&this.setIndex(i)})}};var C="mousedown",Le="mousemove",_="mouseup",K={x:0,y:0},xe=!1,ae=!1,je=!1,A=!1,Ee=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Ee?"is-mobile":"not-mobile");Ee&&"ontouchstart"in document.documentElement&&(je=!0,C="touchstart",Le="touchmove",_="touchend");document.addEventListener(C,t=>{ae=!0,A=!1;let e=C=="touchstart"?t.targetTouches[0]:t;K.y=e.pageY||0,K.x=e.pageX||0});document.addEventListener(Le,t=>{if(!!ae&&!A){let e=C=="touchstart"?t.targetTouches[0]:t,r=K.x-(e.pageX||0),n=K.y-(e.pageY||0);A=Math.sqrt(r*r+n*n)>10}});document.addEventListener(_,()=>{ae=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var ee=class extends k{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(_,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(C,n=>this.onDocumentPointerDown(n)),document.addEventListener(_,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){A||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!A&&this.active&&r.target.closest(".col-menu")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substr(0,i.indexOf("#"))),n.href.substr(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te=class{constructor(e,r){this.key=e,this.value=r,this.defaultValue=r,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}initialize(){}setValue(e){if(this.value==e)return;let r=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(r,e)}},re=class extends te{initialize(){let r=document.querySelector("#tsd-filter-"+this.key);!r||(this.checkbox=r,this.checkbox.addEventListener("change",()=>{this.setValue(this.checkbox.checked)}))}handleValueChange(r,n){!this.checkbox||(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))}fromLocalStorage(r){return r=="true"}toLocalStorage(r){return r?"true":"false"}},le=class extends te{initialize(){document.documentElement.classList.add("toggle-"+this.key+this.value);let r=document.querySelector("#tsd-filter-"+this.key);if(!r)return;this.select=r;let n=()=>{this.select.classList.add("active")},i=()=>{this.select.classList.remove("active")};this.select.addEventListener(C,n),this.select.addEventListener("mouseover",n),this.select.addEventListener("mouseleave",i),this.select.querySelectorAll("li").forEach(s=>{s.addEventListener(_,o=>{r.classList.remove("active"),this.setValue(o.target.dataset.value||"")})}),document.addEventListener(C,s=>{this.select.contains(s.target)||this.select.classList.remove("active")})}handleValueChange(r,n){this.select.querySelectorAll("li.selected").forEach(o=>{o.classList.remove("selected")});let i=this.select.querySelector('li[data-value="'+n+'"]'),s=this.select.querySelector(".tsd-select-label");i&&s&&(i.classList.add("selected"),s.textContent=i.textContent),document.documentElement.classList.remove("toggle-"+r),document.documentElement.classList.add("toggle-"+n)}fromLocalStorage(r){return r}toLocalStorage(r){return r}},j=class extends k{constructor(r){super(r);this.optionVisibility=new le("visibility","private"),this.optionInherited=new re("inherited",!0),this.optionExternals=new re("externals",!0)}static isSupported(){try{return typeof window.localStorage!="undefined"}catch{return!1}}};function we(t){let e=localStorage.getItem("tsd-theme")||"os";t.value=e,be(e),t.addEventListener("change",()=>{localStorage.setItem("tsd-theme",t.value),be(t.value)})}function be(t){switch(t){case"os":document.body.classList.remove("light","dark");break;case"light":document.body.classList.remove("dark"),document.body.classList.add("light");break;case"dark":document.body.classList.remove("light"),document.body.classList.add("dark");break}}ye();N(X,".menu-highlight");N(Z,".tsd-signatures");N(ee,"a[data-toggle]");j.isSupported()?N(j,"#tsd-filter"):document.documentElement.classList.add("no-filter");var Te=document.getElementById("theme");Te&&we(Te);var Be=new Y;Object.defineProperty(window,"app",{value:Be});})(); +(()=>{var Ce=Object.create;var ue=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!_e.call(t,i)&&i!==r&&ue(t,i,{get:()=>e[i],enumerable:!(n=Pe(e,i))||n.enumerable});return t};var Fe=(t,e,r)=>(r=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ue(r,"default",{value:t,enumerable:!0}):r,t));var pe=Me((de,fe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var h=t.utils.clone(r)||{};h.position=[a,u],h.index=s.length,s.push(new t.Token(n.slice(a,o),h))}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,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?h+=2:a==l&&(r+=n[u+1]*i[h+1],u+=2,h+=2);return r},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),r=1,n=0;r0){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 h=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.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(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=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,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},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,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<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 r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,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 r=e.peekLexeme();if(r!=null)switch(r.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 n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.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 r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.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 '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;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 r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;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,r){typeof define=="function"&&define.amd?define(r):typeof de=="object"?fe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ce=[];function N(t,e){ce.push({selector:e,constructor:t})}var Y=class{constructor(){this.createComponents(document.body)}createComponents(e){ce.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n}),n.dataset.hasInstance=String(!0))})})}};var k=class{constructor(e){this.el=e.el}};var J=class{constructor(){this.listeners={}}addEventListener(e,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){if(!(e in this.listeners))return;let n=this.listeners[e];for(let i=0,s=n.length;i{let r=Date.now();return(...n)=>{r+e-Date.now()<0&&(t(...n),r=Date.now())}};var ie=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.secondaryNav=document.querySelector(".tsd-navigation.secondary"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.onResize(),this.onScroll()}triggerResize(){let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let r=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(r)}onScroll(){this.scrollTop=window.scrollY||0;let r=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(r),this.hideShowToolbar()}hideShowToolbar(){var n;let r=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0,r!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),(n=this.secondaryNav)==null||n.classList.toggle("tsd-navigation--toolbar-hide")),this.lastY=this.scrollTop}},Q=ie;Q.instance=new ie;var X=class extends k{constructor(r){super(r);this.anchors=[];this.index=-1;Q.instance.addEventListener("resize",()=>this.onResize()),Q.instance.addEventListener("scroll",n=>this.onScroll(n)),this.createAnchors()}createAnchors(){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substr(0,r.indexOf("#"))),this.el.querySelectorAll("a").forEach(n=>{let i=n.href;if(i.indexOf("#")==-1||i.substr(0,r.length)!=r)return;let s=i.substr(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=n.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let r;for(let i=0,s=this.anchors.length;ii.position-s.position);let n=new CustomEvent("scroll",{detail:{scrollTop:Q.instance.scrollTop}});this.onScroll(n)}onScroll(r){let n=r.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>n;)o-=1;for(;o-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var he=(t,e=100)=>{let r;return(...n)=>{clearTimeout(r),r=setTimeout(()=>t(n),e)}};var ge=Fe(pe());function ye(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Ae(t,n,r,s)}function Ae(t,e,r,n){r.addEventListener("input",he(()=>{He(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?ze(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?me(e,-1):s.key==="ArrowDown"?me(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function Ve(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ge.Index.load(window.searchData.index))}function He(t,e,r,n){var o,a;if(Ve(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let l=0;lu.score-l.score);for(let l=0,u=Math.min(10,s.length);l${ve(h.parent,i)}.${f}`);let p=document.createElement("li");p.classList.value=(a=h.classes)!=null?a:"";let E=document.createElement("a");E.href=n.base+h.url,E.classList.add("tsd-kind-icon"),E.innerHTML=f,p.append(E),e.appendChild(p)}}function me(t,e){var n,i;let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let s=r;if(e===1)do s=(n=s.nextElementSibling)!=null?n:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);else do s=(i=s.previousElementSibling)!=null?i:void 0;while(s instanceof HTMLElement&&s.offsetParent==null);s&&(r.classList.remove("current"),s.classList.add("current"))}}function ze(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function ve(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(se(t.substring(s,o)),`${se(t.substring(o,o+n.length))}`),s=o+n.length,o=r.indexOf(n,s);return i.push(se(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function se(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var oe=class{constructor(e,r){this.signature=e,this.description=r}addClass(e){return this.signature.classList.add(e),this.description.classList.add(e),this}removeClass(e){return this.signature.classList.remove(e),this.description.classList.remove(e),this}},Z=class extends k{constructor(r){super(r);this.groups=[];this.index=-1;this.createGroups(),this.container&&(this.el.classList.add("active"),Array.from(this.el.children).forEach(n=>{n.addEventListener("touchstart",i=>this.onClick(i)),n.addEventListener("click",i=>this.onClick(i))}),this.container.classList.add("active"),this.setIndex(0))}setIndex(r){if(r<0&&(r=0),r>this.groups.length-1&&(r=this.groups.length-1),this.index==r)return;let n=this.groups[r];if(this.index>-1){let i=this.groups[this.index];i.removeClass("current").addClass("fade-out"),n.addClass("current"),n.addClass("fade-in"),Q.instance.triggerResize(),setTimeout(()=>{i.removeClass("fade-out"),n.removeClass("fade-in")},300)}else n.addClass("current"),Q.instance.triggerResize();this.index=r}createGroups(){let r=this.el.children;if(r.length<2)return;this.container=this.el.nextElementSibling;let n=this.container.children;this.groups=[];for(let i=0;i{n.signature===r.currentTarget&&this.setIndex(i)})}};var C="mousedown",Le="mousemove",_="mouseup",K={x:0,y:0},xe=!1,ae=!1,je=!1,A=!1,Ee=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Ee?"is-mobile":"not-mobile");Ee&&"ontouchstart"in document.documentElement&&(je=!0,C="touchstart",Le="touchmove",_="touchend");document.addEventListener(C,t=>{ae=!0,A=!1;let e=C=="touchstart"?t.targetTouches[0]:t;K.y=e.pageY||0,K.x=e.pageX||0});document.addEventListener(Le,t=>{if(!!ae&&!A){let e=C=="touchstart"?t.targetTouches[0]:t,r=K.x-(e.pageX||0),n=K.y-(e.pageY||0);A=Math.sqrt(r*r+n*n)>10}});document.addEventListener(_,()=>{ae=!1});document.addEventListener("click",t=>{xe&&(t.preventDefault(),t.stopImmediatePropagation(),xe=!1)});var ee=class extends k{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(_,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(C,n=>this.onDocumentPointerDown(n)),document.addEventListener(_,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){A||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!A&&this.active&&r.target.closest(".col-menu")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substr(0,i.indexOf("#"))),n.href.substr(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te=class{constructor(e,r){this.key=e,this.value=r,this.defaultValue=r,this.initialize(),window.localStorage[this.key]&&this.setValue(this.fromLocalStorage(window.localStorage[this.key]))}initialize(){}setValue(e){if(this.value==e)return;let r=this.value;this.value=e,window.localStorage[this.key]=this.toLocalStorage(e),this.handleValueChange(r,e)}},re=class extends te{initialize(){let r=document.querySelector("#tsd-filter-"+this.key);!r||(this.checkbox=r,this.checkbox.addEventListener("change",()=>{this.setValue(this.checkbox.checked)}))}handleValueChange(r,n){!this.checkbox||(this.checkbox.checked=this.value,document.documentElement.classList.toggle("toggle-"+this.key,this.value!=this.defaultValue))}fromLocalStorage(r){return r=="true"}toLocalStorage(r){return r?"true":"false"}},le=class extends te{initialize(){document.documentElement.classList.add("toggle-"+this.key+this.value);let r=document.querySelector("#tsd-filter-"+this.key);if(!r)return;this.select=r;let n=()=>{this.select.classList.add("active")},i=()=>{this.select.classList.remove("active")};this.select.addEventListener(C,n),this.select.addEventListener("mouseover",n),this.select.addEventListener("mouseleave",i),this.select.querySelectorAll("li").forEach(s=>{s.addEventListener(_,o=>{r.classList.remove("active"),this.setValue(o.target.dataset.value||"")})}),document.addEventListener(C,s=>{this.select.contains(s.target)||this.select.classList.remove("active")})}handleValueChange(r,n){this.select.querySelectorAll("li.selected").forEach(o=>{o.classList.remove("selected")});let i=this.select.querySelector('li[data-value="'+n+'"]'),s=this.select.querySelector(".tsd-select-label");i&&s&&(i.classList.add("selected"),s.textContent=i.textContent),document.documentElement.classList.remove("toggle-"+r),document.documentElement.classList.add("toggle-"+n)}fromLocalStorage(r){return r}toLocalStorage(r){return r}},j=class extends k{constructor(r){super(r);this.optionVisibility=new le("visibility","private"),this.optionInherited=new re("inherited",!0),this.optionExternals=new re("externals",!0)}static isSupported(){try{return typeof window.localStorage!="undefined"}catch{return!1}}};function we(t){let e=localStorage.getItem("tsd-theme")||"os";t.value=e,be(e),t.addEventListener("change",()=>{localStorage.setItem("tsd-theme",t.value),be(t.value)})}function be(t){switch(t){case"os":document.body.classList.remove("light","dark");break;case"light":document.body.classList.remove("dark"),document.body.classList.add("light");break;case"dark":document.body.classList.remove("light"),document.body.classList.add("dark");break}}ye();N(X,".menu-highlight");N(Z,".tsd-signatures");N(ee,"a[data-toggle]");j.isSupported()?N(j,"#tsd-filter"):document.documentElement.classList.add("no-filter");var Te=document.getElementById("theme");Te&&we(Te);var Be=new Y;Object.defineProperty(window,"app",{value:Be});})(); /*! * lunr.Builder * Copyright (C) 2020 Oliver Nightingale diff --git a/typedoc/classes/KDataReader.html b/typedoc/classes/KDataReader.html index 457233d..49bc209 100644 --- a/typedoc/classes/KDataReader.html +++ b/typedoc/classes/KDataReader.html @@ -1,8 +1,8 @@ KDataReader | Asphyxia CORE Module API
Options
All
  • Public
  • Public/Protected
  • All
Menu

A wrapper of javascript object for reading xml-like formatted data.

-

Hierarchy

  • KDataReader

Index

Constructors

Properties

obj: any
+

Hierarchy

  • KDataReader

Index

Constructors

Properties

obj: any

Wrapped javascript object

-

Methods

Methods

  • Get attributes for a tag

    Example:

    <data>
    <tag status="1">
    <inner __type="s32">1</inner>
    <inner __type="s32">2</inner>
    </tag>
    </data> @@ -12,7 +12,7 @@

    Eval:

    $(data).attr("tag") // { status: "1" }
    $(data).element("tag").attr().status // "1"
    $(data).attr("tag.inner.0").__type // "s32"
    -

    Parameters

    • Optional path: string

    Returns KAttrMap

  • bigint(path: string, def?: bigint): bigint
  • bigint(path: string, def?: bigint): bigint
  • Get a bigint value from a tag, convert to bigint if applicable.

    Example:

    <data>
    <inner __type="s64">1</inner>
    <inner __type="s32">2</inner>
    <invalid __type="str">abc</invalid>
    </data> @@ -25,7 +25,7 @@

    Parameters

    • path: string
    • Optional def: bigint

      Default return value when target path does not exists or is not valid.

      -

    Returns bigint

  • bigints(path: string, def?: bigint[]): bigint[]

Returns bigint

  • bigints(path: string, def?: bigint[]): bigint[]
  • Get a bigint array from a tag. Only returns valid arrays when target tag has a type of KBigIntType or KBigIntGroupType

    Example:

    @@ -36,7 +36,7 @@ when target tag has a type of KBigIntTypeEval:

    $(data).bigints("inner") // [1n, 2n]
    $(data).bigints("invalid") // undefined
    -

    Parameters

    • path: string
    • Optional def: bigint[]

    Returns bigint[]

  • bool(path: string): boolean
  • bool(path: string): boolean
  • Get a boolean value from a tag, return true only if value in the tag is number and greater than zero

    Example:

    <data>
    <inner __type="bool">0</inner>
    <inner __type="s32">2</inner>
    </data> @@ -46,7 +46,7 @@ when target tag has a type of KBigIntTypeEval:

    $(data).bool("inner.0") // false
    $(data).bool("inner.1") // true
    $(data).bool("invalid") // false
    -

    Parameters

    • path: string

    Returns boolean

  • buffer(path: string, def?: Buffer): Buffer
  • buffer(path: string, def?: Buffer): Buffer
  • Get a Buffer object from a tag, Only returns valid Buffer when target tag has a type of "bin"

    Example:

    @@ -57,7 +57,7 @@ when target tag has a type of "bin"

    Eval:

    $(data).buffer("inner") // <Buffer 00 ff>
    $(data).buffer("invalid") // undefined
    -

    Parameters

    • path: string
    • Optional def: Buffer

    Returns Buffer

  • content(path: string, def?: any): any
  • content(path: string, def?: any): any
  • Get raw content representation regardless of tag type

    Example:

    <data>
    <number __type="s32">1</number>
    <array __type="u8" __count="3">1 2 3</array>
    <string __type="str">abc</string>
    </data> @@ -67,7 +67,7 @@ when target tag has a type of "bin"

    Eval:

    $(data).content("number") // [1]
    $(data).content("array") // [1, 2, 3]
    $(data).content("string") // "abc"
    -

    Parameters

    • path: string
    • Optional def: any

    Returns any

  • Get first element named path inside a tag

    Example:

    <data>
    <inner>
    <id __type="s32">1</id>
    </inner>
    <inner>
    <id __type="s32">1</id>
    </inner>
    </data> @@ -77,7 +77,7 @@ when target tag has a type of "bin"

    Eval:

    $(data).element("inner") // <KDataReader>
    $(data).element("inner").obj // { id: [object] }
    $(data).element("inner").number("id") // 1
    -

    Parameters

    • path: string

    Returns KDataReader

  • Get array of all elements named path inside a tag

    Example:

    <data>
    <inner>
    <id __type="s32">1</id>
    </inner>
    <inner>
    <id __type="s32">1</id>
    </inner>
    </data> @@ -87,7 +87,7 @@ when target tag has a type of "bin"

    Eval:

    $(data).elements("inner") // [<KDataReader>, <KDataReader>]
    $(data).elements("inner")[1].number("id") // 2
    -

    Parameters

    • path: string

    Returns KDataReader[]

  • number(path: string, def?: number): number
  • number(path: string, def?: number): number
  • Get a number value from a tag, convert to number if applicable.

    Example:

    <data>
    <inner __type="s64">1</inner>
    <inner __type="s32">2</inner>
    <invalid __type="str">abc</invalid>
    </data> @@ -100,7 +100,7 @@ when target tag has a type of "bin"

    Parameters

    • path: string
    • Optional def: number

      Default return value when target path does not exists or is not valid.

      -

    Returns number

  • numbers(path: string, def?: number[]): number[]

Returns number

  • numbers(path: string, def?: number[]): number[]
  • Get a number array from a tag. Only returns valid arrays when target tag has a type of KNumberType or KNumberGroupType

    Example:

    @@ -111,7 +111,7 @@ when target tag has a type of KNumberTypeEval:

    $(data).bigints("invalid") // undefined
    $(data).bigints("inner") // [3, 4]
    -

    Parameters

    • path: string
    • Optional def: number[]

    Returns number[]

  • str(path: string, def?: string): string
  • str(path: string, def?: string): string
KAttrMap: {}

Attribute object

-

Type declaration

  • [key: string]: string
KBigIntGroupType: "2s64" | "2u64" | "3s64" | "3u64" | "4s64" | "4u64" | "vs8" | "vu8" | "vs16" | "vu16"
KBigIntType: "s64" | "u64"
KEncoding: "shift_jis" | "utf8" | "euc-jp" | "ascii" | "iso-8859-1"
+

Type declaration

  • [key: string]: string
KBigIntGroupType: "2s64" | "2u64" | "3s64" | "3u64" | "4s64" | "4u64" | "vs8" | "vu8" | "vs16" | "vu16"
KBigIntType: "s64" | "u64"
KEncoding: "shift_jis" | "utf8" | "euc-jp" | "ascii" | "iso-8859-1"

Supported response encoding

-
KNumberGroupType: "2s8" | "2u8" | "2s16" | "2u16" | "2s32" | "2u32" | "2f" | "2d" | "3s8" | "3u8" | "3s16" | "3u16" | "3s32" | "3u32" | "3f" | "3d" | "4s8" | "4u8" | "4s16" | "4u16" | "4s32" | "4u32" | "4f" | "4d" | "2b" | "3b" | "4b" | "vb"
KNumberType: "s8" | "u8" | "s16" | "u16" | "s32" | "u32" | "time" | "ip4" | "float" | "double" | "bool"
WebUIEventHandler: (data: any, send?: WebUISend) => Promise<void>

Type declaration

    • +
KNumberGroupType: "2s8" | "2u8" | "2s16" | "2u16" | "2s32" | "2u32" | "2f" | "2d" | "3s8" | "3u8" | "3s16" | "3u16" | "3s32" | "3u32" | "3f" | "3d" | "4s8" | "4u8" | "4s16" | "4u16" | "4s32" | "4u32" | "4f" | "4d" | "2b" | "3b" | "4b" | "vb"
KNumberType: "s8" | "u8" | "s16" | "u16" | "s32" | "u32" | "time" | "ip4" | "float" | "double" | "bool"
WebUIEventHandler: ((data: any, send?: WebUISend) => Promise<void>)

Type declaration

    • Helper type for typing your WebUIEvent.

      If you don't need to send anything. You can ignore send parameter. By default, if the handler don't send anything manually, it will send a redirect response to refresh the page when using form.

      -

      Parameters

      Returns Promise<void>

Variables

CORE_VERSION: string
+

Parameters

Returns Promise<void>

Variables

CORE_VERSION: string

Version string of Asphyxia CORE, for example "v1.19"

-
CORE_VERSION_MAJOR: number
+
CORE_VERSION_MAJOR: number

Major version of Asphyxia CORE, for version v1.19, this number is 1.

-
CORE_VERSION_MINOR: number
+
CORE_VERSION_MINOR: number

Minor version of Asphyxia CORE, for version v1.19, this number is 19.

-

Functions

Functions

  • Helper for reading xml-like formatted data.

    Parameters

    • data: any

    Returns KDataReader

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/typedoc/interfaces/ConfigOption.html b/typedoc/interfaces/ConfigOption.html index c499c19..c2bc125 100644 --- a/typedoc/interfaces/ConfigOption.html +++ b/typedoc/interfaces/ConfigOption.html @@ -1,19 +1,19 @@ ConfigOption | Asphyxia CORE Module API
Options
All
  • Public
  • Public/Protected
  • All
Menu

Details of a config

-

Hierarchy

  • ConfigOption

Index

Properties

default: any
+

Hierarchy

  • ConfigOption

Index

Properties

default: any

Default value of the option

-
desc?: string
+
desc?: string

Provide a description for the option

-
name?: string
+
name?: string

Provide a name to display in WebUI. If not provided, WebUI will use key as the name.

-
needRestart?: boolean
+
needRestart?: boolean

Indicate whether user need to restart CORE to see changes.

-
options?: string[]
+
options?: string[]

Only applies to 'string', provide options in a dropdown menu.

-
range?: [number, number]
+
range?: [number, number]

Only applies to 'integer' and 'float'

-
type: "string" | "boolean" | "integer" | "float"
+
type: "string" | "boolean" | "float" | "integer"

Type of the option

-

Methods

  • validator(data: string): string | true

Methods

  • validator(data: string): string | true
  • Validator for notify user about invalid values. return true to pass the validation. return a string to send a error message to WebUI.

    Parameters

    • data: string

    Returns string | true

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/typedoc/interfaces/EamuseInfo.html b/typedoc/interfaces/EamuseInfo.html index f3755d4..e0b139e 100644 --- a/typedoc/interfaces/EamuseInfo.html +++ b/typedoc/interfaces/EamuseInfo.html @@ -1,3 +1,3 @@ EamuseInfo | Asphyxia CORE Module API
Options
All
  • Public
  • Public/Protected
  • All
Menu

Information about requester

-

Hierarchy

  • EamuseInfo

Index

Properties

method: string
model: string
module: string

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Hierarchy

  • EamuseInfo

Index

Properties

method: string
model: string
module: string

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/typedoc/interfaces/EamuseSend.html b/typedoc/interfaces/EamuseSend.html index a95edba..d133846 100644 --- a/typedoc/interfaces/EamuseSend.html +++ b/typedoc/interfaces/EamuseSend.html @@ -1,6 +1,6 @@ -EamuseSend | Asphyxia CORE Module API
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • EamuseSend

Index

Methods

Returns Promise<void>

Returns Promise<void>

Returns Promise<void>

  • Send empty response with custom status code

    -

    Parameters

    Returns Promise<void>

  • Send empty response with status code 0

    -

    Parameters

    Returns Promise<void>

Returns Promise<void>

status?: number

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/typedoc/interfaces/FileOption.html b/typedoc/interfaces/FileOption.html index ef19624..ec10f15 100644 --- a/typedoc/interfaces/FileOption.html +++ b/typedoc/interfaces/FileOption.html @@ -1,12 +1,12 @@ FileOption | Asphyxia CORE Module API
Options
All
  • Public
  • Public/Protected
  • All
Menu

Details of a data file

-

Hierarchy

  • FileOption

Index

Properties

accept?: string
+

Hierarchy

  • FileOption

Index

Properties

accept?: string

The accept attribute of the file input element. See https://www.w3schools.com/tags/att_input_accept.asp

-
desc?: string
+
desc?: string

Provide a description for the entry

-
name?: string
+
name?: string

Provide a name to display in WebUI. If not provided, WebUI will use filename as the label.

-
required?: boolean
+
required?: boolean

Whether the file is required for the plugin to work, defaults to false.

Note that this only provides visual hint for the file in WebUI.

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/typedoc/interfaces/WebUISend.html b/typedoc/interfaces/WebUISend.html index 73a67c1..137b095 100644 --- a/typedoc/interfaces/WebUISend.html +++ b/typedoc/interfaces/WebUISend.html @@ -1,27 +1,27 @@ -WebUISend | Asphyxia CORE Module API
Options
All
  • Public
  • Public/Protected
  • All
Menu

Hierarchy

  • WebUISend

Index

Methods

  • buffer(buffer: Buffer): void
  • error(code: number, message: string): void
  • Respond with error

    Parameters

    • code: number

      HTTP Code. Like 404, for example

    • message: string

      String message

      -

    Returns void

  • file(path: string): void

Returns void

  • file(path: string): void
  • Respond with file

    Parameters

    • path: string

      Relative file path to this plugin's directory

      -

    Returns void

  • json(data: any): void

Returns void

  • json(data: any): void
  • Respond with json data

    Parameters

    • data: any

      Plain JavaScript object

      -

    Returns void

  • redirect(url: string): void

Returns void

  • redirect(url: string): void
  • Respond with redirect calls This is useful for progressing your WebUI to the next page when using form.

    Parameters

    • url: string

      Target url

      -

    Returns void

  • text(data: string): void

Returns void

  • text(data: string): void
  • Respond with string

    Parameters

    • data: string

      String

      diff --git a/typedoc/modules/DB.html b/typedoc/modules/DB.html index 84b6a43..a22fd8e 100644 --- a/typedoc/modules/DB.html +++ b/typedoc/modules/DB.html @@ -9,7 +9,7 @@

      NOTE: since WebUI can delete data in ProfileSpace, you should refrain from referencing refid in your document to prevent getting residual garbage data.

      If you need to make rival/friend feature, we recommend you to get all profile data by passing null to refid. -There will be 16 profiles maximum which is small enough to manage.

      +This method should be sufficient for playing with friends.

      All query and doc should not have any fields start with __ while __refid being the only exception. However, __refid field will still be ignored while other __ starting fields will cause an error to be thrown.

      -

Index

Functions

  • Count<T>(refid: string, query: Query<T>): Promise<number>
  • Count<T>(query: Query<T>): Promise<number>
  • Find<T>(refid: string, query: Query<T>): Promise<ProfileDoc<T>[]>
  • Find<T>(query: Query<T>): Promise<Doc<T>[]>
  • FindOne<T>(refid: string, query: Query<T>): Promise<ProfileDoc<T>>
  • FindOne<T>(query: Query<T>): Promise<Doc<T>>
  • Insert<T>(refid: string, doc: T): Promise<ProfileDoc<T>>
  • Insert<T>(doc: T): Promise<Doc<T>>
  • Remove<T>(refid: string, query: Query<T>): Promise<number>
  • Remove<T>(query: Query<T>): Promise<number>
  • Update<T>(refid: string, query: Query<T>, update: Update<T>): Promise<{ docs: ProfileDoc<T>[]; updated: number }>
  • Update<T>(query: Query<T>, update: Update<T>): Promise<{ docs: Doc<T>[]; updated: number }>
  • Type parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: ProfileDoc<T>[]; updated: number }>

  • Type parameters

    • T

    Parameters

    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: Doc<T>[]; updated: number }>

  • Upsert<T>(refid: string, query: Query<T>, update: Update<T>): Promise<{ docs: ProfileDoc<T>[]; updated: number; upsert: boolean }>
  • Upsert<T>(query: Query<T>, update: Update<T>): Promise<{ docs: Doc<T>[]; updated: number; upsert: boolean }>
  • Type parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: ProfileDoc<T>[]; updated: number; upsert: boolean }>

  • Type parameters

    • T

    Parameters

    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: Doc<T>[]; updated: number; upsert: boolean }>

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file +

Index

Functions

  • Count<T>(refid: string, query: Query<T>): Promise<number>
  • Count<T>(query: Query<T>): Promise<number>
  • Type Parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>

    Returns Promise<number>

  • Type Parameters

    • T

    Parameters

    • query: Query<T>

    Returns Promise<number>

  • Find<T>(refid: string, query: Query<T>): Promise<ProfileDoc<T>[]>
  • Find<T>(query: Query<T>): Promise<Doc<T>[]>
  • Type Parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>

    Returns Promise<ProfileDoc<T>[]>

  • Type Parameters

    • T

    Parameters

    • query: Query<T>

    Returns Promise<Doc<T>[]>

  • FindOne<T>(refid: string, query: Query<T>): Promise<ProfileDoc<T>>
  • FindOne<T>(query: Query<T>): Promise<Doc<T>>
  • Type Parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>

    Returns Promise<ProfileDoc<T>>

  • Type Parameters

    • T

    Parameters

    • query: Query<T>

    Returns Promise<Doc<T>>

  • Insert<T>(refid: string, doc: T): Promise<ProfileDoc<T>>
  • Insert<T>(doc: T): Promise<Doc<T>>
  • Type Parameters

    • T

    Parameters

    • refid: string
    • doc: T

    Returns Promise<ProfileDoc<T>>

  • Type Parameters

    • T

    Parameters

    • doc: T

    Returns Promise<Doc<T>>

  • Remove<T>(refid: string, query: Query<T>): Promise<number>
  • Remove<T>(query: Query<T>): Promise<number>
  • Type Parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>

    Returns Promise<number>

  • Type Parameters

    • T

    Parameters

    • query: Query<T>

    Returns Promise<number>

  • Update<T>(refid: string, query: Query<T>, update: Update<T>): Promise<{ docs: ProfileDoc<T>[]; updated: number }>
  • Update<T>(query: Query<T>, update: Update<T>): Promise<{ docs: Doc<T>[]; updated: number }>
  • Type Parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: ProfileDoc<T>[]; updated: number }>

  • Type Parameters

    • T

    Parameters

    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: Doc<T>[]; updated: number }>

  • Upsert<T>(refid: string, query: Query<T>, update: Update<T>): Promise<{ docs: ProfileDoc<T>[]; updated: number; upsert: boolean }>
  • Upsert<T>(query: Query<T>, update: Update<T>): Promise<{ docs: Doc<T>[]; updated: number; upsert: boolean }>
  • Type Parameters

    • T

    Parameters

    • refid: string
    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: ProfileDoc<T>[]; updated: number; upsert: boolean }>

  • Type Parameters

    • T

    Parameters

    • query: Query<T>
    • update: Update<T>

    Returns Promise<{ docs: Doc<T>[]; updated: number; upsert: boolean }>

Legend

  • Constructor
  • Property
  • Method
  • Property
  • Method

Settings

Theme

Generated using TypeDoc

\ No newline at end of file diff --git a/typedoc/modules/IO.html b/typedoc/modules/IO.html index 975a94e..159ca26 100644 --- a/typedoc/modules/IO.html +++ b/typedoc/modules/IO.html @@ -4,15 +4,15 @@

DO NOT use IO for savedata. Please use DB namespace so your data can be managed by WebUI.

Also, due to difference between operating systems, you should always prepare your files using ascii path. Both UTF-8 and local encodings will have cross-platform compatibility issues.

-

Index

Functions

  • Exists(path: string): boolean

Index

Functions

  • Exists(path: string): boolean
  • Synchronously tests whether or not the given path exists by checking with the file system.

    Parameters

    • path: string

      A path to a file or directory. If a URL is provided, it must use the file: protocol. URL support is experimental.

      -

    Returns boolean

  • ReadDir(path: string): Promise<{ name: string; type: "file" | "dir" | "unsupported" }[]>

Returns boolean

  • ReadDir(path: string): Promise<{ name: string; type: "file" | "dir" | "unsupported" }[]>
  • Asynchronously read a directory.

    Parameters

    • path: string

      A path to a directory.

      -

    Returns Promise<{ name: string; type: "file" | "dir" | "unsupported" }[]>

  • ReadFile(path: string, options: { encoding?: null; flag?: string }): Promise<Buffer | null>
  • ReadFile(path: string, options: string | { encoding: string; flag?: string }): Promise<string | null>
  • ReadFile(path: string, options: string | { encoding?: string; flag?: string }): Promise<string | Buffer | null>
  • ReadFile(path: string): Promise<Buffer | null>

Returns Promise<{ name: string; type: "file" | "dir" | "unsupported" }[]>

  • ReadFile(path: string, options: { encoding?: null; flag?: string }): Promise<Buffer | null>
  • ReadFile(path: string, options: string | { encoding: string; flag?: string }): Promise<string | null>
  • ReadFile(path: string, options: string | { encoding?: string; flag?: string }): Promise<string | Buffer | null>
  • ReadFile(path: string): Promise<Buffer | null>
  • Asynchronously reads the entire contents of a file.

    Parameters

    • path: string

      A path to a file. @@ -21,7 +21,7 @@ If a file descriptor is provided, the underlying file will not be close

      An object that may contain an optional flag. If a flag is not provided, it defaults to 'r'.

      Returns null if any error occurs while reading a file

      -
      • Optional encoding?: null
      • Optional flag?: string

    Returns Promise<Buffer | null>

  • +
    • Optional encoding?: null
    • Optional flag?: string

Returns Promise<Buffer | null>

  • Asynchronously reads the entire contents of a file.

    Parameters

    • path: string

      A path to a file. @@ -30,7 +30,7 @@ If a file descriptor is provided, the underlying file will not be close

      Either the encoding for the result, or an object that contains the encoding and an optional flag. If a flag is not provided, it defaults to 'r'.

      Returns null if any error occurs while reading a file

      -

    Returns Promise<string | null>

  • +
  • Returns Promise<string | null>

  • Asynchronously reads the entire contents of a file.

    Parameters

    • path: string

      A path to a file. @@ -39,15 +39,15 @@ If a file descriptor is provided, the underlying file will not be close

      Either the encoding for the result, or an object that contains the encoding and an optional flag. If a flag is not provided, it defaults to 'r'.

      Returns null if any error occurs while reading a file

      -

    Returns Promise<string | Buffer | null>

  • +
  • Returns Promise<string | Buffer | null>

  • Asynchronously reads the entire contents of a file.

    Parameters

    • path: string

      A path to a file. If a file descriptor is provided, the underlying file will not be closed automatically.

      Returns null if any error occurs while reading a file.

      -

    Returns Promise<Buffer | null>

    • Resolve(path: string): string

    Returns Promise<Buffer | null>

    • Resolve(path: string): string
    • Resolve a relative path starting from your plugin directory to an absolute path.

      -

      Parameters

      • path: string

      Returns string

    • WriteFile(path: string, data: any, options: string | { encoding?: string; flag?: string; mode?: string | number }): Promise<void>
    • WriteFile(path: string, data: any): Promise<void>
    • WriteFile(path: string, data: any, options: string | { encoding?: string; flag?: string; mode?: string | number }): Promise<void>
    • WriteFile(path: string, data: any): Promise<void>
    • Asynchronously writes data to a file, replacing the file if it already exists.

      Parameters

      • path: string

        A path to a file. @@ -60,7 +60,7 @@ If encoding is not supplied, the default of 'utf8'mode is not supplied, the default of 0o666 is used. If mode is a string, it is parsed as an octal integer. If flag is not supplied, the default of 'w' is used.

        -

      Returns Promise<void>

    • +

    Returns Promise<void>

  • Asynchronously writes data to a file, replacing the file if it already exists.

    Parameters

    • path: string

      A path to a file. diff --git a/typedoc/modules/K.html b/typedoc/modules/K.html index 87b3a6a..2b79e2a 100644 --- a/typedoc/modules/K.html +++ b/typedoc/modules/K.html @@ -1,31 +1,31 @@ K | Asphyxia CORE Module API

      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      K stands for Konstruct

      Helper for constructing xml-like javascript object.

      -

      Index

      Functions

      Functions

      • ARRAY<S>(type: S, content: Buffer, attr?: KAttrMap): KARRAY<S>
      • ARRAY<S>(type: S, content: number[], attr?: KAttrMap): KARRAY<S>
      • ARRAY<S>(type: S, content: bigint[], attr?: KAttrMap): KARRAY<S>

      Index

      Functions

      Functions

      • ARRAY<S>(type: S, content: Buffer, attr?: KAttrMap): KARRAY<S>
      • ARRAY<S>(type: S, content: number[], attr?: KAttrMap): KARRAY<S>
      • ARRAY<S>(type: S, content: bigint[], attr?: KAttrMap): KARRAY<S>
      • Example:

        {
        tag: K.ARRAY('s32', [1, 2, 3], {attr: "4"})
        }

        Represents:

        <tag __type="s32" __count="3" attr="2">1 2 3</tag>
         
        -

        Type parameters

        • S: "s8" | "u8"

        Parameters

        • type: S
          +

          Type Parameters

          • S extends "s8" | "u8"

          Parameters

          • type: S

            __type attribute, which is used during encoding and compression

          • content: Buffer

            array of data, __count attribute will be automatically set to content.length

          • Optional attr: KAttrMap

            attribute map in addition to __type and __count

            -

          Returns KARRAY<S>

        • Type parameters

          Parameters

          • type: S
          • content: number[]
          • Optional attr: KAttrMap

          Returns KARRAY<S>

        • Type parameters

          Parameters

          • type: S
          • content: bigint[]
          • Optional attr: KAttrMap

          Returns KARRAY<S>

      • ATTR<M, T>(attr: M, inner?: T): KATTR<M> & T

      Returns KARRAY<S>

    • Type Parameters

      Parameters

      • type: S
      • content: number[]
      • Optional attr: KAttrMap

      Returns KARRAY<S>

    • Type Parameters

      Parameters

      • type: S
      • content: bigint[]
      • Optional attr: KAttrMap

      Returns KARRAY<S>

    • ATTR<M, T>(attr: M, inner?: T): KATTR<M> & T
    • Example:

      {
      tag: K.ATTR({attr: "1"}, {
      inner: [{}, {}]
      })
      }

      Represents:

      <tag attr="1">
      <inner/>
      <inner/>
      </tag>
      -

      Type parameters

      Parameters

      • attr: M
        +

        Type Parameters

        Parameters

        • attr: M

          Attribute map

        • Optional inner: T

          Inner tag/data

          -

        Returns KATTR<M> & T

    • ITEM(type: "str", content: string, attr?: KAttrMap): KITEM<"str">
    • ITEM(type: "bin", content: Buffer, attr?: KAttrMap): KITEM<"bin">
    • ITEM(type: "ip4", content: string, attr?: KAttrMap): KITEM<"ip4">
    • ITEM(type: "bool", content: boolean, attr?: KAttrMap): KITEM<"bool">
    • ITEM<S>(type: S, content: number, attr?: KAttrMap): KITEM<S>
    • ITEM<S>(type: S, content: bigint, attr?: KAttrMap): KITEM<S>
    • ITEM<S>(type: S, content: number[], attr?: KAttrMap): KITEM<S>
    • ITEM<S>(type: S, content: bigint[], attr?: KAttrMap): KITEM<S>

    Returns KATTR<M> & T

    • ITEM(type: "str", content: string, attr?: KAttrMap): KITEM<"str">
    • ITEM(type: "bin", content: Buffer, attr?: KAttrMap): KITEM<"bin">
    • ITEM(type: "ip4", content: string, attr?: KAttrMap): KITEM<"ip4">
    • ITEM(type: "bool", content: boolean, attr?: KAttrMap): KITEM<"bool">
    • ITEM<S>(type: S, content: number, attr?: KAttrMap): KITEM<S>
    • ITEM<S>(type: S, content: bigint, attr?: KAttrMap): KITEM<S>
    • ITEM<S>(type: S, content: number[], attr?: KAttrMap): KITEM<S>
    • ITEM<S>(type: S, content: bigint[], attr?: KAttrMap): KITEM<S>
    • Example:

      {
      tag: K.ITEM('s32', 1, {attr: "2"})
      }
      @@ -38,4 +38,4 @@

      data of specified type

    • Optional attr: KAttrMap

      attribute map in addition to __type

      -

    Returns KITEM<"str">

  • Parameters

    • type: "bin"
    • content: Buffer
    • Optional attr: KAttrMap

    Returns KITEM<"bin">

  • Parameters

    • type: "ip4"
    • content: string
    • Optional attr: KAttrMap

    Returns KITEM<"ip4">

  • Parameters

    • type: "bool"
    • content: boolean
    • Optional attr: KAttrMap

    Returns KITEM<"bool">

  • Type parameters

    Parameters

    • type: S
    • content: number
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Type parameters

    Parameters

    • type: S
    • content: bigint
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Type parameters

    Parameters

    • type: S
    • content: number[]
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Type parameters

    Parameters

    • type: S
    • content: bigint[]
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Legend

    • Constructor
    • Property
    • Method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file +

    Returns KITEM<"str">

  • Parameters

    • type: "bin"
    • content: Buffer
    • Optional attr: KAttrMap

    Returns KITEM<"bin">

  • Parameters

    • type: "ip4"
    • content: string
    • Optional attr: KAttrMap

    Returns KITEM<"ip4">

  • Parameters

    • type: "bool"
    • content: boolean
    • Optional attr: KAttrMap

    Returns KITEM<"bool">

  • Type Parameters

    Parameters

    • type: S
    • content: number
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Type Parameters

    Parameters

    • type: S
    • content: bigint
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Type Parameters

    Parameters

    • type: S
    • content: number[]
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Type Parameters

    Parameters

    • type: S
    • content: bigint[]
    • Optional attr: KAttrMap

    Returns KITEM<S>

  • Legend

    • Constructor
    • Property
    • Method
    • Property
    • Method

    Settings

    Theme

    Generated using TypeDoc

    \ No newline at end of file diff --git a/typedoc/modules/R.html b/typedoc/modules/R.html index bcda5e2..1021ba6 100644 --- a/typedoc/modules/R.html +++ b/typedoc/modules/R.html @@ -1,27 +1,27 @@ R | Asphyxia CORE Module API
    Options
    All
    • Public
    • Public/Protected
    • All
    Menu

    R stands for Register

    These functions can only be called in plugins' register() function.

    -

    Index

    Functions

    Index

    Functions

    • Register a configuration option.

      Parameters

      • key: string

        config key

      • options: ConfigOption

        See ConfigOption

        NOTE: options.validator will only notify user about invalid value. It wouldn't stop user from saving invalid value.

        -

      Returns void

    • Contributor(name: string, link?: string): void

    Returns void

    • Contributor(name: string, link?: string): void
    • Register a contributor.

      Contributors will show up in WebUI.

      Parameters

      • name: string

        Contributor's name

      • Optional link: string

        Contributor's homepage

        -

      Returns void

    • DataFile(path: string, options?: FileOption): void

    Returns void

    • DataFile(path: string, options?: FileOption): void
    • Register a data file upload entry.

      Parameters

      • path: string

        a path (with filename) where the uploaded file will be saved to.

      • Optional options: FileOption

        See FileOption

        -

      Returns void

    • ExtraModuleHandler(handler: (model: string) => string | string[] | Promise<string | string[]>): void

    Returns void

    • ExtraModuleHandler(handler: ((model: string) => string | string[] | Promise<string | string[]>)): void
    • Register a handler for adding extra modules

      Core has the following modules built-in:

        @@ -47,13 +47,13 @@
      • globby

      Callback can be async function if you want to use await for your DB operations.

      -

      Parameters

      • handler: (model: string) => string | string[] | Promise<string | string[]>
          • (model: string): string | string[] | Promise<string | string[]>
          • Parameters

            • model: string

            Returns string | string[] | Promise<string | string[]>

      Returns void

    • GameCode(code: string): void
    • +

      Parameters

      • handler: ((model: string) => string | string[] | Promise<string | string[]>)
          • (model: string): string | string[] | Promise<string | string[]>
          • Parameters

            • model: string

            Returns string | string[] | Promise<string | string[]>

      Returns void

    • GameCode(code: string): void
    • Register a target game code to your plugin for checking savedata.

      You should only call this from your plugin's register() function.

      Parameters

      • code: string

        Model code of your target machine, usually three capital letters

        -

      Returns void

    Returns void

    • Register your custom route.

      You should only call this from your plugin's register() function.

      Parameters

      • method: string
        @@ -64,13 +64,13 @@ A boolean can be passed if you don't need any processing: - true: Sending empty response with status code 0 - false: Sending empty response with status code 1

        -

      Returns void

    Returns void

    • Register all unhandled routes for a game.

      You should only call this from your plugin's register() function.

      Parameters

      • Optional handler: EamusePluginRoute

        Your custom route function/method following the type EamusePluginRoute. If undefined, the router will apply a default handler that prints method names.

        -

      Returns void

    Returns void

    • Register a WebUI event callback

      Which can be called in WebUI using emit(event) function or a post message to /emit/<event>

      Callback can be async function if you want to use await for your DB operations.

      diff --git a/typedoc/modules/U.html b/typedoc/modules/U.html index 91f23e5..ce44b5f 100644 --- a/typedoc/modules/U.html +++ b/typedoc/modules/U.html @@ -1,38 +1,38 @@ U | Asphyxia CORE Module API
      Options
      All
      • Public
      • Public/Protected
      • All
      Menu

      U stands for Utilities

      You can find miscellaneous helpers here

      -

      Index

      Functions

      • Card2NFC(card: string): string | null

      Index

      Functions

      • Card2NFC(card: string): string | null
      • Convert Card Number / Data Transfer Number to NFC serial

        returns null if the card number is invalid

        Parameters

        • card: string

          Card Number / Data Transfer Number

          -

        Returns string | null

      • DecodeString(buffer: Buffer, encoding: KEncoding): string

      Returns string | null

    • DecodeString(buffer: Buffer, encoding: KEncoding): string
    • Decode a string from a specified encoding

      returns a string

      Parameters

      Returns string

    • EncodeString(str: string, encoding: KEncoding): Buffer

    Returns string

    • EncodeString(str: string, encoding: KEncoding): Buffer
    • Encode a string into a specified encoding

      returns a binary buffer

      Parameters

      Returns Buffer

    • GetConfig(key: string): any

    Returns Buffer

    • GetConfig(key: string): any
    • Get config from user configuration file.

      Parameters

      • key: string
        -

      Returns any

    • NFC2Card(nfc: string): string | null

    Returns any

    • NFC2Card(nfc: string): string | null
    • Convert NFC serial to Card Number or Data Transfer Number

      returns null if the nfc serial is invalid

      -

      Parameters

      • nfc: string

      Returns string | null

    • parseXML(xml: string, simplify?: boolean): any
    • parseXML(xml: string, simplify?: boolean): any
    • Convert xml string to javascript object. Output will always be plain javascript string.

      Parameters

      • xml: string

        xml string

      • Optional simplify: boolean

        if true, the parser will ignore attributes and only generate string values. (default: true)

        -

      Returns any

    • toXML(data: any): string

    Returns any

    • toXML(data: any): string
    • Convert json data to xml string.

      Parameters

      • data: any

        xml-like javascript object

        diff --git a/typedoc/modules/_.html b/typedoc/modules/_.html index 9bc8867..e2f2f5d 100644 --- a/typedoc/modules/_.html +++ b/typedoc/modules/_.html @@ -1 +1 @@ -$ | Asphyxia CORE Module API
        Options
        All
        • Public
        • Public/Protected
        • All
        Menu

        Index

        Functions

        • ATTR(data: any, path?: string): KAttrMap
        • BIGINT(data: any, path: string, def?: bigint): bigint
        • BIGINTS(data: any, path: string, def?: bigint[]): bigint[]
        • BOOL(data: any, path: string): boolean
        • BUFFER(data: any, path: string, def?: Buffer): Buffer
        • CONTENT(data: any, path: string, def?: any): any
        • ELEMENT(data: any, path: string, def?: any): any
        • ELEMENTS(data: any, path: string, def?: any): any
        • NUMBER(data: any, path: string, def?: number): number
        • NUMBERS(data: any, path: string, def?: number[]): number[]
        • STR(data: any, path: string, def?: string): string

        Legend

        • Constructor
        • Property
        • Method
        • Property
        • Method

        Settings

        Theme

        Generated using TypeDoc

        \ No newline at end of file +$ | Asphyxia CORE Module API
        Options
        All
        • Public
        • Public/Protected
        • All
        Menu

        Index

        Functions

        • ATTR(data: any, path?: string): KAttrMap
        • Parameters

          • data: any
          • Optional path: string

          Returns KAttrMap

        • BIGINT(data: any, path: string, def?: bigint): bigint
        • Parameters

          • data: any
          • path: string
          • Optional def: bigint

          Returns bigint

        • BIGINTS(data: any, path: string, def?: bigint[]): bigint[]
        • Parameters

          • data: any
          • path: string
          • Optional def: bigint[]

          Returns bigint[]

        • BOOL(data: any, path: string): boolean
        • Parameters

          • data: any
          • path: string

          Returns boolean

        • BUFFER(data: any, path: string, def?: Buffer): Buffer
        • Parameters

          • data: any
          • path: string
          • Optional def: Buffer

          Returns Buffer

        • CONTENT(data: any, path: string, def?: any): any
        • Parameters

          • data: any
          • path: string
          • Optional def: any

          Returns any

        • ELEMENT(data: any, path: string, def?: any): any
        • Parameters

          • data: any
          • path: string
          • Optional def: any

          Returns any

        • ELEMENTS(data: any, path: string, def?: any): any
        • Parameters

          • data: any
          • path: string
          • Optional def: any

          Returns any

        • NUMBER(data: any, path: string, def?: number): number
        • Parameters

          • data: any
          • path: string
          • Optional def: number

          Returns number

        • NUMBERS(data: any, path: string, def?: number[]): number[]
        • Parameters

          • data: any
          • path: string
          • Optional def: number[]

          Returns number[]

        • STR(data: any, path: string, def?: string): string
        • Parameters

          • data: any
          • path: string
          • Optional def: string

          Returns string

        Legend

        • Constructor
        • Property
        • Method
        • Property
        • Method

        Settings

        Theme

        Generated using TypeDoc

        \ No newline at end of file