diff --git a/CHANGELOG.md b/CHANGELOG.md index e21a36d..10c38d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,3 +13,4 @@ All notable changes to `@homebridge/ciao` will be documented in this file. This - add alpha releases - updated eslint rule - update to match renamed `latest` branch +- regenerate docs diff --git a/docs/assets/icons.js b/docs/assets/icons.js new file mode 100644 index 0000000..b79c9e8 --- /dev/null +++ b/docs/assets/icons.js @@ -0,0 +1,15 @@ +(function(svg) { + svg.innerHTML = ``; + svg.style.display = 'none'; + if (location.protocol === 'file:') { + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateUseElements); + else updateUseElements() + function updateUseElements() { + document.querySelectorAll('use').forEach(el => { + if (el.getAttribute('href').includes('#icon-')) { + el.setAttribute('href', el.getAttribute('href').replace(/.*#/, '#')); + } + }); + } + } +})(document.body.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))) \ No newline at end of file diff --git a/docs/assets/icons.svg b/docs/assets/icons.svg new file mode 100644 index 0000000..7dead61 --- /dev/null +++ b/docs/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/main.js b/docs/assets/main.js index 4bd47a2..d6f1388 100644 --- a/docs/assets/main.js +++ b/docs/assets/main.js @@ -1,7 +1,8 @@ "use strict"; -"use strict";(()=>{var Se=Object.create;var re=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var ke=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var Pe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Te(e))!Qe.call(t,i)&&i!==r&&re(t,i,{get:()=>e[i],enumerable:!(n=we(e,i))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?Se(ke(t)):{},Ie(e||!t||!t.__esModule?re(r,"default",{value:t,enumerable:!0}):r,t));var ae=Pe((se,oe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var d=t.utils.clone(r)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(n.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,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(r+=n[u+1]*i[d+1],u+=2,d+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),y;m in s.node.edges?y=s.node.edges[m]:(y=new t.TokenSet,s.node.edges[m]=y),s.str.length==1&&(y.final=!0),i.push({node:y,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof se=="object"?oe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ne=[];function G(t,e){ne.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){ne.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n,app:this}),n.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),r=e?.parentElement;for(;r&&!r.classList.contains(".tsd-navigation");)r instanceof HTMLDetailsElement&&(r.open=!0),r=r.parentElement;if(e){let n=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=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 r=e.parentElement;for(;r&&r.tagName!=="SECTION";)r=r.parentElement;if(r&&r.offsetParent==null){this.alwaysVisibleMember=r,r.classList.add("always-visible");let n=document.createElement("p");n.classList.add("warning"),n.textContent="This member is normally hidden due to your filter settings.",r.prepend(n)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let r;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(r),r=setTimeout(()=>{e.classList.remove("visible"),r=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let r;return()=>{clearTimeout(r),r=setTimeout(()=>t(),e)}};var ce=Ce(ae());function de(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("tsd-search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Oe(t,n,r,s)}function Oe(t,e,r,n){r.addEventListener("input",ie(()=>{Re(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Fe(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function _e(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ce.Index.load(window.searchData.index))}function Re(t,e,r,n){if(_e(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o${le(l.parent,i)}.${u}`);let d=document.createElement("li");d.classList.value=l.classes??"";let m=document.createElement("a");m.href=n.base+l.url,m.innerHTML=u,d.append(m),e.appendChild(d)}}function ue(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function Fe(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function le(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+n.length))}`),s=o+n.length,o=r.indexOf(n,s);return i.push(K(t.substring(s))),i.join("")}var Me={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Me[e])}var P=class{constructor(e){this.el=e.el,this.app=e.app}};var M="mousedown",fe="mousemove",N="mouseup",J={x:0,y:0},he=!1,ee=!1,De=!1,D=!1,pe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(pe?"is-mobile":"not-mobile");pe&&"ontouchstart"in document.documentElement&&(De=!0,M="touchstart",fe="touchmove",N="touchend");document.addEventListener(M,t=>{ee=!0,D=!1;let e=M=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=M=="touchstart"?t.targetTouches[0]:t,r=J.x-(e.pageX||0),n=J.y-(e.pageY||0);D=Math.sqrt(r*r+n*n)>10}});document.addEventListener(N,()=>{ee=!1});document.addEventListener("click",t=>{he&&(t.preventDefault(),t.stopImmediatePropagation(),he=!1)});var X=class extends P{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(M,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){D||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!D&&this.active&&r.target.closest(".col-sidebar")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),n.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var me=document.head.appendChild(document.createElement("style"));me.dataset.for="filters";var Y=class extends P{constructor(r){super(r);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),me.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`}fromLocalStorage(){let r=Q.getItem(this.key);return r?r==="true":this.el.checked}setLocalStorage(r){Q.setItem(this.key,r.toString()),this.value=r,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(r=>{r.style.display="block";let n=Array.from(r.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);r.style.display=n?"none":"block"})}};var Z=class extends P{constructor(r){super(r);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()),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ve(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}de();G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var ge=document.getElementById("tsd-theme");ge&&ve(ge);var Ae=new U;Object.defineProperty(window,"app",{value:Ae});})(); +"use strict";(()=>{var Ce=Object.create;var ne=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Ce(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),y=s.str.charAt(1),p;y in s.node.edges?p=s.node.edges[y]:(p=new t.TokenSet,s.node.edges[y]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(console.log("Show page"),document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){console.log("Scorlling");let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ve(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ne(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 Ve(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let y=document.createElement("li");y.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,y.append(p),e.appendChild(y)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ne(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var He={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>He[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",fe="mousemove",H="mouseup",J={x:0,y:0},pe=!1,ee=!1,Be=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",fe="touchmove",H="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ee=!1});document.addEventListener("click",t=>{pe&&(t.preventDefault(),t.stopImmediatePropagation(),pe=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ye=document.head.appendChild(document.createElement("style"));ye.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ye.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ve(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ve(t.value)})}function ve(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 0000000..7755145 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE4XRT2+CMBgG8O/SM1mVKdu4qkfdot6WHbryIs2wbdoXAjF+94XFQSsI1z7v8+u/zwtBqJDE5MMoVFzlJCCaYUZiArI4W/q//pThuQl/hExI/HoN2uYBTCk4bEqQeN92s0nhWGt4ADTR4/5KMHUb7Po8Z9aCpU7oC/PQNfZgtZIJmL7QRmP97Xp3aLYB865RKGk7R0gEkzIOlvamfDJcRv1nGfP8kTGsvUSPw1q7lxy2Zm8v82U48GcV3ktdMmUkkLIid4CSGcG+c7D0FvnCs1s+AQ78WVpI/nd+6uY+Ey2uX7/W5Qrj+QIAAA==" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index ae818e6..5e43cbe 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = JSON.parse("{\"rows\":[{\"kind\":64,\"name\":\"getResponder\",\"url\":\"functions/getResponder.html\",\"classes\":\"\"},{\"kind\":8,\"name\":\"Protocol\",\"url\":\"enums/Protocol.html\",\"classes\":\"\"},{\"kind\":16,\"name\":\"TCP\",\"url\":\"enums/Protocol.html#TCP\",\"classes\":\"\",\"parent\":\"Protocol\"},{\"kind\":16,\"name\":\"UDP\",\"url\":\"enums/Protocol.html#UDP\",\"classes\":\"\",\"parent\":\"Protocol\"},{\"kind\":32,\"name\":\"default\",\"url\":\"variables/default.html\",\"classes\":\"\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/default.html#__type\",\"classes\":\"\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"getResponder\",\"url\":\"variables/default.html#__type.getResponder\",\"classes\":\"\",\"parent\":\"default.__type\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"variables/default.html#__type.getResponder.__type-1\",\"classes\":\"\",\"parent\":\"default.__type.getResponder\"},{\"kind\":256,\"name\":\"MDNSServerOptions\",\"url\":\"interfaces/MDNSServerOptions.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"interface\",\"url\":\"interfaces/MDNSServerOptions.html#interface\",\"classes\":\"\",\"parent\":\"MDNSServerOptions\"},{\"kind\":1024,\"name\":\"disableIpv6\",\"url\":\"interfaces/MDNSServerOptions.html#disableIpv6\",\"classes\":\"\",\"parent\":\"MDNSServerOptions\"},{\"kind\":8,\"name\":\"ServiceType\",\"url\":\"enums/ServiceType.html\",\"classes\":\"\"},{\"kind\":16,\"name\":\"AIRDROP\",\"url\":\"enums/ServiceType.html#AIRDROP\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"AIRPLAY\",\"url\":\"enums/ServiceType.html#AIRPLAY\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"AIRPORT\",\"url\":\"enums/ServiceType.html#AIRPORT\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"COMPANION_LINK\",\"url\":\"enums/ServiceType.html#COMPANION_LINK\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"DACP\",\"url\":\"enums/ServiceType.html#DACP\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"HAP\",\"url\":\"enums/ServiceType.html#HAP\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"HOMEKIT\",\"url\":\"enums/ServiceType.html#HOMEKIT\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"HTTP\",\"url\":\"enums/ServiceType.html#HTTP\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"HTTP_ALT\",\"url\":\"enums/ServiceType.html#HTTP_ALT\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"IPP\",\"url\":\"enums/ServiceType.html#IPP\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"IPPS\",\"url\":\"enums/ServiceType.html#IPPS\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"RAOP\",\"url\":\"enums/ServiceType.html#RAOP\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"scanner\",\"url\":\"enums/ServiceType.html#scanner\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"TOUCH_ABLE\",\"url\":\"enums/ServiceType.html#TOUCH_ABLE\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"DNS_SD\",\"url\":\"enums/ServiceType.html#DNS_SD\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":16,\"name\":\"PRINTER\",\"url\":\"enums/ServiceType.html#PRINTER\",\"classes\":\"\",\"parent\":\"ServiceType\"},{\"kind\":256,\"name\":\"ServiceOptions\",\"url\":\"interfaces/ServiceOptions.html\",\"classes\":\"\"},{\"kind\":1024,\"name\":\"name\",\"url\":\"interfaces/ServiceOptions.html#name\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"type\",\"url\":\"interfaces/ServiceOptions.html#type\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"subtypes\",\"url\":\"interfaces/ServiceOptions.html#subtypes\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"port\",\"url\":\"interfaces/ServiceOptions.html#port\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"protocol\",\"url\":\"interfaces/ServiceOptions.html#protocol\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"hostname\",\"url\":\"interfaces/ServiceOptions.html#hostname\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"txt\",\"url\":\"interfaces/ServiceOptions.html#txt\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"domain\",\"url\":\"interfaces/ServiceOptions.html#domain\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"restrictedAddresses\",\"url\":\"interfaces/ServiceOptions.html#restrictedAddresses\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":1024,\"name\":\"disabledIpv6\",\"url\":\"interfaces/ServiceOptions.html#disabledIpv6\",\"classes\":\"\",\"parent\":\"ServiceOptions\"},{\"kind\":4194304,\"name\":\"ServiceTxt\",\"url\":\"types/ServiceTxt.html\",\"classes\":\"\"},{\"kind\":8,\"name\":\"ServiceEvent\",\"url\":\"enums/ServiceEvent.html\",\"classes\":\"\"},{\"kind\":16,\"name\":\"NAME_CHANGED\",\"url\":\"enums/ServiceEvent.html#NAME_CHANGED\",\"classes\":\"\",\"parent\":\"ServiceEvent\"},{\"kind\":16,\"name\":\"HOSTNAME_CHANGED\",\"url\":\"enums/ServiceEvent.html#HOSTNAME_CHANGED\",\"classes\":\"\",\"parent\":\"ServiceEvent\"},{\"kind\":128,\"name\":\"CiaoService\",\"url\":\"classes/CiaoService.html\",\"classes\":\"\"},{\"kind\":2048,\"name\":\"advertise\",\"url\":\"classes/CiaoService.html#advertise\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"end\",\"url\":\"classes/CiaoService.html#end\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"destroy\",\"url\":\"classes/CiaoService.html#destroy\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"getFQDN\",\"url\":\"classes/CiaoService.html#getFQDN\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"getTypePTR\",\"url\":\"classes/CiaoService.html#getTypePTR\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"getLowerCasedSubtypePTRs\",\"url\":\"classes/CiaoService.html#getLowerCasedSubtypePTRs\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"getHostname\",\"url\":\"classes/CiaoService.html#getHostname\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"getPort\",\"url\":\"classes/CiaoService.html#getPort\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"updateTxt\",\"url\":\"classes/CiaoService.html#updateTxt\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":2048,\"name\":\"updatePort\",\"url\":\"classes/CiaoService.html#updatePort\",\"classes\":\"\",\"parent\":\"CiaoService\"},{\"kind\":4194304,\"name\":\"ResponderOptions\",\"url\":\"types/ResponderOptions.html\",\"classes\":\"\"},{\"kind\":128,\"name\":\"Responder\",\"url\":\"classes/Responder.html\",\"classes\":\"\"},{\"kind\":2048,\"name\":\"createService\",\"url\":\"classes/Responder.html#createService\",\"classes\":\"\",\"parent\":\"Responder\"},{\"kind\":2048,\"name\":\"shutdown\",\"url\":\"classes/Responder.html#shutdown\",\"classes\":\"\",\"parent\":\"Responder\"},{\"kind\":2048,\"name\":\"getAnnouncedServices\",\"url\":\"classes/Responder.html#getAnnouncedServices\",\"classes\":\"\",\"parent\":\"Responder\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,31.781]],[\"comment/0\",[]],[\"name/1\",[1,31.781]],[\"comment/1\",[]],[\"name/2\",[2,36.889]],[\"comment/2\",[]],[\"name/3\",[3,36.889]],[\"comment/3\",[]],[\"name/4\",[4,36.889]],[\"comment/4\",[]],[\"name/5\",[5,31.781]],[\"comment/5\",[]],[\"name/6\",[0,31.781]],[\"comment/6\",[]],[\"name/7\",[5,31.781]],[\"comment/7\",[]],[\"name/8\",[6,36.889]],[\"comment/8\",[]],[\"name/9\",[7,36.889]],[\"comment/9\",[]],[\"name/10\",[8,36.889]],[\"comment/10\",[]],[\"name/11\",[9,36.889]],[\"comment/11\",[]],[\"name/12\",[10,36.889]],[\"comment/12\",[]],[\"name/13\",[11,36.889]],[\"comment/13\",[]],[\"name/14\",[12,36.889]],[\"comment/14\",[]],[\"name/15\",[13,36.889]],[\"comment/15\",[]],[\"name/16\",[14,36.889]],[\"comment/16\",[]],[\"name/17\",[15,36.889]],[\"comment/17\",[]],[\"name/18\",[16,36.889]],[\"comment/18\",[]],[\"name/19\",[17,36.889]],[\"comment/19\",[]],[\"name/20\",[18,36.889]],[\"comment/20\",[]],[\"name/21\",[19,36.889]],[\"comment/21\",[]],[\"name/22\",[20,36.889]],[\"comment/22\",[]],[\"name/23\",[21,36.889]],[\"comment/23\",[]],[\"name/24\",[22,36.889]],[\"comment/24\",[]],[\"name/25\",[23,36.889]],[\"comment/25\",[]],[\"name/26\",[24,36.889]],[\"comment/26\",[]],[\"name/27\",[25,36.889]],[\"comment/27\",[]],[\"name/28\",[26,36.889]],[\"comment/28\",[]],[\"name/29\",[27,36.889]],[\"comment/29\",[]],[\"name/30\",[28,36.889]],[\"comment/30\",[]],[\"name/31\",[29,36.889]],[\"comment/31\",[]],[\"name/32\",[30,36.889]],[\"comment/32\",[]],[\"name/33\",[1,31.781]],[\"comment/33\",[]],[\"name/34\",[31,36.889]],[\"comment/34\",[]],[\"name/35\",[32,36.889]],[\"comment/35\",[]],[\"name/36\",[33,36.889]],[\"comment/36\",[]],[\"name/37\",[34,36.889]],[\"comment/37\",[]],[\"name/38\",[35,36.889]],[\"comment/38\",[]],[\"name/39\",[36,36.889]],[\"comment/39\",[]],[\"name/40\",[37,36.889]],[\"comment/40\",[]],[\"name/41\",[38,36.889]],[\"comment/41\",[]],[\"name/42\",[39,36.889]],[\"comment/42\",[]],[\"name/43\",[40,36.889]],[\"comment/43\",[]],[\"name/44\",[41,36.889]],[\"comment/44\",[]],[\"name/45\",[42,36.889]],[\"comment/45\",[]],[\"name/46\",[43,36.889]],[\"comment/46\",[]],[\"name/47\",[44,36.889]],[\"comment/47\",[]],[\"name/48\",[45,36.889]],[\"comment/48\",[]],[\"name/49\",[46,36.889]],[\"comment/49\",[]],[\"name/50\",[47,36.889]],[\"comment/50\",[]],[\"name/51\",[48,36.889]],[\"comment/51\",[]],[\"name/52\",[49,36.889]],[\"comment/52\",[]],[\"name/53\",[50,36.889]],[\"comment/53\",[]],[\"name/54\",[51,36.889]],[\"comment/54\",[]],[\"name/55\",[52,36.889]],[\"comment/55\",[]],[\"name/56\",[53,36.889]],[\"comment/56\",[]],[\"name/57\",[54,36.889]],[\"comment/57\",[]],[\"name/58\",[55,36.889]],[\"comment/58\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":5,\"name\":{\"5\":{},\"7\":{}},\"comment\":{}}],[\"advertise\",{\"_index\":41,\"name\":{\"44\":{}},\"comment\":{}}],[\"airdrop\",{\"_index\":10,\"name\":{\"12\":{}},\"comment\":{}}],[\"airplay\",{\"_index\":11,\"name\":{\"13\":{}},\"comment\":{}}],[\"airport\",{\"_index\":12,\"name\":{\"14\":{}},\"comment\":{}}],[\"ciaoservice\",{\"_index\":40,\"name\":{\"43\":{}},\"comment\":{}}],[\"companion_link\",{\"_index\":13,\"name\":{\"15\":{}},\"comment\":{}}],[\"createservice\",{\"_index\":53,\"name\":{\"56\":{}},\"comment\":{}}],[\"dacp\",{\"_index\":14,\"name\":{\"16\":{}},\"comment\":{}}],[\"default\",{\"_index\":4,\"name\":{\"4\":{}},\"comment\":{}}],[\"destroy\",{\"_index\":43,\"name\":{\"46\":{}},\"comment\":{}}],[\"disabledipv6\",{\"_index\":35,\"name\":{\"38\":{}},\"comment\":{}}],[\"disableipv6\",{\"_index\":8,\"name\":{\"10\":{}},\"comment\":{}}],[\"dns_sd\",{\"_index\":24,\"name\":{\"26\":{}},\"comment\":{}}],[\"domain\",{\"_index\":33,\"name\":{\"36\":{}},\"comment\":{}}],[\"end\",{\"_index\":42,\"name\":{\"45\":{}},\"comment\":{}}],[\"getannouncedservices\",{\"_index\":55,\"name\":{\"58\":{}},\"comment\":{}}],[\"getfqdn\",{\"_index\":44,\"name\":{\"47\":{}},\"comment\":{}}],[\"gethostname\",{\"_index\":47,\"name\":{\"50\":{}},\"comment\":{}}],[\"getlowercasedsubtypeptrs\",{\"_index\":46,\"name\":{\"49\":{}},\"comment\":{}}],[\"getport\",{\"_index\":48,\"name\":{\"51\":{}},\"comment\":{}}],[\"getresponder\",{\"_index\":0,\"name\":{\"0\":{},\"6\":{}},\"comment\":{}}],[\"gettypeptr\",{\"_index\":45,\"name\":{\"48\":{}},\"comment\":{}}],[\"hap\",{\"_index\":15,\"name\":{\"17\":{}},\"comment\":{}}],[\"homekit\",{\"_index\":16,\"name\":{\"18\":{}},\"comment\":{}}],[\"hostname\",{\"_index\":31,\"name\":{\"34\":{}},\"comment\":{}}],[\"hostname_changed\",{\"_index\":39,\"name\":{\"42\":{}},\"comment\":{}}],[\"http\",{\"_index\":17,\"name\":{\"19\":{}},\"comment\":{}}],[\"http_alt\",{\"_index\":18,\"name\":{\"20\":{}},\"comment\":{}}],[\"interface\",{\"_index\":7,\"name\":{\"9\":{}},\"comment\":{}}],[\"ipp\",{\"_index\":19,\"name\":{\"21\":{}},\"comment\":{}}],[\"ipps\",{\"_index\":20,\"name\":{\"22\":{}},\"comment\":{}}],[\"mdnsserveroptions\",{\"_index\":6,\"name\":{\"8\":{}},\"comment\":{}}],[\"name\",{\"_index\":27,\"name\":{\"29\":{}},\"comment\":{}}],[\"name_changed\",{\"_index\":38,\"name\":{\"41\":{}},\"comment\":{}}],[\"port\",{\"_index\":30,\"name\":{\"32\":{}},\"comment\":{}}],[\"printer\",{\"_index\":25,\"name\":{\"27\":{}},\"comment\":{}}],[\"protocol\",{\"_index\":1,\"name\":{\"1\":{},\"33\":{}},\"comment\":{}}],[\"raop\",{\"_index\":21,\"name\":{\"23\":{}},\"comment\":{}}],[\"responder\",{\"_index\":52,\"name\":{\"55\":{}},\"comment\":{}}],[\"responderoptions\",{\"_index\":51,\"name\":{\"54\":{}},\"comment\":{}}],[\"restrictedaddresses\",{\"_index\":34,\"name\":{\"37\":{}},\"comment\":{}}],[\"scanner\",{\"_index\":22,\"name\":{\"24\":{}},\"comment\":{}}],[\"serviceevent\",{\"_index\":37,\"name\":{\"40\":{}},\"comment\":{}}],[\"serviceoptions\",{\"_index\":26,\"name\":{\"28\":{}},\"comment\":{}}],[\"servicetxt\",{\"_index\":36,\"name\":{\"39\":{}},\"comment\":{}}],[\"servicetype\",{\"_index\":9,\"name\":{\"11\":{}},\"comment\":{}}],[\"shutdown\",{\"_index\":54,\"name\":{\"57\":{}},\"comment\":{}}],[\"subtypes\",{\"_index\":29,\"name\":{\"31\":{}},\"comment\":{}}],[\"tcp\",{\"_index\":2,\"name\":{\"2\":{}},\"comment\":{}}],[\"touch_able\",{\"_index\":23,\"name\":{\"25\":{}},\"comment\":{}}],[\"txt\",{\"_index\":32,\"name\":{\"35\":{}},\"comment\":{}}],[\"type\",{\"_index\":28,\"name\":{\"30\":{}},\"comment\":{}}],[\"udp\",{\"_index\":3,\"name\":{\"3\":{}},\"comment\":{}}],[\"updateport\",{\"_index\":50,\"name\":{\"53\":{}},\"comment\":{}}],[\"updatetxt\",{\"_index\":49,\"name\":{\"52\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,H4sIAAAAAAAAE62aXU/jyBKG/0vn1gvprwC5ywJnQcuEbMge6ShCkTdugjWJnbUdZkeI/75q24mrTLVtknOFZlxVb1U9/eV23lkS/0jZcP7OvodRwIYD5bHI3xg2ZCuTTU26jaPAJMxju2TNhuxlFy2zMI7Sc/j47DXbrJnHlms/TU3Khox9ePuQl4eIkyTO4mW8PkQz0W6Tnu//uzEKHxzCzK4nTRF6xXMQxWNbPzFRBlMgI/950xy5eN45shSHyIF58Xfr7BD9zU9C/6+1Sc/LJ43FD7SWVZaLRfZza1pC9Q5WdLr7hEAf+qIFfqPSWc2lUfaszO7/USISLgP/wjtmgLOu0hG6SubbzfjpySRvJnnc5mP/kFcYZSZ58ZcmPf9k1DyaYa8PUbrH7UEfus7PWTvkgzC1vb3fvg2+kAD2+noK1apgLcKlmUHgxeQDT7quDaP76c30sT6L64F6lRmdOczJpTN5GP2vg05pdoLO43TWRacwO1Ln+vHbZDS+fxwvHu7Hv7fJfbI+UvVm9Gkp/6RV2hypcDdqFShMjo3/+O329/tWPpXZsTqzWXshhc0JCovRQ3spld2RSveT1lIKk+PjP3UQeDpeYTpqX2JKmyMV0qUfRWDrdYhUZkfqzB7/vL5bjH59uG2TQpbHzvfx0+LppnXG762OVJlM78ez22mbTGX2FR14MCgtGk4F2KL7kSD/0y1er7RtLKLlCIAOWy1yjafKbnLp7i8bpWvHesD+FNltnGRdJUvbk+TqbzttkpX9KbKvcZp9ZfgA+5OG0D+de1uYniIWxBs/jLrqHaxPkUxMmiXhMjPBKAgSk8fpqE+7nlR/cfgOXGd2sgvY54vyon91wbX4dGgH1PMpel496HgpUDrcvtkMyCU7f9T1BWA8+na7uL4bjX+7dWw0VbhezbixJ0WCjkPg0+xLuoTD17RF1b/r0I9Ls4NuGewcPGvsn+irKqAfvJkkC9P2cD1oShcAs3PomShoVyqMjtYI7BSMf7brVIZHa61M9p8/bsbtWpXhKVr2fDKZTTvJVbanKD7EP0xy7acmeCo25slsmnbSd3meks1dfb9rSuCubbPrpjmBJ4kmvUnTMaKD1m4b+BlaZZ1q0PREvW7lIduvKeK95HD/Vj9IFztK/XHzTgBWxs8XmPtaul1co84sE+NnxrXQ4oC9ujHdHfLeEWqmr7ssiH9EbXLA7killclGURTvoqUJyrQ/z+iaqsOnNYNnj4VRYP5hw3f2ZpI0jCM2ZOJMnl0xj72EZh3YLxL7d6BlvNnYGM/ls/+aZRYn1qIwOe8zb973JD+7uOTPz95875E/yP8jN+PMm3PKjCMzwby58OTg7PLyCpkJZCaZN5eUmURminlzRZkpZKaZN9dUbhqZDVyVDpDZhSvaBTK7ZN58QOV2icyumDe/oMyucHttty8pO17jYPt9RRpiEtx2nPdJSwyD26ZzTlpiHtz2nZN8OUbCbes5iZhjKtx2n5OUOQbDLQCuSUvMhlsGnKTDMR5uMXASEMeEhOXASUQCIxL5XCEZidpsyacLyUhgRsKCECQjgRkJC0LQcxAzEhaEIBkJzEhYEIJkJDAjYUEIkpHAjIQFIUhGAjMSFoQgGQnMSFoQgmQkMSNpQQiSkcSMpAUhSUaytqhJ1xopMSJpOUgSpsSIpOUgSZgSI5KWg6TXVIxIWg6ShCkxImk5SBKmxIik5SBJmBIjUpaDJGEqjEhZDpKEqTAilSMiYSqMSFkQioSpaltPvveQjBRmpCwIRTJSmJGyIBTJSGFGyoJQ9NaHGSkLQpGMFGakLAhFMlKYkbYgFMlIY0baglAkI40ZaQtCkYw0ZqQtCE0y0piRtiA0yUjXTgj5EYFkpDEjbUFokpHGjHR+UCAZacxIWxCaZKQLRvmhzl4GmOC+ONzN54ev+O9sUZ749P7E+c40G75/eOzC/vmojnn2XzY+uFqo3BWv/JVyeYZJkMRb6Mf7lR8Xbr/t2v+J/IAelw1++UsQ8BPAz5XnMvTjdP+KAGoEuSqX5jLebP0ojKPFOoy+I2kJpLXLPX8/IcQ18NYDh3fgL3F3FZB0Ou1/AAMqBYU6vcrrGOAFUlROtfKyM8wvOytnCQagvGx2rvtegir7LtcoXaQB9BKgSuFMt7yhBomCKqXLLb8UA50Bo0650K9M5u/f2tLDWxsYAXCKujq0MtnL3wFKWEGarkm9Mln1uQH4XgBNV2tXJlvb66OlvT4qvwhtswQlrwYgiSt3oPp8VYCt5m6/pLpRqJzBfO0Xa5qL18pkZdZIHHRcuTr+6uMpB3y4q9uv8cZ8D/HCBBrEnVoEIglWQumarXvHxfLVj1YGDU55Bap0LcGvWYbLBAODu3hap4WPlxYOgArXiAK/oao8gaJLMNziJEFlwjV4wu0WjVQBRo1wtWMTRGma/34q3t+MVREASRfIOkQBihOu6pwAQUuVq8z6xJKgTOkqc5vkJFCmYHwL1/iuPpgCGGDAFJNRuvbQxMeHBAF8hdOJWgE0WHi1a+E9eBIsNZDWrtlVfUb0q8+IoNVgAZaulh1+LwLKBskLl3a5U5jiIx0QBSNKueZZ6UzULcAgFq5RXLrnX42BMnCVrrG8d62dQsGE5a6RXN2pAkygxdrZ4sOPFUCdQFG6FDN8qoJYXB7xbvm6sGcV5AiODsI1GuvdBGrS6VNrowArgnTB3wWoKniscXnk3xXqK4kGK4ludq3VpkDzNdnKZ49tw61Zh5Fhw/nzx8e/TukqixcvAAA="; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css index 5b96717..778b949 100644 --- a/docs/assets/style.css +++ b/docs/assets/style.css @@ -11,6 +11,7 @@ --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); @@ -28,11 +29,10 @@ --light-color-ts-constructor-signature: var(--light-color-ts-constructor); --light-color-ts-parameter: var(--light-color-ts-variable); /* type literal not included as links will never be generated to it */ - --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-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); - /* object literal not included as it is not used and will be removed in 0.25 */ --light-color-ts-type-alias: #d51270; /* reference not included as links will be colored with the kind that it points to */ @@ -51,6 +51,7 @@ --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); @@ -68,11 +69,10 @@ --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); --dark-color-ts-parameter: var(--dark-color-ts-variable); /* type literal not included as links will never be generated to it */ - --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-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); - /* object literal not included as it is not used and will be removed in 0.25 */ --dark-color-ts-type-alias: #ff6492; /* reference not included as links will be colored with the kind that it points to */ @@ -93,6 +93,7 @@ --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); @@ -134,6 +135,7 @@ --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); @@ -182,6 +184,7 @@ body { --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); @@ -221,6 +224,7 @@ body { --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); @@ -262,12 +266,12 @@ h6 { line-height: 1.2; } -h1 > a, -h2 > a, -h3 > a, -h4 > a, -h5 > a, -h6 > a { +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); } @@ -323,17 +327,14 @@ dd { } /* Footer */ -.tsd-generator { +footer { 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; +.tsd-generator { + margin: 0 1em; } .container-main { @@ -401,7 +402,8 @@ dd { } body { background: var(--color-background); - font-family: "Segoe UI", sans-serif; + 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); } @@ -468,13 +470,12 @@ blockquote { padding: 0 0 0 20px; margin: 0; } -.tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, +.tsd-typography h4, .tsd-typography h5, .tsd-typography h6 { font-size: 1em; - margin: 0; } .tsd-typography h5, .tsd-typography h6 { @@ -485,6 +486,19 @@ blockquote { .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; @@ -633,6 +647,28 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { 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; } @@ -698,12 +734,15 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { } .tsd-navigation > a, .tsd-navigation .tsd-accordion-summary { - width: calc(100% - 0.5rem); + width: calc(100% - 0.25rem); + display: flex; + align-items: center; } .tsd-navigation a, .tsd-navigation summary > span, .tsd-page-navigation a { - display: inline-flex; + display: flex; + width: calc(100% - 0.25rem); align-items: center; padding: 0.25rem; color: var(--color-text); @@ -743,11 +782,6 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { margin-left: -1.5rem; } -.tsd-nested-navigation > li > a, -.tsd-nested-navigation > li > span { - width: calc(100% - 1.75rem - 0.5rem); -} - .tsd-page-navigation ul { padding-left: 1.75rem; } @@ -770,9 +804,11 @@ a.tsd-index-link { color: var(--color-text); } .tsd-accordion-summary { - list-style-type: none; - display: flex; - align-items: center; + 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 { @@ -784,7 +820,7 @@ a.tsd-index-link { cursor: pointer; } .tsd-accordion-summary a { - flex-grow: 1; + width: calc(100% - 1.5rem); } .tsd-accordion-summary > * { margin-top: 0; @@ -898,8 +934,9 @@ a.tsd-index-link { box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); } #tsd-search .results li { - padding: 0 10px; background-color: var(--color-background); + line-height: initial; + padding: 4px; } #tsd-search .results li:nth-child(even) { background-color: var(--color-background-secondary); @@ -907,12 +944,15 @@ a.tsd-index-link { #tsd-search .results li.state { display: none; } -#tsd-search .results li.current, -#tsd-search .results li:hover { +#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: block; + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; } #tsd-search .results a:before { top: 10px; @@ -968,6 +1008,11 @@ a.tsd-index-link { 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; @@ -1068,7 +1113,9 @@ ul.tsd-type-parameter-list h5 { overflow: hidden; opacity: 0.8; height: 40px; - transition: opacity 0.1s, background-color 0.2s; + transition: + opacity 0.1s, + background-color 0.2s; vertical-align: bottom; cursor: pointer; } @@ -1120,7 +1167,7 @@ img { } .deprecated { - text-decoration: line-through; + text-decoration: line-through !important; } .warning { diff --git a/docs/classes/CiaoService.html b/docs/classes/CiaoService.html index d2f65f2..0d6170b 100644 --- a/docs/classes/CiaoService.html +++ b/docs/classes/CiaoService.html @@ -1,66 +1,23 @@ -CiaoService | @homebridge/ciao - v1.1.8
-
- -
-
-
-
- -

Class CiaoService

-
-

The CiaoService class represents a service which can be advertised on the network.

-

A service is identified by it's fully qualified domain name (FQDN), which consist of +CiaoService | @homebridge/ciao - v1.1.8

The CiaoService class represents a service which can be advertised on the network.

+

A service is identified by its fully qualified domain name (FQDN), which consist of the service name, the service type, the protocol and the service domain (.local by default).

The service defines a hostname and a port where the advertised service can be reached.

-

Additionally a TXT record can be published, which can contain information (in form of key-value pairs), +

Additionally, a TXT record can be published, which can contain information (in form of key-value pairs), which might be useful to a querier.

A CiaoService class is always bound to a Responder and can be created using the -createService method in the Responder class. +Responder.createService method in the Responder class. Once the instance is created, advertise can be called to announce the service on the network.

-
-
-

Hierarchy

-
    -
  • EventEmitter -
      -
    • CiaoService
-
-
-
- -
-
-

Methods

-
- -
    - -
  • -

    This method start the advertising process of the service:

    +

Hierarchy

  • EventEmitter
    • CiaoService

Methods

-
- -
    - -
  • -

    This method must be called if you want to free the memory used by this service. +

    Returns Promise<void>

  • This method must be called if you want to free the memory used by this service. The service instance is not usable anymore after this call.

    If the service is still announced, the service will first be removed from the network by calling end.

    -
    -

    Returns Promise<void>

-
- -
    - -
  • -

    This method will remove the advertisement for the service on all connected network interfaces. +

    Returns Promise<void>

  • This method will remove the advertisement for the service on all connected network interfaces. If the service is still in the Probing state, probing will simply be cancelled.

    -
    -

    Returns Promise<void>

    Promise will resolve once the last goodbye packet was sent out

    -
-
- -
    - -
  • -
    -

    Returns string

    The fully qualified domain name of the service, used to identify the service.

    -
-
- -
    - -
  • -
    -

    Returns string

    The current hostname of the service.

    -
-
- -
    - -
  • -
    -

    Returns undefined | string[]

    Array of subtype pointers (undefined if no subtypes are specified).

    -
-
- -
    - -
  • -
    -

    Returns number

    The port the service is advertising for. +

Returns Promise<void>

Promise will resolve once the last goodbye packet was sent out

+
  • Returns string

    The fully qualified domain name of the service, used to identify the service.

    +
  • Returns string

    The current hostname of the service.

    +
  • Returns undefined | string[]

    Array of subtype pointers (undefined if no subtypes are specified).

    +
  • Returns number

    The port the service is advertising for. {@code -1} is returned when the port is not yet set.

    -
-
- -
    - -
  • -
    -

    Returns string

    The service type pointer.

    -
-
- -
    - -
  • -

    Sets or updates the port of the service. +

  • Returns string

    The service type pointer.

    +
  • Sets or updates the port of the service. A new port number can only be set when the service is still UNANNOUNCED. -Otherwise an assertion error will be thrown.

    -
    -
    -

    Parameters

    -
      -
    • -
      port: number
      -

      The new port number.

      -
    -

    Returns void

-
- -
    - -
  • -

    Sets or updates the txt of the service.

    -
    -
    -

    Parameters

    -
      -
    • -
      txt: ServiceTxt
      -

      The updated txt record.

      -
    • -
    • -
      silent: boolean = false
      -

      If set to true no announcement is sent for the updated record.

      -
    -

    Returns void

-
-
\ No newline at end of file +Otherwise, an assertion error will be thrown.

+

Parameters

  • port: number

    The new port number.

    +

Returns void

  • Sets or updates the txt of the service.

    +

    Parameters

    • txt: ServiceTxt

      The updated txt record.

      +
    • silent: boolean = false

      If set to true no announcement is sent for the updated record.

      +

    Returns void

\ No newline at end of file diff --git a/docs/classes/Responder.html b/docs/classes/Responder.html index 615020d..b9576c2 100644 --- a/docs/classes/Responder.html +++ b/docs/classes/Responder.html @@ -1,121 +1,17 @@ -Responder | @homebridge/ciao - v1.1.8
-
- -
-
-
-
- -

Class Responder

-
-

A Responder instance represents a running MDNSServer and a set of advertised services.

+Responder | @homebridge/ciao - v1.1.8

A Responder instance represents a running MDNSServer and a set of advertised services.

It will handle any service related operations, like advertising, sending goodbye packets or sending record updates. -It handles answering questions arriving on the multicast address.

-
-
-

Hierarchy

-
    -
  • Responder
-
-

Implements

-
    -
  • PacketHandler
-
-
-
- -
-
-

Methods

-
- -
    - -
  • -

    Creates a new CiaoService instance and links it to this Responder instance.

    -
    -
    -

    Parameters

    -
      -
    • -
      options: ServiceOptions
      -

      Defines all information about the service which should be created.

      -
    -

    Returns CiaoService

    The newly created CiaoService instance can be used to advertise and manage the created service.

    -
-
- -
-
- -
    - -
  • -

    This method should be called when you want to unpublish all service exposed by this Responder. +It handles answering questions arriving at the multicast address.

    +

Implements

  • PacketHandler

Methods

  • Creates a new CiaoService instance and links it to this Responder instance.

    +

    Parameters

    • options: ServiceOptions

      Defines all information about the service which should be created.

      +

    Returns CiaoService

    The newly created CiaoService instance can be used to advertise and manage the created service.

    +
  • This method should be called when you want to unpublish all service exposed by this Responder. This method SHOULD be called before the node application exists, so any host on the network is informed of the shutdown of this machine. Calling the shutdown method is mandatory for a clean termination (sending goodbye packets).

    The shutdown method must only be called ONCE.

    -
    -

    Returns Promise<void>

    The Promise resolves once all goodbye packets were sent +

Returns Promise<void>

The Promise resolves once all goodbye packets were sent (or immediately if any other users have a reference to this Responder instance).

-
-
-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/enums/Protocol.html b/docs/enums/Protocol.html index d6b89dd..4f76945 100644 --- a/docs/enums/Protocol.html +++ b/docs/enums/Protocol.html @@ -1,80 +1,7 @@ -Protocol | @homebridge/ciao - v1.1.8
-
- -
-
-
-
- -

Enumeration ProtocolConst

-
-

Defines the transport protocol of a service.

+Protocol | @homebridge/ciao - v1.1.8

Enumeration ProtocolConst

Defines the transport protocol of a service.

As of RFC 6763 7. TCP must be used for any applications using tcp. For applications using any other transport protocol UDP must be used. This applies to all other transport protocols like SCTP, DCCP, RTMFP, etc

-
-
-
-
- -
-
-

Enumeration Members

-
TCP -UDP -
-
-

Enumeration Members

-
- -
TCP: "tcp"
-
- -
UDP: "udp"
-
- -
-
\ No newline at end of file +

Enumeration Members

TCP +UDP +

Enumeration Members

TCP: "tcp"
UDP: "udp"
\ No newline at end of file diff --git a/docs/enums/ServiceEvent.html b/docs/enums/ServiceEvent.html index bec8a5f..c6d9839 100644 --- a/docs/enums/ServiceEvent.html +++ b/docs/enums/ServiceEvent.html @@ -1,89 +1,14 @@ -ServiceEvent | @homebridge/ciao - v1.1.8
-
- -
-
-
-
- -

Enumeration ServiceEventConst

-
-

Events thrown by a CiaoService

-
-
-
-
- -
-
-

Enumeration Members

-
-
-

Enumeration Members

-
- -
HOSTNAME_CHANGED: "hostname-change"
-

Event is called when the Prober identifies that the hostname for the service is already used +ServiceEvent | @homebridge/ciao - v1.1.8

Enumeration ServiceEventConst

Events thrown by a CiaoService

+

Enumeration Members

Enumeration Members

HOSTNAME_CHANGED: "hostname-change"

Event is called when the Prober identifies that the hostname for the service is already used and thus resolve the name conflict by adjusting the hostname (e.g. adding '(2)' to the hostname). The name change must be persisted. As the hostname is an optional parameter, it is derived from the service name if not supplied. If you supply a custom hostname (not automatically derived from the service name) you must hook up a listener to this event in order for the hostname to be persisted.

-
-
- -
NAME_CHANGED: "name-change"
-

Event is called when the Prober identifies that the name for the service is already used +

NAME_CHANGED: "name-change"

Event is called when the Prober identifies that the name for the service is already used and thus resolve the name conflict by adjusting the name (e.g. adding '(2)' to the name). This change must be persisted and thus a listener must hook up to this event in order for the name to be persisted.

-
-
- -
-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/enums/ServiceType.html b/docs/enums/ServiceType.html index 56fa3d3..42be89b 100644 --- a/docs/enums/ServiceType.html +++ b/docs/enums/ServiceType.html @@ -1,177 +1,20 @@ -ServiceType | @homebridge/ciao - v1.1.8
-
- -
-
-
-
- -

Enumeration ServiceTypeConst

-
-

This enum defines some commonly used service types. +ServiceType | @homebridge/ciao - v1.1.8

Enumeration ServiceTypeConst

This enum defines some commonly used service types. This is also referred to as service name (as of RFC 6763). A service name must not be longer than 15 characters (RFC 6763 7.2).

-
-
-
-
- -
-
-

Enumeration Members

-
- -
AIRDROP: "airdrop"
-
- -
AIRPLAY: "airplay"
-
- -
AIRPORT: "airport"
-
- -
COMPANION_LINK: "companion-link"
-
- -
DACP: "dacp"
-
- -
DNS_SD: "dns-sd"
-
- -
HAP: "hap"
-
- -
HOMEKIT: "homekit"
-
- -
HTTP: "http"
-
- -
HTTP_ALT: "http_alt"
-
- -
IPP: "ipp"
-
- -
IPPS: "ipps"
-
- -
PRINTER: "printer"
-
- -
RAOP: "raop"
-
- -
TOUCH_ABLE: "touch-able"
-
- -
scanner: "scanner"
-
-
\ No newline at end of file +

Enumeration Members

AIRDROP: "airdrop"
AIRPLAY: "airplay"
AIRPORT: "airport"
COMPANION_LINK: "companion-link"
DACP: "dacp"
DNS_SD: "dns-sd"
HAP: "hap"
HOMEKIT: "homekit"
HTTP: "http"
HTTP_ALT: "http_alt"
IPP: "ipp"
IPPS: "ipps"
PRINTER: "printer"
RAOP: "raop"
TOUCH_ABLE: "touch-able"
scanner: "scanner"
\ No newline at end of file diff --git a/docs/functions/getResponder.html b/docs/functions/getResponder.html index 7210766..f7844ca 100644 --- a/docs/functions/getResponder.html +++ b/docs/functions/getResponder.html @@ -1,63 +1,6 @@ -getResponder | @homebridge/ciao - v1.1.8
-
- -
-
-
-
- -

Function getResponder

-
-
    - -
  • -

    This method is used to get a responder for the provided (optional) set of options.

    +getResponder | @homebridge/ciao - v1.1.8

    Function getResponder

    • This method is used to get a responder for the provided (optional) set of options.

      Ciao tries to create as few Responder instances as possible. Thus, it will share the same Responder instance for the same set of options.

      -
      -
      -

      Parameters

      -
        -
      • -
        Optional options: ResponderOptions
        -

        If specified, the options will be passed to the underlying mdns server.

        -
      -

      Returns Responder

      A Responder instance for the given options. Might be shared with others using the same options.

      -
    -
    -
    \ No newline at end of file +

    Parameters

    • Optional options: ResponderOptions

      If specified, the options will be passed to the underlying mdns server.

      +

    Returns Responder

    A Responder instance for the given options. Might be shared with others using the same options.

    +
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 6f700e0..8d68d6f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,31 +1,24 @@ -@homebridge/ciao - v1.1.8
-
- -
-
-
-
-

@homebridge/ciao - v1.1.8

-

@homebridge/ciao

NPM-Version +@homebridge/ciao - v1.1.8

@homebridge/ciao - v1.1.8

+ +

+ + +

Ciao

NPM-Version NPM-Version Beta NPM-Downloads Node Build Coverage Status

+
+

ciao is a RFC 6763 compliant dns-sd library, advertising on multicast dns (RFC 6762) implemented in plain Typescript/JavaScript.

-

It is used in HAP-NodeJS and is the successor of the -bonjour-hap (and bonjour) library, +

It is used in HAP-NodeJS and is the successor of the +bonjour-hap (and bonjour) library, aiming to be more robust, more maintainable and RFC compliant (read Notice).

ciao features a multicast dns responder to publish service on the local network. It will eventually gain browsing functionality in the future to also discover services on the local network -(There is currently no schedule when discover functionality will arrive. +(There is currently no schedule when discover functionality will arrive. A possible querier implementation is limited as explained in RFC 6762 15.1. as it can't receive unicast responses).

ciao passes the Bonjour Conformance Test @@ -38,14 +31,14 @@

@homebridge/ciao - v1.1.8

Documentation

The full documentation can be found here.

API overview

This section links to the most important aspects of the documentation as used in the example above.

-

First of all the getResponder function +

First of all the getResponder function should be used to get a reference to a Responder object. The function takes some optional options to configure the underlying mdns server.

The createService method of the Responder -object can now be used to create a new CiaoService +object can now be used to create a new CiaoService supplying the desired configuration -as the first parameter. You might have a look at the +as the first parameter. You might have a look at the restrictedAddresses (and disableIpv6) configuration if you don't want to advertise on all available addresses/network interfaces.

@@ -55,7 +48,7 @@

@homebridge/ciao - v1.1.8

event, in oder to persist any changes happening to the service name resulting of the conflict resolution algorithm. The method updateTxt can be used to update the contest of the txt exposed by the service.

-

Any application SHOULD hook up a listener on events like SIGTERM or SIGINT and call the +

Any application SHOULD hook up a listener on events like SIGTERM or SIGINT and call the shutdown method of the responder object. This will ensure, that goodbye packets are sent out on all connected network interfaces and all hosts on the network get instantly notified of the shutdown. @@ -65,7 +58,7 @@

@homebridge/ciao - v1.1.8

the network interface. The MTU defaults to 1500 Bytes on pretty much all network cards for Ethernet and Wi-Fi. ciao can't reliable detect modifications made to this default MTU size. Thus , we rely on a hardcoded value, which is 1440 for the UDP Payload Size (Remember: the MTU defines the amount -of bytes Ethernet or Wi-Fi can transport on the local link. There is additional overhead caused by the IP Header +of bytes Ethernet or Wi-Fi can transport on the local link. There is additional overhead caused by the IP Header and the UDP Header. So the amount of bytes we are able to fit into a single UDP packet is smaller).
If you know, that the MTU differs on your machine, you can set the true UDP Payload Size in bytes using the CIAO_UPS environment variable.

Notice on native mDNS responders

As described in RFC 6762 15.: @@ -76,8 +69,8 @@

@homebridge/ciao - v1.1.8

  • 15.1. Receiving Unicast Responses:
    As multiple sockets (from multiple responders) are bound to the port 5353, only one can receive unicast responses. Unicast responses is a way to reduce traffic on the multicast address, as answers to a particular question can be sent directly to the querier. As ciao does not hold the primary socket on port 5353, it can't receive unicast responses - and thus must sent any queries without setting the QU (unicast response) flag. Any responses to our questions are - sent on multicast and thus increase the load on the network.
    This currently isn't really a problem, as the only time we send queries is in the probing step before we + and thus must sent any queries without setting the QU (unicast response) flag. Any responses to our questions are + sent on multicast and thus increase the load on the network.
    This currently isn't really a problem, as the only time we send queries is in the probing step before we advertise a new service (Future query functionality is much more affected).
  • 15.2. Multipacket Known-Answer lists:
    When the known-answer list of a query is too large to fit into a single dns packet, a querier can split those records into multiple packets (and setting the truncation flag). @@ -86,54 +79,10 @@

    @homebridge/ciao - v1.1.8

  • 15.3. Efficiency:
    The last point is pretty simple. Two independently running responders use twice the memory and twice the computing power. It doesn't improve the situation that this is running using an interpreted language.
    So yes, it's probably not very efficient.
  • -

    As the RFC also states in 15.4, it is recommended to use +

    As the RFC also states in 15.4, it is recommended to use a single mDNS implementation where possible. It is recommended to use the mdns library where possible, as the library is pretty much a binding for existing mDNS implementations running on your system (like mDNSResponder on macOS or avahi on most linux based systems).
    The one downside with the mdns library is that running it on Windows is not really straight forward. Generally we experienced with homebridge that many users run into problems when trying to install mdns. Thus bonjour-hap and then ciao was created to provide a much easier to set up system.

    -
    - -
    +
    \ No newline at end of file diff --git a/docs/interfaces/MDNSServerOptions.html b/docs/interfaces/MDNSServerOptions.html index c868ac4..9b63462 100644 --- a/docs/interfaces/MDNSServerOptions.html +++ b/docs/interfaces/MDNSServerOptions.html @@ -1,91 +1,12 @@ -MDNSServerOptions | @homebridge/ciao - v1.1.8
    -
    - -
    -
    -
    -
    - -

    Interface MDNSServerOptions

    -
    -

    Defines the options passed to the underlying mdns server.

    -
    -
    -

    Hierarchy

    -
      -
    • MDNSServerOptions
    -
    -
    -
    - -
    -
    -

    Properties

    -
    -
    -

    Properties

    -
    - -
    disableIpv6?: boolean
    -

    If specified, the mdns server will not include any ipv6 address records +MDNSServerOptions | @homebridge/ciao - v1.1.8

    Interface MDNSServerOptions

    Defines the options passed to the underlying mdns server.

    +
    interface MDNSServerOptions {
        disableIpv6?: boolean;
        interface?: string | string[];
    }

    Properties

    disableIpv6?: boolean

    If specified, the mdns server will not include any ipv6 address records and not bind any udp6 sockets. This is handy if you want to "bind" on 0.0.0.0 only.

    -
    -
    - -
    interface?: string | string[]
    -

    If specified, the mdns server will only listen on the specified interfaces (allowlist). +

    interface?: string | string[]

    If specified, the mdns server will only listen on the specified interfaces (allowlist). It can be supplied as a string (representing a single interface) or as an array of strings to define multiple interfaces. The interface can be defined by specifying the interface name (like 'en0') or by specifying an ip address.

    -
    -
    - -
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/ServiceOptions.html b/docs/interfaces/ServiceOptions.html index b6051aa..0ffc66b 100644 --- a/docs/interfaces/ServiceOptions.html +++ b/docs/interfaces/ServiceOptions.html @@ -1,172 +1,37 @@ -ServiceOptions | @homebridge/ciao - v1.1.8
    -
    - -
    -
    -
    -
    - -

    Interface ServiceOptions

    -
    -

    Service options supplied when creating a new ciao service.

    -
    -
    -

    Hierarchy

    -
      -
    • ServiceOptions
    -
    -
    -
    - -
    -
    -

    Properties

    -
    - -
    disabledIpv6?: boolean
    -

    The service won't advertise ipv6 address records. +ServiceOptions | @homebridge/ciao - v1.1.8

    Interface ServiceOptions

    Service options supplied when creating a new ciao service.

    +
    interface ServiceOptions {
        disabledIpv6?: boolean;
        domain?: string;
        hostname?: string;
        name: string;
        port?: number;
        protocol?: Protocol;
        restrictedAddresses?: string[];
        subtypes?: string[];
        txt?: ServiceTxt;
        type: string;
    }

    Properties

    disabledIpv6?: boolean

    The service won't advertise ipv6 address records. This can be used to simulate binding on 0.0.0.0. May be combined with restrictedAddresses.

    -
    -
    - -
    domain?: string
    -

    Adds ability to set custom domain. Will default to "local". +

    domain?: string

    Adds ability to set custom domain. Will default to "local". The domain will also be automatically appended to the hostname.

    -
    -
    - -
    hostname?: string
    -

    Defines a hostname under which the service can be reached. +

    hostname?: string

    Defines a hostname under which the service can be reached. The specified hostname must not include the TLD. If undefined the service name will be used as default.

    -
    -
    - -
    name: string
    -

    Instance name of the service

    -
    -
    - -
    port?: number
    -

    Port of the service. +

    name: string

    Instance name of the service

    +
    port?: number

    Port of the service. If not supplied it must be set later via updatePort BEFORE advertising the service.

    -
    -
    - -
    protocol?: Protocol
    -

    The protocol the service uses. Default is TCP.

    -
    -
    - -
    restrictedAddresses?: string[]
    -

    If defined it restricts the service to be advertised on the specified +

    protocol?: Protocol

    The protocol the service uses. Default is TCP.

    +
    restrictedAddresses?: string[]

    If defined it restricts the service to be advertised on the specified ip addresses or interface names.

    -

    If a interface name is specified, ANY address on that given interface will be advertised -(if a IP address of the given interface is also given in the array, it will be overridden). -If a IP address is specified, the service will only be advertised for the given addresses.

    +

    If an interface name is specified, ANY address on that given interface will be advertised +(if an IP address of the given interface is also given in the array, it will be overridden). +If an IP address is specified, the service will only be advertised for the given addresses.

    Interface names and addresses can be mixed in the array. If an ip address is given, the ip address must be valid at the time of service creation.

    If the service is set to advertise on a given interface, though the MDNSServer is configured to ignore this interface, the service won't be advertised on the interface.

    -
    -
    - -
    subtypes?: string[]
    -

    Optional array of subtypes of the service. +

    subtypes?: string[]

    Optional array of subtypes of the service. Refer to ServiceType for some known examples.

    -
    -
    - - -

    If defined, a txt record will be published with the given service.

    -
    -
    - -
    type: string
    -

    Type of the service.

    -
    -
    -
    \ No newline at end of file +

    If defined, a txt record will be published with the given service.

    +
    type: string

    Type of the service.

    +
    \ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index 8fac35e..ccffd6e 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,73 +1,12 @@ -@homebridge/ciao - v1.1.8
    -
    - -
    -
    -
    -
    -

    @homebridge/ciao - v1.1.8

    -
    -
    -

    Index

    -
    -

    Enumerations

    -
    -
    -

    Classes

    -
    -
    -

    Interfaces

    -
    -
    -

    Type Aliases

    -
    -
    -

    Variables

    -
    -
    -

    Functions

    -
    -
    -
    \ No newline at end of file +@homebridge/ciao - v1.1.8

    @homebridge/ciao - v1.1.8

    Index

    Enumerations

    Classes

    Interfaces

    Type Aliases

    Variables

    Functions

    \ No newline at end of file diff --git a/docs/types/ResponderOptions.html b/docs/types/ResponderOptions.html index 4c59185..26109c6 100644 --- a/docs/types/ResponderOptions.html +++ b/docs/types/ResponderOptions.html @@ -1,47 +1 @@ -ResponderOptions | @homebridge/ciao - v1.1.8
    -
    - -
    -
    -
    -
    - -

    Type alias ResponderOptions

    -
    ResponderOptions: {} & MDNSServerOptions
    -
    -
    \ No newline at end of file +ResponderOptions | @homebridge/ciao - v1.1.8

    Type alias ResponderOptions

    ResponderOptions: {} & MDNSServerOptions

    Type declaration

      \ No newline at end of file diff --git a/docs/types/ServiceTxt.html b/docs/types/ServiceTxt.html index 6e06d7e..0337ac9 100644 --- a/docs/types/ServiceTxt.html +++ b/docs/types/ServiceTxt.html @@ -1,50 +1,3 @@ -ServiceTxt | @homebridge/ciao - v1.1.8
      -
      - -
      -
      -
      -
      - -

      Type alias ServiceTxt

      -
      ServiceTxt: Record<string, any>
      -

      A service txt consist of multiple key=value pairs, +ServiceTxt | @homebridge/ciao - v1.1.8

      Type alias ServiceTxt

      ServiceTxt: Record<string, any>

      A service txt consist of multiple key=value pairs, which get advertised on the network.

      -
      -
      -
      \ No newline at end of file +
      \ No newline at end of file diff --git a/docs/variables/default.html b/docs/variables/default.html index d7a7096..ad8a439 100644 --- a/docs/variables/default.html +++ b/docs/variables/default.html @@ -1,70 +1,6 @@ -default | @homebridge/ciao - v1.1.8
      -
      - -
      -
      -
      -
      - -

      Variable default

      -
      default: {
          getResponder: ((options?) => Responder);
      }
      -
      -

      Type declaration

      -
        -
      • -
        getResponder: ((options?) => Responder)
        -
          -
        • -
            -
          • (options?): Responder
          • -
          • -

            This method is used to get a responder for the provided (optional) set of options.

            +default | @homebridge/ciao - v1.1.8

            Variable default

            default: {
                getResponder: ((options?) => Responder);
            }

            Type declaration

            • getResponder: ((options?) => Responder)
                • (options?): Responder
                • This method is used to get a responder for the provided (optional) set of options.

                  Ciao tries to create as few Responder instances as possible. Thus, it will share the same Responder instance for the same set of options.

                  -
                  -
                  -

                  Parameters

                  -
                    -
                  • -
                    Optional options: ResponderOptions
                    -

                    If specified, the options will be passed to the underlying mdns server.

                    -
                  -

                  Returns Responder

                  A Responder instance for the given options. Might be shared with others using the same options.

                  -
            -
            -
            \ No newline at end of file +

            Parameters

            • Optional options: ResponderOptions

              If specified, the options will be passed to the underlying mdns server.

              +

            Returns Responder

            A Responder instance for the given options. Might be shared with others using the same options.

            +
      \ No newline at end of file