From a11eb9df1edb70e925d6bd4f196f0ef946de3a2e Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sun, 8 Mar 2026 10:42:03 +0100 Subject: [PATCH] Update docs --- docs/generated/assets/hierarchy.js | 1 + docs/generated/assets/icons.js | 18 + docs/generated/assets/icons.svg | 1 + docs/generated/assets/main.js | 9 +- docs/generated/assets/navigation.js | 2 +- docs/generated/assets/search.js | 2 +- docs/generated/assets/style.css | 2817 +++++++++-------- docs/generated/enums/ListenOptions.html | 6 +- docs/generated/functions/App.html | 4 +- docs/generated/functions/SSLApp.html | 4 +- docs/generated/functions/getParts.html | 4 +- .../functions/us_listen_socket_close.html | 4 +- .../functions/us_socket_local_port.html | 4 +- docs/generated/hierarchy.html | 1 + docs/generated/index.html | 39 +- docs/generated/interfaces/AppOptions.html | 20 +- docs/generated/interfaces/HttpRequest.html | 38 +- docs/generated/interfaces/HttpResponse.html | 96 +- docs/generated/interfaces/MultipartField.html | 10 +- docs/generated/interfaces/TemplatedApp.html | 93 +- docs/generated/interfaces/WebSocket.html | 69 +- .../interfaces/WebSocketBehavior.html | 78 +- .../interfaces/us_listen_socket.html | 4 +- docs/generated/interfaces/us_socket.html | 4 +- .../interfaces/us_socket_context_t.html | 4 +- docs/generated/types/CompressOptions.html | 4 +- docs/generated/types/RecognizedString.html | 6 +- .../variables/DEDICATED_COMPRESSOR_128KB.html | 4 +- .../variables/DEDICATED_COMPRESSOR_16KB.html | 4 +- .../variables/DEDICATED_COMPRESSOR_256KB.html | 4 +- .../variables/DEDICATED_COMPRESSOR_32KB.html | 4 +- .../variables/DEDICATED_COMPRESSOR_3KB.html | 4 +- .../variables/DEDICATED_COMPRESSOR_4KB.html | 4 +- .../variables/DEDICATED_COMPRESSOR_64KB.html | 4 +- .../variables/DEDICATED_COMPRESSOR_8KB.html | 4 +- .../variables/DEDICATED_DECOMPRESSOR.html | 4 +- .../DEDICATED_DECOMPRESSOR_16KB.html | 4 +- .../variables/DEDICATED_DECOMPRESSOR_1KB.html | 4 +- .../variables/DEDICATED_DECOMPRESSOR_2KB.html | 4 +- .../DEDICATED_DECOMPRESSOR_32KB.html | 4 +- .../variables/DEDICATED_DECOMPRESSOR_4KB.html | 4 +- .../DEDICATED_DECOMPRESSOR_512B.html | 4 +- .../variables/DEDICATED_DECOMPRESSOR_8KB.html | 4 +- docs/generated/variables/DISABLED.html | 4 +- .../variables/SHARED_COMPRESSOR.html | 4 +- .../variables/SHARED_DECOMPRESSOR.html | 4 +- docs/tsconfig.json | 2 +- 47 files changed, 1818 insertions(+), 1602 deletions(-) create mode 100644 docs/generated/assets/hierarchy.js create mode 100644 docs/generated/assets/icons.js create mode 100644 docs/generated/assets/icons.svg create mode 100644 docs/generated/hierarchy.html diff --git a/docs/generated/assets/hierarchy.js b/docs/generated/assets/hierarchy.js new file mode 100644 index 00000000..fb85f0ad --- /dev/null +++ b/docs/generated/assets/hierarchy.js @@ -0,0 +1 @@ +window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzytWsqqurQUAmx4Kpg==" \ No newline at end of file diff --git a/docs/generated/assets/icons.js b/docs/generated/assets/icons.js new file mode 100644 index 00000000..3ae8f55e --- /dev/null +++ b/docs/generated/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/generated/assets/icons.svg b/docs/generated/assets/icons.svg new file mode 100644 index 00000000..10db10be --- /dev/null +++ b/docs/generated/assets/icons.svg @@ -0,0 +1 @@ +MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file diff --git a/docs/generated/assets/main.js b/docs/generated/assets/main.js index 7270cff8..64b80ab2 100644 --- a/docs/generated/assets/main.js +++ b/docs/generated/assets/main.js @@ -1,8 +1,9 @@ "use strict"; -"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.handleValueChange()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(e=>{e.style.display="block";let n=Array.from(e.querySelectorAll(".tsd-index-link")).every(r=>r.offsetParent==null);e.style.display=n?"none":"block"})}};var Z=class extends C{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings.","hierarchy_expand":"Expand","hierarchy_collapse":"Collapse","folder":"Folder","search_index_not_available":"The search index is not available","search_no_results_found_for_0":"No results found for {0}","kind_1":"Project","kind_2":"Module","kind_4":"Namespace","kind_8":"Enumeration","kind_16":"Enumeration Member","kind_32":"Variable","kind_64":"Function","kind_128":"Class","kind_256":"Interface","kind_512":"Constructor","kind_1024":"Property","kind_2048":"Method","kind_4096":"Call Signature","kind_8192":"Index Signature","kind_16384":"Constructor Signature","kind_32768":"Parameter","kind_65536":"Type Literal","kind_131072":"Type Parameter","kind_262144":"Accessor","kind_524288":"Get Signature","kind_1048576":"Set Signature","kind_2097152":"Type Alias","kind_4194304":"Reference","kind_8388608":"Document"}; +"use strict";(()=>{var Ke=Object.create;var he=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var et=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var tt=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ze(e))!Ye.call(t,i)&&i!==n&&he(t,i,{get:()=>e[i],enumerable:!(r=Ge(e,i))||r.enumerable});return t};var nt=(t,e,n)=>(n=t!=null?Ke(Xe(t)):{},tt(e||!t||!t.__esModule?he(n,"default",{value:t,enumerable:!0}):n,t));var ye=et((me,ge)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=(function(e){return function(n){e.console&&console.warn&&console.warn(n)}})(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,l],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(oc?d+=2:a==c&&(n+=r[l+1]*i[d+1],l+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}if(s.str.length==0&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),f=s.str.charAt(1),p;f in s.node.edges?p=s.node.edges[f]:(p=new t.TokenSet,s.node.edges[f]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),c=0;c1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},(function(e,n){typeof define=="function"&&define.amd?define(n):typeof me=="object"?ge.exports=n():e.lunr=n()})(this,function(){return t})})()});var M,G={getItem(){return null},setItem(){}},K;try{K=localStorage,M=K}catch{K=G,M=G}var S={getItem:t=>M.getItem(t),setItem:(t,e)=>M.setItem(t,e),disableWritingLocalStorage(){M=G},disable(){localStorage.clear(),M=G},enable(){M=K}};window.TypeDoc||={disableWritingLocalStorage(){S.disableWritingLocalStorage()},disableLocalStorage:()=>{S.disable()},enableLocalStorage:()=>{S.enable()}};window.translations||={copy:"Copy",copied:"Copied!",normally_hidden:"This member is normally hidden due to your filter settings.",hierarchy_expand:"Expand",hierarchy_collapse:"Collapse",search_index_not_available:"The search index is not available",search_no_results_found_for_0:"No results found for {0}",folder:"Folder",kind_1:"Project",kind_2:"Module",kind_4:"Namespace",kind_8:"Enumeration",kind_16:"Enumeration Member",kind_32:"Variable",kind_64:"Function",kind_128:"Class",kind_256:"Interface",kind_512:"Constructor",kind_1024:"Property",kind_2048:"Method",kind_4096:"Call Signature",kind_8192:"Index Signature",kind_16384:"Constructor Signature",kind_32768:"Parameter",kind_65536:"Type Literal",kind_131072:"Type Parameter",kind_262144:"Accessor",kind_524288:"Get Signature",kind_1048576:"Set Signature",kind_2097152:"Type Alias",kind_4194304:"Reference",kind_8388608:"Document"};var pe=[];function X(t,e){pe.push({selector:e,constructor:t})}var Z=class{alwaysVisibleMember=null;constructor(){this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){pe.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!rt(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function rt(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var fe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var Ie=nt(ye(),1);async function R(t){let e=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),r=new Blob([e]).stream().pipeThrough(new DecompressionStream("deflate")),i=await new Response(r).text();return JSON.parse(i)}var Y="closing",ae="tsd-overlay";function it(){let t=Math.abs(window.innerWidth-document.documentElement.clientWidth);document.body.style.overflow="hidden",document.body.style.paddingRight=`${t}px`}function st(){document.body.style.removeProperty("overflow"),document.body.style.removeProperty("padding-right")}function xe(t,e){t.addEventListener("animationend",()=>{t.classList.contains(Y)&&(t.classList.remove(Y),document.getElementById(ae)?.remove(),t.close(),st())}),t.addEventListener("cancel",n=>{n.preventDefault(),ve(t)}),e?.closeOnClick&&document.addEventListener("click",n=>{t.open&&!t.contains(n.target)&&ve(t)},!0)}function Ee(t){if(t.open)return;let e=document.createElement("div");e.id=ae,document.body.appendChild(e),t.showModal(),it()}function ve(t){if(!t.open)return;document.getElementById(ae)?.classList.add(Y),t.classList.add(Y)}var I=class{el;app;constructor(e){this.el=e.el,this.app=e.app}};var be=document.head.appendChild(document.createElement("style"));be.dataset.for="filters";var le={};function we(t){for(let e of t.split(/\s+/))if(le.hasOwnProperty(e)&&!le[e])return!0;return!1}var ee=class extends I{key;value;constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),be.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=S.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){S.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),le[`tsd-is-${this.el.name}`]=this.value,this.app.filterChanged(),this.app.updateIndexVisibility()}};var Le=0;async function Se(t,e){if(!window.searchData)return;let n=await R(window.searchData);t.data=n,t.index=Ie.Index.load(n.index),e.innerHTML=""}function _e(){let t=document.getElementById("tsd-search-trigger"),e=document.getElementById("tsd-search"),n=document.getElementById("tsd-search-input"),r=document.getElementById("tsd-search-results"),i=document.getElementById("tsd-search-script"),s=document.getElementById("tsd-search-status");if(!(t&&e&&n&&r&&i&&s))throw new Error("Search controls missing");let o={base:document.documentElement.dataset.base};o.base.endsWith("/")||(o.base+="/"),i.addEventListener("error",()=>{let a=window.translations.search_index_not_available;Pe(s,a)}),i.addEventListener("load",()=>{Se(o,s)}),Se(o,s),ot({trigger:t,searchEl:e,results:r,field:n,status:s},o)}function ot(t,e){let{field:n,results:r,searchEl:i,status:s,trigger:o}=t;xe(i,{closeOnClick:!0});function a(){Ee(i),n.setSelectionRange(0,n.value.length)}o.addEventListener("click",a),n.addEventListener("input",fe(()=>{at(r,n,s,e)},200)),n.addEventListener("keydown",l=>{if(r.childElementCount===0||l.ctrlKey||l.metaKey||l.altKey)return;let d=n.getAttribute("aria-activedescendant"),f=d?document.getElementById(d):null;if(f){let p=!1,v=!1;switch(l.key){case"Home":case"End":case"ArrowLeft":case"ArrowRight":v=!0;break;case"ArrowDown":case"ArrowUp":p=l.shiftKey;break}(p||v)&&ke(n)}if(!l.shiftKey)switch(l.key){case"Enter":f?.querySelector("a")?.click();break;case"ArrowUp":Te(r,n,f,-1),l.preventDefault();break;case"ArrowDown":Te(r,n,f,1),l.preventDefault();break}});function c(){ke(n)}n.addEventListener("change",c),n.addEventListener("blur",c),n.addEventListener("click",c),document.body.addEventListener("keydown",l=>{if(l.altKey||l.metaKey||l.shiftKey)return;let d=l.ctrlKey&&l.key==="k",f=!l.ctrlKey&&!ut()&&l.key==="/";(d||f)&&(l.preventDefault(),a())})}function at(t,e,n,r){if(!r.index||!r.data)return;t.innerHTML="",n.innerHTML="",Le+=1;let i=e.value.trim(),s;if(i){let a=i.split(" ").map(c=>c.length?`*${c}*`:"").join(" ");s=r.index.search(a).filter(({ref:c})=>{let l=r.data.rows[Number(c)].classes;return!l||!we(l)})}else s=[];if(s.length===0&&i){let a=window.translations.search_no_results_found_for_0.replace("{0}",` "${te(i)}" `);Pe(n,a);return}for(let a=0;ac.score-a.score);let o=Math.min(10,s.length);for(let a=0;a`,f=Ce(c.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(f+=` (score: ${s[a].score.toFixed(2)})`),c.parent&&(f=` + ${Ce(c.parent,i)}.${f}`);let p=document.createElement("li");p.id=`tsd-search:${Le}-${a}`,p.role="option",p.ariaSelected="false",p.classList.value=c.classes??"";let v=document.createElement("a");v.tabIndex=-1,v.href=r.base+c.url,v.innerHTML=d+`${f}`,p.append(v),t.appendChild(p)}}function Te(t,e,n,r){let i;if(r===1?i=n?.nextElementSibling||t.firstElementChild:i=n?.previousElementSibling||t.lastElementChild,i!==n){if(!i||i.role!=="option"){console.error("Option missing");return}i.ariaSelected="true",i.scrollIntoView({behavior:"smooth",block:"nearest"}),e.setAttribute("aria-activedescendant",i.id),n?.setAttribute("aria-selected","false")}}function ke(t){let e=t.getAttribute("aria-activedescendant");(e?document.getElementById(e):null)?.setAttribute("aria-selected","false"),t.setAttribute("aria-activedescendant","")}function Ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(te(t.substring(s,o)),`${te(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(te(t.substring(s))),i.join("")}var lt={"&":"&","<":"<",">":">","'":"'",'"':"""};function te(t){return t.replace(/[&<>"'"]/g,e=>lt[e])}function Pe(t,e){t.innerHTML=e?`
${e}
`:""}var ct=["button","checkbox","file","hidden","image","radio","range","reset","submit"];function ut(){let t=document.activeElement;return t?t.isContentEditable||t.tagName==="TEXTAREA"||t.tagName==="SEARCH"?!0:t.tagName==="INPUT"&&!ct.includes(t.type):!1}var D="mousedown",Me="mousemove",$="mouseup",ne={x:0,y:0},Qe=!1,ce=!1,dt=!1,F=!1,Oe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(Oe?"is-mobile":"not-mobile");Oe&&"ontouchstart"in document.documentElement&&(dt=!0,D="touchstart",Me="touchmove",$="touchend");document.addEventListener(D,t=>{ce=!0,F=!1;let e=D=="touchstart"?t.targetTouches[0]:t;ne.y=e.pageY||0,ne.x=e.pageX||0});document.addEventListener(Me,t=>{if(ce&&!F){let e=D=="touchstart"?t.targetTouches[0]:t,n=ne.x-(e.pageX||0),r=ne.y-(e.pageY||0);F=Math.sqrt(n*n+r*r)>10}});document.addEventListener($,()=>{ce=!1});document.addEventListener("click",t=>{Qe&&(t.preventDefault(),t.stopImmediatePropagation(),Qe=!1)});var re=class extends I{active;className;constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener($,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(D,n=>this.onDocumentPointerDown(n)),document.addEventListener($,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){F||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!F&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var ue=new Map,de=class{open;accordions=[];key;constructor(e,n){this.key=e,this.open=n}add(e){this.accordions.push(e),e.open=this.open,e.addEventListener("toggle",()=>{this.toggle(e.open)})}toggle(e){for(let n of this.accordions)n.open=e;S.setItem(this.key,e.toString())}},ie=class extends I{constructor(e){super(e);let n=this.el.querySelector("summary"),r=n.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)});let i=`tsd-accordion-${n.dataset.key??n.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`,s;if(ue.has(i))s=ue.get(i);else{let o=S.getItem(i),a=o?o==="true":this.el.open;s=new de(i,a),ue.set(i,s)}s.add(this.el)}};function He(t){let e=S.getItem("tsd-theme")||"os";t.value=e,Ae(e),t.addEventListener("change",()=>{S.setItem("tsd-theme",t.value),Ae(t.value)})}function Ae(t){document.documentElement.dataset.theme=t}var se;function Ne(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Re),Re())}async function Re(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let e=await R(window.navigationData);se=document.documentElement.dataset.base,se.endsWith("/")||(se+="/"),t.innerHTML="";for(let n of e)Be(n,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Be(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',De(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let c=a.appendChild(document.createElement("ul"));c.className="tsd-nested-navigation";for(let l of t.children)Be(l,c,i)}else De(t,r,t.class)}function De(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));if(r.href=se+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&(r.classList.add("current"),r.ariaCurrent="page"),t.kind){let i=window.translations[`kind_${t.kind}`].replaceAll('"',""");r.innerHTML=``}r.appendChild(Fe(t.text,document.createElement("span")))}else{let r=e.appendChild(document.createElement("span")),i=window.translations.folder.replaceAll('"',""");r.innerHTML=``,r.appendChild(Fe(t.text,document.createElement("span")))}}function Fe(t,e){let n=t.split(/(?<=[^A-Z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[_-])(?=[^_-])/);for(let r=0;r{let i=r.target;for(;i.parentElement&&i.parentElement.tagName!="LI";)i=i.parentElement;i.dataset.dropdown&&(i.dataset.dropdown=String(i.dataset.dropdown!=="true"))});let t=new Map,e=new Set;for(let r of document.querySelectorAll(".tsd-full-hierarchy [data-refl]")){let i=r.querySelector("ul");t.has(r.dataset.refl)?e.add(r.dataset.refl):i&&t.set(r.dataset.refl,i)}for(let r of e)n(r);function n(r){let i=t.get(r).cloneNode(!0);i.querySelectorAll("[id]").forEach(s=>{s.removeAttribute("id")}),i.querySelectorAll("[data-dropdown]").forEach(s=>{s.dataset.dropdown="false"});for(let s of document.querySelectorAll(`[data-refl="${r}"]`)){let o=gt(),a=s.querySelector("ul");s.insertBefore(o,a),o.dataset.dropdown=String(!!a),a||s.appendChild(i.cloneNode(!0))}}}function pt(){let t=document.getElementById("tsd-hierarchy-script");t&&(t.addEventListener("load",Ve),Ve())}async function Ve(){let t=document.querySelector(".tsd-panel.tsd-hierarchy:has(h4 a)");if(!t||!window.hierarchyData)return;let e=+t.dataset.refl,n=await R(window.hierarchyData),r=t.querySelector("ul"),i=document.createElement("ul");if(i.classList.add("tsd-hierarchy"),ft(i,n,e),r.querySelectorAll("li").length==i.querySelectorAll("li").length)return;let s=document.createElement("span");s.classList.add("tsd-hierarchy-toggle"),s.textContent=window.translations.hierarchy_expand,t.querySelector("h4 a")?.insertAdjacentElement("afterend",s),s.insertAdjacentText("beforebegin",", "),s.addEventListener("click",()=>{s.textContent===window.translations.hierarchy_expand?(r.insertAdjacentElement("afterend",i),r.remove(),s.textContent=window.translations.hierarchy_collapse):(i.insertAdjacentElement("afterend",r),i.remove(),s.textContent=window.translations.hierarchy_expand)})}function ft(t,e,n){let r=e.roots.filter(i=>mt(e,i,n));for(let i of r)t.appendChild(je(e,i,n))}function je(t,e,n,r=new Set){if(r.has(e))return;r.add(e);let i=t.reflections[e],s=document.createElement("li");if(s.classList.add("tsd-hierarchy-item"),e===n){let o=s.appendChild(document.createElement("span"));o.textContent=i.name,o.classList.add("tsd-hierarchy-target")}else{for(let a of i.uniqueNameParents||[]){let c=t.reflections[a],l=s.appendChild(document.createElement("a"));l.textContent=c.name,l.href=oe+c.url,l.className=c.class+" tsd-signature-type",s.append(document.createTextNode("."))}let o=s.appendChild(document.createElement("a"));o.textContent=t.reflections[e].name,o.href=oe+i.url,o.className=i.class+" tsd-signature-type"}if(i.children){let o=s.appendChild(document.createElement("ul"));o.classList.add("tsd-hierarchy");for(let a of i.children){let c=je(t,a,n,r);c&&o.appendChild(c)}}return r.delete(e),s}function mt(t,e,n){if(e===n)return!0;let r=new Set,i=[t.reflections[e]];for(;i.length;){let s=i.pop();if(!r.has(s)){r.add(s);for(let o of s.children||[]){if(o===n)return!0;i.push(t.reflections[o])}}}return!1}function gt(){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.setAttribute("width","20"),t.setAttribute("height","20"),t.setAttribute("viewBox","0 0 24 24"),t.setAttribute("fill","none"),t.innerHTML='',t}X(re,"a[data-toggle]");X(ie,".tsd-accordion");X(ee,".tsd-filter-item input[type=checkbox]");var qe=document.getElementById("tsd-theme");qe&&He(qe);var yt=new Z;Object.defineProperty(window,"app",{value:yt});_e();Ne();$e();"virtualKeyboard"in navigator&&(navigator.virtualKeyboard.overlaysContent=!0);})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/generated/assets/navigation.js b/docs/generated/assets/navigation.js index 5fb0ec27..9fc0e69b 100644 --- a/docs/generated/assets/navigation.js +++ b/docs/generated/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAA52WW2+jMBBG/4ufo6WhCdvNGwmsWjVVKqi0D6sVcsk0sUpsLzbVXrT/fZX0AhjHzuSVOXM+hGbEfP9LNPzSZEaWTGngK6mZ4IqMiKR6S2YEeLNTQa/4aat3FRmRZ8bXZHb1b/ThiKUcCBjXUD/RElTQlvuKcBp1JNdaywx+NqC01dKp+zVKCq7A4XkFXKK7ptJM0lp/ZVCtrao+4pI9wE5WVMM6ltKq6gIu0Td4zEX5DPZv9FE9STGHLX1honar3imXslFFdRiVQh1/ORPyCN0mhKIoBd8/KzyylnNpF2Ina1BqMPD6twQVGGXDdPHl83gadmwZlGLD2R9Y57pmfGPqzLrPl6TJzSJ+SJNisbq7z9I8X2XFOLy6nbfmF1oz+liBCo7T/ZxLf0SESYjwAeEUk3CgsRGXISJhD6MDMH68foLQT/D6COOPzgjADOmpI5qkbZNb3iXR6hPmf4CfEYLLOCfCuwImjY/wr9kAx4d4Z9Wk8RHTcYjJ2OP4EO9OmLQr4iaP58s0sQrfao72/DrOekto8wwgv9C3ohbMIe3dV08NLw+/4WBwVUWT7pvkyyN9rxVH6wb0Pa21sjW/1xzt5k1UlJXo3q2tzE661W9kJUpaFVLU+oh4wA20P/4DJROlRjEMAAA=" \ No newline at end of file +window.navigationData = "eJydlltv4jAQRv+Ln9GmpJDt8hZIVq1KRZVU2ofVKnLDFKwG2xs71V60/30FvSRxjM3wypw5H0pmlPn+l2j4pcmMLJnSwFdSM8EVGRFJ9ZbMCPBmp4Je8dNW7yoyIs+Mr8ns6t/owxFLORAwrqF+oiWooC33FeE06kiutZYZ/GxAaaulU/drlBRcgcPzCrhEd02lmaS1/sqgWltVfcQle4CdrKiGdSylVdUFXKJGFdXhpRRKlM9gf1Qm5BG6TQhFUQq+/63wyFrOpf0Gj/nxf/ZRPUkxhy19YaJ2q94pl3IhdrIGpQYDr39LUIFRNkwXXz6Pp2HHlkEpNpz9gXWua8Y3ps6s+3xJmtws4oc0KRaru/sszfNVVozDq9t5a36hNaOPFajgON3PufRHRJiECB8QTjEJBxobcRkiEvYwOgDjx+snCP0Er48w/uiMAMyQnjqiSdo2ueVdEq0+Yf4H+BkhuIxzIrwrYNL4CP+aDXB8iHdWTRofMR2HmIw9jg/x7oRJuyJu8ni+TBOr8K3maM+v46y3hDbPAPILfStqwRzS3n311PDy8BkOBldVNOk0bUDf01orW+d7zdGe58sjsa8VR6t5qRVlJbp3a6uyk271G1mJklaFFLU+Ih5wA+2P//Pd6gc=" \ No newline at end of file diff --git a/docs/generated/assets/search.js b/docs/generated/assets/search.js index 73ce4268..9165b2c0 100644 --- a/docs/generated/assets/search.js +++ b/docs/generated/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/generated/assets/style.css b/docs/generated/assets/style.css index 98a43779..44328e99 100644 --- a/docs/generated/assets/style.css +++ b/docs/generated/assets/style.css @@ -1,99 +1,288 @@ -:root { - /* Light */ - --light-color-background: #f2f4f8; - --light-color-background-secondary: #eff0f1; - --light-color-warning-text: #222; - --light-color-background-warning: #e6e600; - --light-color-icon-background: var(--light-color-background); - --light-color-accent: #c5c7c9; - --light-color-active-menu-item: var(--light-color-accent); - --light-color-text: #222; - --light-color-text-aside: #6e6e6e; - --light-color-link: #1f70c2; - - --light-color-ts-keyword: #056bd6; - --light-color-ts-project: #b111c9; - --light-color-ts-module: var(--light-color-ts-project); - --light-color-ts-namespace: var(--light-color-ts-project); - --light-color-ts-enum: #7e6f15; - --light-color-ts-enum-member: var(--light-color-ts-enum); - --light-color-ts-variable: #4760ec; - --light-color-ts-function: #572be7; - --light-color-ts-class: #1f70c2; - --light-color-ts-interface: #108024; - --light-color-ts-constructor: var(--light-color-ts-class); - --light-color-ts-property: var(--light-color-ts-variable); - --light-color-ts-method: var(--light-color-ts-function); - --light-color-ts-call-signature: var(--light-color-ts-method); - --light-color-ts-index-signature: var(--light-color-ts-property); - --light-color-ts-constructor-signature: var(--light-color-ts-constructor); - --light-color-ts-parameter: var(--light-color-ts-variable); - /* type literal not included as links will never be generated to it */ - --light-color-ts-type-parameter: #a55c0e; - --light-color-ts-accessor: var(--light-color-ts-property); - --light-color-ts-get-signature: var(--light-color-ts-accessor); - --light-color-ts-set-signature: var(--light-color-ts-accessor); - --light-color-ts-type-alias: #d51270; - /* reference not included as links will be colored with the kind that it points to */ - - --light-external-icon: url("data:image/svg+xml;utf8,"); - --light-color-scheme: light; - - /* Dark */ - --dark-color-background: #2b2e33; - --dark-color-background-secondary: #1e2024; - --dark-color-background-warning: #bebe00; - --dark-color-warning-text: #222; - --dark-color-icon-background: var(--dark-color-background-secondary); - --dark-color-accent: #9096a2; - --dark-color-active-menu-item: #5d5d6a; - --dark-color-text: #f5f5f5; - --dark-color-text-aside: #dddddd; - --dark-color-link: #00aff4; - - --dark-color-ts-keyword: #3399ff; - --dark-color-ts-project: #e358ff; - --dark-color-ts-module: var(--dark-color-ts-project); - --dark-color-ts-namespace: var(--dark-color-ts-project); - --dark-color-ts-enum: #f4d93e; - --dark-color-ts-enum-member: var(--dark-color-ts-enum); - --dark-color-ts-variable: #798dff; - --dark-color-ts-function: #a280ff; - --dark-color-ts-class: #8ac4ff; - --dark-color-ts-interface: #6cff87; - --dark-color-ts-constructor: var(--dark-color-ts-class); - --dark-color-ts-property: var(--dark-color-ts-variable); - --dark-color-ts-method: var(--dark-color-ts-function); - --dark-color-ts-call-signature: var(--dark-color-ts-method); - --dark-color-ts-index-signature: var(--dark-color-ts-property); - --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); - --dark-color-ts-parameter: var(--dark-color-ts-variable); - /* type literal not included as links will never be generated to it */ - --dark-color-ts-type-parameter: #e07d13; - --dark-color-ts-accessor: var(--dark-color-ts-property); - --dark-color-ts-get-signature: var(--dark-color-ts-accessor); - --dark-color-ts-set-signature: var(--dark-color-ts-accessor); - --dark-color-ts-type-alias: #ff6492; - /* reference not included as links will be colored with the kind that it points to */ - - --dark-external-icon: url("data:image/svg+xml;utf8,"); - --dark-color-scheme: dark; -} - -@media (prefers-color-scheme: light) { +@layer typedoc { :root { + --dim-toolbar-contents-height: 2.5rem; + --dim-toolbar-border-bottom-width: 1px; + --dim-header-height: calc( + var(--dim-toolbar-border-bottom-width) + + var(--dim-toolbar-contents-height) + ); + + /* 0rem For mobile; unit is required for calculation in `calc` */ + --dim-container-main-margin-y: 0rem; + + --dim-footer-height: 3.5rem; + + --modal-animation-duration: 0.2s; + } + + :root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */ + --light-color-background-active: #d6d8da; + --light-color-background-warning: #e6e600; + --light-color-warning-text: #222; + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-background-active); + --light-color-text: #222; + --light-color-contrast-text: #000; + --light-color-text-aside: #5e5e5e; + + --light-color-icon-background: var(--light-color-background); + --light-color-icon-text: var(--light-color-text); + + --light-color-comment-tag-text: var(--light-color-text); + --light-color-comment-tag: var(--light-color-background); + + --light-color-link: #1f70c2; + --light-color-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: #9f5f30; + --light-color-ts-method: #be3989; + --light-color-ts-reference: #ff4d82; + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var( + --light-color-ts-constructor + ); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: #c73c3c; + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + --light-color-document: #000000; + + --light-color-alert-note: #0969d9; + --light-color-alert-tip: #1a7f37; + --light-color-alert-important: #8250df; + --light-color-alert-warning: #9a6700; + --light-color-alert-caution: #cf222e; + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + } + + :root { + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + /* Not to be confused with [:active](https://developer.mozilla.org/en-US/docs/Web/CSS/:active) */ + --dark-color-background-active: #5d5d6a; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: var(--dark-color-background-active); + --dark-color-text: #f5f5f5; + --dark-color-contrast-text: #ffffff; + --dark-color-text-aside: #dddddd; + + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-icon-text: var(--dark-color-text); + + --dark-color-comment-tag-text: var(--dark-color-text); + --dark-color-comment-tag: var(--dark-color-background); + + --dark-color-link: #00aff4; + --dark-color-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: #ff984d; + --dark-color-ts-method: #ff4db8; + --dark-color-ts-reference: #ff4d82; + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: #ff6060; + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + --dark-color-document: #ffffff; + + --dark-color-alert-note: #0969d9; + --dark-color-alert-tip: #1a7f37; + --dark-color-alert-important: #8250df; + --dark-color-alert-warning: #9a6700; + --dark-color-alert-caution: #cf222e; + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; + } + + @media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var( + --light-color-background-secondary + ); + --color-background-active: var(--light-color-background-active); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-contrast-text: var(--light-color-contrast-text); + --color-text-aside: var(--light-color-text-aside); + + --color-icon-background: var(--light-color-icon-background); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + + --color-link: var(--light-color-link); + --color-focus-outline: var(--light-color-focus-outline); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --color-alert-note: var(--light-color-alert-note); + --color-alert-tip: var(--light-color-alert-tip); + --color-alert-important: var(--light-color-alert-important); + --color-alert-warning: var(--light-color-alert-warning); + --color-alert-caution: var(--light-color-alert-caution); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } + } + + @media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var( + --dark-color-background-secondary + ); + --color-background-active: var(--dark-color-background-active); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-contrast-text: var(--dark-color-contrast-text); + --color-text-aside: var(--dark-color-text-aside); + + --color-icon-background: var(--dark-color-icon-background); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + + --color-link: var(--dark-color-link); + --color-focus-outline: var(--dark-color-focus-outline); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --color-alert-note: var(--dark-color-alert-note); + --color-alert-tip: var(--dark-color-alert-tip); + --color-alert-important: var(--dark-color-alert-important); + --color-alert-warning: var(--dark-color-alert-warning); + --color-alert-caution: var(--dark-color-alert-caution); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } + } + + :root[data-theme="light"] { --color-background: var(--light-color-background); --color-background-secondary: var(--light-color-background-secondary); + --color-background-active: var(--light-color-background-active); --color-background-warning: var(--light-color-background-warning); --color-warning-text: var(--light-color-warning-text); --color-icon-background: var(--light-color-icon-background); --color-accent: var(--light-color-accent); --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); + --color-contrast-text: var(--light-color-contrast-text); --color-text-aside: var(--light-color-text-aside); + --color-icon-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); @@ -105,6 +294,7 @@ --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( @@ -116,26 +306,40 @@ --color-ts-get-signature: var(--light-color-ts-get-signature); --color-ts-set-signature: var(--light-color-ts-set-signature); --color-ts-type-alias: var(--light-color-ts-type-alias); + --color-document: var(--light-color-document); + + --color-note: var(--light-color-note); + --color-tip: var(--light-color-tip); + --color-important: var(--light-color-important); + --color-warning: var(--light-color-warning); + --color-caution: var(--light-color-caution); --external-icon: var(--light-external-icon); --color-scheme: var(--light-color-scheme); } -} -@media (prefers-color-scheme: dark) { - :root { + :root[data-theme="dark"] { --color-background: var(--dark-color-background); --color-background-secondary: var(--dark-color-background-secondary); + --color-background-active: var(--dark-color-background-active); --color-background-warning: var(--dark-color-background-warning); --color-warning-text: var(--dark-color-warning-text); --color-icon-background: var(--dark-color-icon-background); --color-accent: var(--dark-color-accent); --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); + --color-contrast-text: var(--dark-color-contrast-text); --color-text-aside: var(--dark-color-text-aside); + --color-icon-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); @@ -147,6 +351,7 @@ --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( @@ -158,1257 +363,1271 @@ --color-ts-get-signature: var(--dark-color-ts-get-signature); --color-ts-set-signature: var(--dark-color-ts-set-signature); --color-ts-type-alias: var(--dark-color-ts-type-alias); + --color-document: var(--dark-color-document); + + --color-note: var(--dark-color-note); + --color-tip: var(--dark-color-tip); + --color-important: var(--dark-color-important); + --color-warning: var(--dark-color-warning); + --color-caution: var(--dark-color-caution); --external-icon: var(--dark-external-icon); --color-scheme: var(--dark-color-scheme); } -} -html { - color-scheme: var(--color-scheme); -} - -body { - margin: 0; -} - -:root[data-theme="light"] { - --color-background: var(--light-color-background); - --color-background-secondary: var(--light-color-background-secondary); - --color-background-warning: var(--light-color-background-warning); - --color-warning-text: var(--light-color-warning-text); - --color-icon-background: var(--light-color-icon-background); - --color-accent: var(--light-color-accent); - --color-active-menu-item: var(--light-color-active-menu-item); - --color-text: var(--light-color-text); - --color-text-aside: var(--light-color-text-aside); - --color-link: var(--light-color-link); - - --color-ts-keyword: var(--light-color-ts-keyword); - --color-ts-module: var(--light-color-ts-module); - --color-ts-namespace: var(--light-color-ts-namespace); - --color-ts-enum: var(--light-color-ts-enum); - --color-ts-enum-member: var(--light-color-ts-enum-member); - --color-ts-variable: var(--light-color-ts-variable); - --color-ts-function: var(--light-color-ts-function); - --color-ts-class: var(--light-color-ts-class); - --color-ts-interface: var(--light-color-ts-interface); - --color-ts-constructor: var(--light-color-ts-constructor); - --color-ts-property: var(--light-color-ts-property); - --color-ts-method: var(--light-color-ts-method); - --color-ts-call-signature: var(--light-color-ts-call-signature); - --color-ts-index-signature: var(--light-color-ts-index-signature); - --color-ts-constructor-signature: var( - --light-color-ts-constructor-signature - ); - --color-ts-parameter: var(--light-color-ts-parameter); - --color-ts-type-parameter: var(--light-color-ts-type-parameter); - --color-ts-accessor: var(--light-color-ts-accessor); - --color-ts-get-signature: var(--light-color-ts-get-signature); - --color-ts-set-signature: var(--light-color-ts-set-signature); - --color-ts-type-alias: var(--light-color-ts-type-alias); - - --external-icon: var(--light-external-icon); - --color-scheme: var(--light-color-scheme); -} - -:root[data-theme="dark"] { - --color-background: var(--dark-color-background); - --color-background-secondary: var(--dark-color-background-secondary); - --color-background-warning: var(--dark-color-background-warning); - --color-warning-text: var(--dark-color-warning-text); - --color-icon-background: var(--dark-color-icon-background); - --color-accent: var(--dark-color-accent); - --color-active-menu-item: var(--dark-color-active-menu-item); - --color-text: var(--dark-color-text); - --color-text-aside: var(--dark-color-text-aside); - --color-link: var(--dark-color-link); - - --color-ts-keyword: var(--dark-color-ts-keyword); - --color-ts-module: var(--dark-color-ts-module); - --color-ts-namespace: var(--dark-color-ts-namespace); - --color-ts-enum: var(--dark-color-ts-enum); - --color-ts-enum-member: var(--dark-color-ts-enum-member); - --color-ts-variable: var(--dark-color-ts-variable); - --color-ts-function: var(--dark-color-ts-function); - --color-ts-class: var(--dark-color-ts-class); - --color-ts-interface: var(--dark-color-ts-interface); - --color-ts-constructor: var(--dark-color-ts-constructor); - --color-ts-property: var(--dark-color-ts-property); - --color-ts-method: var(--dark-color-ts-method); - --color-ts-call-signature: var(--dark-color-ts-call-signature); - --color-ts-index-signature: var(--dark-color-ts-index-signature); - --color-ts-constructor-signature: var( - --dark-color-ts-constructor-signature - ); - --color-ts-parameter: var(--dark-color-ts-parameter); - --color-ts-type-parameter: var(--dark-color-ts-type-parameter); - --color-ts-accessor: var(--dark-color-ts-accessor); - --color-ts-get-signature: var(--dark-color-ts-get-signature); - --color-ts-set-signature: var(--dark-color-ts-set-signature); - --color-ts-type-alias: var(--dark-color-ts-type-alias); - - --external-icon: var(--dark-external-icon); - --color-scheme: var(--dark-color-scheme); -} - -.always-visible, -.always-visible .tsd-signatures { - display: inherit !important; -} - -h1, -h2, -h3, -h4, -h5, -h6 { - line-height: 1.2; -} - -h1 > a:not(.link), -h2 > a:not(.link), -h3 > a:not(.link), -h4 > a:not(.link), -h5 > a:not(.link), -h6 > a:not(.link) { - text-decoration: none; - color: var(--color-text); -} - -h1 { - font-size: 1.875rem; - margin: 0.67rem 0; -} - -h2 { - font-size: 1.5rem; - margin: 0.83rem 0; -} - -h3 { - font-size: 1.25rem; - margin: 1rem 0; -} - -h4 { - font-size: 1.05rem; - margin: 1.33rem 0; -} - -h5 { - font-size: 1rem; - margin: 1.5rem 0; -} - -h6 { - font-size: 0.875rem; - margin: 2.33rem 0; -} - -.uppercase { - text-transform: uppercase; -} - -dl, -menu, -ol, -ul { - margin: 1em 0; -} - -dd { - margin: 0 0 0 40px; -} - -.container { - max-width: 1700px; - padding: 0 2rem; -} - -/* Footer */ -.tsd-generator { - border-top: 1px solid var(--color-accent); - padding-top: 1rem; - padding-bottom: 1rem; - max-height: 3.5rem; -} - -.tsd-generator > p { - margin-top: 0; - margin-bottom: 0; - padding: 0 1rem; -} - -.container-main { - margin: 0 auto; - /* toolbar, footer, margin */ - min-height: calc(100vh - 41px - 56px - 4rem); -} - -@keyframes fade-in { - from { - opacity: 0; + html { + color-scheme: var(--color-scheme); + @media (prefers-reduced-motion: no-preference) { + scroll-behavior: smooth; + } } - to { - opacity: 1; + + *:focus-visible, + .tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); } -} -@keyframes fade-out { - from { - opacity: 1; - visibility: visible; + + .always-visible, + .always-visible .tsd-signatures { + display: inherit !important; } - to { - opacity: 0; + + h1, + h2, + h3, + h4, + h5, + h6 { + line-height: 1.2; } -} -@keyframes fade-in-delayed { - 0% { - opacity: 0; + + h1 { + font-size: 1.875rem; + margin: 0.67rem 0; } - 33% { - opacity: 0; + + h2 { + font-size: 1.5rem; + margin: 0.83rem 0; } - 100% { - opacity: 1; + + h3 { + font-size: 1.25rem; + margin: 1rem 0; } -} -@keyframes fade-out-delayed { - 0% { - opacity: 1; - visibility: visible; + + h4 { + font-size: 1.05rem; + margin: 1.33rem 0; } - 66% { - opacity: 0; + + h5 { + font-size: 1rem; + margin: 1.5rem 0; } - 100% { - opacity: 0; + + h6 { + font-size: 0.875rem; + margin: 2.33rem 0; } -} -@keyframes pop-in-from-right { - from { - transform: translate(100%, 0); + + dl, + menu, + ol, + ul { + margin: 1em 0; } - to { - transform: translate(0, 0); + + dd { + margin: 0 0 0 34px; } -} -@keyframes pop-out-to-right { - from { - transform: translate(0, 0); - visibility: visible; + + .container { + max-width: 1700px; + padding: 0 2rem; } - to { - transform: translate(100%, 0); + + /* Footer */ + footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: var(--dim-footer-height); } -} -body { - background: var(--color-background); - font-family: "Segoe UI", sans-serif; - font-size: 16px; - color: var(--color-text); -} - -a { - color: var(--color-link); - text-decoration: none; -} -a:hover { - text-decoration: underline; -} -a.external[target="_blank"] { - background-image: var(--external-icon); - background-position: top 3px right; - background-repeat: no-repeat; - padding-right: 13px; -} - -code, -pre { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - padding: 0.2em; - margin: 0; - font-size: 0.875rem; - border-radius: 0.8em; -} - -pre { - position: relative; - white-space: pre; - white-space: pre-wrap; - word-wrap: break-word; - padding: 10px; - border: 1px solid var(--color-accent); -} -pre code { - padding: 0; - font-size: 100%; -} -pre > button { - position: absolute; - top: 10px; - right: 10px; - opacity: 0; - transition: opacity 0.1s; - box-sizing: border-box; -} -pre:hover > button, -pre > button.visible { - opacity: 1; -} - -blockquote { - margin: 1em 0; - padding-left: 1em; - border-left: 4px solid gray; -} - -.tsd-typography { - line-height: 1.333em; -} -.tsd-typography ul { - list-style: square; - padding: 0 0 0 20px; - margin: 0; -} -.tsd-typography .tsd-index-panel h3, -.tsd-index-panel .tsd-typography h3, -.tsd-typography h4, -.tsd-typography h5, -.tsd-typography h6 { - font-size: 1em; -} -.tsd-typography h5, -.tsd-typography h6 { - font-weight: normal; -} -.tsd-typography p, -.tsd-typography ul, -.tsd-typography ol { - margin: 1em 0; -} -.tsd-typography table { - border-collapse: collapse; - border: none; -} -.tsd-typography td, -.tsd-typography th { - padding: 6px 13px; - border: 1px solid var(--color-accent); -} -.tsd-typography thead, -.tsd-typography tr:nth-child(even) { - background-color: var(--color-background-secondary); -} - -.tsd-breadcrumb { - margin: 0; - padding: 0; - color: var(--color-text-aside); -} -.tsd-breadcrumb a { - color: var(--color-text-aside); - text-decoration: none; -} -.tsd-breadcrumb a:hover { - text-decoration: underline; -} -.tsd-breadcrumb li { - display: inline; -} -.tsd-breadcrumb li:after { - content: " / "; -} - -.tsd-comment-tags { - display: flex; - flex-direction: column; -} -dl.tsd-comment-tag-group { - display: flex; - align-items: center; - overflow: hidden; - margin: 0.5em 0; -} -dl.tsd-comment-tag-group dt { - display: flex; - margin-right: 0.5em; - font-size: 0.875em; - font-weight: normal; -} -dl.tsd-comment-tag-group dd { - margin: 0; -} -code.tsd-tag { - padding: 0.25em 0.4em; - border: 0.1em solid var(--color-accent); - margin-right: 0.25em; - font-size: 70%; -} -h1 code.tsd-tag:first-of-type { - margin-left: 0.25em; -} - -dl.tsd-comment-tag-group dd:before, -dl.tsd-comment-tag-group dd:after { - content: " "; -} -dl.tsd-comment-tag-group dd pre, -dl.tsd-comment-tag-group dd:after { - clear: both; -} -dl.tsd-comment-tag-group p { - margin: 0; -} - -.tsd-panel.tsd-comment .lead { - font-size: 1.1em; - line-height: 1.333em; - margin-bottom: 2em; -} -.tsd-panel.tsd-comment .lead:last-child { - margin-bottom: 0; -} - -.tsd-filter-visibility h4 { - font-size: 1rem; - padding-top: 0.75rem; - padding-bottom: 0.5rem; - margin: 0; -} -.tsd-filter-item:not(:last-child) { - margin-bottom: 0.5rem; -} -.tsd-filter-input { - display: flex; - width: fit-content; - width: -moz-fit-content; - align-items: center; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - cursor: pointer; -} -.tsd-filter-input input[type="checkbox"] { - cursor: pointer; - position: absolute; - width: 1.5em; - height: 1.5em; - opacity: 0; -} -.tsd-filter-input input[type="checkbox"]:disabled { - pointer-events: none; -} -.tsd-filter-input svg { - cursor: pointer; - width: 1.5em; - height: 1.5em; - margin-right: 0.5em; - border-radius: 0.33em; - /* Leaving this at full opacity breaks event listeners on Firefox. - Don't remove unless you know what you're doing. */ - opacity: 0.99; -} -.tsd-filter-input input[type="checkbox"]:focus + svg { - transform: scale(0.95); -} -.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { - transform: scale(1); -} -.tsd-checkbox-background { - fill: var(--color-accent); -} -input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { - stroke: var(--color-text); -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { - fill: var(--color-background); - stroke: var(--color-accent); - stroke-width: 0.25rem; -} -.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { - stroke: var(--color-accent); -} - -.tsd-theme-toggle { - padding-top: 0.75rem; -} -.tsd-theme-toggle > h4 { - display: inline; - vertical-align: middle; - margin-right: 0.75rem; -} - -.tsd-hierarchy { - list-style: square; - margin: 0; -} -.tsd-hierarchy .target { - font-weight: bold; -} - -.tsd-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-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 ul { - padding-left: 1.75rem; -} - -#tsd-sidebar-links a { - margin-top: 0; - margin-bottom: 0.5rem; - line-height: 1.25rem; -} -#tsd-sidebar-links a:last-of-type { - margin-bottom: 0; -} - -a.tsd-index-link { - padding: 0.25rem 0 !important; - font-size: 1rem; - line-height: 1.25rem; - display: inline-flex; - align-items: center; - color: var(--color-text); -} -.tsd-accordion-summary { - list-style-type: none; /* hide marker on non-safari */ - outline: none; /* broken on safari, so just hide it */ -} -.tsd-accordion-summary::-webkit-details-marker { - display: none; /* hide marker on safari */ -} -.tsd-accordion-summary, -.tsd-accordion-summary a { - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - - cursor: pointer; -} -.tsd-accordion-summary a { - width: calc(100% - 1.5rem); -} -.tsd-accordion-summary > * { - margin-top: 0; - margin-bottom: 0; - padding-top: 0; - padding-bottom: 0; -} -.tsd-index-accordion .tsd-accordion-summary > svg { - margin-left: 0.25rem; -} -.tsd-index-content > :not(:first-child) { - margin-top: 0.75rem; -} -.tsd-index-heading { - margin-top: 1.5rem; - margin-bottom: 0.75rem; -} - -.tsd-kind-icon { - margin-right: 0.5rem; - width: 1.25rem; - height: 1.25rem; - min-width: 1.25rem; - min-height: 1.25rem; -} -.tsd-kind-icon path { - transform-origin: center; - transform: scale(1.1); -} -.tsd-signature > .tsd-kind-icon { - margin-right: 0.8rem; -} - -.tsd-panel { - margin-bottom: 2.5rem; -} -.tsd-panel.tsd-member { - margin-bottom: 4rem; -} -.tsd-panel:empty { - display: none; -} -.tsd-panel > h1, -.tsd-panel > h2, -.tsd-panel > h3 { - margin: 1.5rem -1.5rem 0.75rem -1.5rem; - padding: 0 1.5rem 0.75rem 1.5rem; -} -.tsd-panel > h1.tsd-before-signature, -.tsd-panel > h2.tsd-before-signature, -.tsd-panel > h3.tsd-before-signature { - margin-bottom: 0; - border-bottom: none; -} - -.tsd-panel-group { - margin: 4rem 0; -} -.tsd-panel-group.tsd-index-group { - margin: 2rem 0; -} -.tsd-panel-group.tsd-index-group details { - margin: 2rem 0; -} - -#tsd-search { - transition: background-color 0.2s; -} -#tsd-search .title { - position: relative; - z-index: 2; -} -#tsd-search .field { - position: absolute; - left: 0; - top: 0; - right: 2.5rem; - height: 100%; -} -#tsd-search .field input { - box-sizing: border-box; - position: relative; - top: -50px; - z-index: 1; - width: 100%; - padding: 0 10px; - opacity: 0; - outline: 0; - border: 0; - background: transparent; - color: var(--color-text); -} -#tsd-search .field label { - position: absolute; - overflow: hidden; - right: -40px; -} -#tsd-search .field input, -#tsd-search .title, -#tsd-toolbar-links a { - transition: opacity 0.2s; -} -#tsd-search .results { - position: absolute; - visibility: hidden; - top: 40px; - width: 100%; - margin: 0; - padding: 0; - list-style: none; - box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); -} -#tsd-search .results li { - background-color: var(--color-background); - line-height: initial; - padding: 4px; -} -#tsd-search .results li:nth-child(even) { - background-color: var(--color-background-secondary); -} -#tsd-search .results li.state { - display: none; -} -#tsd-search .results li.current:not(.no-results), -#tsd-search .results li:hover:not(.no-results) { - background-color: var(--color-accent); -} -#tsd-search .results a { - display: flex; - align-items: center; - padding: 0.25rem; - box-sizing: border-box; -} -#tsd-search .results a:before { - top: 10px; -} -#tsd-search .results span.parent { - color: var(--color-text-aside); - font-weight: normal; -} -#tsd-search.has-focus { - background-color: var(--color-accent); -} -#tsd-search.has-focus .field input { - top: 0; - opacity: 1; -} -#tsd-search.has-focus .title, -#tsd-search.has-focus #tsd-toolbar-links a { - z-index: 0; - opacity: 0; -} -#tsd-search.has-focus .results { - visibility: visible; -} -#tsd-search.loading .results li.state.loading { - display: block; -} -#tsd-search.failure .results li.state.failure { - display: block; -} - -#tsd-toolbar-links { - position: absolute; - top: 0; - right: 2rem; - height: 100%; - display: flex; - align-items: center; - justify-content: flex-end; -} -#tsd-toolbar-links a { - margin-left: 1.5rem; -} -#tsd-toolbar-links a:hover { - text-decoration: underline; -} - -.tsd-signature { - margin: 0 0 1rem 0; - padding: 1rem 0.5rem; - border: 1px solid var(--color-accent); - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; - font-size: 14px; - overflow-x: auto; -} - -.tsd-signature-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-description .tsd-signatures .tsd-signature { - border-width: 1px; -} - -ul.tsd-parameter-list, -ul.tsd-type-parameter-list { - list-style: square; - margin: 0; - padding-left: 20px; -} -ul.tsd-parameter-list > li.tsd-parameter-signature, -ul.tsd-type-parameter-list > li.tsd-parameter-signature { - list-style: none; - margin-left: -20px; -} -ul.tsd-parameter-list h5, -ul.tsd-type-parameter-list h5 { - font-size: 16px; - margin: 1em 0 0.5em 0; -} -.tsd-sources { - margin-top: 1rem; - font-size: 0.875em; -} -.tsd-sources a { - color: var(--color-text-aside); - text-decoration: underline; -} -.tsd-sources ul { - list-style: none; - padding: 0; -} - -.tsd-page-toolbar { - position: sticky; - z-index: 1; - top: 0; - left: 0; - width: 100%; - color: var(--color-text); - background: var(--color-background-secondary); - border-bottom: 1px var(--color-accent) solid; - transition: transform 0.3s ease-in-out; -} -.tsd-page-toolbar a { - color: var(--color-text); - text-decoration: none; -} -.tsd-page-toolbar a.title { - font-weight: bold; -} -.tsd-page-toolbar a.title:hover { - text-decoration: underline; -} -.tsd-page-toolbar .tsd-toolbar-contents { - display: flex; - justify-content: space-between; - height: 2.5rem; - margin: 0 auto; -} -.tsd-page-toolbar .table-cell { - position: relative; - white-space: nowrap; - line-height: 40px; -} -.tsd-page-toolbar .table-cell:first-child { - width: 100%; -} -.tsd-page-toolbar .tsd-toolbar-icon { - box-sizing: border-box; - line-height: 0; - padding: 12px 0; -} - -.tsd-widget { - display: inline-block; - overflow: hidden; - opacity: 0.8; - height: 40px; - transition: - opacity 0.1s, - background-color 0.2s; - vertical-align: bottom; - cursor: pointer; -} -.tsd-widget:hover { - opacity: 0.9; -} -.tsd-widget.active { - opacity: 1; - background-color: var(--color-accent); -} -.tsd-widget.no-caption { - width: 40px; -} -.tsd-widget.no-caption:before { - margin: 0; -} - -.tsd-widget.options, -.tsd-widget.menu { - display: none; -} -input[type="checkbox"] + .tsd-widget:before { - background-position: -120px 0; -} -input[type="checkbox"]:checked + .tsd-widget:before { - background-position: -160px 0; -} - -img { - max-width: 100%; -} - -.tsd-anchor-icon { - display: inline-flex; - align-items: center; - margin-left: 0.5rem; - vertical-align: middle; - color: var(--color-text); -} - -.tsd-anchor-icon svg { - width: 1em; - height: 1em; - visibility: hidden; -} - -.tsd-anchor-link:hover > .tsd-anchor-icon svg { - visibility: visible; -} - -.deprecated { - text-decoration: line-through !important; -} - -.warning { - padding: 1rem; - color: var(--color-warning-text); - background: var(--color-background-warning); -} - -.tsd-kind-project { - color: var(--color-ts-project); -} -.tsd-kind-module { - color: var(--color-ts-module); -} -.tsd-kind-namespace { - color: var(--color-ts-namespace); -} -.tsd-kind-enum { - color: var(--color-ts-enum); -} -.tsd-kind-enum-member { - color: var(--color-ts-enum-member); -} -.tsd-kind-variable { - color: var(--color-ts-variable); -} -.tsd-kind-function { - color: var(--color-ts-function); -} -.tsd-kind-class { - color: var(--color-ts-class); -} -.tsd-kind-interface { - color: var(--color-ts-interface); -} -.tsd-kind-constructor { - color: var(--color-ts-constructor); -} -.tsd-kind-property { - color: var(--color-ts-property); -} -.tsd-kind-method { - color: var(--color-ts-method); -} -.tsd-kind-call-signature { - color: var(--color-ts-call-signature); -} -.tsd-kind-index-signature { - color: var(--color-ts-index-signature); -} -.tsd-kind-constructor-signature { - color: var(--color-ts-constructor-signature); -} -.tsd-kind-parameter { - color: var(--color-ts-parameter); -} -.tsd-kind-type-literal { - color: var(--color-ts-type-literal); -} -.tsd-kind-type-parameter { - color: var(--color-ts-type-parameter); -} -.tsd-kind-accessor { - color: var(--color-ts-accessor); -} -.tsd-kind-get-signature { - color: var(--color-ts-get-signature); -} -.tsd-kind-set-signature { - color: var(--color-ts-set-signature); -} -.tsd-kind-type-alias { - color: var(--color-ts-type-alias); -} - -/* if we have a kind icon, don't color the text by kind */ -.tsd-kind-icon ~ span { - color: var(--color-text); -} - -* { - scrollbar-width: thin; - scrollbar-color: var(--color-accent) var(--color-icon-background); -} - -*::-webkit-scrollbar { - width: 0.75rem; -} - -*::-webkit-scrollbar-track { - background: var(--color-icon-background); -} - -*::-webkit-scrollbar-thumb { - background-color: var(--color-accent); - border-radius: 999rem; - border: 0.25rem solid var(--color-icon-background); -} - -/* mobile */ -@media (max-width: 769px) { - .tsd-widget.options, - .tsd-widget.menu { - display: inline-block; + footer > p { + margin: 0 1em; } .container-main { - display: flex; + margin: var(--dim-container-main-margin-y) auto; + /* toolbar, footer, margin */ + min-height: calc( + 100svh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); } - html .col-content { - float: none; + + @keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + @keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } + } + @keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } + } + @keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } + } + body { + background: var(--color-background); + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); + margin: 0; + } + + a { + color: var(--color-link); + text-decoration: none; + } + a:hover { + text-decoration: underline; + } + a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; + } + a.tsd-anchor-link { + color: var(--color-text); + } + :target { + scroll-margin-block: calc(var(--dim-header-height) + 0.5rem); + } + + 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); + margin-bottom: 8px; + } + pre code { + padding: 0; + font-size: 100%; + } + pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; + } + pre:hover > button, + pre > button.visible, + pre > button:focus-visible { + opacity: 1; + } + + blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; + } + + img { 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; + + * { + 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); + } + + dialog { + border: none; + outline: none; + padding: 0; background-color: var(--color-background); - transform: translate(100%, 0); } - html .col-sidebar > *:last-child { - padding-bottom: 20px; + dialog::backdrop { + display: none; } - html .overlay { - content: ""; - display: block; + #tsd-overlay { + background-color: rgba(0, 0, 0, 0.5); position: fixed; - z-index: 1023; + z-index: 9999; top: 0; left: 0; right: 0; bottom: 0; - background-color: rgba(0, 0, 0, 0.75); + animation: fade-in var(--modal-animation-duration) forwards; + } + #tsd-overlay.closing { + animation-name: fade-out; + } + + .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-alert { + padding: 8px 16px; + margin-bottom: 16px; + border-left: 0.25em solid var(--alert-color); + } + .tsd-alert blockquote > :last-child, + .tsd-alert > :last-child { + margin-bottom: 0; + } + .tsd-alert-title { + color: var(--alert-color); + display: inline-flex; + align-items: center; + } + .tsd-alert-title span { + margin-left: 4px; + } + + .tsd-alert-note { + --alert-color: var(--color-alert-note); + } + .tsd-alert-tip { + --alert-color: var(--color-alert-tip); + } + .tsd-alert-important { + --alert-color: var(--color-alert-important); + } + .tsd-alert-warning { + --alert-color: var(--color-alert-warning); + } + .tsd-alert-caution { + --alert-color: var(--color-alert-caution); + } + + .tsd-breadcrumb { + margin: 0; + margin-top: 1rem; + padding: 0; + color: var(--color-text-aside); + } + .tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; + } + .tsd-breadcrumb a:hover { + text-decoration: underline; + } + .tsd-breadcrumb li { + display: inline; + } + .tsd-breadcrumb li:after { + content: " / "; + } + + .tsd-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 h4 label:hover span { + text-decoration: underline; + } + + .tsd-hierarchy { + list-style: square; + margin: 0; + } + .tsd-hierarchy-target { + font-weight: bold; + } + .tsd-hierarchy-toggle { + color: var(--color-link); + cursor: pointer; + } + + .tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); + } + .tsd-full-hierarchy, + .tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; + } + .tsd-full-hierarchy ul { + padding-left: 1.5rem; + } + .tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); + } + .tsd-full-hierarchy svg[data-dropdown] { + cursor: pointer; + } + .tsd-full-hierarchy svg[data-dropdown="false"] { + transform: rotate(-90deg); + } + .tsd-full-hierarchy svg[data-dropdown="false"] ~ ul { + display: none; + } + + .tsd-panel-group.tsd-index-group { + margin-bottom: 0; + } + .tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; + } + @media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } + } + @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: 0; + margin-bottom: 1rem; + } + .tsd-navigation > a, + .tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; + } + .tsd-navigation a, + .tsd-navigation summary > span, + .tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; + } + .tsd-navigation a.current, + .tsd-page-navigation a.current { + background: var(--color-active-menu-item); + color: var(--color-contrast-text); + } + .tsd-navigation a:hover, + .tsd-page-navigation a:hover { + text-decoration: underline; + } + .tsd-navigation ul, + .tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; + } + .tsd-navigation li, + .tsd-page-navigation li { + padding: 0; + max-width: 100%; + } + .tsd-navigation .tsd-nav-link { + display: none; + } + .tsd-nested-navigation { + margin-left: 3rem; + } + .tsd-nested-navigation > li > details { + margin-left: -1.5rem; + } + .tsd-small-nested-navigation { + margin-left: 1.5rem; + } + .tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; + } + + .tsd-page-navigation-section > summary { + padding: 0.25rem; + } + .tsd-page-navigation-section > summary > svg { + margin-right: 0.25rem; + } + .tsd-page-navigation-section > div { + margin-left: 30px; + } + .tsd-page-navigation ul { + padding-left: 1.75rem; + } + + #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 */ + display: flex; + align-items: center; + gap: 0.25rem; + box-sizing: border-box; + } + .tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ + } + .tsd-accordion-summary, + .tsd-accordion-summary a { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; + } + .tsd-accordion-summary a { + width: calc(100% - 1.5rem); + } + .tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; + } + /* + * We need to be careful to target the arrow indicating whether the accordion + * is open, but not any other SVGs included in the details element. + */ + .tsd-accordion:not([open]) > .tsd-accordion-summary > svg:first-child { + transform: rotate(-90deg); + } + .tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; + } + .tsd-index-summary { + margin-top: 1.5rem; + margin-bottom: 0.75rem; + display: flex; + align-content: center; + } + + .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[open] { + animation: fade-in var(--modal-animation-duration) ease-out forwards; + } + #tsd-search[open].closing { + animation-name: fade-out; + } + + /* Avoid setting `display` on closed dialog */ + #tsd-search[open] { + display: flex; + flex-direction: column; + padding: 1rem; + width: 32rem; + max-width: 90vw; + max-height: calc(100vh - env(keyboard-inset-height, 0px) - 25vh); + /* Anchor dialog to top */ + margin-top: 10vh; + border-radius: 6px; + will-change: max-height; + } + #tsd-search-input { + box-sizing: border-box; + width: 100%; + padding: 0 0.625rem; /* 10px */ + outline: 0; + border: 2px solid var(--color-accent); + background-color: transparent; + color: var(--color-text); + border-radius: 4px; + height: 2.5rem; + flex: 0 0 auto; + font-size: 0.875rem; + transition: border-color 0.2s, background-color 0.2s; + } + #tsd-search-input:focus-visible { + background-color: var(--color-background-active); + border-color: transparent; + color: var(--color-contrast-text); + } + #tsd-search-input::placeholder { + color: inherit; + opacity: 0.8; + } + #tsd-search-results { + margin: 0; + padding: 0; + list-style: none; + flex: 1 1 auto; + display: flex; + flex-direction: column; + overflow-y: auto; + } + #tsd-search-results:not(:empty) { + margin-top: 0.5rem; + } + #tsd-search-results > li { + background-color: var(--color-background); + line-height: 1.5; + box-sizing: border-box; + border-radius: 4px; + } + #tsd-search-results > li:nth-child(even) { + background-color: var(--color-background-secondary); + } + #tsd-search-results > li:is(:hover, [aria-selected="true"]) { + background-color: var(--color-background-active); + color: var(--color-contrast-text); + } + /* It's important that this takes full size of parent `li`, to capture a click on `li` */ + #tsd-search-results > li > a { + display: flex; + align-items: center; + padding: 0.5rem 0.25rem; + box-sizing: border-box; + width: 100%; + } + #tsd-search-results > li > a > .text { + flex: 1 1 auto; + min-width: 0; + overflow-wrap: anywhere; + } + #tsd-search-results > li > a .parent { + color: var(--color-text-aside); + } + #tsd-search-results > li > a mark { + color: inherit; + background-color: inherit; + font-weight: bold; + } + #tsd-search-status { + flex: 1; + display: grid; + place-content: center; + text-align: center; + overflow-wrap: anywhere; + } + #tsd-search-status:not(:empty) { + min-height: 6rem; + } + + .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: var(--dim-toolbar-border-bottom-width) + var(--color-accent) solid; + transition: transform 0.3s ease-in-out; + } + .tsd-page-toolbar a { + color: var(--color-text); + } + .tsd-toolbar-contents { + display: flex; + align-items: center; + height: var(--dim-toolbar-contents-height); + margin: 0 auto; + } + .tsd-toolbar-contents > .title { + font-weight: bold; + margin-right: auto; + } + #tsd-toolbar-links { + display: flex; + align-items: center; + gap: 1.5rem; + margin-right: 1rem; + } + + .tsd-widget { + box-sizing: border-box; + display: inline-block; + opacity: 0.8; + height: 2.5rem; + width: 2.5rem; + transition: opacity 0.1s, background-color 0.1s; + text-align: center; + cursor: pointer; + border: none; + background-color: transparent; + } + .tsd-widget:hover { + opacity: 0.9; + } + .tsd-widget:active { + opacity: 1; + background-color: var(--color-accent); + } + #tsd-toolbar-menu-trigger { + display: none; + } + + .tsd-member-summary-name { + display: inline-flex; + align-items: center; + padding: 0.25rem; + text-decoration: none; + } + + .tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + color: var(--color-text); + vertical-align: middle; + } + + .tsd-anchor-icon svg { + width: 1em; + height: 1em; 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 { + .tsd-member-summary-name:hover > .tsd-anchor-icon svg, + .tsd-anchor-link:hover > .tsd-anchor-icon svg, + .tsd-anchor-icon:focus-visible svg { visibility: visible; } - .has-menu .col-sidebar { - visibility: visible; - transform: translate(0, 0); - display: flex; - flex-direction: column; - gap: 1.5rem; - max-height: 100vh; - padding: 1rem 2rem; + + .deprecated { + text-decoration: line-through !important; } - .has-menu .tsd-navigation { - max-height: 100%; - } -} - -/* one sidebar */ -@media (min-width: 770px) { - .container-main { - display: grid; - grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); - grid-template-areas: "sidebar content"; - margin: 2rem auto; - } - - .col-sidebar { - grid-area: sidebar; - } - .col-content { - grid-area: content; - padding: 0 1rem; - } -} -@media (min-width: 770px) and (max-width: 1399px) { - .col-sidebar { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; - position: sticky; - top: 42px; - padding-top: 1rem; - } - .site-menu { - margin-top: 1rem; - } -} - -/* two sidebars */ -@media (min-width: 1200px) { - .container-main { - grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); - grid-template-areas: "sidebar content toc"; - } - - .col-sidebar { - display: contents; - } - - .page-menu { - grid-area: toc; - padding-left: 1rem; - } - .site-menu { - grid-area: sidebar; - } - - .site-menu { - margin-top: 1rem 0; - } - - .page-menu, - .site-menu { - max-height: calc(100vh - 2rem - 42px); - overflow: auto; - position: sticky; - top: 42px; + + .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); + } + + /* mobile */ + @media (max-width: 769px) { + #tsd-toolbar-menu-trigger { + display: inline-block; + /* temporary fix to vertically align, for compatibility */ + line-height: 2.5; + } + #tsd-toolbar-links { + display: none; + } + + .container-main { + display: flex; + } + .col-content { + float: none; + max-width: 100%; + width: 100%; + } + .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + .col-sidebar > *:last-child { + padding-bottom: 20px; + } + .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } + } + + /* one sidebar */ + @media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + --dim-container-main-margin-y: 2rem; + } + + .tsd-breadcrumb { + margin-top: 0; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } + } + @media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc( + 100vh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); + overflow: auto; + position: sticky; + top: calc( + var(--dim-header-height) + var(--dim-container-main-margin-y) + ); + } + .site-menu { + margin-top: 1rem; + } + } + + /* two sidebars */ + @media (min-width: 1200px) { + .container-main { + grid-template-columns: + minmax(0, 1fr) minmax(0, 2.5fr) minmax( + 0, + 20rem + ); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 0rem; + } + + .page-menu, + .site-menu { + max-height: calc( + 100vh - var(--dim-header-height) - var(--dim-footer-height) - + 2 * var(--dim-container-main-margin-y) + ); + overflow: auto; + position: sticky; + top: calc( + var(--dim-header-height) + var(--dim-container-main-margin-y) + ); + } } } diff --git a/docs/generated/enums/ListenOptions.html b/docs/generated/enums/ListenOptions.html index b666ec53..bea87954 100644 --- a/docs/generated/enums/ListenOptions.html +++ b/docs/generated/enums/ListenOptions.html @@ -1,3 +1,3 @@ -ListenOptions | uWebSockets.js v20.46.0 documentation

Generated using TypeDoc

\ No newline at end of file +ListenOptions | uWebSockets.js v20.60.0 documentation
uWebSockets.js v20.60.0 documentation
    Preparing search index...

    Enumeration ListenOptions

    Index

    Enumeration Members

    LIBUS_LISTEN_DEFAULT: 0
    LIBUS_LISTEN_EXCLUSIVE_PORT: 1
    diff --git a/docs/generated/functions/App.html b/docs/generated/functions/App.html index b171434e..71d09fb7 100644 --- a/docs/generated/functions/App.html +++ b/docs/generated/functions/App.html @@ -1,3 +1,3 @@ -App | uWebSockets.js v20.46.0 documentation
    diff --git a/docs/generated/functions/SSLApp.html b/docs/generated/functions/SSLApp.html index beda7261..08ed369e 100644 --- a/docs/generated/functions/SSLApp.html +++ b/docs/generated/functions/SSLApp.html @@ -1,2 +1,2 @@ -SSLApp | uWebSockets.js v20.46.0 documentation

    Generated using TypeDoc

    \ No newline at end of file +SSLApp | uWebSockets.js v20.60.0 documentation
    uWebSockets.js v20.60.0 documentation
      Preparing search index...

      Function SSLApp

      diff --git a/docs/generated/functions/getParts.html b/docs/generated/functions/getParts.html index 681140f4..e0552144 100644 --- a/docs/generated/functions/getParts.html +++ b/docs/generated/functions/getParts.html @@ -1,2 +1,2 @@ -getParts | uWebSockets.js v20.46.0 documentation

      Generated using TypeDoc

      \ No newline at end of file +getParts | uWebSockets.js v20.60.0 documentation
      uWebSockets.js v20.60.0 documentation
        Preparing search index...

        Function getParts

        diff --git a/docs/generated/functions/us_listen_socket_close.html b/docs/generated/functions/us_listen_socket_close.html index a00f3076..654ace67 100644 --- a/docs/generated/functions/us_listen_socket_close.html +++ b/docs/generated/functions/us_listen_socket_close.html @@ -1,2 +1,2 @@ -us_listen_socket_close | uWebSockets.js v20.46.0 documentation

        Generated using TypeDoc

        \ No newline at end of file +us_listen_socket_close | uWebSockets.js v20.60.0 documentation
        uWebSockets.js v20.60.0 documentation
          Preparing search index...

          Function us_listen_socket_close

          diff --git a/docs/generated/functions/us_socket_local_port.html b/docs/generated/functions/us_socket_local_port.html index 59941b12..2ce3b002 100644 --- a/docs/generated/functions/us_socket_local_port.html +++ b/docs/generated/functions/us_socket_local_port.html @@ -1,2 +1,2 @@ -us_socket_local_port | uWebSockets.js v20.46.0 documentation

          Generated using TypeDoc

          \ No newline at end of file +us_socket_local_port | uWebSockets.js v20.60.0 documentation
          uWebSockets.js v20.60.0 documentation
            Preparing search index...

            Function us_socket_local_port

            • Gets local port of socket (or listenSocket) or -1.

              +

              Parameters

              Returns number

            diff --git a/docs/generated/hierarchy.html b/docs/generated/hierarchy.html new file mode 100644 index 00000000..5a5aae5d --- /dev/null +++ b/docs/generated/hierarchy.html @@ -0,0 +1 @@ +uWebSockets.js v20.60.0 documentation
            uWebSockets.js v20.60.0 documentation
              Preparing search index...

              uWebSockets.js v20.60.0 documentation

              Hierarchy Summary

              diff --git a/docs/generated/index.html b/docs/generated/index.html index baa32342..c31fe22f 100644 --- a/docs/generated/index.html +++ b/docs/generated/index.html @@ -1,38 +1 @@ -uWebSockets.js v20.46.0 documentation

              Generated using TypeDoc

              \ No newline at end of file +uWebSockets.js v20.60.0 documentation
              uWebSockets.js v20.60.0 documentation
                Preparing search index...
                diff --git a/docs/generated/interfaces/AppOptions.html b/docs/generated/interfaces/AppOptions.html index 343bb386..8a6d9259 100644 --- a/docs/generated/interfaces/AppOptions.html +++ b/docs/generated/interfaces/AppOptions.html @@ -1,11 +1,11 @@ -AppOptions | uWebSockets.js v20.46.0 documentation

                Options used when constructing an app. Especially for SSLApp. +AppOptions | uWebSockets.js v20.60.0 documentation

                uWebSockets.js v20.60.0 documentation
                  Preparing search index...

                  Interface AppOptions

                  Options used when constructing an app. Especially for SSLApp. These are options passed directly to uSockets, C layer.

                  -
                  interface AppOptions {
                      ca_file_name?: RecognizedString;
                      cert_file_name?: RecognizedString;
                      dh_params_file_name?: RecognizedString;
                      key_file_name?: RecognizedString;
                      passphrase?: RecognizedString;
                      ssl_ciphers?: RecognizedString;
                      ssl_prefer_low_memory_usage?: boolean;
                  }

                  Properties

                  ca_file_name?: RecognizedString
                  cert_file_name?: RecognizedString
                  dh_params_file_name?: RecognizedString
                  key_file_name?: RecognizedString
                  passphrase?: RecognizedString
                  ssl_ciphers?: RecognizedString
                  ssl_prefer_low_memory_usage?: boolean

                  This translates to SSL_MODE_RELEASE_BUFFERS

                  -

                  Generated using TypeDoc

                  \ No newline at end of file +
                  interface AppOptions {
                      ca_file_name?: RecognizedString;
                      cert_file_name?: RecognizedString;
                      dh_params_file_name?: RecognizedString;
                      key_file_name?: RecognizedString;
                      passphrase?: RecognizedString;
                      ssl_ciphers?: RecognizedString;
                      ssl_prefer_low_memory_usage?: boolean;
                  }
                  Index

                  Properties

                  ca_file_name?: RecognizedString
                  cert_file_name?: RecognizedString
                  dh_params_file_name?: RecognizedString
                  key_file_name?: RecognizedString
                  passphrase?: RecognizedString
                  ssl_ciphers?: RecognizedString
                  ssl_prefer_low_memory_usage?: boolean

                  This translates to SSL_MODE_RELEASE_BUFFERS

                  +
                  diff --git a/docs/generated/interfaces/HttpRequest.html b/docs/generated/interfaces/HttpRequest.html index b1f01f17..151595db 100644 --- a/docs/generated/interfaces/HttpRequest.html +++ b/docs/generated/interfaces/HttpRequest.html @@ -1,19 +1,19 @@ -HttpRequest | uWebSockets.js v20.46.0 documentation

                  An HttpRequest is stack allocated and only accessible during the callback invocation.

                  -
                  interface HttpRequest {
                      forEach(cb): void;
                      getCaseSensitiveMethod(): string;
                      getHeader(lowerCaseKey): string;
                      getMethod(): string;
                      getParameter(index): string;
                      getQuery(): string;
                      getQuery(key): string;
                      getUrl(): string;
                      setYield(_yield): HttpRequest;
                  }

                  Methods

                  • Loops over all headers.

                    -

                    Parameters

                    • cb: ((key, value) => void)
                        • (key, value): void
                        • Parameters

                          • key: string
                          • value: string

                          Returns void

                    Returns void

                  • Returns the HTTP method as-is.

                    -

                    Returns string

                  • Returns the lowercased header value or empty string.

                    -

                    Parameters

                    Returns string

                  • Returns the lowercased HTTP method, useful for "any" routes.

                    -

                    Returns string

                  • Returns the parsed parameter at index. Corresponds to route. Can also take the name of the parameter.

                    -

                    Parameters

                    Returns string

                  • Returns the raw querystring (the part of URL after ? sign) or empty string.

                    -

                    Returns string

                  • Returns a decoded query parameter value or undefined.

                    -

                    Parameters

                    • key: string

                    Returns string

                  • Returns the URL including initial /slash

                    -

                    Returns string

                  • Setting yield to true is to say that this route handler did not handle the route, causing the router to continue looking for a matching route handler, or fail.

                    -

                    Parameters

                    • _yield: boolean

                    Returns HttpRequest

                  Generated using TypeDoc

                  \ No newline at end of file +HttpRequest | uWebSockets.js v20.60.0 documentation
                  uWebSockets.js v20.60.0 documentation
                    Preparing search index...

                    Interface HttpRequest

                    An HttpRequest is stack allocated and only accessible during the callback invocation.

                    +
                    interface HttpRequest {
                        forEach(cb: (key: string, value: string) => void): void;
                        getCaseSensitiveMethod(): string;
                        getHeader(lowerCaseKey: RecognizedString): string;
                        getMethod(): string;
                        getParameter(index: number | RecognizedString): string;
                        getQuery(): string;
                        getQuery(key: string): string;
                        getUrl(): string;
                        setYield(_yield: boolean): HttpRequest;
                    }
                    Index

                    Methods

                    • Loops over all headers.

                      +

                      Parameters

                      • cb: (key: string, value: string) => void

                      Returns void

                    • Returns the HTTP method as-is.

                      +

                      Returns string

                    • Returns the lowercased HTTP method, useful for "any" routes.

                      +

                      Returns string

                    • Returns the parsed parameter at index. Corresponds to route. Can also take the name of the parameter.

                      +

                      Parameters

                      Returns string

                    • Returns the raw querystring (the part of URL after ? sign) or empty string.

                      +

                      Returns string

                    • Returns a decoded query parameter value or undefined.

                      +

                      Parameters

                      • key: string

                      Returns string

                    • Returns the URL including initial /slash

                      +

                      Returns string

                    • Setting yield to true is to say that this route handler did not handle the route, causing the router to continue looking for a matching route handler, or fail.

                      +

                      Parameters

                      • _yield: boolean

                      Returns HttpRequest

                    diff --git a/docs/generated/interfaces/HttpResponse.html b/docs/generated/interfaces/HttpResponse.html index 93e21973..3a8ae2f2 100644 --- a/docs/generated/interfaces/HttpResponse.html +++ b/docs/generated/interfaces/HttpResponse.html @@ -1,54 +1,66 @@ -HttpResponse | uWebSockets.js v20.46.0 documentation

                    An HttpResponse is valid until either onAborted callback or any of the .end/.tryEnd calls succeed. You may attach user data to this object.

                    -
                    interface HttpResponse {
                        close(): HttpResponse;
                        cork(cb): HttpResponse;
                        end(body?, closeConnection?): HttpResponse;
                        endWithoutBody(reportedContentLength?, closeConnection?): HttpResponse;
                        getProxiedRemoteAddress(): ArrayBuffer;
                        getProxiedRemoteAddressAsText(): ArrayBuffer;
                        getRemoteAddress(): ArrayBuffer;
                        getRemoteAddressAsText(): ArrayBuffer;
                        getWriteOffset(): number;
                        onAborted(handler): HttpResponse;
                        onData(handler): HttpResponse;
                        onWritable(handler): HttpResponse;
                        pause(): void;
                        resume(): void;
                        tryEnd(fullBodyOrChunk, totalSize): [boolean, boolean];
                        upgrade<UserData>(userData, secWebSocketKey, secWebSocketProtocol, secWebSocketExtensions, context): void;
                        write(chunk): boolean;
                        writeHeader(key, value): HttpResponse;
                        writeStatus(status): HttpResponse;
                        [key: string]: any;
                    }

                    Indexable

                    [key: string]: any

                    Arbitrary user data may be attached to this object

                    -

                    Methods

                    • Corking a response is a performance improvement in both CPU and network, as you ready the IO system for writing multiple chunks at once. -By default, you're corked in the immediately executing top portion of the route handler. In all other cases, such as when returning from -await, or when being called back from an async database request or anything that isn't directly executing in the route handler, you'll want +HttpResponse | uWebSockets.js v20.60.0 documentation

                      uWebSockets.js v20.60.0 documentation
                        Preparing search index...

                        Interface HttpResponse

                        An HttpResponse is valid until either onAborted callback or any of the .end/.tryEnd calls succeed. You may attach user data to this object.

                        +
                        interface HttpResponse {
                            close(): HttpResponse;
                            cork(cb: () => void): HttpResponse;
                            end(body?: RecognizedString, closeConnection?: boolean): HttpResponse;
                            endWithoutBody(
                                reportedContentLength?: number,
                                closeConnection?: boolean,
                            ): HttpResponse;
                            getProxiedRemoteAddress(): ArrayBuffer;
                            getProxiedRemoteAddressAsText(): ArrayBuffer;
                            getRemoteAddress(): ArrayBuffer;
                            getRemoteAddressAsText(): ArrayBuffer;
                            getWriteOffset(): number;
                            onAborted(handler: () => void): HttpResponse;
                            onData(
                                handler: (chunk: ArrayBuffer, isLast: boolean) => void,
                            ): HttpResponse;
                            onWritable(handler: (offset: number) => boolean): HttpResponse;
                            pause(): void;
                            resume(): void;
                            tryEnd(
                                fullBodyOrChunk: RecognizedString,
                                totalSize: number,
                            ): [boolean, boolean];
                            upgrade<UserData>(
                                userData: UserData,
                                secWebSocketKey: RecognizedString,
                                secWebSocketProtocol: RecognizedString,
                                secWebSocketExtensions: RecognizedString,
                                context: us_socket_context_t,
                            ): void;
                            write(chunk: RecognizedString): boolean;
                            writeHeader(key: RecognizedString, value: RecognizedString): HttpResponse;
                            writeStatus(status: RecognizedString): HttpResponse;
                            [key: string]: any;
                        }

                        Indexable

                        • [key: string]: any

                          Arbitrary user data may be attached to this object

                          +
                        Index

                        Methods

                        • Corking a response is a performance improvement in both CPU and network, as you ready the IO system for writing multiple chunks at once. +By default, you're corked in the immediately executing top portion of the route handler. In all other cases, such as when returning from +await, or when being called back from an async database request or anything that isn't directly executing in the route handler, you'll want to cork before calling writeStatus, writeHeader or just write. Corking takes a callback in which you execute the writeHeader, writeStatus and such calls, in one atomic IO operation. This is important, not only for TCP but definitely for TLS where each write would otherwise result in one TLS block being sent off, each with one send syscall.

                          Example usage:

                          res.cork(() => {
                          res.writeStatus("200 OK").writeHeader("Some", "Value").write("Hello world!");
                          });
                          -

                          Parameters

                          • cb: (() => void)
                              • (): void
                              • Returns void

                          Returns HttpResponse

                        • Ends this response without a body.

                          -

                          Parameters

                          • Optional reportedContentLength: number
                          • Optional closeConnection: boolean

                          Returns HttpResponse

                        • Returns the remote IP address in binary format (4 or 16 bytes), as reported by the PROXY Protocol v2 compatible proxy.

                          -

                          Returns ArrayBuffer

                        • Returns the remote IP address as text, as reported by the PROXY Protocol v2 compatible proxy.

                          -

                          Returns ArrayBuffer

                        • Returns the remote IP address in binary format (4 or 16 bytes).

                          -

                          Returns ArrayBuffer

                        • Returns the remote IP address as text.

                          -

                          Returns ArrayBuffer

                        • Returns the global byte write offset for this response. Use with onWritable.

                          -

                          Returns number

                      • Ends this response without a body.

                        +

                        Parameters

                        • OptionalreportedContentLength: number
                        • OptionalcloseConnection: boolean

                        Returns HttpResponse

                      • Returns the remote IP address in binary format (4 or 16 bytes), as reported by the PROXY Protocol v2 compatible proxy.

                        +

                        Returns ArrayBuffer

                      • Returns the remote IP address as text, as reported by the PROXY Protocol v2 compatible proxy.

                        +

                        Returns ArrayBuffer

                      • Returns the remote IP address in binary format (4 or 16 bytes).

                        +

                        Returns ArrayBuffer

                      • Returns the remote IP address as text.

                        +

                        Returns ArrayBuffer

                      • Returns the global byte write offset for this response. Use with onWritable.

                        +

                        Returns number

                      • Every HttpResponse MUST have an attached abort handler IF you do not respond to it immediately inside of the callback. Returning from an Http request handler without attaching (by calling onAborted) an abort handler is ill-use and will terminate. When this event emits, the response has been aborted and may not be used.

                        -

                        Parameters

                        • handler: (() => void)
                            • (): void
                            • Returns void

                        Returns HttpResponse

                      • Handler for reading data from POST and such requests. You MUST copy the data of chunk if isLast is not true. We Neuter ArrayBuffers on return, making it zero length.

                        -

                        Parameters

                        • handler: ((chunk, isLast) => void)
                            • (chunk, isLast): void
                            • Parameters

                              • chunk: ArrayBuffer
                              • isLast: boolean

                              Returns void

                        Returns HttpResponse

                      • Handler for reading data from POST and such requests. You MUST copy the data of chunk if isLast is not true. We Neuter ArrayBuffers on return, making it zero length.

                        +

                        Parameters

                        • handler: (chunk: ArrayBuffer, isLast: boolean) => void

                        Returns HttpResponse

                      • Registers a handler for writable events. Continue failed write attempts in here. You MUST return true for success, false for failure. Writing nothing is always success, so by default you must return true.

                        -

                        Parameters

                        • handler: ((offset) => boolean)
                            • (offset): boolean
                            • Parameters

                              • offset: number

                              Returns boolean

                        Returns HttpResponse

                      • Pause http body streaming (throttle)

                        -

                        Returns void

                      • Resume http body streaming (unthrottle)

                        -

                        Returns void

                      • Ends this response, or tries to, by streaming appropriately sized chunks of body. Use in conjunction with onWritable. Returns tuple [ok, hasResponded].

                        -

                        Parameters

                        Returns [boolean, boolean]

                      • Enters or continues chunked encoding mode. Writes part of the response. End with zero length write. Returns true if no backpressure was added.

                        -

                        Parameters

                        Returns boolean

                      • Pause http body streaming (throttle)

                        +

                        Returns void

                      • Resume http body streaming (unthrottle)

                        +

                        Returns void

                      • Ends this response, or tries to, by streaming appropriately sized chunks of body. Use in conjunction with onWritable. Returns tuple [ok, hasResponded].

                        +

                        Parameters

                        Returns [boolean, boolean]

                      • Enters or continues chunked encoding mode. Writes part of the response. End with zero length write. Returns true if no backpressure was added.

                        +

                        Parameters

                        Returns boolean

                      Generated using TypeDoc

                      \ No newline at end of file +

                      Parameters

                      Returns HttpResponse

                      • Writes the HTTP status message such as "200 OK". +This has to be called first in any response, otherwise +it will be called automatically with "200 OK".

                        +

                        If you want to send custom headers in a WebSocket +upgrade response, you have to call writeStatus with +"101 Switching Protocols" before you call writeHeader, +otherwise your first call to writeHeader will call +writeStatus with "200 OK" and the upgrade will fail.

                        +

                        As you can imagine, we format outgoing responses in a linear +buffer, not in a hash table. You can read about this in +the user manual under "corking".

                        +

                        Parameters

                        Returns HttpResponse

                      diff --git a/docs/generated/interfaces/MultipartField.html b/docs/generated/interfaces/MultipartField.html index 9a7ff536..42a58072 100644 --- a/docs/generated/interfaces/MultipartField.html +++ b/docs/generated/interfaces/MultipartField.html @@ -1,5 +1,5 @@ -MultipartField | uWebSockets.js v20.46.0 documentation
                      interface MultipartField {
                          data: ArrayBuffer;
                          filename?: string;
                          name: string;
                          type?: string;
                      }

                      Properties

                      Properties

                      data: ArrayBuffer
                      filename?: string
                      name: string
                      type?: string

                      Generated using TypeDoc

                      \ No newline at end of file +MultipartField | uWebSockets.js v20.60.0 documentation
                      uWebSockets.js v20.60.0 documentation
                        Preparing search index...

                        Interface MultipartField

                        interface MultipartField {
                            data: ArrayBuffer;
                            filename?: string;
                            name: string;
                            type?: string;
                        }
                        Index

                        Properties

                        Properties

                        data: ArrayBuffer
                        filename?: string
                        name: string
                        type?: string
                        diff --git a/docs/generated/interfaces/TemplatedApp.html b/docs/generated/interfaces/TemplatedApp.html index 794f7571..4454f47b 100644 --- a/docs/generated/interfaces/TemplatedApp.html +++ b/docs/generated/interfaces/TemplatedApp.html @@ -1,46 +1,47 @@ -TemplatedApp | uWebSockets.js v20.46.0 documentation

                        TemplatedApp is either an SSL or non-SSL app. See App for more info, read user manual.

                        -
                        interface TemplatedApp {
                            addServerName(hostname, options): TemplatedApp;
                            any(pattern, handler): TemplatedApp;
                            close(): TemplatedApp;
                            connect(pattern, handler): TemplatedApp;
                            del(pattern, handler): TemplatedApp;
                            domain(domain): TemplatedApp;
                            filter(cb): TemplatedApp;
                            get(pattern, handler): TemplatedApp;
                            head(pattern, handler): TemplatedApp;
                            listen(host, port, cb): TemplatedApp;
                            listen(port, cb): TemplatedApp;
                            listen(port, options, cb): TemplatedApp;
                            listen_unix(cb, path): TemplatedApp;
                            missingServerName(cb): TemplatedApp;
                            numSubscribers(topic): number;
                            options(pattern, handler): TemplatedApp;
                            patch(pattern, handler): TemplatedApp;
                            post(pattern, handler): TemplatedApp;
                            publish(topic, message, isBinary?, compress?): boolean;
                            put(pattern, handler): TemplatedApp;
                            removeServerName(hostname): TemplatedApp;
                            trace(pattern, handler): TemplatedApp;
                            ws<UserData>(pattern, behavior): TemplatedApp;
                        }

                        Methods

                        • Browse to SNI domain. Used together with .get, .post and similar to attach routes under SNI domains.

                          -

                          Parameters

                          • domain: string

                          Returns TemplatedApp

                        • Attaches a "filter" function to track socket connections / disconnections

                          -

                          Parameters

                          • cb: ((res, count) => void | Promise<void>)
                              • (res, count): void | Promise<void>
                              • Parameters

                                Returns void | Promise<void>

                          Returns TemplatedApp

                        • Listens to hostname & port. Callback hands either false or a listen socket.

                          -

                          Parameters

                          • host: RecognizedString
                          • port: number
                          • cb: ((listenSocket) => void | Promise<void>)
                              • (listenSocket): void | Promise<void>
                              • Parameters

                                Returns void | Promise<void>

                          Returns TemplatedApp

                        • Listens to port. Callback hands either false or a listen socket.

                          -

                          Parameters

                          • port: number
                          • cb: ((listenSocket) => void | Promise<void>)
                              • (listenSocket): void | Promise<void>
                              • Parameters

                                Returns void | Promise<void>

                          Returns TemplatedApp

                        • Listens to port and sets Listen Options. Callback hands either false or a listen socket.

                          -

                          Parameters

                          • port: number
                          • options: ListenOptions
                          • cb: ((listenSocket) => void | Promise<void>)
                              • (listenSocket): void | Promise<void>
                              • Parameters

                                Returns void | Promise<void>

                          Returns TemplatedApp

                        • Registers a synchronous callback on missing server names. See /examples/ServerName.js.

                          -

                          Parameters

                          • cb: ((hostname) => void)
                              • (hostname): void
                              • Parameters

                                • hostname: string

                                Returns void

                          Returns TemplatedApp

                        • Publishes a message under topic, for all WebSockets under this app. See WebSocket.publish.

                          -

                          Parameters

                          Returns boolean

                        Generated using TypeDoc

                        \ No newline at end of file +TemplatedApp | uWebSockets.js v20.60.0 documentation
                        uWebSockets.js v20.60.0 documentation
                          Preparing search index...

                          Interface TemplatedApp

                          TemplatedApp is either an SSL or non-SSL app. See App for more info, read user manual.

                          +
                          interface TemplatedApp {
                              addServerName(hostname: string, options: AppOptions): TemplatedApp;
                              any(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              close(): TemplatedApp;
                              connect(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              del(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              domain(domain: string): TemplatedApp;
                              filter(
                                  cb: (res: HttpResponse, count: Number) => void | Promise<void>,
                              ): TemplatedApp;
                              get(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              head(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              listen(
                                  host: RecognizedString,
                                  port: number,
                                  cb: (listenSocket: false | us_listen_socket) => void | Promise<void>,
                              ): TemplatedApp;
                              listen(
                                  host: RecognizedString,
                                  port: number,
                                  options: ListenOptions,
                                  cb: (listenSocket: false | us_listen_socket) => void | Promise<void>,
                              ): TemplatedApp;
                              listen(
                                  port: number,
                                  cb: (listenSocket: false | us_listen_socket) => void | Promise<void>,
                              ): TemplatedApp;
                              listen(
                                  port: number,
                                  options: ListenOptions,
                                  cb: (listenSocket: false | us_listen_socket) => void | Promise<void>,
                              ): TemplatedApp;
                              listen_unix(
                                  cb: (listenSocket: us_listen_socket) => void | Promise<void>,
                                  path: RecognizedString,
                              ): TemplatedApp;
                              missingServerName(cb: (hostname: string) => void): TemplatedApp;
                              numSubscribers(topic: RecognizedString): number;
                              options(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              patch(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              post(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              publish(
                                  topic: RecognizedString,
                                  message: RecognizedString,
                                  isBinary?: boolean,
                                  compress?: boolean,
                              ): boolean;
                              put(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              removeServerName(hostname: string): TemplatedApp;
                              trace(
                                  pattern: RecognizedString,
                                  handler: (res: HttpResponse, req: HttpRequest) => void | Promise<void>,
                              ): TemplatedApp;
                              ws<UserData>(
                                  pattern: RecognizedString,
                                  behavior: WebSocketBehavior<UserData>,
                              ): TemplatedApp;
                          }
                          Index

                          Methods

                          • Browse to SNI domain. Used together with .get, .post and similar to attach routes under SNI domains.

                            +

                            Parameters

                            • domain: string

                            Returns TemplatedApp

                          • Registers a synchronous callback on missing server names. See /examples/ServerName.js.

                            +

                            Parameters

                            • cb: (hostname: string) => void

                            Returns TemplatedApp

                          post

                          • Publishes a message under topic, for all WebSockets under this app. See WebSocket.publish.

                            +

                            Parameters

                            Returns boolean

                          diff --git a/docs/generated/interfaces/WebSocket.html b/docs/generated/interfaces/WebSocket.html index c17ebec3..63837e17 100644 --- a/docs/generated/interfaces/WebSocket.html +++ b/docs/generated/interfaces/WebSocket.html @@ -1,39 +1,48 @@ -WebSocket | uWebSockets.js v20.46.0 documentation

                          A WebSocket connection that is valid from open to close event. +WebSocket | uWebSockets.js v20.60.0 documentation

                          uWebSockets.js v20.60.0 documentation
                            Preparing search index...

                            Interface WebSocket<UserData>

                            A WebSocket connection that is valid from open to close event. Read more about this in the user manual.

                            -
                            interface WebSocket<UserData> {
                                close(): void;
                                cork(cb): WebSocket<UserData>;
                                end(code?, shortMessage?): void;
                                getBufferedAmount(): number;
                                getRemoteAddress(): ArrayBuffer;
                                getRemoteAddressAsText(): ArrayBuffer;
                                getTopics(): string[];
                                getUserData(): UserData;
                                isSubscribed(topic): boolean;
                                ping(message?): number;
                                publish(topic, message, isBinary?, compress?): boolean;
                                send(message, isBinary?, compress?): number;
                                subscribe(topic): boolean;
                                unsubscribe(topic): boolean;
                            }

                            Type Parameters

                            • UserData

                            Methods

                            • Forcefully closes this WebSocket. Immediately calls the close handler. +

                            interface WebSocket<UserData> {
                                close(): void;
                                cork(cb: () => void): WebSocket<UserData>;
                                end(code?: number, shortMessage?: RecognizedString): void;
                                getBufferedAmount(): number;
                                getRemoteAddress(): ArrayBuffer;
                                getRemoteAddressAsText(): ArrayBuffer;
                                getTopics(): string[];
                                getUserData(): UserData;
                                isSubscribed(topic: RecognizedString): boolean;
                                ping(message?: RecognizedString): number;
                                publish(
                                    topic: RecognizedString,
                                    message: RecognizedString,
                                    isBinary?: boolean,
                                    compress?: boolean,
                                ): boolean;
                                send(
                                    message: RecognizedString,
                                    isBinary?: boolean,
                                    compress?: boolean,
                                ): number;
                                sendFirstFragment(
                                    message: RecognizedString,
                                    isBinary?: boolean,
                                    compress?: boolean,
                                ): number;
                                sendFragment(message: RecognizedString, compress?: boolean): number;
                                sendLastFragment(message: RecognizedString, compress?: boolean): number;
                                subscribe(topic: RecognizedString): boolean;
                                unsubscribe(topic: RecognizedString): boolean;
                            }

                            Type Parameters

                            • UserData
                            Index

                            Methods

                            • Forcefully closes this WebSocket. Immediately calls the close handler. No WebSocket close message is sent.

                              -

                              Returns void

                            • See HttpResponse.cork. Takes a function in which the socket is corked (packing many sends into one single syscall/SSL block)

                              -

                              Parameters

                              • cb: (() => void)
                                  • (): void
                                  • Returns void

                              Returns WebSocket<UserData>

                            • Gracefully closes this WebSocket. Immediately calls the close handler. +

                              Returns void

                            • See HttpResponse.cork. Takes a function in which the socket is corked (packing many sends into one single syscall/SSL block)

                              +

                              Parameters

                              • cb: () => void

                              Returns WebSocket<UserData>

                            • Gracefully closes this WebSocket. Immediately calls the close handler. A WebSocket close message is sent with code and shortMessage.

                              -

                              Parameters

                              Returns void

                            • Returns the bytes buffered in backpressure. This is similar to the bufferedAmount property in the browser counterpart. +

                              Parameters

                              Returns void

                            • Returns the bytes buffered in backpressure. This is similar to the bufferedAmount property in the browser counterpart. Check backpressure example.

                              -

                              Returns number

                            • Returns the remote IP address. Note that the returned IP is binary, not text.

                              +

                              Returns number

                            • Returns the remote IP address. Note that the returned IP is binary, not text.

                              IPv4 is 4 byte long and can be converted to text by printing every byte as a digit between 0 and 255. IPv6 is 16 byte long and can be converted to text in similar ways, but you typically print digits in HEX.

                              See getRemoteAddressAsText() for a text version.

                              -

                              Returns ArrayBuffer

                            • Returns the remote IP address as text. See RecognizedString.

                              -

                              Returns ArrayBuffer

                            • Returns a list of topics this websocket is subscribed to.

                              -

                              Returns string[]

                            • Returns whether this websocket is subscribed to topic.

                              -

                              Parameters

                              Returns boolean

                            • Sends a ping control message. Returns sendStatus similar to WebSocket.send (regarding backpressure). This helper function correlates to WebSocket::send(message, uWS::OpCode::PING, ...) in C++.

                              -

                              Parameters

                              Returns number

                            • Publish a message under topic. Backpressure is managed according to maxBackpressure, closeOnBackpressureLimit settings. +

                              Returns ArrayBuffer

                            • Returns the remote IP address as text. See RecognizedString.

                              +

                              Returns ArrayBuffer

                            • Returns a list of topics this websocket is subscribed to.

                              +

                              Returns string[]

                            • Sends a ping control message. Returns sendStatus similar to WebSocket.send (regarding backpressure). This helper function correlates to WebSocket::send(message, uWS::OpCode::PING, ...) in C++.

                              +

                              Parameters

                              Returns number

                            • Publish a message under topic. Backpressure is managed according to maxBackpressure, closeOnBackpressureLimit settings. Order is guaranteed since v20.

                              -

                              Parameters

                              Returns boolean

                            • Sends a message. Returns 1 for success, 2 for dropped due to backpressure limit, and 0 for built up backpressure that will drain over time. You can check backpressure before or after sending by calling getBufferedAmount().

                              +

                              Parameters

                              Returns boolean

                            • Sends a message. Returns 1 for success, 2 for dropped due to backpressure limit, and 0 for built up backpressure that will drain over time. You can check backpressure before or after sending by calling getBufferedAmount().

                              Make sure you properly understand the concept of backpressure. Check the backpressure example file.

                              -

                              Parameters

                              Returns number

                            • Unsubscribe from a topic. Returns true on success, if the WebSocket was subscribed.

                              -

                              Parameters

                              Returns boolean

                            Generated using TypeDoc

                            \ No newline at end of file +

                            Parameters

                            Returns number

                            • Sends the first fragment of a fragmented message. Use for sending large messages in chunks. +Returns 1 for success, 2 for dropped due to backpressure limit, and 0 for built up backpressure.

                              +

                              Parameters

                              Returns number

                            • Sends a middle fragment of a fragmented message. +Returns 1 for success, 2 for dropped due to backpressure limit, and 0 for built up backpressure.

                              +

                              Parameters

                              Returns number

                            • Sends the last fragment of a fragmented message. +Returns 1 for success, 2 for dropped due to backpressure limit, and 0 for built up backpressure.

                              +

                              Parameters

                              Returns number

                            diff --git a/docs/generated/interfaces/WebSocketBehavior.html b/docs/generated/interfaces/WebSocketBehavior.html index 16ef724d..43016003 100644 --- a/docs/generated/interfaces/WebSocketBehavior.html +++ b/docs/generated/interfaces/WebSocketBehavior.html @@ -1,46 +1,36 @@ -WebSocketBehavior | uWebSockets.js v20.46.0 documentation

                            Interface WebSocketBehavior<UserData>

                            A structure holding settings and handlers for a WebSocket URL route handler.

                            -
                            interface WebSocketBehavior<UserData> {
                                close?: ((ws, code, message) => void);
                                closeOnBackpressureLimit?: boolean;
                                compression?: number;
                                drain?: ((ws) => void);
                                dropped?: ((ws, message, isBinary) => void | Promise<void>);
                                idleTimeout?: number;
                                maxBackpressure?: number;
                                maxLifetime?: number;
                                maxPayloadLength?: number;
                                message?: ((ws, message, isBinary) => void | Promise<void>);
                                open?: ((ws) => void | Promise<void>);
                                ping?: ((ws, message) => void);
                                pong?: ((ws, message) => void);
                                sendPingsAutomatically?: boolean;
                                subscription?: ((ws, topic, newCount, oldCount) => void);
                                upgrade?: ((res, req, context) => void | Promise<void>);
                            }

                            Type Parameters

                            • UserData

                            Properties

                            close?: ((ws, code, message) => void)

                            Handler for close event, no matter if error, timeout or graceful close. You may not use WebSocket after this event. Do not send on this WebSocket from within here, it is closed.

                            -

                            Type declaration

                              • (ws, code, message): void
                              • Handler for close event, no matter if error, timeout or graceful close. You may not use WebSocket after this event. Do not send on this WebSocket from within here, it is closed.

                                -

                                Parameters

                                Returns void

                            closeOnBackpressureLimit?: boolean

                            Whether or not we should automatically close the socket when a message is dropped due to backpressure. Defaults to false.

                            -
                            compression?: number

                            What permessage-deflate compression to use. uWS.DISABLED, uWS.SHARED_COMPRESSOR or any of the uWS.DEDICATED_COMPRESSOR_xxxKB. Defaults to uWS.DISABLED.

                            -
                            drain?: ((ws) => void)

                            Handler for when WebSocket backpressure drains. Check ws.getBufferedAmount(). Use this to guide / drive your backpressure throttling.

                            -

                            Type declaration

                              • (ws): void
                              • Handler for when WebSocket backpressure drains. Check ws.getBufferedAmount(). Use this to guide / drive your backpressure throttling.

                                -

                                Parameters

                                Returns void

                            dropped?: ((ws, message, isBinary) => void | Promise<void>)

                            Handler for a dropped WebSocket message. Messages can be dropped due to specified backpressure settings. Messages are given as ArrayBuffer no matter if they are binary or not. Given ArrayBuffer is valid during the lifetime of this callback (until first await or return) and will be neutered.

                            -

                            Type declaration

                              • (ws, message, isBinary): void | Promise<void>
                              • Handler for a dropped WebSocket message. Messages can be dropped due to specified backpressure settings. Messages are given as ArrayBuffer no matter if they are binary or not. Given ArrayBuffer is valid during the lifetime of this callback (until first await or return) and will be neutered.

                                -

                                Parameters

                                Returns void | Promise<void>

                            idleTimeout?: number

                            Maximum amount of seconds that may pass without sending or getting a message. Connection is closed if this timeout passes. Resolution (granularity) for timeouts are typically 4 seconds, rounded to closest. +WebSocketBehavior | uWebSockets.js v20.60.0 documentation

                            uWebSockets.js v20.60.0 documentation
                              Preparing search index...

                              Interface WebSocketBehavior<UserData>

                              A structure holding settings and handlers for a WebSocket URL route handler.

                              +
                              interface WebSocketBehavior<UserData> {
                                  close?: (
                                      ws: WebSocket<UserData>,
                                      code: number,
                                      message: ArrayBuffer,
                                  ) => void;
                                  closeOnBackpressureLimit?: boolean;
                                  compression?: number;
                                  drain?: (ws: WebSocket<UserData>) => void;
                                  dropped?: (
                                      ws: WebSocket<UserData>,
                                      message: ArrayBuffer,
                                      isBinary: boolean,
                                  ) => void | Promise<void>;
                                  idleTimeout?: number;
                                  maxBackpressure?: number;
                                  maxLifetime?: number;
                                  maxPayloadLength?: number;
                                  message?: (
                                      ws: WebSocket<UserData>,
                                      message: ArrayBuffer,
                                      isBinary: boolean,
                                  ) => void | Promise<void>;
                                  open?: (ws: WebSocket<UserData>) => void | Promise<void>;
                                  ping?: (ws: WebSocket<UserData>, message: ArrayBuffer) => void;
                                  pong?: (ws: WebSocket<UserData>, message: ArrayBuffer) => void;
                                  sendPingsAutomatically?: boolean;
                                  subscription?: (
                                      ws: WebSocket<UserData>,
                                      topic: ArrayBuffer,
                                      newCount: number,
                                      oldCount: number,
                                  ) => void;
                                  upgrade?: (
                                      res: HttpResponse,
                                      req: HttpRequest,
                                      context: us_socket_context_t,
                                  ) => void | Promise<void>;
                              }

                              Type Parameters

                              • UserData
                              Index

                              Properties

                              close?: (ws: WebSocket<UserData>, code: number, message: ArrayBuffer) => void

                              Handler for close event, no matter if error, timeout or graceful close. You may not use WebSocket after this event. Do not send on this WebSocket from within here, it is closed.

                              +
                              closeOnBackpressureLimit?: boolean

                              Whether or not we should automatically close the socket when a message is dropped due to backpressure. Defaults to false.

                              +
                              compression?: number

                              What permessage-deflate compression to use. uWS.DISABLED, uWS.SHARED_COMPRESSOR or any of the uWS.DEDICATED_COMPRESSOR_xxxKB. Defaults to uWS.DISABLED.

                              +
                              drain?: (ws: WebSocket<UserData>) => void

                              Handler for when WebSocket backpressure drains. Check ws.getBufferedAmount(). Use this to guide / drive your backpressure throttling.

                              +
                              dropped?: (
                                  ws: WebSocket<UserData>,
                                  message: ArrayBuffer,
                                  isBinary: boolean,
                              ) => void | Promise<void>

                              Handler for a dropped WebSocket message. Messages can be dropped due to specified backpressure settings. Messages are given as ArrayBuffer no matter if they are binary or not. Given ArrayBuffer is valid during the lifetime of this callback (until first await or return) and will be neutered.

                              +
                              idleTimeout?: number

                              Maximum amount of seconds that may pass without sending or getting a message. Connection is closed if this timeout passes. Resolution (granularity) for timeouts are typically 4 seconds, rounded to closest. Disable by using 0. Defaults to 120.

                              -
                              maxBackpressure?: number

                              Maximum length of allowed backpressure per socket when publishing or sending messages. Slow receivers with too high backpressure will be skipped until they catch up or timeout. Defaults to 64 * 1024.

                              -
                              maxLifetime?: number

                              Maximum number of minutes a WebSocket may be connected before being closed by the server. 0 disables the feature.

                              -
                              maxPayloadLength?: number

                              Maximum length of received message. If a client tries to send you a message larger than this, the connection is immediately closed. Defaults to 16 * 1024.

                              -
                              message?: ((ws, message, isBinary) => void | Promise<void>)

                              Handler for a WebSocket message. Messages are given as ArrayBuffer no matter if they are binary or not. Given ArrayBuffer is valid during the lifetime of this callback (until first await or return) and will be neutered.

                              -

                              Type declaration

                                • (ws, message, isBinary): void | Promise<void>
                                • Handler for a WebSocket message. Messages are given as ArrayBuffer no matter if they are binary or not. Given ArrayBuffer is valid during the lifetime of this callback (until first await or return) and will be neutered.

                                  -

                                  Parameters

                                  Returns void | Promise<void>

                              open?: ((ws) => void | Promise<void>)

                              Handler for new WebSocket connection. WebSocket is valid from open to close, no errors.

                              -

                              Type declaration

                                • (ws): void | Promise<void>
                                • Handler for new WebSocket connection. WebSocket is valid from open to close, no errors.

                                  -

                                  Parameters

                                  Returns void | Promise<void>

                              ping?: ((ws, message) => void)

                              Handler for received ping control message. You do not need to handle this, pong messages are automatically sent as per the standard.

                              -

                              Type declaration

                                • (ws, message): void
                                • Handler for received ping control message. You do not need to handle this, pong messages are automatically sent as per the standard.

                                  -

                                  Parameters

                                  Returns void

                              pong?: ((ws, message) => void)

                              Handler for received pong control message.

                              -

                              Type declaration

                                • (ws, message): void
                                • Handler for received pong control message.

                                  -

                                  Parameters

                                  Returns void

                              sendPingsAutomatically?: boolean

                              Whether or not we should automatically send pings to uphold a stable connection given whatever idleTimeout.

                              -
                              subscription?: ((ws, topic, newCount, oldCount) => void)

                              Handler for subscription changes.

                              -

                              Type declaration

                                • (ws, topic, newCount, oldCount): void
                                • Handler for subscription changes.

                                  -

                                  Parameters

                                  Returns void

                              upgrade?: ((res, req, context) => void | Promise<void>)

                              Upgrade handler used to intercept HTTP upgrade requests and potentially upgrade to WebSocket. +

                              maxBackpressure?: number

                              Maximum length of allowed backpressure per socket when publishing or sending messages. Slow receivers with too high backpressure will be skipped until they catch up or timeout. Defaults to 64 * 1024.

                              +
                              maxLifetime?: number

                              Maximum number of minutes a WebSocket may be connected before being closed by the server. 0 disables the feature.

                              +
                              maxPayloadLength?: number

                              Maximum length of received message. If a client tries to send you a message larger than this, the connection is immediately closed. Defaults to 16 * 1024.

                              +
                              message?: (
                                  ws: WebSocket<UserData>,
                                  message: ArrayBuffer,
                                  isBinary: boolean,
                              ) => void | Promise<void>

                              Handler for a WebSocket message. Messages are given as ArrayBuffer no matter if they are binary or not. Given ArrayBuffer is valid during the lifetime of this callback (until first await or return) and will be neutered.

                              +
                              open?: (ws: WebSocket<UserData>) => void | Promise<void>

                              Handler for new WebSocket connection. WebSocket is valid from open to close, no errors.

                              +
                              ping?: (ws: WebSocket<UserData>, message: ArrayBuffer) => void

                              Handler for received ping control message. You do not need to handle this, pong messages are automatically sent as per the standard.

                              +
                              pong?: (ws: WebSocket<UserData>, message: ArrayBuffer) => void

                              Handler for received pong control message.

                              +
                              sendPingsAutomatically?: boolean

                              Whether or not we should automatically send pings to uphold a stable connection given whatever idleTimeout.

                              +
                              subscription?: (
                                  ws: WebSocket<UserData>,
                                  topic: ArrayBuffer,
                                  newCount: number,
                                  oldCount: number,
                              ) => void

                              Handler for subscription changes.

                              +
                              upgrade?: (
                                  res: HttpResponse,
                                  req: HttpRequest,
                                  context: us_socket_context_t,
                              ) => void | Promise<void>

                              Upgrade handler used to intercept HTTP upgrade requests and potentially upgrade to WebSocket. See UpgradeAsync and UpgradeSync example files.

                              -

                              Type declaration

                                • (res, req, context): void | Promise<void>
                                • Upgrade handler used to intercept HTTP upgrade requests and potentially upgrade to WebSocket. -See UpgradeAsync and UpgradeSync example files.

                                  -

                                  Parameters

                                  Returns void | Promise<void>

                              Generated using TypeDoc

                              \ No newline at end of file +
                              diff --git a/docs/generated/interfaces/us_listen_socket.html b/docs/generated/interfaces/us_listen_socket.html index 0183f57e..ee306dc0 100644 --- a/docs/generated/interfaces/us_listen_socket.html +++ b/docs/generated/interfaces/us_listen_socket.html @@ -1,3 +1,3 @@ -us_listen_socket | uWebSockets.js v20.46.0 documentation

                              Native type representing a raw uSockets struct us_listen_socket_t. +us_listen_socket | uWebSockets.js v20.60.0 documentation

                              uWebSockets.js v20.60.0 documentation
                                Preparing search index...

                                Interface us_listen_socket

                                Native type representing a raw uSockets struct us_listen_socket_t. Careful with this one, it is entirely unchecked and native so invalid usage will blow up.

                                -
                                interface us_listen_socket {}

                                Generated using TypeDoc

                                \ No newline at end of file +
                                diff --git a/docs/generated/interfaces/us_socket.html b/docs/generated/interfaces/us_socket.html index 6f5faee7..468a3d5c 100644 --- a/docs/generated/interfaces/us_socket.html +++ b/docs/generated/interfaces/us_socket.html @@ -1,3 +1,3 @@ -us_socket | uWebSockets.js v20.46.0 documentation

                                Native type representing a raw uSockets struct us_socket_t. +us_socket | uWebSockets.js v20.60.0 documentation

                                uWebSockets.js v20.60.0 documentation
                                  Preparing search index...

                                  Generated using TypeDoc

                                  \ No newline at end of file +
                                  diff --git a/docs/generated/interfaces/us_socket_context_t.html b/docs/generated/interfaces/us_socket_context_t.html index 085ab39f..7fa02523 100644 --- a/docs/generated/interfaces/us_socket_context_t.html +++ b/docs/generated/interfaces/us_socket_context_t.html @@ -1,3 +1,3 @@ -us_socket_context_t | uWebSockets.js v20.46.0 documentation

                                  Native type representing a raw uSockets struct us_socket_context_t. +us_socket_context_t | uWebSockets.js v20.60.0 documentation

                                  uWebSockets.js v20.60.0 documentation
                                    Preparing search index...

                                    Generated using TypeDoc

                                    \ No newline at end of file +
                                    diff --git a/docs/generated/types/CompressOptions.html b/docs/generated/types/CompressOptions.html index ffccb6ff..24a673e6 100644 --- a/docs/generated/types/CompressOptions.html +++ b/docs/generated/types/CompressOptions.html @@ -1,2 +1,2 @@ -CompressOptions | uWebSockets.js v20.46.0 documentation

                                    Generated using TypeDoc

                                    \ No newline at end of file +CompressOptions | uWebSockets.js v20.60.0 documentation
                                    uWebSockets.js v20.60.0 documentation
                                      Preparing search index...

                                      Type Alias CompressOptions

                                      CompressOptions: number

                                      WebSocket compression options. Combine any compressor with any decompressor using bitwise OR.

                                      +
                                      diff --git a/docs/generated/types/RecognizedString.html b/docs/generated/types/RecognizedString.html index f2ba392d..f0822e42 100644 --- a/docs/generated/types/RecognizedString.html +++ b/docs/generated/types/RecognizedString.html @@ -1,7 +1,7 @@ -RecognizedString | uWebSockets.js v20.46.0 documentation
                                      RecognizedString: string | ArrayBuffer | Uint8Array | Int8Array | Uint16Array | Int16Array | Uint32Array | Int32Array | Float32Array | Float64Array

                                      Recognized string types, things C++ can read and understand as strings. +RecognizedString | uWebSockets.js v20.60.0 documentation

                                      uWebSockets.js v20.60.0 documentation
                                        Preparing search index...

                                        Type Alias RecognizedString

                                        RecognizedString:
                                            | string
                                            | ArrayBuffer
                                            | Uint8Array
                                            | Int8Array
                                            | Uint16Array
                                            | Int16Array
                                            | Uint32Array
                                            | Int32Array
                                            | Float32Array
                                            | Float64Array

                                        Recognized string types, things C++ can read and understand as strings. "String" does not have to mean "text", it can also be "binary".

                                        Ironically, JavaScript strings are the least performant of all options, to pass or receive to/from C++. This because we expect UTF-8, which is packed in 8-byte chars. JavaScript strings are UTF-16 internally meaning extra copies and reinterpretation are required.

                                        -

                                        That's why all events pass data by ArrayBuffer and not JavaScript strings, as they allow zero-copy data passing.

                                        +

                                        That's why all events pass data by ArrayBuffer and not JavaScript strings, as they allow zero-copy data passing.

                                        You can always do Buffer.from(arrayBuffer).toString(), but keeping things binary and as ArrayBuffer is preferred.

                                        -

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_128KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_128KB.html index 6e1f8fd9..ff95e8d0 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_128KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_128KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_128KB | uWebSockets.js v20.46.0 documentation

                                        Generated using TypeDoc

                                        \ No newline at end of file +DEDICATED_COMPRESSOR_128KB | uWebSockets.js v20.60.0 documentation
                                        uWebSockets.js v20.60.0 documentation
                                          Preparing search index...

                                          Variable DEDICATED_COMPRESSOR_128KB

                                          DEDICATED_COMPRESSOR_128KB: CompressOptions

                                          Sliding dedicated compress window, requires 128KB of memory per socket

                                          +
                                          diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_16KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_16KB.html index 16c377fe..8e4f0233 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_16KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_16KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_16KB | uWebSockets.js v20.46.0 documentation

                                          Generated using TypeDoc

                                          \ No newline at end of file +DEDICATED_COMPRESSOR_16KB | uWebSockets.js v20.60.0 documentation
                                          uWebSockets.js v20.60.0 documentation
                                            Preparing search index...

                                            Variable DEDICATED_COMPRESSOR_16KB

                                            DEDICATED_COMPRESSOR_16KB: CompressOptions

                                            Sliding dedicated compress window, requires 16KB of memory per socket

                                            +
                                            diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_256KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_256KB.html index 85600379..4df7b2e3 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_256KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_256KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_256KB | uWebSockets.js v20.46.0 documentation

                                            Generated using TypeDoc

                                            \ No newline at end of file +DEDICATED_COMPRESSOR_256KB | uWebSockets.js v20.60.0 documentation
                                            uWebSockets.js v20.60.0 documentation
                                              Preparing search index...

                                              Variable DEDICATED_COMPRESSOR_256KB

                                              DEDICATED_COMPRESSOR_256KB: CompressOptions

                                              Sliding dedicated compress window, requires 256KB of memory per socket

                                              +
                                              diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_32KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_32KB.html index 6b476242..41bdf465 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_32KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_32KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_32KB | uWebSockets.js v20.46.0 documentation

                                              Generated using TypeDoc

                                              \ No newline at end of file +DEDICATED_COMPRESSOR_32KB | uWebSockets.js v20.60.0 documentation
                                              uWebSockets.js v20.60.0 documentation
                                                Preparing search index...

                                                Variable DEDICATED_COMPRESSOR_32KB

                                                DEDICATED_COMPRESSOR_32KB: CompressOptions

                                                Sliding dedicated compress window, requires 32KB of memory per socket

                                                +
                                                diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_3KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_3KB.html index 45937f4e..185780ca 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_3KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_3KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_3KB | uWebSockets.js v20.46.0 documentation

                                                Generated using TypeDoc

                                                \ No newline at end of file +DEDICATED_COMPRESSOR_3KB | uWebSockets.js v20.60.0 documentation
                                                uWebSockets.js v20.60.0 documentation
                                                  Preparing search index...

                                                  Variable DEDICATED_COMPRESSOR_3KB

                                                  DEDICATED_COMPRESSOR_3KB: CompressOptions

                                                  Sliding dedicated compress window, requires 3KB of memory per socket

                                                  +
                                                  diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_4KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_4KB.html index 447899e8..21627f91 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_4KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_4KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_4KB | uWebSockets.js v20.46.0 documentation

                                                  Generated using TypeDoc

                                                  \ No newline at end of file +DEDICATED_COMPRESSOR_4KB | uWebSockets.js v20.60.0 documentation
                                                  uWebSockets.js v20.60.0 documentation
                                                    Preparing search index...

                                                    Variable DEDICATED_COMPRESSOR_4KB

                                                    DEDICATED_COMPRESSOR_4KB: CompressOptions

                                                    Sliding dedicated compress window, requires 4KB of memory per socket

                                                    +
                                                    diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_64KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_64KB.html index 013f1aa4..8ba29207 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_64KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_64KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_64KB | uWebSockets.js v20.46.0 documentation

                                                    Generated using TypeDoc

                                                    \ No newline at end of file +DEDICATED_COMPRESSOR_64KB | uWebSockets.js v20.60.0 documentation
                                                    uWebSockets.js v20.60.0 documentation
                                                      Preparing search index...

                                                      Variable DEDICATED_COMPRESSOR_64KB

                                                      DEDICATED_COMPRESSOR_64KB: CompressOptions

                                                      Sliding dedicated compress window, requires 64KB of memory per socket

                                                      +
                                                      diff --git a/docs/generated/variables/DEDICATED_COMPRESSOR_8KB.html b/docs/generated/variables/DEDICATED_COMPRESSOR_8KB.html index dd482051..ba0969d3 100644 --- a/docs/generated/variables/DEDICATED_COMPRESSOR_8KB.html +++ b/docs/generated/variables/DEDICATED_COMPRESSOR_8KB.html @@ -1,2 +1,2 @@ -DEDICATED_COMPRESSOR_8KB | uWebSockets.js v20.46.0 documentation

                                                      Generated using TypeDoc

                                                      \ No newline at end of file +DEDICATED_COMPRESSOR_8KB | uWebSockets.js v20.60.0 documentation
                                                      uWebSockets.js v20.60.0 documentation
                                                        Preparing search index...

                                                        Variable DEDICATED_COMPRESSOR_8KB

                                                        DEDICATED_COMPRESSOR_8KB: CompressOptions

                                                        Sliding dedicated compress window, requires 8KB of memory per socket

                                                        +
                                                        diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR.html index 01e08cbd..fb4f4048 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR | uWebSockets.js v20.46.0 documentation

                                                        Generated using TypeDoc

                                                        \ No newline at end of file +DEDICATED_DECOMPRESSOR | uWebSockets.js v20.60.0 documentation
                                                        uWebSockets.js v20.60.0 documentation
                                                          Preparing search index...

                                                          Variable DEDICATED_DECOMPRESSOR

                                                          DEDICATED_DECOMPRESSOR: CompressOptions

                                                          Sliding dedicated decompress window, requires 32KB of memory per socket (plus about 23KB)

                                                          +
                                                          diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR_16KB.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR_16KB.html index 0947ccfe..5b2676c6 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR_16KB.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR_16KB.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR_16KB | uWebSockets.js v20.46.0 documentation

                                                          Generated using TypeDoc

                                                          \ No newline at end of file +DEDICATED_DECOMPRESSOR_16KB | uWebSockets.js v20.60.0 documentation
                                                          uWebSockets.js v20.60.0 documentation
                                                            Preparing search index...

                                                            Variable DEDICATED_DECOMPRESSOR_16KB

                                                            DEDICATED_DECOMPRESSOR_16KB: CompressOptions

                                                            Sliding dedicated decompress window, requires 16KB of memory per socket (plus about 23KB)

                                                            +
                                                            diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR_1KB.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR_1KB.html index c5cec4d0..835dde9e 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR_1KB.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR_1KB.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR_1KB | uWebSockets.js v20.46.0 documentation

                                                            Generated using TypeDoc

                                                            \ No newline at end of file +DEDICATED_DECOMPRESSOR_1KB | uWebSockets.js v20.60.0 documentation
                                                            uWebSockets.js v20.60.0 documentation
                                                              Preparing search index...

                                                              Variable DEDICATED_DECOMPRESSOR_1KB

                                                              DEDICATED_DECOMPRESSOR_1KB: CompressOptions

                                                              Sliding dedicated decompress window, requires 1KB of memory per socket (plus about 23KB)

                                                              +
                                                              diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR_2KB.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR_2KB.html index eb575ae4..4ce2a203 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR_2KB.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR_2KB.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR_2KB | uWebSockets.js v20.46.0 documentation

                                                              Generated using TypeDoc

                                                              \ No newline at end of file +DEDICATED_DECOMPRESSOR_2KB | uWebSockets.js v20.60.0 documentation
                                                              uWebSockets.js v20.60.0 documentation
                                                                Preparing search index...

                                                                Variable DEDICATED_DECOMPRESSOR_2KB

                                                                DEDICATED_DECOMPRESSOR_2KB: CompressOptions

                                                                Sliding dedicated decompress window, requires 2KB of memory per socket (plus about 23KB)

                                                                +
                                                                diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR_32KB.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR_32KB.html index def62fc9..f8edfab3 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR_32KB.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR_32KB.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR_32KB | uWebSockets.js v20.46.0 documentation

                                                                Generated using TypeDoc

                                                                \ No newline at end of file +DEDICATED_DECOMPRESSOR_32KB | uWebSockets.js v20.60.0 documentation
                                                                uWebSockets.js v20.60.0 documentation
                                                                  Preparing search index...

                                                                  Variable DEDICATED_DECOMPRESSOR_32KB

                                                                  DEDICATED_DECOMPRESSOR_32KB: CompressOptions

                                                                  Sliding dedicated decompress window, requires 32KB of memory per socket (plus about 23KB)

                                                                  +
                                                                  diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR_4KB.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR_4KB.html index a0bb35b8..d1c79603 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR_4KB.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR_4KB.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR_4KB | uWebSockets.js v20.46.0 documentation

                                                                  Generated using TypeDoc

                                                                  \ No newline at end of file +DEDICATED_DECOMPRESSOR_4KB | uWebSockets.js v20.60.0 documentation
                                                                  uWebSockets.js v20.60.0 documentation
                                                                    Preparing search index...

                                                                    Variable DEDICATED_DECOMPRESSOR_4KB

                                                                    DEDICATED_DECOMPRESSOR_4KB: CompressOptions

                                                                    Sliding dedicated decompress window, requires 4KB of memory per socket (plus about 23KB)

                                                                    +
                                                                    diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR_512B.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR_512B.html index 69bd38f0..b842a153 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR_512B.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR_512B.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR_512B | uWebSockets.js v20.46.0 documentation

                                                                    Generated using TypeDoc

                                                                    \ No newline at end of file +DEDICATED_DECOMPRESSOR_512B | uWebSockets.js v20.60.0 documentation
                                                                    uWebSockets.js v20.60.0 documentation
                                                                      Preparing search index...

                                                                      Variable DEDICATED_DECOMPRESSOR_512B

                                                                      DEDICATED_DECOMPRESSOR_512B: CompressOptions

                                                                      Sliding dedicated decompress window, requires 512B of memory per socket (plus about 23KB)

                                                                      +
                                                                      diff --git a/docs/generated/variables/DEDICATED_DECOMPRESSOR_8KB.html b/docs/generated/variables/DEDICATED_DECOMPRESSOR_8KB.html index dfc7a88b..ffd7d839 100644 --- a/docs/generated/variables/DEDICATED_DECOMPRESSOR_8KB.html +++ b/docs/generated/variables/DEDICATED_DECOMPRESSOR_8KB.html @@ -1,2 +1,2 @@ -DEDICATED_DECOMPRESSOR_8KB | uWebSockets.js v20.46.0 documentation

                                                                      Generated using TypeDoc

                                                                      \ No newline at end of file +DEDICATED_DECOMPRESSOR_8KB | uWebSockets.js v20.60.0 documentation
                                                                      uWebSockets.js v20.60.0 documentation
                                                                        Preparing search index...

                                                                        Variable DEDICATED_DECOMPRESSOR_8KB

                                                                        DEDICATED_DECOMPRESSOR_8KB: CompressOptions

                                                                        Sliding dedicated decompress window, requires 8KB of memory per socket (plus about 23KB)

                                                                        +
                                                                        diff --git a/docs/generated/variables/DISABLED.html b/docs/generated/variables/DISABLED.html index f6de228a..67312e25 100644 --- a/docs/generated/variables/DISABLED.html +++ b/docs/generated/variables/DISABLED.html @@ -1,2 +1,2 @@ -DISABLED | uWebSockets.js v20.46.0 documentation

                                                                        Generated using TypeDoc

                                                                        \ No newline at end of file +DISABLED | uWebSockets.js v20.60.0 documentation
                                                                        uWebSockets.js v20.60.0 documentation
                                                                          Preparing search index...

                                                                          Variable DISABLED

                                                                          DISABLED: CompressOptions

                                                                          No compression (always a good idea if you operate using an efficient binary protocol)

                                                                          +
                                                                          diff --git a/docs/generated/variables/SHARED_COMPRESSOR.html b/docs/generated/variables/SHARED_COMPRESSOR.html index 3872d6a6..59405abe 100644 --- a/docs/generated/variables/SHARED_COMPRESSOR.html +++ b/docs/generated/variables/SHARED_COMPRESSOR.html @@ -1,2 +1,2 @@ -SHARED_COMPRESSOR | uWebSockets.js v20.46.0 documentation

                                                                          Generated using TypeDoc

                                                                          \ No newline at end of file +SHARED_COMPRESSOR | uWebSockets.js v20.60.0 documentation
                                                                          uWebSockets.js v20.60.0 documentation
                                                                            Preparing search index...

                                                                            Variable SHARED_COMPRESSOR

                                                                            SHARED_COMPRESSOR: CompressOptions

                                                                            Zero memory overhead compression.

                                                                            +
                                                                            diff --git a/docs/generated/variables/SHARED_DECOMPRESSOR.html b/docs/generated/variables/SHARED_DECOMPRESSOR.html index 195e6472..645cc767 100644 --- a/docs/generated/variables/SHARED_DECOMPRESSOR.html +++ b/docs/generated/variables/SHARED_DECOMPRESSOR.html @@ -1,2 +1,2 @@ -SHARED_DECOMPRESSOR | uWebSockets.js v20.46.0 documentation

                                                                            Generated using TypeDoc

                                                                            \ No newline at end of file +SHARED_DECOMPRESSOR | uWebSockets.js v20.60.0 documentation
                                                                            uWebSockets.js v20.60.0 documentation
                                                                              Preparing search index...

                                                                              Variable SHARED_DECOMPRESSOR

                                                                              SHARED_DECOMPRESSOR: CompressOptions

                                                                              Zero memory overhead decompression.

                                                                              +
                                                                              diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 5cbb0da7..7770ab1a 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,7 +1,7 @@ { "files": [ "index.d.ts" ], "typedocOptions": { - "name":"uWebSockets.js v20.46.0 documentation", + "name":"uWebSockets.js v20.60.0 documentation", "entryPoints": [ "index.d.ts" ], "out":"generated", "excludeExternals":true,