diff --git a/assets/icons.js b/assets/icons.js index e88e8ca7..3dfbd322 100644 --- a/assets/icons.js +++ b/assets/icons.js @@ -3,7 +3,7 @@ function addIcons() { if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); - svg.innerHTML = `""`; + svg.innerHTML = `MMNEPVFCICPMFPCPTTAAATR`; svg.style.display = "none"; if (location.protocol === "file:") updateUseElements(); } diff --git a/assets/icons.svg b/assets/icons.svg index e371b8b5..a19417dc 100644 --- a/assets/icons.svg +++ b/assets/icons.svg @@ -1 +1 @@ - \ No newline at end of file +MMNEPVFCICPMFPCPTTAAATR \ No newline at end of file diff --git a/assets/main.js b/assets/main.js index 7d7f77a0..99097a05 100644 --- a/assets/main.js +++ b/assets/main.js @@ -1,9 +1,9 @@ "use strict"; window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; -"use strict";(()=>{var Ce=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Ce(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!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)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),Ve(t,i,r,e)}function Ve(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?He(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function He(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",H="mouseup",J={x:0,y:0},me=!1,ne=!1,je=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(je=!0,F="touchstart",ye="touchmove",H="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(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 re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } -`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.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-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var qe=new U;Object.defineProperty(window,"app",{value:qe});fe();we();})(); +"use strict";(()=>{var Pe=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Pe(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!Ve(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function Ve(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),He(t,i,r,e)}function He(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Be(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Be(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var je={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>je[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",N="mouseup",J={x:0,y:0},me=!1,ne=!1,qe=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(qe=!0,F="touchstart",ye="touchmove",N="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(N,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else{let r=e.appendChild(document.createElement("span"));r.innerHTML='',r.appendChild(document.createElement("span")).textContent=t.text}}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var $e=new U;Object.defineProperty(window,"app",{value:$e});fe();we();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/assets/navigation.js b/assets/navigation.js index 3dbc28e2..575655ad 100644 --- a/assets/navigation.js +++ b/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/assets/search.js b/assets/search.js index 9715137f..c736e7ea 100644 --- a/assets/search.js +++ b/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/assets/style.css b/assets/style.css index 9d619a64..178bfb02 100644 --- a/assets/style.css +++ b/assets/style.css @@ -4,11 +4,17 @@ --light-color-background-secondary: #eff0f1; --light-color-warning-text: #222; --light-color-background-warning: #e6e600; - --light-color-icon-background: var(--light-color-background); --light-color-accent: #c5c7c9; --light-color-active-menu-item: var(--light-color-accent); --light-color-text: #222; --light-color-text-aside: #6e6e6e; + + --light-color-icon-background: var(--light-color-background); + --light-color-icon-text: var(--light-color-text); + + --light-color-comment-tag-text: var(--light-color-text); + --light-color-comment-tag: var(--light-color-background); + --light-color-link: #1f70c2; --light-color-focus-outline: #3584e4; @@ -22,16 +28,17 @@ --light-color-ts-function: #572be7; --light-color-ts-class: #1f70c2; --light-color-ts-interface: #108024; - --light-color-ts-constructor: var(--light-color-ts-class); - --light-color-ts-property: var(--light-color-ts-variable); - --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-constructor: #4d7fff; + --light-color-ts-property: #ff984d; + --light-color-ts-method: #ff4db8; + --light-color-ts-reference: #ff4d82; --light-color-ts-call-signature: var(--light-color-ts-method); --light-color-ts-index-signature: var(--light-color-ts-property); --light-color-ts-constructor-signature: var(--light-color-ts-constructor); --light-color-ts-parameter: var(--light-color-ts-variable); /* type literal not included as links will never be generated to it */ --light-color-ts-type-parameter: #a55c0e; - --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-accessor: #ff4d4d; --light-color-ts-get-signature: var(--light-color-ts-accessor); --light-color-ts-set-signature: var(--light-color-ts-accessor); --light-color-ts-type-alias: #d51270; @@ -46,11 +53,17 @@ --dark-color-background-secondary: #1e2024; --dark-color-background-warning: #bebe00; --dark-color-warning-text: #222; - --dark-color-icon-background: var(--dark-color-background-secondary); --dark-color-accent: #9096a2; --dark-color-active-menu-item: #5d5d6a; --dark-color-text: #f5f5f5; --dark-color-text-aside: #dddddd; + + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-icon-text: var(--dark-color-text); + + --dark-color-comment-tag-text: var(--dark-color-text); + --dark-color-comment-tag: var(--dark-color-background); + --dark-color-link: #00aff4; --dark-color-focus-outline: #4c97f2; @@ -64,16 +77,17 @@ --dark-color-ts-function: #a280ff; --dark-color-ts-class: #8ac4ff; --dark-color-ts-interface: #6cff87; - --dark-color-ts-constructor: var(--dark-color-ts-class); - --dark-color-ts-property: var(--dark-color-ts-variable); - --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-constructor: #4d7fff; + --dark-color-ts-property: #ff984d; + --dark-color-ts-method: #ff4db8; + --dark-color-ts-reference: #ff4d82; --dark-color-ts-call-signature: var(--dark-color-ts-method); --dark-color-ts-index-signature: var(--dark-color-ts-property); --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); --dark-color-ts-parameter: var(--dark-color-ts-variable); /* type literal not included as links will never be generated to it */ --dark-color-ts-type-parameter: #e07d13; - --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-accessor: #ff4d4d; --dark-color-ts-get-signature: var(--dark-color-ts-accessor); --dark-color-ts-set-signature: var(--dark-color-ts-accessor); --dark-color-ts-type-alias: #ff6492; @@ -90,15 +104,22 @@ --color-background-secondary: var(--light-color-background-secondary); --color-background-warning: var(--light-color-background-warning); --color-warning-text: var(--light-color-warning-text); - --color-icon-background: var(--light-color-icon-background); --color-accent: var(--light-color-accent); --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); --color-text-aside: var(--light-color-text-aside); + + --color-icon-background: var(--light-color-icon-background); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + --color-link: var(--light-color-link); --color-focus-outline: var(--light-color-focus-outline); --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); --color-ts-module: var(--light-color-ts-module); --color-ts-namespace: var(--light-color-ts-namespace); --color-ts-enum: var(--light-color-ts-enum); @@ -110,6 +131,7 @@ --color-ts-constructor: var(--light-color-ts-constructor); --color-ts-property: var(--light-color-ts-property); --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); --color-ts-call-signature: var(--light-color-ts-call-signature); --color-ts-index-signature: var(--light-color-ts-index-signature); --color-ts-constructor-signature: var( @@ -134,15 +156,22 @@ --color-background-secondary: var(--dark-color-background-secondary); --color-background-warning: var(--dark-color-background-warning); --color-warning-text: var(--dark-color-warning-text); - --color-icon-background: var(--dark-color-icon-background); --color-accent: var(--dark-color-accent); --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); --color-text-aside: var(--dark-color-text-aside); + + --color-icon-background: var(--dark-color-icon-background); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + --color-link: var(--dark-color-link); --color-focus-outline: var(--dark-color-focus-outline); --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); --color-ts-module: var(--dark-color-ts-module); --color-ts-namespace: var(--dark-color-ts-namespace); --color-ts-enum: var(--dark-color-ts-enum); @@ -154,6 +183,7 @@ --color-ts-constructor: var(--dark-color-ts-constructor); --color-ts-property: var(--dark-color-ts-property); --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); --color-ts-call-signature: var(--dark-color-ts-call-signature); --color-ts-index-signature: var(--dark-color-ts-index-signature); --color-ts-constructor-signature: var( @@ -190,10 +220,16 @@ body { --color-active-menu-item: var(--light-color-active-menu-item); --color-text: var(--light-color-text); --color-text-aside: var(--light-color-text-aside); + --color-icon-text: var(--light-color-icon-text); + + --color-comment-tag-text: var(--light-color-text); + --color-comment-tag: var(--light-color-background); + --color-link: var(--light-color-link); --color-focus-outline: var(--light-color-focus-outline); --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-project: var(--light-color-ts-project); --color-ts-module: var(--light-color-ts-module); --color-ts-namespace: var(--light-color-ts-namespace); --color-ts-enum: var(--light-color-ts-enum); @@ -205,6 +241,7 @@ body { --color-ts-constructor: var(--light-color-ts-constructor); --color-ts-property: var(--light-color-ts-property); --color-ts-method: var(--light-color-ts-method); + --color-ts-reference: var(--light-color-ts-reference); --color-ts-call-signature: var(--light-color-ts-call-signature); --color-ts-index-signature: var(--light-color-ts-index-signature); --color-ts-constructor-signature: var( @@ -232,10 +269,16 @@ body { --color-active-menu-item: var(--dark-color-active-menu-item); --color-text: var(--dark-color-text); --color-text-aside: var(--dark-color-text-aside); + --color-icon-text: var(--dark-color-icon-text); + + --color-comment-tag-text: var(--dark-color-text); + --color-comment-tag: var(--dark-color-background); + --color-link: var(--dark-color-link); --color-focus-outline: var(--dark-color-focus-outline); --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-project: var(--dark-color-ts-project); --color-ts-module: var(--dark-color-ts-module); --color-ts-namespace: var(--dark-color-ts-namespace); --color-ts-enum: var(--dark-color-ts-enum); @@ -247,6 +290,7 @@ body { --color-ts-constructor: var(--dark-color-ts-constructor); --color-ts-property: var(--dark-color-ts-property); --color-ts-method: var(--dark-color-ts-method); + --color-ts-reference: var(--dark-color-ts-reference); --color-ts-call-signature: var(--dark-color-ts-call-signature); --color-ts-index-signature: var(--dark-color-ts-index-signature); --color-ts-constructor-signature: var( @@ -439,7 +483,6 @@ pre { pre { position: relative; - white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 10px; @@ -860,6 +903,12 @@ a.tsd-index-link { margin-bottom: 0.75rem; } +.tsd-no-select { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} .tsd-kind-icon { margin-right: 0.5rem; width: 1.25rem; @@ -867,10 +916,6 @@ a.tsd-index-link { min-width: 1.25rem; min-height: 1.25rem; } -.tsd-kind-icon path { - transform-origin: center; - transform: scale(1.1); -} .tsd-signature > .tsd-kind-icon { margin-right: 0.8rem; } @@ -1242,6 +1287,9 @@ img { .tsd-kind-method { color: var(--color-ts-method); } +.tsd-kind-reference { + color: var(--color-ts-reference); +} .tsd-kind-call-signature { color: var(--color-ts-call-signature); } @@ -1254,9 +1302,6 @@ img { .tsd-kind-parameter { color: var(--color-ts-parameter); } -.tsd-kind-type-literal { - color: var(--color-ts-type-literal); -} .tsd-kind-type-parameter { color: var(--color-ts-type-parameter); } @@ -1435,7 +1480,7 @@ img { } .site-menu { - margin-top: 1rem 0; + margin-top: 1rem; } .page-menu, diff --git a/classes/Deputy.html b/classes/Deputy.html index af84e04b..e7635ded 100644 --- a/classes/Deputy.html +++ b/classes/Deputy.html @@ -1,18 +1,18 @@ Deputy | deputy

Class Deputy

The main class for Deputy. Entry point for execution.

This class is not exported to avoid circular references and extraneous export code in the Rollup bundle (unnecessary for a userscript).

-

Properties

Properties

DeputyCase: typeof DeputyCase = DeputyCase
DeputyCasePage: typeof DeputyCasePage = DeputyCasePage
DeputyCommunications: typeof DeputyCommunications = DeputyCommunications
DeputyDispatch: typeof Dispatch = Dispatch
DeputySession: typeof DeputySession = DeputySession
DeputyStorage: typeof DeputyStorage = DeputyStorage
_windowManager: WindowManager

An OOUI WindowManager. Automatically instantiated when needed. See the +

Properties

_windowManager: WindowManager

An OOUI WindowManager. Automatically instantiated when needed. See the windowManager getter for instantiation.

-

CopiedTemplateEditor instance.

-
currentPage: Title = ...

The current page as an mw.Title.

-
currentPageId: number = ...

The current page ID.

-
dispatch: Dispatch
models: {
    ContributionSurveyRow: typeof ContributionSurveyRow;
} = ...
modules: {
    CopiedTemplateEditor: typeof CopiedTemplateEditor;
    InfringementAssistant: typeof InfringementAssistant;
} = ...
session: DeputySession
storage: DeputyStorage
util: {
    Requester: typeof Requester;
    applyOverrides: ((data: Record<string, any>, overrides: Record<string, any>, logger?: ((key: string, oldVal: any, newVal: any) => void)) => void);
    blockExit: "/home/runner/work/deputy/deputy/project/src/util/blockExit";
    classMix: ((...classes: ArrayOrNot<string | false>[]) => string);
    cleanParams: (<T>(obj: T, _options?: Partial<CleanParamsOptions<T>>) => Partial<T>);
    cloneRegex: ((regex: RegExp, options?: Partial<{
        post: string;
        pre: string;
        transformer?: ((source: string) => string);
    }>) => RegExp);
    copyToClipboard: ((text: string) => void);
    dangerModeConfirm: ((config: UserConfiguration, message: string | JQuery<HTMLElement>, options?: SetupDataMap) => JQuery.Promise<boolean>);
    equalTitle: ((title1: TitleLike, title2: TitleLike) => boolean);
    error: ((...data: any[]) => void);
    findNextSiblingElement: ((element: Node) => Element | null);
    fromObjectEntries: (<T, U>(obj: [T, U][]) => Record<T, U>);
    generateId: (() => string);
    getObjectValues: ((obj: any) => any[]);
    last: {
        <T>(array: NodeListOf<T>): T;
        <T>(array: T[]): T;
        (string: string): string;
    };
    log: ((...data: any[]) => void);
    matchAll: ((_regex: RegExp, string: string) => RegExpExecArray[]);
    moveToStart: (<T>(array: T[], index: number) => T[]);
    organize: (<T>(objects: T[], keyer: ((pivot: T) => string)) => Record<string, T[]>);
    pickSequence: (<T>(arr: T[], condition: ((val: T) => boolean)) => Iterable<T[]>);
    removeElement: (<T>(element: T) => T);
    sleep: ((ms: number) => Promise<void>);
    swapElements: (<T>(element1: T, element2: T) => T);
    unwrapElement: ((el: HTMLElement) => (HTMLElement | string)[]);
    unwrapJQ: ((element?: Element, $j: JQuery<HTMLElement>) => JSX.Element);
    unwrapWidget: ((el: Element) => HTMLElement);
    warn: ((...data: any[]) => void);
    yesNo: ((value: string | number | boolean, pull?: boolean) => boolean);
} = util

Type declaration

  • Requester: typeof Requester
  • applyOverrides: ((data: Record<string, any>, overrides: Record<string, any>, logger?: ((key: string, oldVal: any, newVal: any) => void)) => void)
      • (data, overrides, logger?): void
      • Applies configuration overrides. This takes two objects, A and B. +

CopiedTemplateEditor instance.

+
currentPage: Title = ...

The current page as an mw.Title.

+
currentPageId: number = ...

The current page ID.

+
DeputyCase: typeof DeputyCase = DeputyCase
DeputyCasePage: typeof DeputyCasePage = DeputyCasePage
DeputyCommunications: typeof DeputyCommunications = DeputyCommunications
DeputyDispatch: typeof Dispatch = Dispatch
DeputySession: typeof DeputySession = DeputySession
DeputyStorage: typeof DeputyStorage = DeputyStorage
dispatch: Dispatch
models: {
    ContributionSurveyRow: typeof ContributionSurveyRow;
} = ...
modules: {
    CopiedTemplateEditor: typeof CopiedTemplateEditor;
    InfringementAssistant: typeof InfringementAssistant;
} = ...
session: DeputySession
storage: DeputyStorage
util: {
    applyOverrides: ((data: Record<string, any>, overrides: Record<string, any>, logger?: ((key: string, oldVal: any, newVal: any) => void)) => void);
    blockExit: src/util/blockExit;
    classMix: ((...classes: ArrayOrNot<string | false>[]) => string);
    cleanParams: (<T>(obj: T, _options?: Partial<CleanParamsOptions<T>>) => Partial<T>);
    cloneRegex: ((regex: RegExp, options?: Partial<{
        post: string;
        pre: string;
        transformer?: ((source: string) => string);
    }>) => RegExp);
    copyToClipboard: ((text: string) => void);
    dangerModeConfirm: ((config: UserConfiguration, message: string | JQuery<HTMLElement>, options?: SetupDataMap) => JQuery.Promise<boolean>);
    equalTitle: ((title1: TitleLike, title2: TitleLike) => boolean);
    error: ((...data: any[]) => void);
    findNextSiblingElement: ((element: Node) => Element | null);
    fromObjectEntries: (<T, U>(obj: [T, U][]) => Record<T, U>);
    generateId: (() => string);
    getObjectValues: ((obj: any) => any[]);
    last: {
        <T>(array: NodeListOf<T>): T;
        <T>(array: T[]): T;
        (string: string): string;
    };
    log: ((...data: any[]) => void);
    matchAll: ((_regex: RegExp, string: string) => RegExpExecArray[]);
    moveToStart: (<T>(array: T[], index: number) => T[]);
    organize: (<T>(objects: T[], keyer: ((pivot: T) => string)) => Record<string, T[]>);
    pickSequence: (<T>(arr: T[], condition: ((val: T) => boolean)) => Iterable<T[]>);
    removeElement: (<T>(element: T) => T);
    Requester: typeof Requester;
    sleep: ((ms: number) => Promise<void>);
    swapElements: (<T>(element1: T, element2: T) => T);
    unwrapElement: ((el: HTMLElement) => (HTMLElement | string)[]);
    unwrapJQ: ((element?: Element, $j: JQuery<HTMLElement>) => JSX.Element);
    unwrapWidget: ((el: Element) => HTMLElement);
    warn: ((...data: any[]) => void);
    yesNo: ((value: string | number | boolean, pull?: boolean) => boolean);
} = util

Type declaration

  • applyOverrides: ((data: Record<string, any>, overrides: Record<string, any>, logger?: ((key: string, oldVal: any, newVal: any) => void)) => void)
      • (data, overrides, logger?): void
      • Applies configuration overrides. This takes two objects, A and B. A's keys will be respected and will remain unchanged. Object values of A that also exist in B will be overwritten with its values in B.

        -

        Parameters

        • data: Record<string, any>
        • overrides: Record<string, any>
        • Optionallogger: ((key: string, oldVal: any, newVal: any) => void)
            • (key, oldVal, newVal): void
            • Parameters

              • key: string
              • oldVal: any
              • newVal: any

              Returns void

        Returns void

  • blockExit: "/home/runner/work/deputy/deputy/project/src/util/blockExit"
  • classMix: ((...classes: ArrayOrNot<string | false>[]) => string)
      • (...classes): string
      • Mixes values together into a string for the class attribute.

        +

        Parameters

        • data: Record<string, any>
        • overrides: Record<string, any>
        • Optionallogger: ((key: string, oldVal: any, newVal: any) => void)
            • (key, oldVal, newVal): void
            • Parameters

              • key: string
              • oldVal: any
              • newVal: any

              Returns void

        Returns void

  • blockExit: src/util/blockExit
  • classMix: ((...classes: ArrayOrNot<string | false>[]) => string)
      • (...classes): string
      • Mixes values together into a string for the class attribute.

        Parameters

        Returns string

        string

  • cleanParams: (<T>(obj: T, _options?: Partial<CleanParamsOptions<T>>) => Partial<T>)
      • <T>(obj, _options?): Partial<T>
      • Cleans a parameter list. By default, this performs the following:

          @@ -97,10 +97,10 @@ of the array sequentially for a given condition (predicated by condition) and returns another array, containing an element where true was returned, and every subsequent element where the check returns false.

          -

        Type Parameters

        • T

        Parameters

        • arr: T[]
        • condition: ((val: T) => boolean)
            • (val): boolean
            • Parameters

              • val: T

              Returns boolean

        Returns Iterable<T[]>

        The found sequence

        -
  • removeElement: (<T>(element: T) => T)
      • <T>(element): T
      • Removes an element from its document.

        +

        Type Parameters

        • T

        Parameters

        • arr: T[]
        • condition: ((val: T) => boolean)
            • (val): boolean
            • Parameters

              • val: T

              Returns boolean

        Returns Iterable<T[]>

        The found sequence

        +
  • removeElement: (<T>(element: T) => T)
      • <T>(element): T
      • Removes an element from its document.

        Type Parameters

        Parameters

        • element: T

        Returns T

        The removed element

        -
  • sleep: ((ms: number) => Promise<void>)
      • (ms): Promise<void>
      • Sleep for an specified amount of time.

        +
  • Requester: typeof Requester
  • sleep: ((ms: number) => Promise<void>)
      • (ms): Promise<void>
      • Sleep for an specified amount of time.

        Parameters

        • ms: number

          Milliseconds to sleep for.

        Returns Promise<void>

  • swapElements: (<T>(element1: T, element2: T) => T)
      • <T>(element1, element2): T
      • Swaps two elements in the DOM. Element 1 will be removed from the DOM, Element 2 will be added in its place.

        @@ -126,8 +126,8 @@

Returns boolean

If pull is true, any value that isn't explicitly a negative value will return true. Otherwise, any value that isn't explicitly a positive value will return false.

-
version: string = deputyVersion

This version of Deputy.

-
wikiConfig: WikiConfiguration
wikiUtil: {
    decorateEditSummary: ((editSummary: string, config?: UserConfiguration) => string);
    delink: ((string: string) => string);
    errorToOO: ((error: Error, config: {
        recoverable: boolean;
        warning: boolean;
    }) => Error);
    findSectionHeading: ((sectionHeadingName: string, n?: number) => HTMLElement | null);
    getApiErrorText: ((errorData: any, n?: number) => string | JQuery);
    getNativeRange: ((rangeLike: {
        endContainer: Element;
        endOffset: number;
        startContainer: Element;
        startOffset: number;
    }) => Range);
    getPageContent: ((page: string | number | Title, extraOptions?: Record<string, any>, api?: Api) => PromiseLike<string & {
        contentFormat: string;
        page: any;
        revid: number;
    }>);
    getPageExists: ((pages: ArrayOrNot<string | Title>) => Promise<string[]>);
    getPageTitle: ((pageID: number) => Promise<mw.Title>);
    getRevisionContent: ((revision: number, extraOptions?: Record<string, any>, api?: Api) => PromiseLike<string & {
        contentFormat: string;
    }>);
    getRevisionDiffURL: ((from:
        | number
        | "oldid"
        | "cur"
        | "prev", to?:
        | number
        | "oldid"
        | "cur"
        | "prev", includeCurrentParams?: boolean) => string);
    getRevisionURL: ((revid: number, page: TitleLike, includeCurrentParams?: boolean) => string);
    getSectionElements: ((sectionHeading: HTMLElement, sectionHeadingPredicate?: ((el: HTMLElement) => boolean)) => HTMLElement[]);
    getSectionHTML: ((page: string | Title, section: string | number, extraOptions?: Record<string, any>) => Promise<{
        element: HTMLDivElement;
        revid: number;
        wikitext: string;
    }>);
    getSectionId: ((page: string | Title, sectionName: string, n?: number) => Promise<number>);
    guessAuthor: ((comment: string) => string);
    isWikiHeading: ((el: Element) => boolean);
    msgEval: {
        (string: string, namedParameters: Record<string, string>, ...parameters: string[]): mw.Message;
        (string: string, ...parameters: string[]): mw.Message;
    };
    normalizeTitle: Object;
    normalizeWikiHeading: ((node: Node, ceiling?: Element) => WikiHeading | null);
    nsId: ((namespace: string) => number);
    openWindow: ((window: Window) => Promise<void>);
    pagelinkToTitle: ((el: HTMLAnchorElement) => mw.Title | false);
    parseDiffUrl: ((url: string | URL) => DiffInfo);
    performHacks: (() => void);
    purge: ((title: TitleLike) => Promise<void>);
    renderWikitext: ((wikitext: string, title: string, options?: Record<string, any>) => Promise<string & {
        summary?: string;
    }>);
    sectionHeadingN: ((heading: WikiHeading) => number);
    toRedirectsObject: ((redirects: {
        from: string;
        to: string;
    }[], normalized?: {
        from: string;
        to: string;
    }[]) => Record<string, string>);
} = wikiUtil

Type declaration

  • decorateEditSummary: ((editSummary: string, config?: UserConfiguration) => string)
      • (editSummary, config?): string
      • Appends extra information to an edit summary (also known as the "advert").

        +
version: string = deputyVersion

This version of Deputy.

+
wikiConfig: WikiConfiguration
wikiUtil: {
    decorateEditSummary: ((editSummary: string, config?: UserConfiguration) => string);
    delink: ((string: string) => string);
    errorToOO: ((error: Error, config: {
        recoverable: boolean;
        warning: boolean;
    }) => Error);
    findSectionHeading: ((sectionHeadingName: string, n?: number) => HTMLElement | null);
    getApiErrorText: ((errorData: any, n?: number) => string | JQuery);
    getNativeRange: ((rangeLike: {
        endContainer: Element;
        endOffset: number;
        startContainer: Element;
        startOffset: number;
    }) => Range);
    getPageContent: ((page: string | number | Title, extraOptions?: Record<string, any>, api?: Api) => PromiseLike<string & {
        contentFormat: string;
        page: any;
        revid: number;
    }>);
    getPageExists: ((pages: ArrayOrNot<string | Title>) => Promise<string[]>);
    getPageTitle: ((pageID: number) => Promise<mw.Title>);
    getRevisionContent: ((revision: number, extraOptions?: Record<string, any>, api?: Api) => PromiseLike<string & {
        contentFormat: string;
    }>);
    getRevisionDiffURL: ((from:
        | number
        | "oldid"
        | "cur"
        | "prev", to?:
        | number
        | "oldid"
        | "cur"
        | "prev", includeCurrentParams?: boolean) => string);
    getRevisionURL: ((revid: number, page: TitleLike, includeCurrentParams?: boolean) => string);
    getSectionElements: ((sectionHeading: HTMLElement, sectionHeadingPredicate?: ((el: HTMLElement) => boolean)) => HTMLElement[]);
    getSectionHTML: ((page: string | Title, section: string | number, extraOptions?: Record<string, any>) => Promise<{
        element: HTMLDivElement;
        revid: number;
        wikitext: string;
    }>);
    getSectionId: ((page: string | Title, sectionName: string, n?: number) => Promise<number>);
    guessAuthor: ((comment: string) => string);
    isWikiHeading: ((el: Element) => boolean);
    msgEval: {
        (string: string, namedParameters: Record<string, string>, ...parameters: string[]): mw.Message;
        (string: string, ...parameters: string[]): mw.Message;
    };
    normalizeTitle: Object;
    normalizeWikiHeading: ((node: Node, ceiling?: Element) => WikiHeading | null);
    nsId: ((namespace: string) => number);
    openWindow: ((window: Window) => Promise<void>);
    pagelinkToTitle: ((el: HTMLAnchorElement) => mw.Title | false);
    parseDiffUrl: ((url: string | URL) => DiffInfo);
    performHacks: (() => void);
    purge: ((title: TitleLike) => Promise<void>);
    renderWikitext: ((wikitext: string, title: string, options?: Record<string, any>) => Promise<string & {
        summary?: string;
    }>);
    sectionHeadingN: ((heading: WikiHeading) => number);
    toRedirectsObject: ((redirects: {
        from: string;
        to: string;
    }[], normalized?: {
        from: string;
        to: string;
    }[]) => Record<string, string>);
} = wikiUtil

Type declaration

  • decorateEditSummary: ((editSummary: string, config?: UserConfiguration) => string)
      • (editSummary, config?): string
      • Appends extra information to an edit summary (also known as the "advert").

        Parameters

        • editSummary: string

          The edit summary

        • Optionalconfig: UserConfiguration

          The user's configuration. Used to get the "danger mode" setting.

        Returns string

        The decorated edit summary (in wikitext)

        @@ -148,7 +148,7 @@

Parameters

  • errorData: any
  • n: number = 0

    Get the nth error. Defaults to 0 (first error).

Returns string | JQuery

  • getNativeRange: ((rangeLike: {
        endContainer: Element;
        endOffset: number;
        startContainer: Element;
        startOffset: number;
    }) => Range)
      • (rangeLike): Range
      • Converts a range-like Object into a native Range object.

        Parameters

        • rangeLike: {
              endContainer: Element;
              endOffset: number;
              startContainer: Element;
              startOffset: number;
          }

          The range to convert

          -
          • endContainer: Element
          • endOffset: number
          • startContainer: Element
          • startOffset: number

        Returns Range

        A Range object.

        +
    • endContainer: Element
    • endOffset: number
    • startContainer: Element
    • startOffset: number

    Returns Range

    A Range object.

  • getPageContent: ((page: string | number | Title, extraOptions?: Record<string, any>, api?: Api) => PromiseLike<string & {
        contentFormat: string;
        page: any;
        revid: number;
    }>)
      • (page, extraOptions?, api?): PromiseLike<string & {
            contentFormat: string;
            page: any;
            revid: number;
        }>
      • Get the content of a page on-wiki.

        Parameters

        • page: string | number | Title

          The page to get

        • extraOptions: Record<string, any> = {}

          Extra options to pass to the request

          @@ -285,12 +285,12 @@
    • toRedirectsObject: ((redirects: {
          from: string;
          to: string;
      }[], normalized?: {
          from: string;
          to: string;
      }[]) => Record<string, string>)
        • (redirects, normalized?): Record<string, string>
        • Transforms the redirects object returned by MediaWiki's query action into an object instead of an array.

          Parameters

          • redirects: {
                from: string;
                to: string;
            }[]
          • Optionalnormalized: {
                from: string;
                to: string;
            }[]

          Returns Record<string, string>

          Redirects as an object

          -

    Accessors

    • get windowManager(): WindowManager
    • Returns WindowManager

      An OOUI window manager

      -

    Methods

  • Accessors

    • get windowManager(): WindowManager
    • Returns WindowManager

      An OOUI window manager

      +

    Methods

    • Initializes Deputy. By this point, the loader should have succeeded in loading +

    • Initializes Deputy. By this point, the loader should have succeeded in loading all dependencies required for Deputy to work. It's only a matter of initializing sub-components as well.

      -

      Returns Promise<void>

    • Initialize Deputy. This static function attaches Deputy to the window.deputy object and initializes that instance.

      -

      Returns Promise<void>

    \ No newline at end of file +

    Returns Promise<void>

    diff --git a/classes/_internal_.AttributionNotice.html b/classes/_internal_.AttributionNotice.html index c7988614..11651003 100644 --- a/classes/_internal_.AttributionNotice.html +++ b/classes/_internal_.AttributionNotice.html @@ -1,7 +1,7 @@ AttributionNotice | deputy

    Class AttributionNoticeAbstract

    The AttributionNotice abstract class serves as the blueprint for other subclasses that are instances of AttributionNotices (e.g CopiedTemplate). It provides the basic functionality for the processing of attribution notices.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    id name node @@ -17,28 +17,28 @@ toWikitext

    Constructors

    Properties

    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    Returns AttributionNotice

    Properties

    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    Accessors

    Methods

    Methods

    • Destroys the notice by removing it from the Parsoid document. Optionally, a +

    Returns void

    • Extracts the parameters from this notice and stores them in the object. This must NEVER destroy unknown parameters. This function does not always pull all parameters from the template, only those that are known.

      This should be implemented by subclasses.

      -

      Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.AttributionNoticeRow.html b/classes/_internal_.AttributionNoticeRow.html index 00271d35..a5b587a4 100644 --- a/classes/_internal_.AttributionNoticeRow.html +++ b/classes/_internal_.AttributionNoticeRow.html @@ -1,22 +1,22 @@ AttributionNoticeRow | deputy

    Class AttributionNoticeRow<T>Abstract

    An attribution notice's row or entry.

    -

    Type Parameters

    Hierarchy (view full)

    Implements

    Constructors

    Type Parameters

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    _parent: T
    id: string

    A unique ID for this template. +

    Constructors

    Properties

    _parent: T
    id: string

    A unique ID for this template. Derived from the template name, its Parsoid about, and a unique identifier.

    -
    name: string

    A unique name for this row. +

    name: string

    A unique name for this row. Derived from the Parsoid about for its node and a unique identifier.

    -

    Accessors

    Accessors

    Methods

    Returns void

    Methods

    \ No newline at end of file +

    Parameters

    • dialog: any

    Returns AttributionNoticePageLayout

    diff --git a/classes/_internal_.BackwardsCopyTemplate.html b/classes/_internal_.BackwardsCopyTemplate.html index 4ef2a5e1..442f00e4 100644 --- a/classes/_internal_.BackwardsCopyTemplate.html +++ b/classes/_internal_.BackwardsCopyTemplate.html @@ -1,5 +1,5 @@ BackwardsCopyTemplate | deputy

    Class BackwardsCopyTemplate

    Represents a single {{copied}} template in the Parsoid document.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    _rows comments? demo? @@ -23,45 +23,45 @@ toWikitext

    Constructors

    Properties

    All the rows of this template.

    -
    comments?: string

    Comments shown at the bottom of the notice.

    -
    demo?: string

    Removes the tracking category. This shouldn't be editable within CTE, but +

    Returns BackwardsCopyTemplate

    Properties

    All the rows of this template.

    +
    comments?: string

    Comments shown at the bottom of the notice.

    +
    demo?: string

    Removes the tracking category. This shouldn't be editable within CTE, but should still be carried over as a parameter.

    -
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -
    revid?: string

    The version number of a particular version that predates publication of the +

    revid?: string

    The version number of a particular version that predates publication of the referenced work. The text generated by the template will link to the specified version.

    Actual parameter name: id. revid is used to avoid shadowing the template ID.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    Accessors

    Methods

    Methods

    • Adds a row to this template.

      +

    Returns void

    • Deletes a row to this template.

      +

    Returns void

    Returns void

    • Parses parameters into class properties. This WILL destroy unknown +

    Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.BackwardsCopyTemplateRow.html b/classes/_internal_.BackwardsCopyTemplateRow.html index a509aa42..44f0b9b1 100644 --- a/classes/_internal_.BackwardsCopyTemplateRow.html +++ b/classes/_internal_.BackwardsCopyTemplateRow.html @@ -1,5 +1,5 @@ BackwardsCopyTemplateRow | deputy

    Class BackwardsCopyTemplateRow

    Represents a row/entry in a {{copied}} template.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    _parent articlename? author? @@ -17,27 +17,27 @@

    Methods

    Constructors

    Properties

    articlename?: string

    Alias of title.

    -
    author?: string

    Used to input an author.

    -
    authorlist?: string

    Used to input a list of authors, usually separated by a semicolon. Overrides author.

    -
    date?: string

    The date of publishing for this publication.

    -
    display_authors?: string

    Whether to display authors or not.

    -
    id: string

    A unique ID for this template. +

    Returns BackwardsCopyTemplateRow

    Properties

    articlename?: string

    Alias of title.

    +
    author?: string

    Used to input an author.

    +
    authorlist?: string

    Used to input a list of authors, usually separated by a semicolon. Overrides author.

    +
    date?: string

    The date of publishing for this publication.

    +
    display_authors?: string

    Whether to display authors or not.

    +
    id: string

    A unique ID for this template. Derived from the template name, its Parsoid about, and a unique identifier.

    -
    monthday?: string

    The month and day of publishing for this publication.

    -
    name: string

    A unique name for this row. +

    monthday?: string

    The month and day of publishing for this publication.

    +
    name: string

    A unique name for this row. Derived from the Parsoid about for its node and a unique identifier.

    -
    org?: string

    The publisher of the publication.

    -
    title?: string

    The name of the article published.

    -
    url?: string

    The URL of the publication.

    -
    year?: string

    The year of publication for this publication.

    -

    Accessors

    org?: string

    The publisher of the publication.

    +
    title?: string

    The name of the article published.

    +
    url?: string

    The URL of the publication.

    +
    year?: string

    The year of publication for this publication.

    +

    Accessors

    Methods

    Returns void

    Methods

    \ No newline at end of file +

    Parameters

    • dialog: any

    Returns AttributionNoticePageLayout

    diff --git a/classes/_internal_.CTEParsoidDocument.html b/classes/_internal_.CTEParsoidDocument.html index 2d33312d..04664f63 100644 --- a/classes/_internal_.CTEParsoidDocument.html +++ b/classes/_internal_.CTEParsoidDocument.html @@ -1,14 +1,14 @@ -CTEParsoidDocument | deputy

    Class CTEParsoidDocument

    An object containing an HTMLIFrameElement along with helper functions +CTEParsoidDocument | deputy

    Class CTEParsoidDocument

    An object containing an HTMLIFrameElement along with helper functions to make manipulation easier.

    -

    Hierarchy

    • ParsoidDocument
      • CTEParsoidDocument

    Constructors

    Hierarchy

    • ParsoidDocument
      • CTEParsoidDocument

    Constructors

    Properties

    A map of all Parsoid HTML elements and their attribution notices. When notices are +

    Returns CTEParsoidDocument

    Properties

    A map of all Parsoid HTML elements and their attribution notices. When notices are detected, they are added here. ParsoidTemplateTransclusionNode is not used here since they are regenerated every time findTemplate is called.

    -
    originalCount: number = null

    The original number of {{copied}} notices in the document.

    -
    addedRows: number = 1
    defaultDocument: "<html><body><section data-mw-section-id=\"0\"></section></body></html>" = '<html><body><section data-mw-section-id="0"></section></body></html>'

    Extremely minimalist valid Parsoid document. This includes a section 0 +

    originalCount: number = null

    The original number of {{copied}} notices in the document.

    +
    addedRows: number = 1
    defaultDocument: "<html><body><section data-mw-section-id=\"0\"></section></body></html>" = '<html><body><section data-mw-section-id="0"></section></body></html>'

    Extremely minimalist valid Parsoid document. This includes a section 0 element for findCopiedNoticeSpot.

    -

    Methods

    Methods

    • Look for a good spot to place a {{copied}} template.

      Parameters

      • type:
            | "copied"
            | "splitArticle"
            | "mergedFrom"
            | "mergedTo"
            | "backwardsCopy"
            | "translatedPage"

        The type of the notice to look a spot for.

      Returns [InsertPosition, HTMLElement]

      A spot to place the template, null if a spot could not be found.

      -
    • Inserts a new attribution notice of a given type.

      Parameters

      • type:
            | "copied"
            | "splitArticle"
            | "mergedFrom"
            | "mergedTo"
            | "backwardsCopy"
            | "translatedPage"

        A notice type

      • spot: [InsertPosition, Element]

        The spot to place the template.

        -

      Returns void

    \ No newline at end of file +

    Returns void

    diff --git a/classes/_internal_.CTEParsoidTransclusionTemplateNode.html b/classes/_internal_.CTEParsoidTransclusionTemplateNode.html index 45b028d3..37d760f9 100644 --- a/classes/_internal_.CTEParsoidTransclusionTemplateNode.html +++ b/classes/_internal_.CTEParsoidTransclusionTemplateNode.html @@ -1,7 +1,7 @@ CTEParsoidTransclusionTemplateNode | deputy

    Class CTEParsoidTransclusionTemplateNode

    Extension class of ParsoidDocument's node. Used to type parsoidDocument in the below function. Since the original node is always instantiated with this, it can be assumed that parsoidDocument is a valid CTEParsoidDocument.

    -

    Hierarchy

    • Node
      • CTEParsoidTransclusionTemplateNode

    Constructors

    Hierarchy

    • Node
      • CTEParsoidTransclusionTemplateNode

    Constructors

    Properties

    Methods

    fromNew upgradeNode @@ -12,8 +12,8 @@
  • i: number

    The i property of this node.

  • Optionalautosave: boolean

    Whether to automatically save parameter and target changes or not.

  • Returns CTEParsoidTransclusionTemplateNode

    Properties

    parsoidDocument: CTEParsoidDocument

    The ParsoidDocument handling this node.

    -

    Methods

    Methods

    \ No newline at end of file +
    diff --git a/classes/_internal_.ConfigurationBase.html b/classes/_internal_.ConfigurationBase.html index 88c272c0..72f0bb51 100644 --- a/classes/_internal_.ConfigurationBase.html +++ b/classes/_internal_.ConfigurationBase.html @@ -1,5 +1,5 @@ ConfigurationBase | deputy

    Class ConfigurationBaseAbstract

    A configuration. Defines settings and setting groups.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Methods

    deserialize @@ -7,11 +7,11 @@ serialize load

    Constructors

    Properties

    all: Record<string, Record<string, Setting<any, any>>>
    type: "user" | "wiki"

    Methods

    Properties

    all: Record<string, Record<string, Setting<any, any>>>
    type: "user" | "wiki"

    Methods

    • Deserializes a JSON configuration into this configuration. This WILL overwrite past settings.

      -

      Parameters

      • serializedData: any

      Returns void

    • Returns any

      the serialized version of the configuration. All undefined values are stripped +

    Parameters

    • serializedData: any

    Returns void

    • Returns any

      the serialized version of the configuration. All undefined values are stripped from output. If a category remains unchanged from defaults, it is skipped. If the entire configuration remains unchanged, null is returned.

      -
    \ No newline at end of file +
    diff --git a/classes/_internal_.ContributionSurveyRevision.html b/classes/_internal_.ContributionSurveyRevision.html index d0101106..39928af6 100644 --- a/classes/_internal_.ContributionSurveyRevision.html +++ b/classes/_internal_.ContributionSurveyRevision.html @@ -1,5 +1,5 @@ ContributionSurveyRevision | deputy

    Class ContributionSurveyRevision

    Contains information about a specific revision in a ContributionSurveyRow.

    -

    Implements

    Constructors

    Implements

    Constructors

    Properties

    comment diffsize minor @@ -13,5 +13,5 @@ timestamp user

    Constructors

    Properties

    comment: string
    diffsize: number
    minor: boolean
    page: {
        ns: number;
        pageid: number;
        title: string;
    }
    parentid: number
    parsedcomment?: string
    revid: number

    The row that this revision belongs to.

    -
    size: number
    tags: string[]
    timestamp: string
    user: string
    \ No newline at end of file +

    Parameters

    Returns ContributionSurveyRevision

    Properties

    comment: string
    diffsize: number
    minor: boolean
    page: {
        ns: number;
        pageid: number;
        title: string;
    }
    parentid: number
    parsedcomment?: string
    revid: number

    The row that this revision belongs to.

    +
    size: number
    tags: string[]
    timestamp: string
    user: string
    diff --git a/classes/_internal_.ContributionSurveyRow.html b/classes/_internal_.ContributionSurveyRow.html index 593a16b3..8b383c40 100644 --- a/classes/_internal_.ContributionSurveyRow.html +++ b/classes/_internal_.ContributionSurveyRow.html @@ -1,7 +1,7 @@ ContributionSurveyRow | deputy

    Class ContributionSurveyRow

    Represents a contribution survey row. This is an abstraction of the row that can be seen on contribution survey pages, which acts as an intermediate between raw wikitext and actual HTML content.

    -

    Constructors

    Constructors

    Properties

    Accessors

    Methods

    getActualComment getDiffs @@ -22,43 +22,43 @@

    Constructors

    Properties

    casePage: DeputyCasePage

    The case page of this row.

    -
    comment?: string

    Editor comments for this row (including signature)

    -
    extras: string

    Extra page information. e.g. "(1 edit, 1 major, +173)"

    -

    The original status of this row (if it had a prior status).

    -

    The status of this row.

    -
    statusIsolated?: false | "start" | "end"

    Determines if the status indicator (as tested by the regular expressions at +

    Returns ContributionSurveyRow

    Properties

    casePage: DeputyCasePage

    The case page of this row.

    +
    comment?: string

    Editor comments for this row (including signature)

    +
    extras: string

    Extra page information. e.g. "(1 edit, 1 major, +173)"

    +

    The original status of this row (if it had a prior status).

    +

    The status of this row.

    +
    statusIsolated?: false | "start" | "end"

    Determines if the status indicator (as tested by the regular expressions at ContributionSurveyRow.commentMatchRegex) is isolated (at the start or end of the comment). This will enable removal of the status indicator from the comment in the comment text input box.

    -
    title: Title

    The title of the page that this row is attached to.

    -
    type: "detailed" | "pageonly"
      +
    title: Title

    The title of the page that this row is attached to.

    +
    type: "detailed" | "pageonly"
    • detailed refers to a row with both page and revision information.
    • pageonly refers to a row with only a page and no revision information.
    -
    wikitext: string

    The original wikitext of the row.

    -
    Parser: typeof ContributionSurveyRowParser = ContributionSurveyRowParser
    commentMatchRegex: Record<
        | WithViolations
        | WithoutViolations
        | Missing
        | PresumptiveRemoval, RegExp> = ...

    A set of regular expressions that will match a specific contribution survey row +

    wikitext: string

    The original wikitext of the row.

    +
    commentMatchRegex: Record<
        | WithViolations
        | WithoutViolations
        | Missing
        | PresumptiveRemoval, RegExp> = ...

    A set of regular expressions that will match a specific contribution survey row comment. Used to determine the status of the comment.

    -

    Accessors

    Parser: typeof ContributionSurveyRowParser = ContributionSurveyRowParser

    Accessors

    • get completed(): boolean
    • This variable returns true when (a) the row has a non-unfinished status, and (b) there are no outstanding diffs in this row

      Returns boolean

      See description.

      -

    Methods

    Methods

    Returns ((a: ContributionSurveyRevision, b: ContributionSurveyRevision) => number)

  • Gets the sorter function which will sort a set of diffs based on a given sort order. This sorts any entry array using the first element (the key).

    Parameters

    Returns ((a: [ContributionSurveyRevision, any], b: [ContributionSurveyRevision, any]) => number)

  • Gets the sorter function which will sort a set of diffs based on a given +

  • Returns ((a: [ContributionSurveyRevision, any], b: [ContributionSurveyRevision, any]) => number)

  • Gets the sorter function which will sort a set of diffs based on a given sort order. This sorts any entry array using the second element (the value).

    Parameters

    Returns ((a: [any, ContributionSurveyRevision], b: [any, ContributionSurveyRevision]) => number)

  • Returns ((a: [any, ContributionSurveyRevision], b: [any, ContributionSurveyRevision]) => number)

    \ No newline at end of file +
    diff --git a/classes/_internal_.ContributionSurveyRowParser.html b/classes/_internal_.ContributionSurveyRowParser.html index 1478db11..4e955ae3 100644 --- a/classes/_internal_.ContributionSurveyRowParser.html +++ b/classes/_internal_.ContributionSurveyRowParser.html @@ -2,7 +2,7 @@

    This is used directly in unit tests. Do not import unnecessary dependencies, as they may indirectly import the entire Deputy codebase outside a browser environment.

    -

    Constructors

    Constructors

    Properties

    Methods

    eat eatExpression @@ -13,9 +13,9 @@ isEmpty parse peek -

    Constructors

    Properties

    wikitext: string

    Methods

    • Pops the first character off the working string and returns it.

      +

    Constructors

    Properties

    wikitext: string

    Methods

    • Eats a given expression from the start of the working string. If the working string does not contain the given expression, null is returned (and not a blank string). Only eats once, so any expression must be greedy if different behavior is expected.

      @@ -24,7 +24,7 @@

      Parameters

      • pattern: RegExp

        The pattern to match.

      • n: number = 0

        The capture group to return (returns the entire string (0) by default)

      Returns string

      The consumed characters.

      -
    • Eats a given expression from the start of the working string. If the working string does not contain the given expression, null is returned (and not a blank string). Only eats once, so any expression must be greedy if different behavior is expected.

      @@ -32,9 +32,9 @@ with ^(?:<source>). Avoid adding these expressions on your own.

      Parameters

      • pattern: RegExp

        The pattern to match.

      Returns RegExpExecArray

      A RegExpExecArray.

      -
    • Continue eating from the string until a string or regular expression is matched. Unlike eatExpression, passed regular expressions will not be re-wrapped with ^(?:). These must be added on your own if you wish to match the start of the string.

      @@ -43,12 +43,12 @@ pattern is never matched. The working string will be reset to its original state if this occurs. This prevents the function from being too greedy.

    Returns string

    The consumed characters.

    -
    \ No newline at end of file +
    diff --git a/classes/_internal_.ContributionSurveySection.html b/classes/_internal_.ContributionSurveySection.html index 272bc14f..2197b1c8 100644 --- a/classes/_internal_.ContributionSurveySection.html +++ b/classes/_internal_.ContributionSurveySection.html @@ -1,12 +1,12 @@ ContributionSurveySection | deputy

    Class ContributionSurveySection

    Represents a ContributionSurveySection. Contains a list of ContributionSurveyRows that make up a section generated by the contribution survey.

    -

    Constructors

    Constructors

    Properties

    casePage: DeputyCasePage

    The case page of this section

    -
    closed: boolean

    Whether this section has been closed (wrapped in collapse templates)

    -
    closingComments: string

    Closing comments for this section

    -
    name: string

    The name of this section (based on the heading).

    -
    originalWikitext: string

    The original wikitext of this section

    -
    originallyClosed: boolean

    Whether the section was already closed

    -
    revid: number

    The revision ID of the wikitext attached to this section.

    -
    \ No newline at end of file +

    Returns ContributionSurveySection

    Properties

    casePage: DeputyCasePage

    The case page of this section

    +
    closed: boolean

    Whether this section has been closed (wrapped in collapse templates)

    +
    closingComments: string

    Closing comments for this section

    +
    name: string

    The name of this section (based on the heading).

    +
    originallyClosed: boolean

    Whether the section was already closed

    +
    originalWikitext: string

    The original wikitext of this section

    +
    revid: number

    The revision ID of the wikitext attached to this section.

    +
    diff --git a/classes/_internal_.CopiedTemplate.html b/classes/_internal_.CopiedTemplate.html index b732911d..c28ec75f 100644 --- a/classes/_internal_.CopiedTemplate.html +++ b/classes/_internal_.CopiedTemplate.html @@ -1,5 +1,5 @@ CopiedTemplate | deputy

    Class CopiedTemplate

    Represents a single {{copied}} template in the Parsoid document.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    _rows collapsed id @@ -22,43 +22,43 @@ toWikitext

    Constructors

    Properties

    All the rows of this template.

    -
    collapsed: string

    Whether or not this notice is collapsed (rows hidden if +

    Returns CopiedTemplate

    Properties

    All the rows of this template.

    +
    collapsed: string

    Whether or not this notice is collapsed (rows hidden if rows are two or more).

    -
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -
    small: string

    Whether or not this notice is a right-floating box.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    small: string

    Whether or not this notice is a right-floating box.

    +

    Accessors

    Methods

    Methods

    • Adds a row to this template.

      +

    Returns void

    • Deletes a row to this template.

      +

    Returns void

    • Destroys the notice by removing it from the Parsoid document. Optionally, a +

    Returns void

    • Copies in the rows of another CopiedTemplate, and optionally deletes that template or clears its contents.

      Parameters

      • template: CopiedTemplate

        The template to copy from.

      • options: {
            clear?: boolean;
            delete?: boolean;
        } = {}

        Options for this merge.

        • Optionalclear?: boolean

          Whether the reference template's rows will be cleared after merging.

        • Optionaldelete?: boolean

          Whether the reference template will be deleted after merging.

          -

      Returns void

    • Extracts the parameters from this notice and stores them in the object. +

    Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.CopiedTemplateEditor.html b/classes/_internal_.CopiedTemplateEditor.html index 568ac451..80852cda 100644 --- a/classes/_internal_.CopiedTemplateEditor.html +++ b/classes/_internal_.CopiedTemplateEditor.html @@ -1,5 +1,5 @@ CopiedTemplateEditor | deputy

    Class CopiedTemplateEditor

    Main class for CopiedTemplateEditor.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    CopiedTemplate: typeof CopiedTemplate = CopiedTemplate
    deputy?: Deputy

    An instance of Deputy. This is commonly window.deputy. Instantiating this class +

    Constructors

    Properties

    CopiedTemplate: typeof CopiedTemplate = CopiedTemplate
    deputy?: Deputy

    An instance of Deputy. This is commonly window.deputy. Instantiating this class with a Deputy instances enables connection with the Deputy core, which shares the OOUI window manager and API manager for Deputy.

    -
    dialog: any

    The CopiedTemplateEditorDialog. The face of the operation.

    -
    loaded: boolean = true

    Whether the core has been loaded or not. Set to true here, since this is +

    dialog: any

    The CopiedTemplateEditorDialog. The face of the operation.

    +
    loaded: boolean = true

    Whether the core has been loaded or not. Set to true here, since this is obviously the core class.

    -
    loader?: boolean

    The loader variable is set (in JavaScript) by a CTE loader. This prevents UI +

    loader?: boolean

    The loader variable is set (in JavaScript) by a CTE loader. This prevents UI elements (such as "start" buttons and the toolbox link) from being appended to the DOM twice.

    -
    startButtons: any[] = []

    Pencil icon buttons on {{copied}} templates that open CTE.

    -
    startState: boolean

    Determines the start state of the start buttons. This depends on toggleButtons.

    -
    static: typeof CopiedTemplateEditor = CopiedTemplateEditor
    dependencies: string[] = ...

    Accessors

    startButtons: any[] = []

    Pencil icon buttons on {{copied}} templates that open CTE.

    +
    startState: boolean

    Determines the start state of the start buttons. This depends on toggleButtons.

    +
    static: typeof CopiedTemplateEditor = CopiedTemplateEditor
    dependencies: string[] = ...

    Accessors

    • get wikiConfig(): WikiConfiguration
    • Returns WikiConfiguration

      the wiki-wide configuration handler for this module. If Deputy is loaded, this reuses the configuration handler of Deputy. Since the wiki config is loaded asynchronously, this may not be populated at runtime. Only use it if you're sure that preInit has already been called and finished.

      -
    • get windowManager(): WindowManager
    • Returns WindowManager

      The responsible window manager for this class.

      -

    Methods

    • Get the module key for this module. Allows modules to be identified with a different +

    • get windowManager(): WindowManager
    • Returns WindowManager

      The responsible window manager for this class.

      +

    Methods

    • Perform actions that run before CTE starts (prior to execution). This involves +

    Returns Promise<void>

    \ No newline at end of file +

    Returns void

    diff --git a/classes/_internal_.CopiedTemplateRow.html b/classes/_internal_.CopiedTemplateRow.html index b22a9255..f7545ac9 100644 --- a/classes/_internal_.CopiedTemplateRow.html +++ b/classes/_internal_.CopiedTemplateRow.html @@ -1,5 +1,5 @@ CopiedTemplateRow | deputy

    Class CopiedTemplateRow

    Represents a row/entry in a {{copied}} template.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    _parent afd date @@ -16,17 +16,17 @@

    Methods

    Constructors

    Properties

    afd: string
    date: string
    diff: string
    from: string
    from_oldid: string
    id: string

    A unique ID for this template. +

    Parameters

    Returns CopiedTemplateRow

    Properties

    afd: string
    date: string
    diff: string
    from: string
    from_oldid: string
    id: string

    A unique ID for this template. Derived from the template name, its Parsoid about, and a unique identifier.

    -
    merge: string
    name: string

    A unique name for this row. +

    merge: string
    name: string

    A unique name for this row. Derived from the Parsoid about for its node and a unique identifier.

    -
    to: string
    to_diff: string
    to_oldid: string

    Accessors

    to: string
    to_diff: string
    to_oldid: string

    Accessors

    Methods

    Returns void

    Methods

    \ No newline at end of file +

    Parameters

    • dialog: any

    Returns AttributionNoticePageLayout

    diff --git a/classes/_internal_.CopyrightProblemsListing.html b/classes/_internal_.CopyrightProblemsListing.html index 14a7f9b2..81442cc7 100644 --- a/classes/_internal_.CopyrightProblemsListing.html +++ b/classes/_internal_.CopyrightProblemsListing.html @@ -1,6 +1,6 @@ CopyrightProblemsListing | deputy

    Class CopyrightProblemsListing

    Represents an existing copyright problems listing. To add or create new listings, use the associated functions in CopyrightProblemsPage.

    -

    Constructors

    Constructors

    Properties

    anchor basic element @@ -22,10 +22,10 @@
  • OptionallistingPage: CopyrightProblemsPage

    The page that this listing is on. This is not necessarily the page that the listing's wikitext is on, nor is it necessarily the root page.

  • i: number = 1

    A discriminator used to avoid collisions when a page is listed multiple times.

    -
  • Returns CopyrightProblemsListing

    Properties

    basic: boolean
    i: number
    id: string

    The listing page that this listing belongs to.

    -
    plainlinks: HTMLSpanElement
    title: Title

    Accessors

    • get anchorId(): string
    • Returns string

      an ID representation of this listing. Helps in finding it inside of +

    Returns CopyrightProblemsListing

    Properties

    basic: boolean
    i: number
    id: string

    The listing page that this listing belongs to.

    +
    plainlinks: HTMLSpanElement
    title: Title

    Accessors

    • get articleCvRegex(): RegExp
    • Responsible for determining listings on a page. This method allows for full-metadata listing detection, and makes the process of detecting a given listing much more precise.

      This regular expression must catch three groups:

        @@ -38,27 +38,27 @@ article-cv.

      Returns RegExp

      A regular expression.

      -

    Methods

    Methods

    • Gets the line number of a listing based on the page's wikitext. This is further used when attempting to insert comments to listings.

      This provides an object with start and end keys. The start denotes the line on which the listing appears, the end denotes the last line where there is a comment on that specific listing.

      Use in conjunction with listingPage.getWikitext() to get the lines in wikitext.

      Returns Promise<{
          end: number;
          start: number;
      }>

      See documentation body.

      -
    • Determines if a given element is a valid anchor element (<a>) which makes up a "listing" (a page for checking on the Copyright Problems page).

      Detection is based on the {{article-cv}} template. Changes to the template must be reflected here, with backwards compatibility for older listings. The {{anchor}} is not the tracked element here, since it remains invisible to the user.

      Parameters

      Returns false | FullCopyrightProblemsListingData

      Data related to the listing, for use in instantiation; false if not a listing.

      -
    \ No newline at end of file +
    diff --git a/classes/_internal_.CopyrightProblemsPage.html b/classes/_internal_.CopyrightProblemsPage.html index 61bac723..b9dd3b38 100644 --- a/classes/_internal_.CopyrightProblemsPage.html +++ b/classes/_internal_.CopyrightProblemsPage.html @@ -4,7 +4,7 @@ knowledgeable editors.

    This page can refer to any Copyright problems page, and not necessarily one that is running on the current tab. For that, CopyrightProblemsSession is used.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Properties

    main: boolean

    Whether this is the main page or not

    -
    revid: number

    The current revision ID of the listing page. Helps in avoiding edit conflicts.

    -
    title: Title

    The title of the listing page

    -
    wikitext: string

    Cached wikitext. Based off of the revision ID.

    -
    pageCache: Map<string, CopyrightProblemsPage> = ...

    Accessors

    Methods

    Properties

    main: boolean

    Whether this is the main page or not

    +
    revid: number

    The current revision ID of the listing page. Helps in avoiding edit conflicts.

    +
    title: Title

    The title of the listing page

    +
    wikitext: string

    Cached wikitext. Based off of the revision ID.

    +
    pageCache: Map<string, CopyrightProblemsPage> = ...

    Accessors

    Methods

    • Generates the batch listing wikitext using wiki configuration values.

      Parameters

      • page: Title[]
      • title: string
      • Optionalcomments: string

      Returns string

      Wikitext

      -
    • Posts a single page listing to this page, or (if on the root page), the page for the current date. Listings are posted in the following format:

      * {{subst:article-cv|Example}} <comment> ~~~~
       

      For posting multiple pages, use postListings.

      -

      Parameters

      • page: Title
      • Optionalcomments: string
      • Optionalpresumptive: boolean

      Returns Promise<void>

    • Posts multiple pages under a collective listing. Used for cases where the same comment can be applied to a set of pages. Listings are posted in the following format:

      ;{{anchor|1=<title>}}<title>
      * {{subst:article-cv|1=Page 1}}
      * {{subst:article-cv|1=Page 2}}
      <comment> ~~~~
      -

      Parameters

      • page: Title[]
      • title: string
      • Optionalcomments: string
      • Optionalpresumptive: boolean

      Returns Promise<void>

    \ No newline at end of file +
    diff --git a/classes/_internal_.CopyrightProblemsSession.html b/classes/_internal_.CopyrightProblemsSession.html index 723817ab..06a842af 100644 --- a/classes/_internal_.CopyrightProblemsSession.html +++ b/classes/_internal_.CopyrightProblemsSession.html @@ -8,7 +8,7 @@
  • The main Wikipedia:Copyright problems page
  • Wikipedia:Copyright problems subpages (which may/may not be date-specific entries)
  • -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    document: Document

    The document to use for reading operations

    -
    main: boolean

    Whether this is the main page or not

    -
    revid: number

    The current revision ID of the listing page. Helps in avoiding edit conflicts.

    -
    title: Title

    The title of the listing page

    -
    wikitext: string

    Cached wikitext. Based off of the revision ID.

    -
    pageCache: Map<string, CopyrightProblemsPage> = ...

    Accessors

    Methods

    • Adds a panel containing the "new listing" buttons (single and multiple) +

    Constructors

    Properties

    document: Document

    The document to use for reading operations

    +
    main: boolean

    Whether this is the main page or not

    +
    revid: number

    The current revision ID of the listing page. Helps in avoiding edit conflicts.

    +
    title: Title

    The title of the listing page

    +
    wikitext: string

    Cached wikitext. Based off of the revision ID.

    +
    pageCache: Map<string, CopyrightProblemsPage> = ...

    Accessors

    Methods

    • Adds a panel containing the "new listing" buttons (single and multiple) and the panel container (when filing a multiple-page listing) to the proper location: either at the end of the copyright problems section or replacing the redlink to the blank copyright problems page.

      -

      Returns void

    • Posts a single page listing to this page, or (if on the root page), the page for the current date. Listings are posted in the following format:

      * {{subst:article-cv|Example}} <comment> ~~~~
       

      For posting multiple pages, use postListings.

      -

      Parameters

      • page: Title
      • Optionalcomments: string
      • Optionalpresumptive: boolean

      Returns Promise<void>

    • Posts multiple pages under a collective listing. Used for cases where the same comment can be applied to a set of pages. Listings are posted in the following format:

      ;{{anchor|1=<title>}}<title>
      * {{subst:article-cv|1=Page 1}}
      * {{subst:article-cv|1=Page 2}}
      <comment> ~~~~
      -

      Parameters

      • page: Title[]
      • title: string
      • Optionalcomments: string
      • Optionalpresumptive: boolean

      Returns Promise<void>

    \ No newline at end of file +
    diff --git a/classes/_internal_.DeputyCCIStatusDropdown.html b/classes/_internal_.DeputyCCIStatusDropdown.html index 200bba92..a43250d2 100644 --- a/classes/_internal_.DeputyCCIStatusDropdown.html +++ b/classes/_internal_.DeputyCCIStatusDropdown.html @@ -1,4 +1,4 @@ -DeputyCCIStatusDropdown | deputy

    Class DeputyCCIStatusDropdown

    Hierarchy

    Constructors

    constructor +DeputyCCIStatusDropdown | deputy

    Class DeputyCCIStatusDropdown

    Hierarchy

    Constructors

    Properties

    • casePage: DeputyCase

      The DeputyCase for this dropdown

    • title: Title

      The title of the row (page) that this dropdown accesses

    • type: "detailed" | "pageonly"
  • options: DeputyCCIStatusDropdownProps = {}

    Additional construction options, usually used by the root session.

    -
  • Returns DeputyCCIStatusDropdown

    Properties

    dropdown: DropdownWidget

    The OOUI DropdownWidget element. This does not use DropdownInputWidget +

    Returns DeputyCCIStatusDropdown

    Properties

    dropdown: DropdownWidget

    The OOUI DropdownWidget element. This does not use DropdownInputWidget due to its lack of support for icons in dropdown menu options and the ability to hide said icons using CSS and other fun trickery.

    -
    dropdownChangeListener: ((items: OptionWidget[]) => void)

    A listener that listens to changes in the status dropdown and performs respective +

    dropdownChangeListener: ((items: OptionWidget[]) => void)

    A listener that listens to changes in the status dropdown and performs respective updates and changes.

    -
    dropdownUpdateListener: ((message: DeputyMessageEvent<DeputyPageStatusUpdateMessage>) => void)

    A listener that listens to external changes to the status dropdown from the +

    dropdownUpdateListener: ((message: DeputyMessageEvent<DeputyPageStatusUpdateMessage>) => void)

    A listener that listens to external changes to the status dropdown from the inter-tab communication channel.

    -
    options: Map<ContributionSurveyRowStatus, MenuOptionWidget>

    A set of OOUI MenuOptionWidgets that make up the status dropdown.

    -
    row: {
        casePage: DeputyCase;
        title: Title;
        type: "detailed" | "pageonly";
    }

    The origin row of this dropdown. Contains info on the active case page and the +

    options: Map<ContributionSurveyRowStatus, MenuOptionWidget>

    A set of OOUI MenuOptionWidgets that make up the status dropdown.

    +
    row: {
        casePage: DeputyCase;
        title: Title;
        type: "detailed" | "pageonly";
    }

    The origin row of this dropdown. Contains info on the active case page and the title that this dropdown is for.

    -
    menuOptionIcons: Record<ContributionSurveyRowStatus, Icon> = ...

    Accessors

    Methods

    menuOptionIcons: Record<ContributionSurveyRowStatus, Icon> = ...

    Accessors

    Methods

    • When an option is about to be closed and the current status matches that option, this function will find the next best option and select it. The next best value is as follows:

      For

      @@ -53,7 +53,7 @@
    • PresumptiveRemoval: usually not disabled, kept as is

    Parameters

    Returns void

    • Sets the 'disable state' of specific menu options. For the Unknown option, a +

    Returns void

    \ No newline at end of file +

    Parameters

    Returns void

    diff --git a/classes/_internal_.DeputyCase.html b/classes/_internal_.DeputyCase.html index c22ec57b..d1b5c772 100644 --- a/classes/_internal_.DeputyCase.html +++ b/classes/_internal_.DeputyCase.html @@ -1,6 +1,6 @@ DeputyCase | deputy

    Base class for Deputy cases. Extended into DeputyCasePage to refer to an active case page. Used to represent case pages in a more serializable way.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Accessors

    rootPage @@ -10,19 +10,19 @@ isCasePage

    Constructors

    Properties

    pageId: number

    The page ID of the case page.

    -
    title: Title

    Title of the case page.

    -

    Accessors

    Methods

    • Gets the case name by parsing the title.

      +

    Returns DeputyCase

    Properties

    pageId: number

    The page ID of the case page.

    +
    title: Title

    Title of the case page.

    +

    Accessors

    Methods

    • Gets the case name by parsing the title.

      Returns string

      The case name, or null if the title was not a valid case page

      -
    • Gets the case name by parsing the title.

      +

    Returns Promise<DeputyCase>

    • Gets the case name by parsing the title.

      Parameters

      • Optionaltitle: TitleLike

        The title of the case page

      Returns string

      The case name, or null if the title was not a valid case page

      -
    • Checks if the current page (or a supplied page) is a case page (subpage of +

    • Checks if the current page (or a supplied page) is a case page (subpage of the root page).

      Parameters

      • Optionaltitle: TitleLike

        The title of the page to check.

      Returns boolean

      true if the page is a case page.

      -
    \ No newline at end of file +
    diff --git a/classes/_internal_.DeputyCasePage.html b/classes/_internal_.DeputyCasePage.html index d35d474e..aca35fa5 100644 --- a/classes/_internal_.DeputyCasePage.html +++ b/classes/_internal_.DeputyCasePage.html @@ -1,7 +1,7 @@ DeputyCasePage | deputy

    Class DeputyCasePage

    Handles Deputy case pages, controls UI features, among other things. This class should be able to operate both on the standard MediaWiki parser output and the Parsoid output.

    -

    Hierarchy (view full)

    Properties

    Hierarchy (view full)

    Properties

    document: Document

    The document to use as a reference.

    -
    lastActive: number = ...

    A timestamp of when this case page was last worked on.

    -
    lastActiveSections: string[] = []

    The sections last worked on for this case page.

    -
    nCache: Map<HTMLHeadingElement, number>

    The n-cache stores the n of contribution survey headings. In other +

    lastActive: number = ...

    A timestamp of when this case page was last worked on.

    +
    lastActiveSections: string[] = []

    The sections last worked on for this case page.

    +
    nCache: Map<HTMLHeadingElement, number>

    The n-cache stores the n of contribution survey headings. In other words, it differentiates survey headings by giving it a number if another section on the page has a matching heading. The n-cache only contains the n of contribution survey headings, but counts all HTML headings as part of the n-cache.

    -
    pageId: number

    The page ID of the case page.

    -
    parsoid: boolean

    Whether this page is a Parsoid HTML5 with RDFa markup page or not.

    -
    title: Title

    Title of this page.

    -

    The wikitext handler of the page.

    -

    Accessors

    • get rootPage(): Title
    • Returns Title

      the title of the case page

      -

    Methods

    pageId: number

    The page ID of the case page.

    +
    parsoid: boolean

    Whether this page is a Parsoid HTML5 with RDFa markup page or not.

    +
    title: Title

    Title of this page.

    +

    The wikitext handler of the page.

    +

    Accessors

    • get rootPage(): Title
    • Returns Title

      the title of the case page

      +

    Methods

    • Add a section to the list of active sessions. This is used for automatic starting and for one-click continuation of past active sessions.

      Parameters

      • sectionId: string

        The ID of the section to add.

        -

      Returns Promise<void>

    • Deletes the current page from the cache. This is generally not advised, unless the +

    Returns Promise<void>

    • Deletes the current page from the cache. This is generally not advised, unless the user wishes to forget the case page entirely.

      -

      Returns Promise<void>

    • Find a contribution survey heading by section name.

      Parameters

      • sectionIdentifier: string

        The section identifier to look for, usually the section name unless useId is set to true.

      • useId: boolean = false

        Whether to use the section name instead of the ID

      Returns HTMLHeadingElement

      The <h*> element of the heading.

      -
    • Gets all elements that are part of a contribution survey "section", that is a set of elements including the section heading and all elements succeeding the heading until (and exclusive of) the heading of the next section.

      In other words, @@ -68,23 +68,23 @@ NO : === Pages 3 to 4 ===

      Parameters

      • sectionHeading: HTMLElement

        The section heading to work with

      Returns Node[]

      An array of all HTMLElements covered by the section

      -
    • Remove a section from the list of active sections. This will disable autostart for this section.

      Parameters

      • sectionId: string

        ID of the section to remove

        -

      Returns Promise<void>

    • Gets the case name by parsing the title.

      +

    Returns Promise<DeputyCasePage>

    • Gets the case name by parsing the title.

      Parameters

      • Optionaltitle: TitleLike

        The title of the case page

      Returns string

      The case name, or null if the title was not a valid case page

      -
    • Checks if the current page (or a supplied page) is a case page (subpage of the root page).

      Parameters

      • Optionaltitle: TitleLike

        The title of the page to check.

      Returns boolean

      true if the page is a case page.

      -
    \ No newline at end of file +
    diff --git a/classes/_internal_.DeputyCasePageWikitext.html b/classes/_internal_.DeputyCasePageWikitext.html index 728f1cc8..1b711868 100644 --- a/classes/_internal_.DeputyCasePageWikitext.html +++ b/classes/_internal_.DeputyCasePageWikitext.html @@ -1,19 +1,19 @@ DeputyCasePageWikitext | deputy

    Class DeputyCasePageWikitext

    Used by DeputyCasePage to access the page's raw wikitext, make changes, etc.

    -

    Constructors

    Constructors

    Properties

    casePage: DeputyCasePage

    The source case page.

    -
    content: string & {
        contentFormat: string;
        page: any;
        revid: number;
    }

    The cached wikitext page content.

    -

    Methods

    • Gets the wikitext for a specific section. The section will be parsed using the +

    Constructors

    Properties

    casePage: DeputyCasePage

    The source case page.

    +
    content: string & {
        contentFormat: string;
        page: any;
        revid: number;
    }

    The cached wikitext page content.

    +

    Methods

    • Gets the wikitext for a specific section. The section will be parsed using the wikitext cache if a section title was provided. Otherwise, it will attempt to grab the section using API:Query for an up-to-date version.

      Parameters

      • section: string | number

        The section to edit

      • n: number = 1

        If the section heading appears multiple times in the page and n is provided, this function extracts the nth occurrence of that section heading.

        -

      Returns Promise<string & {
          revid: number;
      }>

    • Gets the wikitext for this page.

      -

      Returns Promise<string & {
          contentFormat: string;
          page: any;
          revid: number;
      }>

    \ No newline at end of file +

    Returns Promise<string & {
        revid: number;
    }>

    • Gets the wikitext for this page.

      +

      Returns Promise<string & {
          contentFormat: string;
          page: any;
          revid: number;
      }>

    diff --git a/classes/_internal_.DeputyCommunications.html b/classes/_internal_.DeputyCommunications.html index 7d75bf52..655eb192 100644 --- a/classes/_internal_.DeputyCommunications.html +++ b/classes/_internal_.DeputyCommunications.html @@ -1,20 +1,20 @@ DeputyCommunications | deputy

    Class DeputyCommunications

    Handles inter-tab communication and automatically broadcasts events to listeners.

    -

    Hierarchy

    Constructors

    Hierarchy

    Constructors

    Properties

    broadcastChannel: BroadcastChannel

    Methods

    • Type Parameters

      • T extends
            | "userConfigUpdate"
            | "acknowledge"
            | "sessionRequest"
            | "sessionResponse"
            | "sessionClosed"
            | "sessionStarted"
            | "sessionReady"
            | "sessionStop"
            | "pageStatusRequest"
            | "pageStatusResponse"
            | "pageStatusUpdate"
            | "revisionStatusUpdate"
            | "pageNextRevisionRequest"
            | "pageNextRevisionResponse"
            | "wikiConfigUpdate"

      Parameters

      • type: T

        The type of message to send.

        +

    Constructors

    Properties

    broadcastChannel: BroadcastChannel

    Methods

    • Type Parameters

      • T extends
            | "userConfigUpdate"
            | "acknowledge"
            | "sessionRequest"
            | "sessionResponse"
            | "sessionClosed"
            | "sessionStarted"
            | "sessionReady"
            | "sessionStop"
            | "pageStatusRequest"
            | "pageStatusResponse"
            | "pageStatusUpdate"
            | "revisionStatusUpdate"
            | "pageNextRevisionRequest"
            | "pageNextRevisionResponse"
            | "wikiConfigUpdate"

      Parameters

      • type: T

        The type of message to send.

      • callback: ((event: Event & {
            data: LowLevelDeputyMessage & {
                type: T;
            };
        }) => void)

        The callback to call when the message is received.

      • Optionaloptions: boolean | AddEventListenerOptions

        Optional options for the event listener.

        -

      Returns void

      EventTarget#addEventListener

      -
    • Type Parameters

      • T extends
            | never
            | DeputySessionRequestMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputySessionResponseMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | never
            | never
            | never
            | DeputySessionStopMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusRequestMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusResponseMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusUpdateMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyRevisionStatusUpdateMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageNextRevisionRequest & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageNextRevisionResponse & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyUserConfigurationUpdate & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyWikiConfigurationUpdate & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }

      Parameters

      Returns void

    Returns void

    • Type Parameters

      • T extends
            | never
            | DeputySessionRequestMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputySessionResponseMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | never
            | never
            | never
            | DeputySessionStopMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusRequestMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusResponseMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusUpdateMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyRevisionStatusUpdateMessage & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageNextRevisionRequest & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageNextRevisionResponse & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyUserConfigurationUpdate & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyWikiConfigurationUpdate & {
                _deputy: true;
                _deputyMessageId: string;
            } & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }

      Parameters

      Returns void

    • Sends a message and waits for the first response. Subsequent responses are +

    • Sends a message and waits for the first response. Subsequent responses are ignored. Returns null once the timeout has passed with no responses.

      Type Parameters

      • T extends
            | never
            | DeputySessionRequestMessage & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputySessionResponseMessage & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | never
            | never
            | never
            | DeputySessionStopMessage & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusRequestMessage & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusResponseMessage & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageStatusUpdateMessage & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyRevisionStatusUpdateMessage & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageNextRevisionRequest & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyPageNextRevisionResponse & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyUserConfigurationUpdate & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }
            | DeputyWikiConfigurationUpdate & {
                type:
                    | "userConfigUpdate"
                    | "sessionRequest"
                    | "sessionResponse"
                    | "sessionStop"
                    | "pageStatusRequest"
                    | "pageStatusResponse"
                    | "pageStatusUpdate"
                    | "revisionStatusUpdate"
                    | "pageNextRevisionRequest"
                    | "pageNextRevisionResponse"
                    | "wikiConfigUpdate";
            }

      Parameters

      • data: T
      • timeout: number = 500

        Time to wait for a response, 500ms by default

        -

      Returns Promise<
          | never
          | DeputySessionRequestMessage & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputySessionResponseMessage & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | never
          | never
          | never
          | DeputySessionStopMessage & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyPageStatusRequestMessage & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyPageStatusResponseMessage & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyPageStatusUpdateMessage & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyRevisionStatusUpdateMessage & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyPageNextRevisionRequest & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyPageNextRevisionResponse & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyUserConfigurationUpdate & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }
          | DeputyWikiConfigurationUpdate & {
              _deputy: true;
              _deputyMessageId: string;
          } & {
              type:
                  | "userConfigUpdate"
                  | "sessionRequest"
                  | "sessionResponse"
                  | "sessionStop"
                  | "pageStatusRequest"
                  | "pageStatusResponse"
                  | "pageStatusUpdate"
                  | "revisionStatusUpdate"
                  | "pageNextRevisionRequest"
                  | "pageNextRevisionResponse"
                  | "wikiConfigUpdate";
          } & {
              _deputyRespondsTo: string;
          } & {
              type: {
                  pageNextRevisionRequest: "pageNextRevisionResponse";
                  pageNextRevisionResponse: "pageNextRevisionRequest";
                  pageStatusRequest: "pageStatusResponse";
                  pageStatusResponse: "pageStatusRequest";
                  pageStatusUpdate: "acknowledge";
                  revisionStatusUpdate: "acknowledge";
                  sessionRequest: "sessionResponse";
                  sessionResponse: "sessionRequest";
                  sessionStop: "acknowledge";
                  userConfigUpdate: "userConfigUpdate";
                  wikiConfigUpdate: "wikiConfigUpdate";
              }[T["type"]];
          }>

    \ No newline at end of file +

    Returns Promise<
        | never
        | DeputySessionRequestMessage & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputySessionResponseMessage & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | never
        | never
        | never
        | DeputySessionStopMessage & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyPageStatusRequestMessage & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyPageStatusResponseMessage & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyPageStatusUpdateMessage & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyRevisionStatusUpdateMessage & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyPageNextRevisionRequest & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyPageNextRevisionResponse & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyUserConfigurationUpdate & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }
        | DeputyWikiConfigurationUpdate & {
            _deputy: true;
            _deputyMessageId: string;
        } & {
            type:
                | "userConfigUpdate"
                | "sessionRequest"
                | "sessionResponse"
                | "sessionStop"
                | "pageStatusRequest"
                | "pageStatusResponse"
                | "pageStatusUpdate"
                | "revisionStatusUpdate"
                | "pageNextRevisionRequest"
                | "pageNextRevisionResponse"
                | "wikiConfigUpdate";
        } & {
            _deputyRespondsTo: string;
        } & {
            type: {
                pageNextRevisionRequest: "pageNextRevisionResponse";
                pageNextRevisionResponse: "pageNextRevisionRequest";
                pageStatusRequest: "pageStatusResponse";
                pageStatusResponse: "pageStatusRequest";
                pageStatusUpdate: "acknowledge";
                revisionStatusUpdate: "acknowledge";
                sessionRequest: "sessionResponse";
                sessionResponse: "sessionRequest";
                sessionStop: "acknowledge";
                userConfigUpdate: "userConfigUpdate";
                wikiConfigUpdate: "wikiConfigUpdate";
            }[T["type"]];
        }>

    diff --git a/classes/_internal_.DeputyContributionSurveyRevision.html b/classes/_internal_.DeputyContributionSurveyRevision.html index 83ba00eb..8dc2e94e 100644 --- a/classes/_internal_.DeputyContributionSurveyRevision.html +++ b/classes/_internal_.DeputyContributionSurveyRevision.html @@ -1,5 +1,5 @@ DeputyContributionSurveyRevision | deputy

    Class DeputyContributionSurveyRevision

    A specific revision for a section row.

    -

    Hierarchy

    Implements

    Constructors

    Hierarchy

    Implements

    Constructors

    Properties

    disabled: boolean

    The revision that this UI element handles.

    -
    revisionStatusUpdateListener: any = ...
    statusAutosaveFunction: (() => void)

    A function (throttled with mw.util.throttle) that saves the current row's status +

    Constructors

    Properties

    disabled: boolean

    The revision that this UI element handles.

    +
    revisionStatusUpdateListener: any = ...
    statusAutosaveFunction: (() => void)

    A function (throttled with mw.util.throttle) that saves the current row's status and comments to DeputyStorage to recover unsaved data or data that could not be saved (e.g. status when some revisions remain unassessed).

    -

    The row that this revision belongs to.

    -

    Accessors

    The row that this revision belongs to.

    +

    Accessors

    Methods

    • Gets the database-saved status. Used for getting the autosaved values of the status and +

    Returns void

    Methods

    \ No newline at end of file +

    Returns HTMLElement

    diff --git a/classes/_internal_.DeputyContributionSurveyRow.html b/classes/_internal_.DeputyContributionSurveyRow.html index 816e90ea..349a0fae 100644 --- a/classes/_internal_.DeputyContributionSurveyRow.html +++ b/classes/_internal_.DeputyContributionSurveyRow.html @@ -7,7 +7,7 @@ (e) the byte size of the largest-change diff (f) a list of revisions related to this page (as DeputyContributionSurveyRowRevision classes) (g) closing comments

    -

    Hierarchy

    Implements

    Constructors

    Hierarchy

    Implements

    Constructors

    Properties

    Constructors

    Properties

    additionalComments: Element[]

    Additional comments that may have been left by other editors.

    -
    checkAllButton: ButtonWidget

    Button that checks all revisions of this row

    -
    commentsField: FieldLayout<Widget>

    FieldLayout for commentsTextInput. If not set, this field is not rendered.

    -
    commentsTextInput: TextInputWidget

    TextInputWidget for closing comments. Used by both renderFinished and renderUnfinished.

    -
    disabled: boolean
    element: HTMLElement

    This row's content element. Gets swapped when loaded.

    -

    DeputyUnfinishedContributionSurveyRow, if rendered. Only rendered if this row was already +

    Returns DeputyContributionSurveyRow

    Properties

    additionalComments: Element[]

    Additional comments that may have been left by other editors.

    +
    checkAllButton: ButtonWidget

    Button that checks all revisions of this row

    +
    commentsField: FieldLayout<Widget>

    FieldLayout for commentsTextInput. If not set, this field is not rendered.

    +
    commentsTextInput: TextInputWidget

    TextInputWidget for closing comments. Used by both renderFinished and renderUnfinished.

    +
    disabled: boolean
    element: HTMLElement

    This row's content element. Gets swapped when loaded.

    +

    DeputyUnfinishedContributionSurveyRow, if rendered. Only rendered if this row was already finished.

    -
    nextRevisionRequestResponder: any = ...
    originalElement?: HTMLLIElement

    The "LI" element that this row was rendered into by MediaWiki.

    -
    originalWikitext: string

    Original wikitext of this element.

    -

    The revisions associated with this element. Only populated by renderUnfinished.

    -
    rootElement: HTMLElement

    This row's main root element. Does not get swapped.

    -

    The contribution survey row data

    -

    The section that this row belongs to

    -

    Sort order of this row. Automatically guessed when loaded.

    -
    state: DeputyContributionSurveyRowState = DeputyContributionSurveyRowState.Loading

    The state of this element.

    -
    statusAutosaveFunction: (() => void)

    A function (throttled with mw.util.throttle) that saves the current row's status +

    nextRevisionRequestResponder: any = ...
    originalElement?: HTMLLIElement

    The "LI" element that this row was rendered into by MediaWiki.

    +
    originalWikitext: string

    Original wikitext of this element.

    +

    The revisions associated with this element. Only populated by renderUnfinished.

    +
    rootElement: HTMLElement

    This row's main root element. Does not get swapped.

    +

    The contribution survey row data

    +

    The section that this row belongs to

    +

    Sort order of this row. Automatically guessed when loaded.

    +
    state: DeputyContributionSurveyRowState = DeputyContributionSurveyRowState.Loading

    The state of this element.

    +
    statusAutosaveFunction: (() => void)

    A function (throttled with mw.util.throttle) that saves the current row's status and comments to DeputyStorage to recover unsaved data or data that could not be saved (e.g. status when some revisions remain unassessed).

    -
    statusDropdown: DeputyCCIStatusDropdown

    OOUI DropdownWidget for the current row status

    -
    statusRequestResponder: any = ...

    Responder for session requests.

    -
    unfinishedMessageBox: MessageWidget

    Message box displayed when a user has set a status but not yet cleared all diffs.

    -
    wasFinished: boolean

    Whether this row was originally finished upon loading.

    -
    menuOptionIcon: Record<ContributionSurveyRowStatus, string | false> = ...

    Accessors

    statusDropdown: DeputyCCIStatusDropdown

    OOUI DropdownWidget for the current row status

    +
    statusRequestResponder: any = ...

    Responder for session requests.

    +
    unfinishedMessageBox: MessageWidget

    Message box displayed when a user has set a status but not yet cleared all diffs.

    +
    wasFinished: boolean

    Whether this row was originally finished upon loading.

    +
    menuOptionIcon: Record<ContributionSurveyRowStatus, string | false> = ...

    Accessors

    • get statusModified(): boolean
    • Returns boolean

      true if: +

    Returns void

    • get statusModified(): boolean
    • Returns boolean

      true if: (a) this row's status changed OR (b) this row's comment changed

      This does not check if the revisions themselves were modified.

      -

    Methods

    Methods

    • Extracts HTML elements which may be additional comments left by others. The general qualification for this is that it has to be a list block element that comes after the main line (in this case, it's detected after the last . @@ -113,31 +113,31 @@ not to be an additional comment.

      If no elements were found, this returns an empty array.

      Returns Element[]

      An array of HTMLElements

      -
    • Renders the commentsTextInput variable (closing comments OOUI TextInputWidget)

      Parameters

      • Optionalvalue: string

      Returns TextInputWidget

      The OOUI TextInputWidget

      -
    \ No newline at end of file +
    diff --git a/classes/_internal_.DeputyContributionSurveySection.html b/classes/_internal_.DeputyContributionSurveySection.html index ccf7e7ff..aff321b8 100644 --- a/classes/_internal_.DeputyContributionSurveySection.html +++ b/classes/_internal_.DeputyContributionSurveySection.html @@ -2,7 +2,7 @@ (which are DeputyContributionSurveyRow objects), a "close section" checkbox, a "comments" input box (for additional comments when closing the section), a "cancel" button and a "save" button.

    -

    Implements

    Constructors

    Implements

    Constructors

    Properties

    casePage: DeputyCasePage
    closeButton: ButtonWidget
    closingCheckbox: CheckboxInputWidget
    closingComments: TextInputWidget
    closingCommentsSign: CheckboxInputWidget
    container: HTMLElement
    disabled: boolean
    heading: WikiHeading
    originalList: HTMLElement
    revid: number

    Revision ID of the actively-used wikitext. Used for detecting edit conflicts.

    -
    reviewButton: ButtonWidget
    saveButton: ButtonWidget
    sectionNodes: Node[]
    wikitextLines: (string | DeputyContributionSurveyRow)[]

    A collection of strings or DeputyContributionSurveyRows. Used to build the +

    Parameters

    Returns DeputyContributionSurveySection

    Properties

    casePage: DeputyCasePage
    closeButton: ButtonWidget
    closingCheckbox: CheckboxInputWidget
    closingComments: TextInputWidget
    closingCommentsSign: CheckboxInputWidget
    container: HTMLElement
    disabled: boolean
    heading: WikiHeading
    originalList: HTMLElement
    revid: number

    Revision ID of the actively-used wikitext. Used for detecting edit conflicts.

    +
    reviewButton: ButtonWidget
    saveButton: ButtonWidget
    sectionNodes: Node[]
    wikitextLines: (string | DeputyContributionSurveyRow)[]

    A collection of strings or DeputyContributionSurveyRows. Used to build the section wikitext in a manner that preserves all non-CSR lines.

    -

    Accessors

    Methods

    Accessors

    Methods

    • Destroys the element from the DOM and re-inserts in its place the original list. This should return the section back to its original look. This does NOT remove the section from the session or cache. Use DeputySession.closeSection instead.

      -

      Returns void

    • Toggles the closing comments input box and signature checkbox. This will disable the input box AND hide the element from view.

      -

      Parameters

      • show: boolean

      Returns void

    • Toggle section elements. Removes the section elements (but preservers them in this.sectionElements) if false, re-appends them to the DOM if true.

      -

      Parameters

      • toggle: boolean

      Returns void

    \ No newline at end of file +

    Parameters

    • toggle: boolean

    Returns void

    diff --git a/classes/_internal_.DeputyFinishedContributionSurveyRow.html b/classes/_internal_.DeputyFinishedContributionSurveyRow.html index 9e989256..5de99015 100644 --- a/classes/_internal_.DeputyFinishedContributionSurveyRow.html +++ b/classes/_internal_.DeputyFinishedContributionSurveyRow.html @@ -1,6 +1,6 @@ DeputyFinishedContributionSurveyRow | deputy

    Class DeputyFinishedContributionSurveyRow

    Displayed when a ContributionSurveyRow has no remaining diffs. Deputy is not able to perform the contribution survey itself, so there is no revision list.

    -

    Constructors

    Constructors

    Properties

    author props timestamp @@ -9,10 +9,10 @@

    Constructors

    Properties

    author: string

    The author of the comment (if one exists).

    -
    props: {
        originalElement: HTMLLIElement;
        row: ContributionSurveyRow;
    }
    timestamp: Moment

    The timestamp of the signature. A moment.js object.

    -

    Methods

    Properties

    author: string

    The author of the comment (if one exists).

    +
    props: {
        originalElement: HTMLLIElement;
        row: ContributionSurveyRow;
    }
    timestamp: Moment

    The timestamp of the signature. A moment.js object.

    +

    Methods

    \ No newline at end of file +
    diff --git a/classes/_internal_.DeputyModule.html b/classes/_internal_.DeputyModule.html index 485b10f3..5bf8ff5d 100644 --- a/classes/_internal_.DeputyModule.html +++ b/classes/_internal_.DeputyModule.html @@ -1,6 +1,6 @@ DeputyModule | deputy

    Class DeputyModuleAbstract

    A Deputy module. Modules are parts of Deputy that can usually be removed and turned into standalone components that can load without Deputy.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    Accessors

    Constructors

    Properties

    deputy?: Deputy

    An instance of Deputy. This is commonly window.deputy. Instantiating this class +

    Constructors

    Properties

    deputy?: Deputy

    An instance of Deputy. This is commonly window.deputy. Instantiating this class with a Deputy instances enables connection with the Deputy core, which shares the OOUI window manager and API manager for Deputy.

    -

    Accessors

    Accessors

    • get wikiConfig(): WikiConfiguration
    • Returns WikiConfiguration

      the wiki-wide configuration handler for this module. If Deputy is loaded, this reuses the configuration handler of Deputy. Since the wiki config is loaded asynchronously, this may not be populated at runtime. Only use it if you're sure that preInit has already been called and finished.

      -

    Methods

    Methods

    • Get the module key for this module. Allows modules to be identified with a different configuration key.

      Returns string

      The module key. the module name by default.

      -
    • Returns string

      the symbolic name of this module. Eventually used for getting translation strings, etc.

      -
    • Load the language pack for this module, with a fallback in case one could not be loaded.

      Parameters

      • fallback: Record<string, string>

        The fallback to use if a language pack could not be loaded.

        -

      Returns Promise<void>

    • Pre-initialize the module. This is the opportunity of the module to load language +

    Returns Promise<void>

    • Pre-initialize the module. This is the opportunity of the module to load language strings, append important UI elements, add portlets, etc.

      Parameters

      • languageFallback: Record<string, string>

        The fallback language pack to use if one could not be loaded.

        -

      Returns Promise<boolean>

    \ No newline at end of file +

    Returns Promise<boolean>

    diff --git a/classes/_internal_.DeputyPageSession.html b/classes/_internal_.DeputyPageSession.html index bbe212cb..0766b219 100644 --- a/classes/_internal_.DeputyPageSession.html +++ b/classes/_internal_.DeputyPageSession.html @@ -1,6 +1,6 @@ DeputyPageSession | deputy

    Class DeputyPageSession

    Controls everything related to a page that is the subject of an active Deputy row.

    -

    Constructors

    Constructors

    Properties

    sessionCloseHandler: any = ...

    An active DeputyPageToolbar, if any is available.

    -

    Methods

    Constructors

    Properties

    sessionCloseHandler: any = ...

    An active DeputyPageToolbar, if any is available.

    +

    Methods

    Returns Promise<DeputyPageToolbar>

    • Attempts to grab page details from a session. If a session does not exist, this will return null.

      Parameters

      • revision: number = ...

        The revision of the page to get information for. If the page is being viewed normally (not in a diff or permanent link), then @@ -23,4 +23,4 @@ used instead of the revision-specific toolbar.

      • title: Title = window.deputy.currentPage

        The title of the page to get information for. Defaults to current.

      • timeout: number = 500

        Timeout for the page detail request.

        -

      Returns Promise<DeputyPageStatusResponseMessage>

    \ No newline at end of file +

    Returns Promise<DeputyPageStatusResponseMessage>

    diff --git a/classes/_internal_.DeputyPageToolbar.html b/classes/_internal_.DeputyPageToolbar.html index 06c72f76..9d483e72 100644 --- a/classes/_internal_.DeputyPageToolbar.html +++ b/classes/_internal_.DeputyPageToolbar.html @@ -3,7 +3,7 @@ page name, basic case info, and analysis tools.

    The toolbar automatically connects with an existing session through the use of inter-tab communication (facilitated by DeputyCommunications).

    -

    Implements

    Constructors

    Implements

    Constructors

    Properties

    Constructors

    Properties

    element: HTMLElement
    instanceId: string = ...
    nextRevisionButton: ButtonWidget
    previousRevisionButton: ButtonWidget
    revision?: number

    The revision ID that this toolbar is associated with.

    -
    revisionCheckbox: CheckboxInputWidget
    revisionNavigationSection: HTMLElement
    revisionStatusUpdateListener: any = ...
    row: {
        casePage: DeputyCase;
        title: Title;
        type: "detailed" | "pageonly";
    }
    state: DeputyPageToolbarState = DeputyPageToolbarState.Open
    statusDropdown: DeputyCCIStatusDropdown

    Methods

    • Renders the element. This must return an HTMLElement that can be appended +

    Returns DeputyPageToolbar

    Properties

    element: HTMLElement
    instanceId: string = ...
    nextRevisionButton: ButtonWidget
    previousRevisionButton: ButtonWidget
    revision?: number

    The revision ID that this toolbar is associated with.

    +
    revisionCheckbox: CheckboxInputWidget
    revisionNavigationSection: HTMLElement
    revisionStatusUpdateListener: any = ...
    row: {
        casePage: DeputyCase;
        title: Title;
        type: "detailed" | "pageonly";
    }
    state: DeputyPageToolbarState = DeputyPageToolbarState.Open
    statusDropdown: DeputyCCIStatusDropdown

    Methods

    • Replaces renderRevisionInfo if a revision does not exist. Placeholder to allow tools to be used anyway, even without having an active revision associated.

      Returns Element

      The "Revision out of scope" section

      -
    • Renders the next revision button. Used to navigate to the next unassessed revision for a row.

      Returns Element

      The OOUI ButtonWidget element.

      -
    • Instantiates a DeputyCCIStatusDropdown and returns the HTML element for it.

      Returns Element

      The OOUI dropdown's HTMLElement

      -
    \ No newline at end of file +

    Parameters

    Returns void

    diff --git a/classes/_internal_.DeputyRootSession.html b/classes/_internal_.DeputyRootSession.html index fba42eb1..0c755a6b 100644 --- a/classes/_internal_.DeputyRootSession.html +++ b/classes/_internal_.DeputyRootSession.html @@ -1,7 +1,7 @@ DeputyRootSession | deputy

    Class DeputyRootSession

    The DeputyRootSession. Instantiated only when: (a) the page is a CCI case page, and (b) a session is currently active

    -

    Constructors

    Constructors

    Properties

    casePage: DeputyCasePage

    The case page that this root session is handling.

    -
    parser: any

    A DiscussionTools Parser. Used for parsing comments in a streamlined way (using +

    Constructors

    Properties

    casePage: DeputyCasePage

    The case page that this root session is handling.

    +
    parser: any

    A DiscussionTools Parser. Used for parsing comments in a streamlined way (using DiscussionTools) as compared to relying on an in-house parser.

    -

    An array of active section UI elements. Populated in initSessionInterface.

    -

    The current active session, if one exists.

    -
    sessionRequestResponder: any = ...

    Responder for session requests.

    -
    sessionStopResponder: any = ...

    Methods

    An array of active section UI elements. Populated in initSessionInterface.

    +

    The current active session, if one exists.

    +
    sessionRequestResponder: any = ...

    Responder for session requests.

    +
    sessionStopResponder: any = ...

    Methods

    • Closes all active session-related UI components. Done prior to closing a section or reloading the interface.

      -

      Returns void

    • Continue a session from a DeputyCasePage.

      Parameters

      • casePage: DeputyCasePage

        The case page to continue with

      • OptionalsectionIds: string[]

        The section IDs to load on startup. If not provided, this will be taken from the cache. If provided, this overrides the cache, discarding any sections cached previously.

        -

      Returns Promise<void>

    • Finds the first last active section that exists on the page. +

    Returns Promise<void>

    • Shows the interface for continuing a previous session. This includes the [continue CCI session] notice at the top of each CCI page section heading and a single message box showing when the page was last worked on top of the first CCI heading found.

      Parameters

      Returns Promise<void>

    • Initialize interface components for starting a session. This includes +

    Returns Promise<void>

    • Initialize interface components for starting a session. This includes the [start CCI session] notice at the top of each CCI page section heading.

      Parameters

      Returns Promise<void>

    • Shows the interface for overwriting an existing session. The provided +

    Returns Promise<void>

    • Shows the interface for overwriting an existing session. The provided action button will close the other section. This does not start a new session; the user must start the session on this page on their own.

      Parameters

      Returns Promise<void>

    • Shows the interface for an attempted Deputy execution on a different tab than +

    Returns Promise<void>

    • Shows the interface for an attempted Deputy execution on a different tab than expected. This prevents Deputy from running entirely to avoid loss of progress and desynchronization.

      Parameters

      • Optional_casePage: DeputyCasePage

        The current case page (not the active one)

        -

      Returns Promise<void>

    Returns Promise<void>

    \ No newline at end of file +
    diff --git a/classes/_internal_.DeputySession.html b/classes/_internal_.DeputySession.html index a01dd715..f660e8f9 100644 --- a/classes/_internal_.DeputySession.html +++ b/classes/_internal_.DeputySession.html @@ -5,7 +5,7 @@ started session and begin communicating with the root tab (the tab with the CCI page, and therefore the main Deputy session handler, open). The handler for root tab session activities is DeputyRootSession.

    -

    Constructors

    Constructors

    Properties

    DeputyPageSession: typeof DeputyPageSession = DeputyPageSession
    DeputyRootSession: typeof DeputyRootSession = DeputyRootSession
    pageSession: DeputyPageSession

    The DeputyPageSession handles session functions for a page that is the subject +

    Constructors

    Properties

    DeputyPageSession: typeof DeputyPageSession = DeputyPageSession
    DeputyRootSession: typeof DeputyRootSession = DeputyRootSession
    pageSession: DeputyPageSession

    The DeputyPageSession handles session functions for a page that is the subject of a Deputy session. This object handles things such as synchronicity between the root tab and the page toolbar, interface handling, etc.

    -
    rootSession: DeputyRootSession

    The DeputyRootSession handles session functions for the root tab. The +

    rootSession: DeputyRootSession

    The DeputyRootSession handles session functions for the root tab. The separation between DeputySession and DeputyRootSession is made to confine session-mutating functions within the root tab only.

    -

    Methods

    Methods

    • Broadcasts a sessionRequest message to the Deputy communicator to find other tabs with open sessions. This prevents two tabs from opening the same session at the same time.

      -

      Returns Promise<boolean>

    • Detects if a session is currently active, attempt to get page details, and start a page session if details have been found.

      Returns Promise<boolean>

      true if a session was started, false otherwise.

      -
    \ No newline at end of file +
    diff --git a/classes/_internal_.DeputyStorage.html b/classes/_internal_.DeputyStorage.html index a7066f82..1171bb10 100644 --- a/classes/_internal_.DeputyStorage.html +++ b/classes/_internal_.DeputyStorage.html @@ -1,17 +1,17 @@ DeputyStorage | deputy

    Handles all browser-stored data for Deputy.

    -

    Constructors

    Constructors

    Properties

    Methods

    Constructors

    Properties

    db: IDBPDatabase<DeputyDatabase>
    tagCache: Record<string, string>

    Methods

    • Get a value in the keyval store.

      +

    Constructors

    Properties

    db: IDBPDatabase<DeputyDatabase>
    tagCache: Record<string, string>

    Methods

    • Initialize the Deputy IndexedDB database.

      +

    Returns Promise<any>

    • Initialize the Deputy IndexedDB database.

      Returns Promise<void>

      A promise that resolves when a database connection is established.

      -
    \ No newline at end of file +

    Returns Promise<true>

    diff --git a/classes/_internal_.Dispatch.html b/classes/_internal_.Dispatch.html index c8f9b7c5..8ed7a87e 100644 --- a/classes/_internal_.Dispatch.html +++ b/classes/_internal_.Dispatch.html @@ -1,16 +1,16 @@ Dispatch | deputy

    API communication class

    -

    Properties

    i +

    Properties

    Methods

    Properties

    i: Dispatch = ...

    Singleton instance.

    -
    token?: string

    Token used for authentication on the server side. Allows access to deleted +

    token?: string

    Token used for authentication on the server side. Allows access to deleted revisions if the user has proper rights.

    -

    Methods

    Methods

    • Returns a fully-formed HTTP URL from a given endpoint. This uses the wiki's set Dispatch endpoint and a given target (such as /v1/revisions) to get the full URL.

      Parameters

      • endpoint: string

        The endpoint to get

        -

      Returns Promise<URL>

    \ No newline at end of file +

    Returns Promise<URL>

    diff --git a/classes/_internal_.InfringementAssistant.html b/classes/_internal_.InfringementAssistant.html index 9ffa8a90..33bcb50f 100644 --- a/classes/_internal_.InfringementAssistant.html +++ b/classes/_internal_.InfringementAssistant.html @@ -1,9 +1,9 @@ -InfringementAssistant | deputy

    Class InfringementAssistant

    Hierarchy (view full)

    Constructors

    constructor +InfringementAssistant | deputy

    Class InfringementAssistant

    Hierarchy (view full)

    Constructors

    Properties

    CopyrightProblemsPage: typeof CopyrightProblemsPage = CopyrightProblemsPage
    SinglePageWorkflowDialog: ((config: SinglePageWorkflowDialogData) => any) = SinglePageWorkflowDialog

    Type declaration

      • (config): any
      • Creates a new SinglePageWorkflowDialog.

        -

        Parameters

        Returns any

        A SinglePageWorkflowDialog object

        -
    deputy?: Deputy

    An instance of Deputy. This is commonly window.deputy. Instantiating this class +

    Constructors

    Properties

    CopyrightProblemsPage: typeof CopyrightProblemsPage = CopyrightProblemsPage
    deputy?: Deputy

    An instance of Deputy. This is commonly window.deputy. Instantiating this class with a Deputy instances enables connection with the Deputy core, which shares the OOUI window manager and API manager for Deputy.

    -
    dialog: any
    static: typeof InfringementAssistant = InfringementAssistant
    dependencies: string[] = ...

    Accessors

    dialog: any
    SinglePageWorkflowDialog: ((config: SinglePageWorkflowDialogData) => any) = SinglePageWorkflowDialog

    Type declaration

      • (config): any
      • Creates a new SinglePageWorkflowDialog.

        +

        Parameters

        Returns any

        A SinglePageWorkflowDialog object

        +
    static: typeof InfringementAssistant = InfringementAssistant
    dependencies: string[] = ...

    Accessors

    • get wikiConfig(): WikiConfiguration
    • Returns WikiConfiguration

      the wiki-wide configuration handler for this module. If Deputy is loaded, this reuses the configuration handler of Deputy. Since the wiki config is loaded asynchronously, this may not be populated at runtime. Only use it if you're sure that preInit has already been called and finished.

      -
    • get windowManager(): WindowManager
    • Returns WindowManager

      The responsible window manager for this class.

      -

    Methods

    • Get the module key for this module. Allows modules to be identified with a different +

    • get windowManager(): WindowManager
    • Returns WindowManager

      The responsible window manager for this class.

      +

    Methods

    • Perform actions that run before IA starts (prior to execution). This involves +

    Returns Promise<void>

    \ No newline at end of file +

    Returns Promise<boolean>

    diff --git a/classes/_internal_.MergedFromTemplate.html b/classes/_internal_.MergedFromTemplate.html index 0003f5ba..386f5bdd 100644 --- a/classes/_internal_.MergedFromTemplate.html +++ b/classes/_internal_.MergedFromTemplate.html @@ -1,5 +1,5 @@ MergedFromTemplate | deputy

    Class MergedFromTemplate

    Represents a single {{merged-from}} template in the Parsoid document.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    afd? article date @@ -20,37 +20,37 @@ toWikitext

    Constructors

    Properties

    afd?: string

    If the merge was the result of an AfD, this should be the full page title +

    Returns MergedFromTemplate

    Properties

    afd?: string

    If the merge was the result of an AfD, this should be the full page title of the AfD discussion.

    -
    "Wikipedia:Articles for deletion/Wikipedia"
    +
    "Wikipedia:Articles for deletion/Wikipedia"
     
    -
    article: string

    The article that content from the target page was originally from.

    -
    date: string

    The date of the merge

    -
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    article: string

    The article that content from the target page was originally from.

    +
    date: string

    The date of the merge

    +
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -
    talk?: string

    Whether to link to the original article's talk page or not.

    -
    target?: string

    The target of the merge.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    talk?: string

    Whether to link to the original article's talk page or not.

    +
    target?: string

    The target of the merge.

    +

    Accessors

    Methods

    Methods

    • Destroys the notice by removing it from the Parsoid document. Optionally, a +

    Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.MergedToTemplate.html b/classes/_internal_.MergedToTemplate.html index 5169bbec..e46227c3 100644 --- a/classes/_internal_.MergedToTemplate.html +++ b/classes/_internal_.MergedToTemplate.html @@ -1,5 +1,5 @@ MergedToTemplate | deputy

    Class MergedToTemplate

    Represents a single {{merged-to}} template in the Parsoid document.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    date id name @@ -18,28 +18,28 @@ toWikitext

    Constructors

    Properties

    date: string

    The date of the merge

    -
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    Returns MergedToTemplate

    Properties

    date: string

    The date of the merge

    +
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -
    small?: string

    Whether the template should be small or not

    -
    to: string

    The article that content from the source page was merged into.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    small?: string

    Whether the template should be small or not

    +
    to: string

    The article that content from the source page was merged into.

    +

    Accessors

    Methods

    Methods

    • Destroys the notice by removing it from the Parsoid document. Optionally, a +

    Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.Requester.html b/classes/_internal_.Requester.html index c23a7d97..65bc7336 100644 --- a/classes/_internal_.Requester.html +++ b/classes/_internal_.Requester.html @@ -5,18 +5,18 @@ least a certain level of asynchronicity.

    Particularly used when a multitude of requests have a chance to DoS a service.

    -

    Constructors

    Constructors

    Properties

    fetch: ((input: URL | RequestInfo, init?: RequestInit) => Promise<Response>) & ((input: URL | RequestInfo, init?: RequestInit) => Promise<Response>) = ...
    fetchActive: number = 0

    Number of requests currently being processed. Must be lower than +

    Constructors

    Properties

    fetch: ((input: URL | RequestInfo, init?: RequestInit) => Promise<Response>) & ((input: URL | RequestInfo, init?: RequestInit) => Promise<Response>) = ...
    fetchActive: number = 0

    Number of requests currently being processed. Must be lower than maxThreads.

    -
    fetchQueue: [[((data: Response) => void), ((reason?: any) => void)], any[]][] = []

    Requests to be performed. Takes tuples containing a resolve-reject pair and arguments +

    fetchQueue: [[((data: Response) => void), ((reason?: any) => void)], any[]][] = []

    Requests to be performed. Takes tuples containing a resolve-reject pair and arguments to be passed into the fetch function.

    -
    maxThreads: 4 = 4

    Maximum number of requests to be processed simultaneously.

    -
    minTime: 100 = 100

    Minimum amount of milliseconds to wait between each request.

    -

    Methods

    \ No newline at end of file +
    maxThreads = 4

    Maximum number of requests to be processed simultaneously.

    +
    minTime = 100

    Minimum amount of milliseconds to wait between each request.

    +

    Methods

    diff --git a/classes/_internal_.RowedAttributionNotice.html b/classes/_internal_.RowedAttributionNotice.html index db9b2bdd..a653f68f 100644 --- a/classes/_internal_.RowedAttributionNotice.html +++ b/classes/_internal_.RowedAttributionNotice.html @@ -1,6 +1,6 @@ RowedAttributionNotice | deputy

    Class RowedAttributionNotice<RowClass>Abstract

    This is a sub-abstract class of AttributionNotice that represents any attribution notice template that can contain multiple entries (or rows).

    -

    Type Parameters

    Hierarchy (view full)

    Constructors

    Type Parameters

    Hierarchy (view full)

    Constructors

    Properties

    _rows id name @@ -21,40 +21,40 @@ toWikitext

    Constructors

    Properties

    _rows: RowClass[]

    All the rows of this template.

    -
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    Returns RowedAttributionNotice<RowClass>

    Properties

    _rows: RowClass[]

    All the rows of this template.

    +
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    Accessors

    Methods

    Methods

    • Adds a row to this template.

      +

    Returns void

    • Deletes a row to this template.

      +

    Returns void

    • Destroys the notice by removing it from the Parsoid document. Optionally, a +

    Returns void

    • Copies in the rows of another SplitArticleTemplate, and optionally deletes that template or clears its contents.

      Parameters

      • template: RowedAttributionNotice<RowClass>

        The template to copy from.

      • options: {
            clear?: boolean;
            delete?: boolean;
        } = {}

        Options for this merge.

        • Optionalclear?: boolean

          Whether the reference template's rows will be cleared after merging.

        • Optionaldelete?: boolean

          Whether the reference template will be deleted after merging.

          -

      Returns void

    • Extracts the parameters from this notice and stores them in the object. +

    Returns void

    • Extracts the parameters from this notice and stores them in the object. This must NEVER destroy unknown parameters. This function does not always pull all parameters from the template, only those that are known.

      This should be implemented by subclasses.

      -

      Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.Setting.html b/classes/_internal_.Setting.html index 703965d5..2333ca05 100644 --- a/classes/_internal_.Setting.html +++ b/classes/_internal_.Setting.html @@ -1,7 +1,7 @@ Setting | deputy

    Class Setting<SerializedType, DeserializedType>

    Refers to a specific setting on the configuration. Should be initialized with a raw (serialized) type and an actual (deserialized) type.

    This is used for both client and wiki-wide configuration.

    -

    Type Parameters

    • SerializedType
    • DeserializedType

    Constructors

    Type Parameters

    • SerializedType
    • DeserializedType

    Constructors

    Properties

    Constructors

    Properties

    allowedValues?: Record<string, DeserializedType> | DeserializedType[]

    Allowed values for this setting. Specific values may be provided, or an object of +

    Constructors

    Properties

    allowedValues?: Record<string, DeserializedType> | DeserializedType[]

    Allowed values for this setting. Specific values may be provided, or an object of "choice objects": value mapped by the choice label (to be used to get the choice text from i18n, e.g. deputy.setting.user.<group>.<name>.choice.<choice>). When an array is passed, the key to be used for i18n is equal to the result of the allowed value's toString @@ -25,23 +25,23 @@

    When using allowedValues, as much as possible use primitive types as the deserialized type, since indexOf is used to check if a value is allowed, which may not work properly for class instances or objects.

    -
    defaultValue: DeserializedType

    The default value of the setting.

    -

    Parse a serialized value into a deserialized one.

    -

    The raw value to parse.

    -

    The parsed value.

    -
    displayOptions?: DisplayOptions

    Display options for this setting when showing up on settings interfaces.

    -
    isDisabled: ((config?: UserConfiguration) => string | boolean)

    Type declaration

      • (config?): string | boolean
      • Parameters

        Returns string | boolean

        if this option is disabled or not.

        -
    isHidden: ((config?: UserConfiguration) => string | boolean)

    Type declaration

      • (config?): string | boolean
      • Parameters

        Returns string | boolean

        if this option is hidden or not.

        -

    Serialize this setting's value or a given value.

    -

    The value to serialize

    -
    basicSerializers: {
        deserialize: ((value: any) => any);
        serialize: ((value: any) => any);
    } = ...

    Methods

    defaultValue: DeserializedType

    The default value of the setting.

    +

    Parse a serialized value into a deserialized one.

    +

    The raw value to parse.

    +

    The parsed value.

    +
    displayOptions?: DisplayOptions

    Display options for this setting when showing up on settings interfaces.

    +
    isDisabled: ((config?: UserConfiguration) => string | boolean)

    Type declaration

      • (config?): string | boolean
      • Parameters

        Returns string | boolean

        if this option is disabled or not.

        +
    isHidden: ((config?: UserConfiguration) => string | boolean)

    Type declaration

      • (config?): string | boolean
      • Parameters

        Returns string | boolean

        if this option is hidden or not.

        +

    Serialize this setting's value or a given value.

    +

    The value to serialize

    +
    basicSerializers: {
        deserialize: ((value: any) => any);
        serialize: ((value: any) => any);
    } = ...

    Methods

    • Prevents the value of the setting from being changed. Used for debugging.

      -

      Returns void

    • Sets the value and performs validation. If the input is an invalid value, and +

    • Prevents the value of the setting from being changed. Used for debugging.

      +

      Returns void

    • Sets the value and performs validation. If the input is an invalid value, and throwOnInvalid is false, the value will be reset to default.

      -

      Parameters

      Returns void

    • Allows the value of the setting to be changed. Used for debugging.

      -

      Returns void

    \ No newline at end of file +

    Parameters

    Returns void

    • Allows the value of the setting to be changed. Used for debugging.

      +

      Returns void

    diff --git a/classes/_internal_.SplitArticleTemplate.html b/classes/_internal_.SplitArticleTemplate.html index 4d3b6ee7..4b7bb0b0 100644 --- a/classes/_internal_.SplitArticleTemplate.html +++ b/classes/_internal_.SplitArticleTemplate.html @@ -1,5 +1,5 @@ SplitArticleTemplate | deputy

    Class SplitArticleTemplate

    Represents a single {{split article}} template.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    _rows collapse from @@ -22,40 +22,40 @@ toWikitext

    Constructors

    Properties

    All the rows of this template.

    -
    collapse: string
    from: string
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    Returns SplitArticleTemplate

    Properties

    All the rows of this template.

    +
    collapse: string
    from: string
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    Accessors

    Methods

    Methods

    • Adds a row to this template.

      +

    Returns void

    • Deletes a row to this template.

      +

    Returns void

    • Destroys the notice by removing it from the Parsoid document. Optionally, a +

    Returns void

    • Extracts the parameters from this notice and stores them in the object. +

    Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.SplitArticleTemplateRow.html b/classes/_internal_.SplitArticleTemplateRow.html index dc6177e1..424c5761 100644 --- a/classes/_internal_.SplitArticleTemplateRow.html +++ b/classes/_internal_.SplitArticleTemplateRow.html @@ -1,5 +1,5 @@ SplitArticleTemplateRow | deputy

    Class SplitArticleTemplateRow

    Represents a row/entry in a {{split article}} template.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    _parent date diff @@ -11,17 +11,17 @@

    Methods

    Constructors

    Properties

    date: string
    diff: string
    from_oldid: string
    id: string

    A unique ID for this template. +

    Returns SplitArticleTemplateRow

    Properties

    date: string
    diff: string
    from_oldid: string
    id: string

    A unique ID for this template. Derived from the template name, its Parsoid about, and a unique identifier.

    -
    name: string

    A unique name for this row. +

    name: string

    A unique name for this row. Derived from the Parsoid about for its node and a unique identifier.

    -
    to: string

    Accessors

    to: string

    Accessors

    Methods

    Returns void

    Methods

    \ No newline at end of file +

    Parameters

    • dialog: any

    Returns AttributionNoticePageLayout

    diff --git a/classes/_internal_.TranslatedPageTemplate.html b/classes/_internal_.TranslatedPageTemplate.html index 3f46db3f..c6dc5a20 100644 --- a/classes/_internal_.TranslatedPageTemplate.html +++ b/classes/_internal_.TranslatedPageTemplate.html @@ -1,5 +1,5 @@ TranslatedPageTemplate | deputy

    Class TranslatedPageTemplate

    Represents a single {{merged-from}} template in the Parsoid document.

    -

    Hierarchy (view full)

    Implements

    Constructors

    Hierarchy (view full)

    Implements

    Constructors

    Properties

    comments id insertversion @@ -23,38 +23,38 @@ toWikitext

    Constructors

    Properties

    comments: string

    Additional pertinent information. Not period-appended. +

    Returns TranslatedPageTemplate

    Properties

    comments: string

    Additional pertinent information. Not period-appended. Actual parameter name is '3'.

    -
    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    -
    insertversion: string

    The oldid for the subject page (the page that translated content was copied into) +

    id: string

    A unique ID for this template. Derived from the template name and its Parsoid about.

    +
    insertversion: string

    The oldid for the subject page (the page that translated content was copied into) at the time translation was done.

    -
    lang: string

    Language code of the source page. Actual parameter name is '1'.

    -
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    -

    The template transclusion node that serves as a reference to an +

    lang: string

    Language code of the source page. Actual parameter name is '1'.

    +
    name: string

    A unique name for this template. Derived from the Parsoid about for its node.

    +

    The template transclusion node that serves as a reference to an element on the Parsoid DOM.

    -
    page: string

    Title of the source page. Actual parameter name is '2'.

    -
    partial: string

    Supplied with any value to indicate that the translation was partial.

    -
    section: string

    If only a section was translated, the name of the section.

    -
    small: string

    Whether to enable or disable small mode. Defaults to yes.

    -
    version: string

    The oldid for the source page at the time translation was done.

    -

    Accessors

    • get i(): number
    • Returns number

      This template's i variable, used to identify this template in +

    page: string

    Title of the source page. Actual parameter name is '2'.

    +
    partial: string

    Supplied with any value to indicate that the translation was partial.

    +
    section: string

    If only a section was translated, the name of the section.

    +
    small: string

    Whether to enable or disable small mode. Defaults to yes.

    +
    version: string

    The oldid for the source page at the time translation was done.

    +

    Accessors

    Methods

    Methods

    • Destroys the notice by removing it from the Parsoid document. Optionally, a +

    Returns void

    \ No newline at end of file +
    diff --git a/classes/_internal_.UserConfiguration.html b/classes/_internal_.UserConfiguration.html index 71b1cf70..badd9b44 100644 --- a/classes/_internal_.UserConfiguration.html +++ b/classes/_internal_.UserConfiguration.html @@ -1,5 +1,5 @@ UserConfiguration | deputy

    Class UserConfiguration

    A configuration. Defines settings and setting groups.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    all ante cci @@ -13,15 +13,15 @@ serialize load

    Constructors

    Properties

    all: {
        ante: {
            enableAutoMerge: Setting<boolean, boolean>;
            onSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
        };
        cci: {
            autoCollapseRows: Setting<boolean, boolean>;
            autoShowDiff: Setting<boolean, boolean>;
            enablePageToolbar: Setting<boolean, boolean>;
            forceUtc: Setting<boolean, boolean>;
            maxRevisionsToAutoShowDiff: Setting<number, number>;
            maxSizeToAutoShowDiff: Setting<number, number>;
            openOldOnContinue: Setting<boolean, boolean>;
            showCvLink: Setting<boolean, boolean>;
            showUsername: Setting<boolean, boolean>;
            signSectionArchive: Setting<boolean, boolean>;
            signingBehavior: Setting<EnumValue<typeof ContributionSurveyRowSigningBehavior>, ContributionSurveyRowSigningBehavior>;
            toolbarInitialState: Setting<EnumValue<typeof DeputyPageToolbarState>, DeputyPageToolbarState>;
        };
        core: {
            configVersion: Setting<number, number>;
            dangerMode: Setting<boolean, boolean>;
            language: Setting<string, string>;
            modules: Setting<string[], string[]>;
            portletNames: Setting<EnumValue<typeof PortletNameView>, PortletNameView>;
            seenAnnouncements: Setting<string[], string[]>;
        };
        ia: {
            defaultEntirePage: Setting<boolean, boolean>;
            defaultFromUrls: Setting<boolean, boolean>;
            enablePageToolbar: Setting<boolean, boolean>;
            onBatchSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
            onHide: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
            onSubmit: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
            responses: Setting<CopyrightProblemsResponseSet, CopyrightProblemsResponseSet>;
        };
    } = ...

    Type declaration

    Properties

    all: {
        ante: {
            enableAutoMerge: Setting<boolean, boolean>;
            onSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
        };
        cci: {
            autoCollapseRows: Setting<boolean, boolean>;
            autoShowDiff: Setting<boolean, boolean>;
            enablePageToolbar: Setting<boolean, boolean>;
            forceUtc: Setting<boolean, boolean>;
            maxRevisionsToAutoShowDiff: Setting<number, number>;
            maxSizeToAutoShowDiff: Setting<number, number>;
            openOldOnContinue: Setting<boolean, boolean>;
            showCvLink: Setting<boolean, boolean>;
            showUsername: Setting<boolean, boolean>;
            signingBehavior: Setting<EnumValue<typeof ContributionSurveyRowSigningBehavior>, ContributionSurveyRowSigningBehavior>;
            signSectionArchive: Setting<boolean, boolean>;
            toolbarInitialState: Setting<EnumValue<typeof DeputyPageToolbarState>, DeputyPageToolbarState>;
        };
        core: {
            configVersion: Setting<number, number>;
            dangerMode: Setting<boolean, boolean>;
            language: Setting<string, string>;
            modules: Setting<string[], string[]>;
            portletNames: Setting<EnumValue<typeof PortletNameView>, PortletNameView>;
            seenAnnouncements: Setting<string[], string[]>;
        };
        ia: {
            defaultEntirePage: Setting<boolean, boolean>;
            defaultFromUrls: Setting<boolean, boolean>;
            enablePageToolbar: Setting<boolean, boolean>;
            onBatchSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
            onHide: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
            onSubmit: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
            responses: Setting<CopyrightProblemsResponseSet, CopyrightProblemsResponseSet>;
        };
    } = ...

    Type declaration

    ante: {
        enableAutoMerge: Setting<boolean, boolean>;
        onSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
    } = ...
    cci: {
        autoCollapseRows: Setting<boolean, boolean>;
        autoShowDiff: Setting<boolean, boolean>;
        enablePageToolbar: Setting<boolean, boolean>;
        forceUtc: Setting<boolean, boolean>;
        maxRevisionsToAutoShowDiff: Setting<number, number>;
        maxSizeToAutoShowDiff: Setting<number, number>;
        openOldOnContinue: Setting<boolean, boolean>;
        showCvLink: Setting<boolean, boolean>;
        showUsername: Setting<boolean, boolean>;
        signSectionArchive: Setting<boolean, boolean>;
        signingBehavior: Setting<EnumValue<typeof ContributionSurveyRowSigningBehavior>, ContributionSurveyRowSigningBehavior>;
        toolbarInitialState: Setting<EnumValue<typeof DeputyPageToolbarState>, DeputyPageToolbarState>;
    } = ...
    core: {
        configVersion: Setting<number, number>;
        dangerMode: Setting<boolean, boolean>;
        language: Setting<string, string>;
        modules: Setting<string[], string[]>;
        portletNames: Setting<EnumValue<typeof PortletNameView>, PortletNameView>;
        seenAnnouncements: Setting<string[], string[]>;
    } = ...

    Type declaration

  • ia: {
        defaultEntirePage: Setting<boolean, boolean>;
        defaultFromUrls: Setting<boolean, boolean>;
        enablePageToolbar: Setting<boolean, boolean>;
        onBatchSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
        onHide: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
        onSubmit: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
        responses: Setting<CopyrightProblemsResponseSet, CopyrightProblemsResponseSet>;
    }
  • ante: {
        enableAutoMerge: Setting<boolean, boolean>;
        onSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
    } = ...
    cci: {
        autoCollapseRows: Setting<boolean, boolean>;
        autoShowDiff: Setting<boolean, boolean>;
        enablePageToolbar: Setting<boolean, boolean>;
        forceUtc: Setting<boolean, boolean>;
        maxRevisionsToAutoShowDiff: Setting<number, number>;
        maxSizeToAutoShowDiff: Setting<number, number>;
        openOldOnContinue: Setting<boolean, boolean>;
        showCvLink: Setting<boolean, boolean>;
        showUsername: Setting<boolean, boolean>;
        signingBehavior: Setting<EnumValue<typeof ContributionSurveyRowSigningBehavior>, ContributionSurveyRowSigningBehavior>;
        signSectionArchive: Setting<boolean, boolean>;
        toolbarInitialState: Setting<EnumValue<typeof DeputyPageToolbarState>, DeputyPageToolbarState>;
    } = ...
    core: {
        configVersion: Setting<number, number>;
        dangerMode: Setting<boolean, boolean>;
        language: Setting<string, string>;
        modules: Setting<string[], string[]>;
        portletNames: Setting<EnumValue<typeof PortletNameView>, PortletNameView>;
        seenAnnouncements: Setting<string[], string[]>;
    } = ...

    Type declaration

    • ReadonlyconfigVersion: Setting<number, number>

      Numerical code that identifies this config version. Increments for every breaking configuration file change.

      -
    • ReadonlydangerMode: Setting<boolean, boolean>
    • Readonlylanguage: Setting<string, string>
    • Readonlymodules: Setting<string[], string[]>
    • ReadonlyportletNames: Setting<EnumValue<typeof PortletNameView>, PortletNameView>
    • ReadonlyseenAnnouncements: Setting<string[], string[]>
    ia: {
        defaultEntirePage: Setting<boolean, boolean>;
        defaultFromUrls: Setting<boolean, boolean>;
        enablePageToolbar: Setting<boolean, boolean>;
        onBatchSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
        onHide: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
        onSubmit: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
        responses: Setting<CopyrightProblemsResponseSet, CopyrightProblemsResponseSet>;
    } = ...
    type: "user" = ...
    configVersion: 1 = 1
    optionKey: "userjs-deputy" = 'userjs-deputy'

    Methods

    • Deserializes a JSON configuration into this configuration. This WILL overwrite +

    • ReadonlydangerMode: Setting<boolean, boolean>
    • Readonlylanguage: Setting<string, string>
    • Readonlymodules: Setting<string[], string[]>
    • ReadonlyportletNames: Setting<EnumValue<typeof PortletNameView>, PortletNameView>
    • ReadonlyseenAnnouncements: Setting<string[], string[]>
    ia: {
        defaultEntirePage: Setting<boolean, boolean>;
        defaultFromUrls: Setting<boolean, boolean>;
        enablePageToolbar: Setting<boolean, boolean>;
        onBatchSubmit: Setting<EnumValue<typeof CompletionAction>, CompletionAction>;
        onHide: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
        onSubmit: Setting<EnumValue<typeof TripleCompletionAction>, TripleCompletionAction>;
        responses: Setting<CopyrightProblemsResponseSet, CopyrightProblemsResponseSet>;
    } = ...
    type: "user" = ...
    configVersion = 1
    optionKey: "userjs-deputy" = 'userjs-deputy'

    Methods

    • Returns any

      the serialized version of the configuration. All undefined values are stripped +

    Parameters

    • serializedData: any

    Returns void

    • Returns any

      the serialized version of the configuration. All undefined values are stripped from output. If a category remains unchanged from defaults, it is skipped. If the entire configuration remains unchanged, null is returned.

      -
    \ No newline at end of file +
    diff --git a/classes/_internal_.WikiConfiguration.html b/classes/_internal_.WikiConfiguration.html index ebdc5002..6db47f5d 100644 --- a/classes/_internal_.WikiConfiguration.html +++ b/classes/_internal_.WikiConfiguration.html @@ -5,7 +5,7 @@

    This configuration works if specific settings are set. In other words, some features of Deputy are disabled unless Deputy has been configured. This is to avoid messing with existing on-wiki processes.

    -

    Hierarchy (view full)

    Constructors

    Hierarchy (view full)

    Constructors

    Properties

    all ante cci @@ -33,50 +33,50 @@ loadFromLocal loadFromWiki

    Constructors

    Properties

    all: {
        ante: {
            enabled: Setting<boolean, boolean>;
        };
        cci: {
            collapseBottom: Setting<string, string>;
            collapseTop: Setting<string, string>;
            earwigRoot: Setting<string, URL>;
            enabled: Setting<boolean, boolean>;
            headingMatch: Setting<string, string>;
            resortRows: Setting<boolean, boolean>;
            rootPage: Setting<string, Title>;
        };
        core: {
            changeTag: Setting<string, string>;
            configVersion: Setting<number, number>;
            dispatchRoot: Setting<string, URL>;
            lastEdited: Setting<number, number>;
        };
        ia: {
            allowPresumptive: Setting<boolean, boolean>;
            batchListingPageWikitext: Setting<string, string>;
            batchListingWikitext: Setting<string, string>;
            enabled: Setting<boolean, boolean>;
            entirePageAppendBottom: Setting<boolean, boolean>;
            hideTemplate: Setting<string, string>;
            hideTemplateBottom: Setting<string, string>;
            listingWikitext: Setting<string, string>;
            listingWikitextMatch: Setting<string, string>;
            preload: Setting<string, string>;
            responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>;
            rootPage: Setting<string, Title>;
            subpageFormat: Setting<string, string>;
        };
    } = ...

    Type declaration

    • ante: {
          enabled: Setting<boolean, boolean>;
      }
    • cci: {
          collapseBottom: Setting<string, string>;
          collapseTop: Setting<string, string>;
          earwigRoot: Setting<string, URL>;
          enabled: Setting<boolean, boolean>;
          headingMatch: Setting<string, string>;
          resortRows: Setting<boolean, boolean>;
          rootPage: Setting<string, Title>;
      }
    • core: {
          changeTag: Setting<string, string>;
          configVersion: Setting<number, number>;
          dispatchRoot: Setting<string, URL>;
          lastEdited: Setting<number, number>;
      }
      • changeTag: Setting<string, string>
      • configVersion: Setting<number, number>

        Numerical code that identifies this config version. Increments for every breaking +

    Returns WikiConfiguration

    Properties

    all: {
        ante: {
            enabled: Setting<boolean, boolean>;
        };
        cci: {
            collapseBottom: Setting<string, string>;
            collapseTop: Setting<string, string>;
            earwigRoot: Setting<string, URL>;
            enabled: Setting<boolean, boolean>;
            headingMatch: Setting<string, string>;
            resortRows: Setting<boolean, boolean>;
            rootPage: Setting<string, Title>;
        };
        core: {
            changeTag: Setting<string, string>;
            configVersion: Setting<number, number>;
            dispatchRoot: Setting<string, URL>;
            lastEdited: Setting<number, number>;
        };
        ia: {
            allowPresumptive: Setting<boolean, boolean>;
            batchListingPageWikitext: Setting<string, string>;
            batchListingWikitext: Setting<string, string>;
            enabled: Setting<boolean, boolean>;
            entirePageAppendBottom: Setting<boolean, boolean>;
            hideTemplate: Setting<string, string>;
            hideTemplateBottom: Setting<string, string>;
            listingWikitext: Setting<string, string>;
            listingWikitextMatch: Setting<string, string>;
            preload: Setting<string, string>;
            responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>;
            rootPage: Setting<string, Title>;
            subpageFormat: Setting<string, string>;
        };
    } = ...

    Type declaration

    • ante: {
          enabled: Setting<boolean, boolean>;
      }
    • cci: {
          collapseBottom: Setting<string, string>;
          collapseTop: Setting<string, string>;
          earwigRoot: Setting<string, URL>;
          enabled: Setting<boolean, boolean>;
          headingMatch: Setting<string, string>;
          resortRows: Setting<boolean, boolean>;
          rootPage: Setting<string, Title>;
      }
    • core: {
          changeTag: Setting<string, string>;
          configVersion: Setting<number, number>;
          dispatchRoot: Setting<string, URL>;
          lastEdited: Setting<number, number>;
      }
      • changeTag: Setting<string, string>
      • configVersion: Setting<number, number>

        Numerical code that identifies this config version. Increments for every breaking configuration file change.

      • dispatchRoot: Setting<string, URL>
      • lastEdited: Setting<number, number>
    • ia: {
          allowPresumptive: Setting<boolean, boolean>;
          batchListingPageWikitext: Setting<string, string>;
          batchListingWikitext: Setting<string, string>;
          enabled: Setting<boolean, boolean>;
          entirePageAppendBottom: Setting<boolean, boolean>;
          hideTemplate: Setting<string, string>;
          hideTemplateBottom: Setting<string, string>;
          listingWikitext: Setting<string, string>;
          listingWikitextMatch: Setting<string, string>;
          preload: Setting<string, string>;
          responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>;
          rootPage: Setting<string, Title>;
          subpageFormat: Setting<string, string>;
      }
      • allowPresumptive: Setting<boolean, boolean>
      • batchListingPageWikitext: Setting<string, string>

        $1 - Page to include

      • batchListingWikitext: Setting<string, string>

        $1 - Title of the batch $2 - List of pages (newlines should be added in batchListingPageWikitext). $3 - User comment

        -
      • enabled: Setting<boolean, boolean>
      • entirePageAppendBottom: Setting<boolean, boolean>
      • hideTemplate: Setting<string, string>
      • hideTemplateBottom: Setting<string, string>
      • listingWikitext: Setting<string, string>
      • listingWikitextMatch: Setting<string, string>

        CopyrightProblemsListing#articleCvRegex

        +
      • enabled: Setting<boolean, boolean>
      • entirePageAppendBottom: Setting<boolean, boolean>
      • hideTemplate: Setting<string, string>
      • hideTemplateBottom: Setting<string, string>
      • listingWikitext: Setting<string, string>
      • listingWikitextMatch: Setting<string, string>

        CopyrightProblemsListing#articleCvRegex

        This should match both normal and batch listings.

        -
      • preload: Setting<string, string>
      • responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>
      • rootPage: Setting<string, Title>
      • subpageFormat: Setting<string, string>
    ante: {
        enabled: Setting<boolean, boolean>;
    } = ...
    cci: {
        collapseBottom: Setting<string, string>;
        collapseTop: Setting<string, string>;
        earwigRoot: Setting<string, URL>;
        enabled: Setting<boolean, boolean>;
        headingMatch: Setting<string, string>;
        resortRows: Setting<boolean, boolean>;
        rootPage: Setting<string, Title>;
    } = ...
    core: {
        changeTag: Setting<string, string>;
        configVersion: Setting<number, number>;
        dispatchRoot: Setting<string, URL>;
        lastEdited: Setting<number, number>;
    } = ...

    Type declaration

    • changeTag: Setting<string, string>
    • configVersion: Setting<number, number>

      Numerical code that identifies this config version. Increments for every breaking +

  • preload: Setting<string, string>
  • responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>
  • rootPage: Setting<string, Title>
  • subpageFormat: Setting<string, string>
  • ante: {
        enabled: Setting<boolean, boolean>;
    } = ...
    cci: {
        collapseBottom: Setting<string, string>;
        collapseTop: Setting<string, string>;
        earwigRoot: Setting<string, URL>;
        enabled: Setting<boolean, boolean>;
        headingMatch: Setting<string, string>;
        resortRows: Setting<boolean, boolean>;
        rootPage: Setting<string, Title>;
    } = ...
    core: {
        changeTag: Setting<string, string>;
        configVersion: Setting<number, number>;
        dispatchRoot: Setting<string, URL>;
        lastEdited: Setting<number, number>;
    } = ...

    Type declaration

    • changeTag: Setting<string, string>
    • configVersion: Setting<number, number>

      Numerical code that identifies this config version. Increments for every breaking configuration file change.

      -
    • dispatchRoot: Setting<string, URL>
    • lastEdited: Setting<number, number>
    editable?: boolean

    Whether the configuration is editable by the current user or not.

    -
    ia: {
        allowPresumptive: Setting<boolean, boolean>;
        batchListingPageWikitext: Setting<string, string>;
        batchListingWikitext: Setting<string, string>;
        enabled: Setting<boolean, boolean>;
        entirePageAppendBottom: Setting<boolean, boolean>;
        hideTemplate: Setting<string, string>;
        hideTemplateBottom: Setting<string, string>;
        listingWikitext: Setting<string, string>;
        listingWikitextMatch: Setting<string, string>;
        preload: Setting<string, string>;
        responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>;
        rootPage: Setting<string, Title>;
        subpageFormat: Setting<string, string>;
    } = ...

    Type declaration

    • allowPresumptive: Setting<boolean, boolean>
    • batchListingPageWikitext: Setting<string, string>

      $1 - Page to include

      +
    • dispatchRoot: Setting<string, URL>
    • lastEdited: Setting<number, number>
    editable?: boolean

    Whether the configuration is editable by the current user or not.

    +
    ia: {
        allowPresumptive: Setting<boolean, boolean>;
        batchListingPageWikitext: Setting<string, string>;
        batchListingWikitext: Setting<string, string>;
        enabled: Setting<boolean, boolean>;
        entirePageAppendBottom: Setting<boolean, boolean>;
        hideTemplate: Setting<string, string>;
        hideTemplateBottom: Setting<string, string>;
        listingWikitext: Setting<string, string>;
        listingWikitextMatch: Setting<string, string>;
        preload: Setting<string, string>;
        responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>;
        rootPage: Setting<string, Title>;
        subpageFormat: Setting<string, string>;
    } = ...

    Type declaration

    • allowPresumptive: Setting<boolean, boolean>
    • batchListingPageWikitext: Setting<string, string>

      $1 - Page to include

    • batchListingWikitext: Setting<string, string>

      $1 - Title of the batch $2 - List of pages (newlines should be added in batchListingPageWikitext). $3 - User comment

      -
    • enabled: Setting<boolean, boolean>
    • entirePageAppendBottom: Setting<boolean, boolean>
    • hideTemplate: Setting<string, string>
    • hideTemplateBottom: Setting<string, string>
    • listingWikitext: Setting<string, string>
    • listingWikitextMatch: Setting<string, string>

      CopyrightProblemsListing#articleCvRegex

      +
    • enabled: Setting<boolean, boolean>
    • entirePageAppendBottom: Setting<boolean, boolean>
    • hideTemplate: Setting<string, string>
    • hideTemplateBottom: Setting<string, string>
    • listingWikitext: Setting<string, string>
    • listingWikitextMatch: Setting<string, string>

      CopyrightProblemsListing#articleCvRegex

      This should match both normal and batch listings.

      -
    • preload: Setting<string, string>
    • responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>
    • rootPage: Setting<string, Title>
    • subpageFormat: Setting<string, string>
    outdated: boolean = false

    Set to true when this configuration is outdated based on latest data. Usually adds banners +

  • preload: Setting<string, string>
  • responses: Setting<CopyrightProblemsResponse[], CopyrightProblemsResponse[]>
  • rootPage: Setting<string, Title>
  • subpageFormat: Setting<string, string>
  • outdated: boolean = false

    Set to true when this configuration is outdated based on latest data. Usually adds banners to UI interfaces saying a new version of the configuration is available, and that it should be used whenever possible.

    TODO: This doesn't do what the documentations says yet.

    -
    serializedData: any
    sourcePage: Title
    static: typeof WikiConfiguration = WikiConfiguration
    type: "wiki" = ...
    configLocations: string[] = WikiConfigurationLocations
    configVersion: 2 = 2
    optionKey: "userjs-deputy-wiki" = 'userjs-deputy-wiki'

    Methods

    serializedData: any
    sourcePage: Title
    static: typeof WikiConfiguration = WikiConfiguration
    type: "wiki" = ...
    configLocations: string[] = WikiConfigurationLocations
    configVersion = 2
    optionKey: "userjs-deputy-wiki" = 'userjs-deputy-wiki'

    Methods

    • Check if the current page being viewed is the active configuration page.

      Parameters

      • Optionalpage: Title

      Returns boolean

      true if the current page is the active configuration page.

      -
    • Returns any

      the serialized version of the configuration. All undefined values are stripped from output. If a category remains unchanged from defaults, it is skipped. If the entire configuration remains unchanged, null is returned.

      -
    • Check if the current page being viewed is a valid configuration page.

      +

    Returns Promise<void>

    • Check if the current page being viewed is a valid configuration page.

      Parameters

      • Optionalpage: Title

      Returns boolean

      true if the current page is a valid configuration page.

      -
    • Loads the wiki configuration from localStorage and/or MediaWiki settings. This allows for faster loads at the expense of a (small) chance of outdated configuration.

      The localStorage layer allows fast browser-based caching. If a user @@ -84,7 +84,7 @@ will automatically be sent to the client, lessening turnaround time. If all else fails, the configuration will be loaded from the wiki.

      Returns Promise<WikiConfiguration>

      A WikiConfiguration object.

      -
    \ No newline at end of file +
    diff --git a/enums/_internal_.CompletionAction.html b/enums/_internal_.CompletionAction.html index e83a8fce..6dd174b2 100644 --- a/enums/_internal_.CompletionAction.html +++ b/enums/_internal_.CompletionAction.html @@ -1,3 +1,3 @@ -CompletionAction | deputy

    Enumeration CompletionAction

    Enumeration Members

    Nothing +CompletionAction | deputy

    Enumeration CompletionAction

    Enumeration Members

    Enumeration Members

    Nothing: "nothing"
    Reload: "reload"
    \ No newline at end of file +

    Enumeration Members

    Nothing
    Reload
    diff --git a/enums/_internal_.ContributionSurveyRowSigningBehavior.html b/enums/_internal_.ContributionSurveyRowSigningBehavior.html index b1db681a..0fb5cb46 100644 --- a/enums/_internal_.ContributionSurveyRowSigningBehavior.html +++ b/enums/_internal_.ContributionSurveyRowSigningBehavior.html @@ -1,6 +1,6 @@ -ContributionSurveyRowSigningBehavior | deputy

    Enumeration ContributionSurveyRowSigningBehavior

    Enumeration Members

    Always +ContributionSurveyRowSigningBehavior | deputy

    Enumeration ContributionSurveyRowSigningBehavior

    Enumeration Members

    Always: "always"
    AlwaysTrace: "alwaysTrace"
    AlwaysTraceLastOnly: "alwaysTraceLastOnly"
    LastOnly: "lastOnly"
    Never: "never"
    \ No newline at end of file +

    Enumeration Members

    Always
    AlwaysTrace
    AlwaysTraceLastOnly
    LastOnly
    Never
    diff --git a/enums/_internal_.ContributionSurveyRowSort.html b/enums/_internal_.ContributionSurveyRowSort.html index b1833900..24fdf7b0 100644 --- a/enums/_internal_.ContributionSurveyRowSort.html +++ b/enums/_internal_.ContributionSurveyRowSort.html @@ -1,4 +1,4 @@ -ContributionSurveyRowSort | deputy

    Enumeration ContributionSurveyRowSort

    Enumeration Members

    Bytes +ContributionSurveyRowSort | deputy

    Enumeration ContributionSurveyRowSort

    Enumeration Members

    Enumeration Members

    Bytes: 2
    Date: 0
    DateReverse: 1
    \ No newline at end of file +

    Enumeration Members

    Bytes
    Date
    DateReverse
    diff --git a/enums/_internal_.ContributionSurveyRowStatus.html b/enums/_internal_.ContributionSurveyRowStatus.html index a02318ea..092b665d 100644 --- a/enums/_internal_.ContributionSurveyRowStatus.html +++ b/enums/_internal_.ContributionSurveyRowStatus.html @@ -1,7 +1,7 @@ -ContributionSurveyRowStatus | deputy

    Enumeration ContributionSurveyRowStatus

    References

    Missing +ContributionSurveyRowStatus | deputy

    Enumeration ContributionSurveyRowStatus

    References

    Re-exports Missing
    Re-exports PresumptiveRemoval
    Re-exports Unknown
    Re-exports WithViolations
    Re-exports WithoutViolations

    Enumeration Members

    Unfinished: 0
    \ No newline at end of file +

    References

    Re-exports Missing
    Re-exports PresumptiveRemoval
    Re-exports Unknown
    Re-exports WithoutViolations
    Re-exports WithViolations

    Enumeration Members

    Unfinished
    diff --git a/enums/_internal_.DeputyContributionSurveyRowState.html b/enums/_internal_.DeputyContributionSurveyRowState.html index 8ce491a6..91c1a5ca 100644 --- a/enums/_internal_.DeputyContributionSurveyRowState.html +++ b/enums/_internal_.DeputyContributionSurveyRowState.html @@ -1,5 +1,5 @@ -DeputyContributionSurveyRowState | deputy

    Enumeration DeputyContributionSurveyRowState

    Enumeration Members

    Broken +DeputyContributionSurveyRowState | deputy

    Enumeration DeputyContributionSurveyRowState

    Enumeration Members

    Enumeration Members

    Broken: -1
    Closed: 2
    Loading: 0
    Ready: 1
    \ No newline at end of file +

    Enumeration Members

    Broken
    Closed
    Loading
    Ready
    diff --git a/enums/_internal_.DeputyPageToolbarState.html b/enums/_internal_.DeputyPageToolbarState.html index a10797e8..72984d88 100644 --- a/enums/_internal_.DeputyPageToolbarState.html +++ b/enums/_internal_.DeputyPageToolbarState.html @@ -1,4 +1,4 @@ -DeputyPageToolbarState | deputy

    Enumeration DeputyPageToolbarState

    Enumeration Members

    Collapsed +DeputyPageToolbarState | deputy

    Enumeration DeputyPageToolbarState

    Enumeration Members

    Enumeration Members

    Collapsed: 1
    Hidden: 2
    Open: 0
    \ No newline at end of file +

    Enumeration Members

    Collapsed
    Hidden
    Open
    diff --git a/enums/_internal_.PortletNameView.html b/enums/_internal_.PortletNameView.html index e7a94bb5..e182378e 100644 --- a/enums/_internal_.PortletNameView.html +++ b/enums/_internal_.PortletNameView.html @@ -1,4 +1,4 @@ -PortletNameView | deputy

    Enumeration PortletNameView

    Enumeration Members

    Acronym +PortletNameView | deputy

    Enumeration PortletNameView

    Enumeration Members

    Enumeration Members

    Acronym: "acronym"
    Full: "full"
    Short: "short"
    \ No newline at end of file +

    Enumeration Members

    Acronym
    Full
    Short
    diff --git a/enums/_internal_.TripleCompletionAction.html b/enums/_internal_.TripleCompletionAction.html index b2d9c3c5..72cf8502 100644 --- a/enums/_internal_.TripleCompletionAction.html +++ b/enums/_internal_.TripleCompletionAction.html @@ -1,4 +1,4 @@ -TripleCompletionAction | deputy

    Enumeration TripleCompletionAction

    Enumeration Members

    Nothing +TripleCompletionAction | deputy

    Enumeration TripleCompletionAction

    Enumeration Members

    Enumeration Members

    Nothing: "nothing"
    Redirect: "redirect"
    Reload: "reload"
    \ No newline at end of file +

    Enumeration Members

    Nothing
    Redirect
    Reload
    diff --git a/enums/_internal_.WikiHeadingType.html b/enums/_internal_.WikiHeadingType.html index b3d77448..09d5e413 100644 --- a/enums/_internal_.WikiHeadingType.html +++ b/enums/_internal_.WikiHeadingType.html @@ -10,7 +10,7 @@ element, and that a div is the root heading element. This means that h.innerText will be "Section title". -

    Enumeration Members

    NEW +

    Enumeration Members

    Enumeration Members

    NEW: 2
    OLD: 1
    PARSOID: 0
    \ No newline at end of file +

    Enumeration Members

    NEW
    OLD
    PARSOID
    diff --git a/functions/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.blockExit.html b/functions/_internal_.src_util_blockExit.blockExit.html similarity index 81% rename from functions/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.blockExit.html rename to functions/_internal_.src_util_blockExit.blockExit.html index f0b1bb1e..a623e32f 100644 --- a/functions/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.blockExit.html +++ b/functions/_internal_.src_util_blockExit.blockExit.html @@ -1,4 +1,4 @@ -blockExit | deputy
    • Blocks navigation to prevent data loss. This function takes in a +blockExit | deputy

      • Blocks navigation to prevent data loss. This function takes in a key parameter to identify which parts of the tool are blocking navigation. The exit block will refuse to unlatch from the document if all keys are not released with unblockExit.

        @@ -6,4 +6,4 @@ any operation that updates the block list (e.g. unblockExit with a key not blocked) will immediately unblock the page.

        Parameters

        • Optionalkey: string

          The key of the exit block.

          -

        Returns void

      \ No newline at end of file +

    Returns void

    diff --git a/functions/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.unblockExit.html b/functions/_internal_.src_util_blockExit.unblockExit.html similarity index 80% rename from functions/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.unblockExit.html rename to functions/_internal_.src_util_blockExit.unblockExit.html index c8a78500..7c37108e 100644 --- a/functions/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.unblockExit.html +++ b/functions/_internal_.src_util_blockExit.unblockExit.html @@ -1,7 +1,7 @@ -unblockExit | deputy
    • Unblocks navigation. This function takes in a key parameter to identify +unblockExit | deputy

      • Unblocks navigation. This function takes in a key parameter to identify which part of the tool is no longer requiring a block. If other parts of the tool still require blocking, the unblock function will remain on the document.

        If no key is provided, this will dump all keys and immediate unblock exit.

        Parameters

        • Optionalkey: string

          The key of the exit block.

          -

        Returns void

      \ No newline at end of file +

    Returns void

    diff --git a/hierarchy.html b/hierarchy.html index 81fd42e7..222f56bf 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -1 +1 @@ -deputy
    \ No newline at end of file +deputy
    diff --git a/index.html b/index.html index d9e83fbc..507ac704 100644 --- a/index.html +++ b/index.html @@ -1,15 +1,15 @@ -deputy

    deputy

    Deputy

    Deputy logo -

    Deputy is -a contributor copyright investigation (CCI) and copyright cleanup assistance tool for Wikipedia. Its goal is to streamline the workflow for CCI case pages, making it easier to -process and go through each case. For user-specific information, see Wikipedia:Deputy.

    +deputy

    deputy

    Deputy

    Deputy logo +

    Deputy is +a contributor copyright investigation (CCI) and copyright cleanup assistance tool for Wikipedia. Its goal is to streamline the workflow for CCI case pages, making it easier to +process and go through each case. For user-specific information, see Wikipedia:Deputy.

    Deputy exposes a deputy variable on the window object for public use. The API is documented -at chlodalejandro.github.io/deputy.

    -

    Deputy relies on modules from Dispatch to +at chlodalejandro.github.io/deputy.

    +

    Deputy relies on modules from Dispatch to perform bulk data operations. Dispatch is hosted on Wikimedia Toolforge, more information can be -found here.

    -

    See Wikipedia:Deputy § Installation on the English Wikipedia for more information.

    +found here.

    +

    See Wikipedia:Deputy § Installation on the English Wikipedia for more information.

    Please clone with submodules (--recursive/--recurse-submodules) to ensure that -Dispatch types +Dispatch types are also cloned alongside the repo.

    If you forgot to clone with submodules, just run the following commands to initialize the submodule for types:

    @@ -21,13 +21,13 @@

    Import the script into your user JavaScript file of -choice (common.js) with the following:

    +choice (common.js) with the following:

    mw.loader.load( "http://localhost:45000/Deputy.js" );
    mw.hook( 'deputy.preload' ).add( function () {
    // Replace resource root to load local development assets
    window.deputy.resourceRoot = { type: "url", url: new URL( "http://localhost:45000/" ) };
    window.deputy.getWikiConfig().then( function (wikiConfig) {
    // Used to test in a sandbox environment than on the actual CCI pagespace.
    // Feel free to change the values to fit your sandbox.
    wikiConfig.cci.rootPage.set(new mw.Title( 'User:Chlod/Scripts/Deputy/tests' ));
    wikiConfig.ia.rootPage.set(new mw.Title("User:Chlod/Scripts/Deputy/tests/Problems"));
    } );
    } );
    -

    Bleeding edge builds of Deputy are always provided through GitHub Actions. You may experiment with these versions of Deputy, but keep in mind that they are extremely unstable +

    Bleeding edge builds of Deputy are always provided through GitHub Actions. You may experiment with these versions of Deputy, but keep in mind that they are extremely unstable and significant bugs may be found. Nevertheless, -please report bugs found so that they may be actioned on.

    +please report bugs found so that they may be actioned on.

    Unit and end-to-end tests exist for Deputy and can be found in the tests/ directory. These tests are run with Selenium and Jest. This ensures that Deputy's most vital components work as expected. Tests are still incomplete and coverage is not available, however by the end of the project, at least one end-to-end test should be finished.

    @@ -44,11 +44,11 @@

    The userscript is bundled with multiple dependencies, all of which have been manually vetted for compatibility with the Apache License 2.0. The userscript, in particular, bundles with the following libraries:

      -
    • tslib - 0BSD, Microsoft - For TypeScript polyfills and helper functions.
    • -
    • idb - ISC, Jake Archibald - IndexedDB wrapper for ease of use.
    • -
    • broadcastchannel-polyfill - Unlicense, Joshua Bell - Polyfill +
    • tslib - 0BSD, Microsoft - For TypeScript polyfills and helper functions.
    • +
    • idb - ISC, Jake Archibald - IndexedDB wrapper for ease of use.
    • +
    • broadcastchannel-polyfill - Unlicense, Joshua Bell - Polyfill for BroadcastChannel (facilitates communication between tabs).
    • -
    • tsx-dom - MIT, Santo Pfingsten - TSX/JSX that compiles to native HTMLElements.
    • +
    • tsx-dom - MIT, Santo Pfingsten - TSX/JSX that compiles to native HTMLElements.
    -

    The initial development of Deputy was covered by a Wikimedia Foundation Rapid Grant. Deputy is now being maintained through volunteer effort without compensation.

    -
    \ No newline at end of file +

    The initial development of Deputy was covered by a Wikimedia Foundation Rapid Grant. Deputy is now being maintained through volunteer effort without compensation.

    +
    diff --git a/interfaces/_internal_.AttributionNoticePageGenerator.html b/interfaces/_internal_.AttributionNoticePageGenerator.html index 9a534edd..2254b89d 100644 --- a/interfaces/_internal_.AttributionNoticePageGenerator.html +++ b/interfaces/_internal_.AttributionNoticePageGenerator.html @@ -1,4 +1,4 @@ -AttributionNoticePageGenerator | deputy

    Interface AttributionNoticePageGenerator

    interface AttributionNoticePageGenerator {
        generatePage(dialog: any): AttributionNoticePageLayout;
    }

    Implemented by

    Methods

    generatePage +AttributionNoticePageGenerator | deputy

    Interface AttributionNoticePageGenerator

    interface AttributionNoticePageGenerator {
        generatePage(dialog: any): AttributionNoticePageLayout;
    }

    Implemented by

    Methods

    Methods

    \ No newline at end of file +

    Parameters

    • dialog: any

    Returns AttributionNoticePageLayout

    diff --git a/interfaces/_internal_.AttributionNoticePageLayout.html b/interfaces/_internal_.AttributionNoticePageLayout.html index be3b2cbc..b5584342 100644 --- a/interfaces/_internal_.AttributionNoticePageLayout.html +++ b/interfaces/_internal_.AttributionNoticePageLayout.html @@ -1,7 +1,7 @@ -AttributionNoticePageLayout | deputy

    Interface AttributionNoticePageLayout

    interface AttributionNoticePageLayout {
        getChildren?: (() => AttributionNoticePageLayout[]);
        parent: any;
    }

    Hierarchy

    • PageLayout
      • AttributionNoticePageLayout

    Properties

    getChildren? +AttributionNoticePageLayout | deputy

    Interface AttributionNoticePageLayout

    interface AttributionNoticePageLayout {
        getChildren?: (() => AttributionNoticePageLayout[]);
        parent: any;
    }

    Hierarchy

    • PageLayout
      • AttributionNoticePageLayout

    Properties

    Properties

    getChildren?: (() => AttributionNoticePageLayout[])

    Get the children of this page layout. Appended directly after this given page layout. If the children here also contain children, they MUST already be in the array, or else they will not be appended.

    -
    parent: any

    The parent of this page.

    -
    \ No newline at end of file +
    parent: any

    The parent of this page.

    +
    diff --git a/interfaces/_internal_.AttributionNoticeRowParent.html b/interfaces/_internal_.AttributionNoticeRowParent.html index d0b93593..975a1808 100644 --- a/interfaces/_internal_.AttributionNoticeRowParent.html +++ b/interfaces/_internal_.AttributionNoticeRowParent.html @@ -1,6 +1,6 @@ -AttributionNoticeRowParent | deputy

    Interface AttributionNoticeRowParent

    interface AttributionNoticeRowParent {
        id: string;
        name: string;
        node: CTEParsoidTransclusionTemplateNode;
        addRow(row: any): void;
        deleteRow(row: any): void;
    }

    Properties

    id +AttributionNoticeRowParent | deputy

    Interface AttributionNoticeRowParent

    interface AttributionNoticeRowParent {
        id: string;
        name: string;
        node: CTEParsoidTransclusionTemplateNode;
        addRow(row: any): void;
        deleteRow(row: any): void;
    }

    Properties

    Methods

    Properties

    id: string
    name: string

    Methods

    \ No newline at end of file +

    Properties

    id: string
    name: string

    Methods

    diff --git a/interfaces/_internal_.BasicCopyrightProblemsListingData.html b/interfaces/_internal_.BasicCopyrightProblemsListingData.html index dedcb44d..a22aa451 100644 --- a/interfaces/_internal_.BasicCopyrightProblemsListingData.html +++ b/interfaces/_internal_.BasicCopyrightProblemsListingData.html @@ -1,11 +1,11 @@ BasicCopyrightProblemsListingData | deputy

    Interface BasicCopyrightProblemsListingData

    Represents a listing on a CPN page where the listing is just a page link.

    -
    interface BasicCopyrightProblemsListingData {
        basic: true;
        element: HTMLAnchorElement;
        i?: number;
        listingPage: Title;
        title: Title;
    }

    Properties

    interface BasicCopyrightProblemsListingData {
        basic: true;
        element: HTMLAnchorElement;
        i?: number;
        listingPage: Title;
        title: Title;
    }

    Properties

    basic: true

    Whether the listing is basic or not. When listings are detected from the basic +

    Properties

    basic

    Whether the listing is basic or not. When listings are detected from the basic method, they are more likely to cause bugs or unintended output.

    -
    i?: number

    If multiple listings exist with the same page name, i will ensure that the +

    i?: number

    If multiple listings exist with the same page name, i will ensure that the correct one is found and edited.

    -
    listingPage: Title
    title: Title
    \ No newline at end of file +
    listingPage: Title
    title: Title
    diff --git a/interfaces/_internal_.CleanParamsOptions.html b/interfaces/_internal_.CleanParamsOptions.html index 72cfafdb..dae0cb92 100644 --- a/interfaces/_internal_.CleanParamsOptions.html +++ b/interfaces/_internal_.CleanParamsOptions.html @@ -1,5 +1,5 @@ CleanParamsOptions | deputy

    Interface CleanParamsOptions<T>

    Options for the cleanParams function.

    -
    interface CleanParamsOptions<T> {
        filter: CleanParamsOption<T>;
        filter2?: CleanParamsOption<T>;
        removeNo?: CleanParamsOption<T>;
        removeYes?: CleanParamsOption<T>;
        trim: CleanParamsOption<T>;
    }

    Type Parameters

    • T extends Record<string, string>

    Properties

    interface CleanParamsOptions<T> {
        filter: CleanParamsOption<T>;
        filter2?: CleanParamsOption<T>;
        removeNo?: CleanParamsOption<T>;
        removeYes?: CleanParamsOption<T>;
        trim: CleanParamsOption<T>;
    }

    Type Parameters

    • T extends Record<string, string>

    Properties

    filter filter2? removeNo? removeYes? @@ -11,23 +11,23 @@
  • Passing a string array will remove parameters with keys in the array that are null or empty.
  • -
    filter2?: CleanParamsOption<T>

    A second pass of null/undefined/empty string removal is run after all +

    filter2?: CleanParamsOption<T>

    A second pass of null/undefined/empty string removal is run after all other cleaning operations. This ensures no empty parameters are left behind. If filter is supplied, it will be used for this value. If set to false, no second pass will be performed.

    -
    removeNo?: CleanParamsOption<T>

    Options for removing values with no-like values.

    +
    removeNo?: CleanParamsOption<T>

    Options for removing values with no-like values.

    • Passing true will remove all parameters with no-like values.
    • Passing a string will remove the parameter with that key if it has a no-like value.
    • Passing a string array will remove all parameters in that array if it has a no-like value.
    -
    removeYes?: CleanParamsOption<T>

    Options for removing values with yes-like values.

    +
    removeYes?: CleanParamsOption<T>

    Options for removing values with yes-like values.

    • Passing true will remove all parameters with yes-like values.
    • Passing a string will remove the parameter with that key if it has a yes-like value.
    • Passing a string array will remove all parameters in that array if it has a yes-like value.
    -

    Options for trimming parameters.

    +

    Options for trimming parameters.

    • Passing true will trim all parameters.
    • Passing a string will trim only the parameter with that key.
    • @@ -35,4 +35,4 @@

    If a parameter cannot be trimmed (no trim function, is null or undefined, etc.), this operation silently fails.

    -
    \ No newline at end of file +
    diff --git a/interfaces/_internal_.CopyrightProblemsResponse.html b/interfaces/_internal_.CopyrightProblemsResponse.html index 60bf9ce5..b5740819 100644 --- a/interfaces/_internal_.CopyrightProblemsResponse.html +++ b/interfaces/_internal_.CopyrightProblemsResponse.html @@ -1,25 +1,25 @@ CopyrightProblemsResponse | deputy

    Interface CopyrightProblemsResponse

    Denotes a response on the Copyright Problems noticeboard.

    -
    interface CopyrightProblemsResponse {
        closing?: boolean;
        label: string | Record<string, string>;
        template: string;
    }

    Properties

    interface CopyrightProblemsResponse {
        closing?: boolean;
        label: string | Record<string, string>;
        template: string;
    }

    Properties

    closing?: boolean

    Whether this response is a closing response or not. Used to tweak the edit summary.

    -
    true
    +
    label: string | Record<string, string>

    The label of the response. This should either be a static string, or an object of locale +

    label: string | Record<string, string>

    The label of the response. This should either be a static string, or an object of locale codes mapped to translations of the label. Following the latter allows for translation, and is useful in cases where the user cannot speak the wiki's content language but wishes to make a report on a given wiki (e.g., an English Wikipedia user responding to a German Wikipedia listing).

    This is up to the wiki's discretion, and is not required. They may opt only to have one set of responses in the wiki's content language.

    -
    `"Issue resolved."`
    +
    `"Issue resolved."`
     
    -
    `{ "en": "Issue resolved.", "de": "Problem gelöst." }`
    +
    `{ "en": "Issue resolved.", "de": "Problem gelöst." }`
     
    -
    template: string

    The wikitext to append to a response. The following substitution is +

    template: string

    The wikitext to append to a response. The following substitution is performed using mw.util.format:

    "{{CPC|c|$2}}"
    +
    "{{CPC|c|$2}}"
     
    -
    \ No newline at end of file +
    diff --git a/interfaces/_internal_.DeputyAcknowledgeMessage.html b/interfaces/_internal_.DeputyAcknowledgeMessage.html index 6c8aebc1..f760f10f 100644 --- a/interfaces/_internal_.DeputyAcknowledgeMessage.html +++ b/interfaces/_internal_.DeputyAcknowledgeMessage.html @@ -3,5 +3,5 @@

    Due to its usage, this message must always have an attached _deputyRespondsTo, provided by LowLevelOneWayDeputyMessage. Otherwise, it is useless as it is not listened for except as a response.

    -
    interface DeputyAcknowledgeMessage {
        type: "acknowledge";
    }

    Properties

    Properties

    type: "acknowledge"
    \ No newline at end of file +
    interface DeputyAcknowledgeMessage {
        type: "acknowledge";
    }

    Properties

    Properties

    type
    diff --git a/interfaces/_internal_.DeputyCCIStatusDropdownProps.html b/interfaces/_internal_.DeputyCCIStatusDropdownProps.html index 1859db64..322f4b46 100644 --- a/interfaces/_internal_.DeputyCCIStatusDropdownProps.html +++ b/interfaces/_internal_.DeputyCCIStatusDropdownProps.html @@ -1,12 +1,12 @@ -DeputyCCIStatusDropdownProps | deputy

    Interface DeputyCCIStatusDropdownProps

    interface DeputyCCIStatusDropdownProps {
        enabled?: ContributionSurveyRowStatus[];
        requireAcknowledge?: boolean;
        status?: ContributionSurveyRowStatus;
        widgetOptions?: string[];
    }

    Properties

    enabled? +DeputyCCIStatusDropdownProps | deputy

    Interface DeputyCCIStatusDropdownProps

    interface DeputyCCIStatusDropdownProps {
        enabled?: ContributionSurveyRowStatus[];
        requireAcknowledge?: boolean;
        status?: ContributionSurveyRowStatus;
        widgetOptions?: string[];
    }

    Properties

    The list of enabled status options. If not available, the option will be dimmed, with the exception of Unknown, which will be hidden.

    -
    requireAcknowledge?: boolean

    Whether an acknowledgment message is required after broadcasting a change. +

    requireAcknowledge?: boolean

    Whether an acknowledgment message is required after broadcasting a change. Defaults to true. false for root sessions.

    -

    The initial status of the page.

    -
    widgetOptions?: string[]

    Extra options for the DropdownWidget.

    -
    \ No newline at end of file +

    The initial status of the page.

    +
    widgetOptions?: string[]

    Extra options for the DropdownWidget.

    +
    diff --git a/interfaces/_internal_.DeputyCasePageCacheStore.html b/interfaces/_internal_.DeputyCasePageCacheStore.html index 7c4e6fb4..3b7805ec 100644 --- a/interfaces/_internal_.DeputyCasePageCacheStore.html +++ b/interfaces/_internal_.DeputyCasePageCacheStore.html @@ -1,9 +1,9 @@ DeputyCasePageCacheStore | deputy

    Interface DeputyCasePageCacheStore

    Case page cache store. Used to store case pages and relevant case information. Each case page is a different entry here, meaning there may be multiple entries for different "pages" of a case (for particularly large cases).

    -
    interface DeputyCasePageCacheStore {
        key: number;
        value: {
            lastActive: number;
            lastActiveSections: string[];
            pageID: number;
        };
    }

    Properties

    key +
    interface DeputyCasePageCacheStore {
        key: number;
        value: {
            lastActive: number;
            lastActiveSections: string[];
            pageID: number;
        };
    }

    Properties

    Properties

    key: number
    value: {
        lastActive: number;
        lastActiveSections: string[];
        pageID: number;
    }

    Type declaration

    • lastActive: number

      Last time that a session was active on this case

      +

    Properties

    key: number
    value: {
        lastActive: number;
        lastActiveSections: string[];
        pageID: number;
    }

    Type declaration

    • lastActive: number

      Last time that a session was active on this case

    • lastActiveSections: string[]

      Last active section IDs for either autostart or "pick up where you left off"

    • pageID: number

      Page ID of the case page

      -
    \ No newline at end of file +
    diff --git a/interfaces/_internal_.DeputyContributionSurveyRevisionOptions.html b/interfaces/_internal_.DeputyContributionSurveyRevisionOptions.html index e64dbd23..ff159695 100644 --- a/interfaces/_internal_.DeputyContributionSurveyRevisionOptions.html +++ b/interfaces/_internal_.DeputyContributionSurveyRevisionOptions.html @@ -1,2 +1,2 @@ -DeputyContributionSurveyRevisionOptions | deputy

    Interface DeputyContributionSurveyRevisionOptions

    interface DeputyContributionSurveyRevisionOptions {
        expanded?: boolean;
    }

    Properties

    Properties

    expanded?: boolean
    \ No newline at end of file +DeputyContributionSurveyRevisionOptions | deputy

    Interface DeputyContributionSurveyRevisionOptions

    interface DeputyContributionSurveyRevisionOptions {
        expanded?: boolean;
    }

    Properties

    Properties

    expanded?: boolean
    diff --git a/interfaces/_internal_.DeputyDatabase.html b/interfaces/_internal_.DeputyDatabase.html index 7b802451..8f3bb1a0 100644 --- a/interfaces/_internal_.DeputyDatabase.html +++ b/interfaces/_internal_.DeputyDatabase.html @@ -1,7 +1,7 @@ -DeputyDatabase | deputy

    Interface DeputyDatabase

    Hierarchy

    • DBSchema
      • DeputyDatabase

    Properties

    casePageCache +DeputyDatabase | deputy

    Interface DeputyDatabase

    Hierarchy

    • DBSchema
      • DeputyDatabase

    Properties

    \ No newline at end of file +

    Properties

    diff --git a/interfaces/_internal_.DeputyDiffCacheStore.html b/interfaces/_internal_.DeputyDiffCacheStore.html index e06891c5..5710f559 100644 --- a/interfaces/_internal_.DeputyDiffCacheStore.html +++ b/interfaces/_internal_.DeputyDiffCacheStore.html @@ -1,3 +1,3 @@ -DeputyDiffCacheStore | deputy

    Interface DeputyDiffCacheStore

    interface DeputyDiffCacheStore {
        key: number;
        value: ExpandedRevisionData;
    }

    Properties

    key +DeputyDiffCacheStore | deputy

    Interface DeputyDiffCacheStore

    interface DeputyDiffCacheStore {
        key: number;
        value: ExpandedRevisionData;
    }

    Properties

    Properties

    key: number
    \ No newline at end of file +

    Properties

    key: number
    diff --git a/interfaces/_internal_.DeputyDiffStatus.html b/interfaces/_internal_.DeputyDiffStatus.html index 87335fe0..cf90c279 100644 --- a/interfaces/_internal_.DeputyDiffStatus.html +++ b/interfaces/_internal_.DeputyDiffStatus.html @@ -1,2 +1,2 @@ -DeputyDiffStatus | deputy

    Interface DeputyDiffStatus

    interface DeputyDiffStatus {
        hash: string;
    }

    Properties

    Properties

    hash: string
    \ No newline at end of file +DeputyDiffStatus | deputy

    Interface DeputyDiffStatus

    interface DeputyDiffStatus {
        hash: string;
    }

    Properties

    Properties

    hash: string
    diff --git a/interfaces/_internal_.DeputyDiffStatusStore.html b/interfaces/_internal_.DeputyDiffStatusStore.html index 44916591..5b01a984 100644 --- a/interfaces/_internal_.DeputyDiffStatusStore.html +++ b/interfaces/_internal_.DeputyDiffStatusStore.html @@ -1,3 +1,3 @@ -DeputyDiffStatusStore | deputy

    Interface DeputyDiffStatusStore

    interface DeputyDiffStatusStore {
        key: string;
        value: DeputyDiffStatus;
    }

    Properties

    key +DeputyDiffStatusStore | deputy

    Interface DeputyDiffStatusStore

    interface DeputyDiffStatusStore {
        key: string;
        value: DeputyDiffStatus;
    }

    Properties

    Properties

    key: string
    \ No newline at end of file +

    Properties

    key: string
    diff --git a/interfaces/_internal_.DeputyKeyvalStore.html b/interfaces/_internal_.DeputyKeyvalStore.html index 36864f5a..dfa67f23 100644 --- a/interfaces/_internal_.DeputyKeyvalStore.html +++ b/interfaces/_internal_.DeputyKeyvalStore.html @@ -1,5 +1,5 @@ DeputyKeyvalStore | deputy

    Interface DeputyKeyvalStore

    General key-value store. Used for storing single-variable data (currently active case, etc.)

    -
    interface DeputyKeyvalStore {
        key: string;
        value: {
            key: string;
            value: any;
        };
    }

    Properties

    key +
    interface DeputyKeyvalStore {
        key: string;
        value: {
            key: string;
            value: any;
        };
    }

    Properties

    Properties

    key: string
    value: {
        key: string;
        value: any;
    }
    \ No newline at end of file +

    Properties

    key: string
    value: {
        key: string;
        value: any;
    }
    diff --git a/interfaces/_internal_.DeputyPageMenuOption.html b/interfaces/_internal_.DeputyPageMenuOption.html index 2397003a..55a20b0c 100644 --- a/interfaces/_internal_.DeputyPageMenuOption.html +++ b/interfaces/_internal_.DeputyPageMenuOption.html @@ -1,5 +1,5 @@ -DeputyPageMenuOption | deputy

    Interface DeputyPageMenuOption

    interface DeputyPageMenuOption {
        action: ((toolbar: DeputyPageToolbar) => PromiseOrNot<void>);
        condition?: ((toolbar: DeputyPageToolbar) => boolean);
        icon?: string;
        label: string;
    }

    Properties

    action +DeputyPageMenuOption | deputy

    Interface DeputyPageMenuOption

    interface DeputyPageMenuOption {
        action: ((toolbar: DeputyPageToolbar) => PromiseOrNot<void>);
        condition?: ((toolbar: DeputyPageToolbar) => boolean);
        icon?: string;
        label: string;
    }

    Properties

    action: ((toolbar: DeputyPageToolbar) => PromiseOrNot<void>)
    condition?: ((toolbar: DeputyPageToolbar) => boolean)
    icon?: string
    label: string
    \ No newline at end of file +

    Properties

    action: ((toolbar: DeputyPageToolbar) => PromiseOrNot<void>)
    condition?: ((toolbar: DeputyPageToolbar) => boolean)
    icon?: string
    label: string
    diff --git a/interfaces/_internal_.DeputyPageNextRevisionRequest.html b/interfaces/_internal_.DeputyPageNextRevisionRequest.html index d34b9b89..6dcb0924 100644 --- a/interfaces/_internal_.DeputyPageNextRevisionRequest.html +++ b/interfaces/_internal_.DeputyPageNextRevisionRequest.html @@ -1,4 +1,4 @@ -DeputyPageNextRevisionRequest | deputy

    Interface DeputyPageNextRevisionRequest

    interface DeputyPageNextRevisionRequest {
        after: number;
        caseId: number;
        page: string;
        reverse?: boolean;
        type: "pageNextRevisionRequest";
    }

    Properties

    after +DeputyPageNextRevisionRequest | deputy

    Interface DeputyPageNextRevisionRequest

    interface DeputyPageNextRevisionRequest {
        after: number;
        caseId: number;
        page: string;
        reverse?: boolean;
        type: "pageNextRevisionRequest";
    }

    Properties

    after caseId page reverse? @@ -7,6 +7,6 @@ be the first revision that is not assessed that comes after this given revision ID.

    If the given revision is the last revision available, this will wrap and return the first unassessed revision.

    -
    caseId: number
    page: string
    reverse?: boolean

    If true, the revision list will be reversed. This is useful for finding the previous +

    caseId: number
    page: string
    reverse?: boolean

    If true, the revision list will be reversed. This is useful for finding the previous revision.

    -
    type: "pageNextRevisionRequest"
    \ No newline at end of file +
    type
    diff --git a/interfaces/_internal_.DeputyPageNextRevisionResponse.html b/interfaces/_internal_.DeputyPageNextRevisionResponse.html index a118f127..a004a11f 100644 --- a/interfaces/_internal_.DeputyPageNextRevisionResponse.html +++ b/interfaces/_internal_.DeputyPageNextRevisionResponse.html @@ -1,3 +1,3 @@ -DeputyPageNextRevisionResponse | deputy

    Interface DeputyPageNextRevisionResponse

    interface DeputyPageNextRevisionResponse {
        revid: number;
        type: "pageNextRevisionResponse";
    }

    Properties

    revid +DeputyPageNextRevisionResponse | deputy

    Interface DeputyPageNextRevisionResponse

    interface DeputyPageNextRevisionResponse {
        revid: number;
        type: "pageNextRevisionResponse";
    }

    Properties

    Properties

    revid: number
    type: "pageNextRevisionResponse"
    \ No newline at end of file +

    Properties

    revid: number
    type
    diff --git a/interfaces/_internal_.DeputyPageStatus.html b/interfaces/_internal_.DeputyPageStatus.html index d61f1f33..63be2228 100644 --- a/interfaces/_internal_.DeputyPageStatus.html +++ b/interfaces/_internal_.DeputyPageStatus.html @@ -1,4 +1,4 @@ -DeputyPageStatus | deputy

    Interface DeputyPageStatus

    interface DeputyPageStatus {
        comments: string;
        hash: string;
        status: ContributionSurveyRowStatus;
    }

    Properties

    comments +DeputyPageStatus | deputy

    Interface DeputyPageStatus

    interface DeputyPageStatus {
        comments: string;
        hash: string;
        status: ContributionSurveyRowStatus;
    }

    Properties

    Properties

    comments: string
    hash: string
    \ No newline at end of file +

    Properties

    comments: string
    hash: string
    diff --git a/interfaces/_internal_.DeputyPageStatusRequestMessage.html b/interfaces/_internal_.DeputyPageStatusRequestMessage.html index 0d890919..4b0dd522 100644 --- a/interfaces/_internal_.DeputyPageStatusRequestMessage.html +++ b/interfaces/_internal_.DeputyPageStatusRequestMessage.html @@ -4,7 +4,7 @@

    An optional revision parameter requests information for a specific revision. If checked, the returning DeputyPageStatusResponseMessage will also provide information on whether the revision is marked as assessed or not.

    -
    interface DeputyPageStatusRequestMessage {
        page: string;
        revision?: number;
        type: "pageStatusRequest";
    }

    Properties

    interface DeputyPageStatusRequestMessage {
        page: string;
        revision?: number;
        type: "pageStatusRequest";
    }

    Properties

    Properties

    page: string
    revision?: number
    type: "pageStatusRequest"
    \ No newline at end of file +

    Properties

    page: string
    revision?: number
    type
    diff --git a/interfaces/_internal_.DeputyPageStatusResponseMessage.html b/interfaces/_internal_.DeputyPageStatusResponseMessage.html index 8fa4c1ff..127a83f1 100644 --- a/interfaces/_internal_.DeputyPageStatusResponseMessage.html +++ b/interfaces/_internal_.DeputyPageStatusResponseMessage.html @@ -1,6 +1,6 @@ DeputyPageStatusResponseMessage | deputy

    Interface DeputyPageStatusResponseMessage

    Response to DeputyPageStatusRequestMessage. Contains the current page status and the revision status (if requested).

    -
    interface DeputyPageStatusResponseMessage {
        caseId: number;
        caseTitle: string;
        enabledStatuses: ContributionSurveyRowStatus[];
        nextRevision: number | false;
        revision?: number;
        revisionStatus?: boolean;
        rowType: "detailed" | "pageonly";
        status: ContributionSurveyRowStatus;
        title: string;
        type: "pageStatusResponse";
    }

    Properties

    interface DeputyPageStatusResponseMessage {
        caseId: number;
        caseTitle: string;
        enabledStatuses: ContributionSurveyRowStatus[];
        nextRevision: number | false;
        revision?: number;
        revisionStatus?: boolean;
        rowType: "detailed" | "pageonly";
        status: ContributionSurveyRowStatus;
        title: string;
        type: "pageStatusResponse";
    }

    Properties

    Properties

    caseId: number

    The ID of this case.

    -
    caseTitle: string

    The title of the case. This can be used later to build a DeputyCase.

    -
    enabledStatuses: ContributionSurveyRowStatus[]

    A list of the enabled statuses for this page on the case page.

    -
    nextRevision: number | false

    The first unassessed revision of the page. Returns false if all revisions for +

    caseTitle: string

    The title of the case. This can be used later to build a DeputyCase.

    +
    enabledStatuses: ContributionSurveyRowStatus[]

    A list of the enabled statuses for this page on the case page.

    +
    nextRevision: number | false

    The first unassessed revision of the page. Returns false if all revisions for the page have been assessed.

    -
    revision?: number

    An echo of the requested revision ID. Only enabled if the revision +

    revision?: number

    An echo of the requested revision ID. Only enabled if the revision parameter was supplied in the request.

    -
    revisionStatus?: boolean

    The status of the revision on the case page. Only enabled if the revision +

    revisionStatus?: boolean

    The status of the revision on the case page. Only enabled if the revision parameter was supplied in the request.

    -
    rowType: "detailed" | "pageonly"
      +
    rowType: "detailed" | "pageonly"
    • detailed refers to a row with both page and revision information.
    • pageonly refers to a row with only a page and no revision information.
    -

    The currently-selected status of this page on the case page.

    -
    title: string

    The title of the page requested. This is used in situations where the page title +

    The currently-selected status of this page on the case page.

    +
    title: string

    The title of the page requested. This is used in situations where the page title is different from the title in the row (such as in moved or histmerged pages).

    -
    type: "pageStatusResponse"
    \ No newline at end of file +
    type
    diff --git a/interfaces/_internal_.DeputyPageStatusStore.html b/interfaces/_internal_.DeputyPageStatusStore.html index 9f61cb7e..9c4d97fe 100644 --- a/interfaces/_internal_.DeputyPageStatusStore.html +++ b/interfaces/_internal_.DeputyPageStatusStore.html @@ -1,3 +1,3 @@ -DeputyPageStatusStore | deputy

    Interface DeputyPageStatusStore

    interface DeputyPageStatusStore {
        key: string;
        value: DeputyPageStatus;
    }

    Properties

    key +DeputyPageStatusStore | deputy

    Interface DeputyPageStatusStore

    interface DeputyPageStatusStore {
        key: string;
        value: DeputyPageStatus;
    }

    Properties

    Properties

    key: string
    \ No newline at end of file +

    Properties

    key: string
    diff --git a/interfaces/_internal_.DeputyPageStatusUpdateMessage.html b/interfaces/_internal_.DeputyPageStatusUpdateMessage.html index 81b17d03..64d115f5 100644 --- a/interfaces/_internal_.DeputyPageStatusUpdateMessage.html +++ b/interfaces/_internal_.DeputyPageStatusUpdateMessage.html @@ -1,10 +1,10 @@ DeputyPageStatusUpdateMessage | deputy

    Interface DeputyPageStatusUpdateMessage

    Updates all listening instances of Deputy that a page's status (or status options) have changed. This is fired whenever the user manually changes the option, or if an option has been disabled/enabled following a change in the revision list.

    -
    interface DeputyPageStatusUpdateMessage {
        caseId: number;
        disabledOptions?: ContributionSurveyRowStatus[];
        enabledOptions?: ContributionSurveyRowStatus[];
        page: string;
        status: ContributionSurveyRowStatus;
        type: "pageStatusUpdate";
    }

    Properties

    interface DeputyPageStatusUpdateMessage {
        caseId: number;
        disabledOptions?: ContributionSurveyRowStatus[];
        enabledOptions?: ContributionSurveyRowStatus[];
        page: string;
        status: ContributionSurveyRowStatus;
        type: "pageStatusUpdate";
    }

    Properties

    caseId: number
    disabledOptions?: ContributionSurveyRowStatus[]
    enabledOptions?: ContributionSurveyRowStatus[]
    page: string
    type: "pageStatusUpdate"
    \ No newline at end of file +

    Properties

    caseId: number
    disabledOptions?: ContributionSurveyRowStatus[]
    enabledOptions?: ContributionSurveyRowStatus[]
    page: string
    type
    diff --git a/interfaces/_internal_.DeputyPageToolbarOptions.html b/interfaces/_internal_.DeputyPageToolbarOptions.html index 44a4d0b1..aa781a68 100644 --- a/interfaces/_internal_.DeputyPageToolbarOptions.html +++ b/interfaces/_internal_.DeputyPageToolbarOptions.html @@ -1,4 +1,4 @@ -DeputyPageToolbarOptions | deputy

    Interface DeputyPageToolbarOptions

    interface DeputyPageToolbarOptions {
        caseId: number;
        caseTitle: string;
        enabledStatuses: ContributionSurveyRowStatus[];
        forceRevision?: boolean;
        nextRevision: number | false;
        revision?: number;
        revisionStatus?: boolean;
        rowType: "detailed" | "pageonly";
        status: ContributionSurveyRowStatus;
        title: string;
    }

    Hierarchy

    Properties

    caseId +DeputyPageToolbarOptions | deputy

    Interface DeputyPageToolbarOptions

    interface DeputyPageToolbarOptions {
        caseId: number;
        caseTitle: string;
        enabledStatuses: ContributionSurveyRowStatus[];
        forceRevision?: boolean;
        nextRevision: number | false;
        revision?: number;
        revisionStatus?: boolean;
        rowType: "detailed" | "pageonly";
        status: ContributionSurveyRowStatus;
        title: string;
    }

    Hierarchy

    Properties

    caseId: number

    The ID of this case.

    -
    caseTitle: string

    The title of the case. This can be used later to build a DeputyCase.

    -
    enabledStatuses: ContributionSurveyRowStatus[]

    A list of the enabled statuses for this page on the case page.

    -
    forceRevision?: boolean

    Whether to force showing the "revision" section even without a revision. This +

    caseTitle: string

    The title of the case. This can be used later to build a DeputyCase.

    +
    enabledStatuses: ContributionSurveyRowStatus[]

    A list of the enabled statuses for this page on the case page.

    +
    forceRevision?: boolean

    Whether to force showing the "revision" section even without a revision. This is used post-render, when the toolbar is already in the DOM, and the use switches away to a different diff that is not in the scope of the page. Tools will be accessible, but the revision completion checkbox will not be shown.

    -
    nextRevision: number | false

    The first unassessed revision of the page. Returns false if all revisions for +

    nextRevision: number | false

    The first unassessed revision of the page. Returns false if all revisions for the page have been assessed.

    -
    revision?: number

    The revision to use. Helpful when overriding the revision being previewed, such as when +

    revision?: number

    The revision to use. Helpful when overriding the revision being previewed, such as when the revision that the case targets is on the left side of the page.

    -
    revisionStatus?: boolean

    The status of the revision on the case page. Only enabled if the revision +

    revisionStatus?: boolean

    The status of the revision on the case page. Only enabled if the revision parameter was supplied in the request.

    -
    rowType: "detailed" | "pageonly"
      +
    rowType: "detailed" | "pageonly"
    • detailed refers to a row with both page and revision information.
    • pageonly refers to a row with only a page and no revision information.
    -

    The currently-selected status of this page on the case page.

    -
    title: string

    The title of the page requested. This is used in situations where the page title +

    The currently-selected status of this page on the case page.

    +
    title: string

    The title of the page requested. This is used in situations where the page title is different from the title in the row (such as in moved or histmerged pages).

    -
    \ No newline at end of file +
    diff --git a/interfaces/_internal_.DeputyRevisionStatusUpdateMessage.html b/interfaces/_internal_.DeputyRevisionStatusUpdateMessage.html index 676dd2cc..0dfdcc25 100644 --- a/interfaces/_internal_.DeputyRevisionStatusUpdateMessage.html +++ b/interfaces/_internal_.DeputyRevisionStatusUpdateMessage.html @@ -1,8 +1,8 @@ -DeputyRevisionStatusUpdateMessage | deputy

    Interface DeputyRevisionStatusUpdateMessage

    interface DeputyRevisionStatusUpdateMessage {
        caseId: number;
        nextRevision: number;
        page: string;
        revision: number;
        status: boolean;
        type: "revisionStatusUpdate";
    }

    Properties

    caseId +DeputyRevisionStatusUpdateMessage | deputy

    Interface DeputyRevisionStatusUpdateMessage

    interface DeputyRevisionStatusUpdateMessage {
        caseId: number;
        nextRevision: number;
        page: string;
        revision: number;
        status: boolean;
        type: "revisionStatusUpdate";
    }

    Properties

    caseId: number
    nextRevision: number

    The first unassessed revision of the page.

    -
    page: string
    revision: number
    status: boolean
    type: "revisionStatusUpdate"
    \ No newline at end of file +

    Properties

    caseId: number
    nextRevision: number

    The first unassessed revision of the page.

    +
    page: string
    revision: number
    status: boolean
    type
    diff --git a/interfaces/_internal_.DeputySessionClosedMessage.html b/interfaces/_internal_.DeputySessionClosedMessage.html index 3a701118..8173a54b 100644 --- a/interfaces/_internal_.DeputySessionClosedMessage.html +++ b/interfaces/_internal_.DeputySessionClosedMessage.html @@ -1,5 +1,5 @@ DeputySessionClosedMessage | deputy

    Interface DeputySessionClosedMessage

    Broadcast whenever a session is closed. This allows tabs that also have an active session to re-render options for starting a session.

    -
    interface DeputySessionClosedMessage {
        caseId: number;
        type: "sessionClosed";
    }

    Properties

    interface DeputySessionClosedMessage {
        caseId: number;
        type: "sessionClosed";
    }

    Properties

    Properties

    caseId: number
    type: "sessionClosed"
    \ No newline at end of file +

    Properties

    caseId: number
    type
    diff --git a/interfaces/_internal_.DeputySessionReadyMessage.html b/interfaces/_internal_.DeputySessionReadyMessage.html index ac951e7a..4fde694d 100644 --- a/interfaces/_internal_.DeputySessionReadyMessage.html +++ b/interfaces/_internal_.DeputySessionReadyMessage.html @@ -1,6 +1,6 @@ DeputySessionReadyMessage | deputy

    Interface DeputySessionReadyMessage

    Broadcast whenever a session is ready for use. This means row status requests other listeners have been attached and are ready for use.

    TODO: Currently unused. To be worked on later.

    -
    interface DeputySessionReadyMessage {
        caseId: number;
        type: "sessionReady";
    }

    Properties

    interface DeputySessionReadyMessage {
        caseId: number;
        type: "sessionReady";
    }

    Properties

    Properties

    caseId: number
    type: "sessionReady"
    \ No newline at end of file +

    Properties

    caseId: number
    type
    diff --git a/interfaces/_internal_.DeputySessionRequestMessage.html b/interfaces/_internal_.DeputySessionRequestMessage.html index f9e73241..004b1c46 100644 --- a/interfaces/_internal_.DeputySessionRequestMessage.html +++ b/interfaces/_internal_.DeputySessionRequestMessage.html @@ -1,5 +1,5 @@ DeputySessionRequestMessage | deputy

    Interface DeputySessionRequestMessage

    Used to request for session information. Broadcast prior to actual session execution to avoid session conflicts. If no sessions are active, a timeout (default of 500ms) is expected to expire, meaning there are no active sessions.

    -
    interface DeputySessionRequestMessage {
        type: "sessionRequest";
    }

    Properties

    Properties

    type: "sessionRequest"
    \ No newline at end of file +
    interface DeputySessionRequestMessage {
        type: "sessionRequest";
    }

    Properties

    Properties

    type
    diff --git a/interfaces/_internal_.DeputySessionResponseMessage.html b/interfaces/_internal_.DeputySessionResponseMessage.html index 550a78ba..fe7cab41 100644 --- a/interfaces/_internal_.DeputySessionResponseMessage.html +++ b/interfaces/_internal_.DeputySessionResponseMessage.html @@ -1,6 +1,6 @@ DeputySessionResponseMessage | deputy

    Interface DeputySessionResponseMessage

    Response to DeputyPageStatusRequestMessage. Contains current case page ID and active sessions.

    -
    interface DeputySessionResponseMessage {
        caseId: number;
        sections: string[];
        type: "sessionResponse";
    }

    Properties

    interface DeputySessionResponseMessage {
        caseId: number;
        sections: string[];
        type: "sessionResponse";
    }

    Properties

    Properties

    caseId: number
    sections: string[]
    type: "sessionResponse"
    \ No newline at end of file +

    Properties

    caseId: number
    sections: string[]
    type
    diff --git a/interfaces/_internal_.DeputySessionStartedMessage.html b/interfaces/_internal_.DeputySessionStartedMessage.html index 861c7aad..49ccd77a 100644 --- a/interfaces/_internal_.DeputySessionStartedMessage.html +++ b/interfaces/_internal_.DeputySessionStartedMessage.html @@ -1,5 +1,5 @@ DeputySessionStartedMessage | deputy

    Interface DeputySessionStartedMessage

    Broadcast whenever a session is started. This hides session-starting UI elements from other tabs to avoid session conflicts.

    -
    interface DeputySessionStartedMessage {
        caseId: number;
        type: "sessionStarted";
    }

    Properties

    interface DeputySessionStartedMessage {
        caseId: number;
        type: "sessionStarted";
    }

    Properties

    Properties

    caseId: number
    type: "sessionStarted"
    \ No newline at end of file +

    Properties

    caseId: number
    type
    diff --git a/interfaces/_internal_.DeputySessionStopMessage.html b/interfaces/_internal_.DeputySessionStopMessage.html index b031b41f..60f11fc1 100644 --- a/interfaces/_internal_.DeputySessionStopMessage.html +++ b/interfaces/_internal_.DeputySessionStopMessage.html @@ -1,3 +1,3 @@ DeputySessionStopMessage | deputy

    Interface DeputySessionStopMessage

    Asks the currently-active Deputy session to stop and close immediately.

    -
    interface DeputySessionStopMessage {
        type: "sessionStop";
    }

    Properties

    Properties

    type: "sessionStop"
    \ No newline at end of file +
    interface DeputySessionStopMessage {
        type: "sessionStop";
    }

    Properties

    Properties

    type
    diff --git a/interfaces/_internal_.DeputyTagCacheStore.html b/interfaces/_internal_.DeputyTagCacheStore.html index cbe64155..d6b5eba4 100644 --- a/interfaces/_internal_.DeputyTagCacheStore.html +++ b/interfaces/_internal_.DeputyTagCacheStore.html @@ -1,3 +1,3 @@ -DeputyTagCacheStore | deputy

    Interface DeputyTagCacheStore

    interface DeputyTagCacheStore {
        key: string;
        value: {
            key: string;
            value: string;
        };
    }

    Properties

    key +DeputyTagCacheStore | deputy

    Interface DeputyTagCacheStore

    interface DeputyTagCacheStore {
        key: string;
        value: {
            key: string;
            value: string;
        };
    }

    Properties

    Properties

    key: string
    value: {
        key: string;
        value: string;
    }
    \ No newline at end of file +

    Properties

    key: string
    value: {
        key: string;
        value: string;
    }
    diff --git a/interfaces/_internal_.DeputyUIElement.html b/interfaces/_internal_.DeputyUIElement.html index 2c851c36..4a52dce9 100644 --- a/interfaces/_internal_.DeputyUIElement.html +++ b/interfaces/_internal_.DeputyUIElement.html @@ -1,7 +1,7 @@ -DeputyUIElement | deputy

    Interface DeputyUIElement

    interface DeputyUIElement {
        prepare?: (() => PromiseOrNot<boolean | void>);
        render(): HTMLElement;
    }

    Implemented by

    Properties

    prepare? +DeputyUIElement | deputy

    Interface DeputyUIElement

    interface DeputyUIElement {
        prepare?: (() => PromiseOrNot<boolean | void>);
        render(): HTMLElement;
    }

    Implemented by

    Properties

    Methods

    Properties

    prepare?: (() => PromiseOrNot<boolean | void>)

    Prepare for element injection. This entails changing a few things, such as hiding MediaWiki-rendered components, etc.

    -

    Methods

    Methods

    \ No newline at end of file +

    Returns HTMLElement

    diff --git a/interfaces/_internal_.DeputyUserConfigurationUpdate.html b/interfaces/_internal_.DeputyUserConfigurationUpdate.html index 49ce9115..51ee0184 100644 --- a/interfaces/_internal_.DeputyUserConfigurationUpdate.html +++ b/interfaces/_internal_.DeputyUserConfigurationUpdate.html @@ -1,4 +1,4 @@ -DeputyUserConfigurationUpdate | deputy

    Interface DeputyUserConfigurationUpdate

    interface DeputyUserConfigurationUpdate {
        config: any;
        type: "userConfigUpdate";
    }

    Properties

    config +DeputyUserConfigurationUpdate | deputy

    Interface DeputyUserConfigurationUpdate

    interface DeputyUserConfigurationUpdate {
        config: any;
        type: "userConfigUpdate";
    }

    Properties

    Properties

    config: any

    The new configuration.

    -
    type: "userConfigUpdate"
    \ No newline at end of file +
    type
    diff --git a/interfaces/_internal_.DeputyWikiConfigurationUpdate.html b/interfaces/_internal_.DeputyWikiConfigurationUpdate.html index 3b049e37..7d6fd54d 100644 --- a/interfaces/_internal_.DeputyWikiConfigurationUpdate.html +++ b/interfaces/_internal_.DeputyWikiConfigurationUpdate.html @@ -1,4 +1,4 @@ -DeputyWikiConfigurationUpdate | deputy

    Interface DeputyWikiConfigurationUpdate

    interface DeputyWikiConfigurationUpdate {
        config: Omit<WikiPageConfiguration, "title"> & {
            title: string;
        };
        type: "wikiConfigUpdate";
    }

    Properties

    config +DeputyWikiConfigurationUpdate | deputy

    Interface DeputyWikiConfigurationUpdate

    interface DeputyWikiConfigurationUpdate {
        config: Omit<WikiPageConfiguration, "title"> & {
            title: string;
        };
        type: "wikiConfigUpdate";
    }

    Properties

    Properties

    config: Omit<WikiPageConfiguration, "title"> & {
        title: string;
    }

    The new configuration.

    -
    type: "wikiConfigUpdate"
    \ No newline at end of file +
    type
    diff --git a/interfaces/_internal_.DiffInfo.html b/interfaces/_internal_.DiffInfo.html index f384e57d..c02e5ee7 100644 --- a/interfaces/_internal_.DiffInfo.html +++ b/interfaces/_internal_.DiffInfo.html @@ -1,4 +1,4 @@ -DiffInfo | deputy

    Interface DiffInfo

    interface DiffInfo {
        diff?: string | number;
        oldid?: string | number;
        title?: string;
    }

    Properties

    diff? +DiffInfo | deputy

    Interface DiffInfo

    interface DiffInfo {
        diff?: string | number;
        oldid?: string | number;
        title?: string;
    }

    Properties

    Properties

    diff?: string | number
    oldid?: string | number
    title?: string
    \ No newline at end of file +

    Properties

    diff?: string | number
    oldid?: string | number
    title?: string
    diff --git a/interfaces/_internal_.DisplayOptionsBase.html b/interfaces/_internal_.DisplayOptionsBase.html index 5c26fc65..d928c38a 100644 --- a/interfaces/_internal_.DisplayOptionsBase.html +++ b/interfaces/_internal_.DisplayOptionsBase.html @@ -1,13 +1,13 @@ -DisplayOptionsBase | deputy

    Interface DisplayOptionsBase

    interface DisplayOptionsBase {
        description?: string;
        disabled?: string | boolean | ((config: UserConfiguration) => string | boolean);
        name?: string;
        readOnly?: boolean;
    }

    Hierarchy (view full)

    Properties

    description? +DisplayOptionsBase | deputy

    Interface DisplayOptionsBase

    interface DisplayOptionsBase {
        description?: string;
        disabled?: string | boolean | ((config: UserConfiguration) => string | boolean);
        name?: string;
        readOnly?: boolean;
    }

    Hierarchy (view full)

    Properties

    description?: string

    Overridden description. DO NOT USE unless there is good reason to.

    By default, the description will be taken from internationalization strings. Its key follows the format "deputy.setting.user...description".

    -
    disabled?: string | boolean | ((config: UserConfiguration) => string | boolean)

    Whether an option should be disabled or not.

    -
    name?: string

    Overridden name. DO NOT USE unless there is good reason to.

    +
    disabled?: string | boolean | ((config: UserConfiguration) => string | boolean)

    Whether an option should be disabled or not.

    +
    name?: string

    Overridden name. DO NOT USE unless there is good reason to.

    By default, the name will be taken from internationalization strings. Its key follows the format "deputy.setting.user...name".

    -
    readOnly?: boolean

    Whether the value is read-only or not.

    -
    \ No newline at end of file +
    readOnly?: boolean

    Whether the value is read-only or not.

    +
    diff --git a/interfaces/_internal_.ExpandedRevisionData.html b/interfaces/_internal_.ExpandedRevisionData.html index fc5f7a32..b1221b25 100644 --- a/interfaces/_internal_.ExpandedRevisionData.html +++ b/interfaces/_internal_.ExpandedRevisionData.html @@ -1,4 +1,4 @@ -ExpandedRevisionData | deputy

    Interface ExpandedRevisionData

    interface ExpandedRevisionData {
        comment: string;
        commenthidden?: true;
        diffsize: number;
        minor: boolean;
        page: {
            ns: number;
            pageid: number;
            title: string;
        };
        parentid: number;
        parsedcomment?: string;
        revid: number;
        size: number;
        tags: string[];
        texthidden?: true;
        timestamp: string;
        user: string;
        userhidden?: true;
    }

    Hierarchy (view full)

    Implemented by

    Properties

    comment +ExpandedRevisionData | deputy

    Interface ExpandedRevisionData

    interface ExpandedRevisionData {
        comment: string;
        commenthidden?: true;
        diffsize: number;
        minor: boolean;
        page: {
            ns: number;
            pageid: number;
            title: string;
        };
        parentid: number;
        parsedcomment?: string;
        revid: number;
        size: number;
        tags: string[];
        texthidden?: true;
        timestamp: string;
        user: string;
        userhidden?: true;
    }

    Hierarchy (view full)

    Implemented by

    Properties

    comment: string
    commenthidden?: true
    diffsize: number
    minor: boolean
    page: {
        ns: number;
        pageid: number;
        title: string;
    }
    parentid: number
    parsedcomment?: string
    revid: number
    size: number
    tags: string[]
    texthidden?: true
    timestamp: string
    user: string
    userhidden?: true
    \ No newline at end of file +

    Properties

    comment: string
    commenthidden
    diffsize: number
    minor: boolean
    page: {
        ns: number;
        pageid: number;
        title: string;
    }
    parentid: number
    parsedcomment?: string
    revid: number
    size: number
    tags: string[]
    texthidden
    timestamp: string
    user: string
    userhidden
    diff --git a/interfaces/_internal_.FullCopyrightProblemsListingData.html b/interfaces/_internal_.FullCopyrightProblemsListingData.html index 25c02306..c32f354f 100644 --- a/interfaces/_internal_.FullCopyrightProblemsListingData.html +++ b/interfaces/_internal_.FullCopyrightProblemsListingData.html @@ -1,6 +1,6 @@ FullCopyrightProblemsListingData | deputy

    Interface FullCopyrightProblemsListingData

    Represents a listing on a CPN page where the listing is substituted from the {{article-cv}} template.

    -
    interface FullCopyrightProblemsListingData {
        anchor: HTMLSpanElement;
        basic: false;
        element: HTMLAnchorElement;
        i?: number;
        id: string;
        listingPage: Title;
        plainlinks: HTMLSpanElement;
        title: Title;
    }

    Properties

    interface FullCopyrightProblemsListingData {
        anchor: HTMLSpanElement;
        basic: false;
        element: HTMLAnchorElement;
        i?: number;
        id: string;
        listingPage: Title;
        plainlinks: HTMLSpanElement;
        title: Title;
    }

    Properties

    Properties

    basic: false
    i?: number
    id: string
    listingPage: Title
    plainlinks: HTMLSpanElement
    title: Title
    \ No newline at end of file +

    Properties

    basic
    i?: number
    id: string
    listingPage: Title
    plainlinks: HTMLSpanElement
    title: Title
    diff --git a/interfaces/_internal_.HiddenDisplayOptions.html b/interfaces/_internal_.HiddenDisplayOptions.html index 6c7ab0d8..cc5294c9 100644 --- a/interfaces/_internal_.HiddenDisplayOptions.html +++ b/interfaces/_internal_.HiddenDisplayOptions.html @@ -1,4 +1,4 @@ -HiddenDisplayOptions | deputy

    Interface HiddenDisplayOptions

    interface HiddenDisplayOptions {
        description?: string;
        disabled?: string | boolean | ((config: UserConfiguration) => string | boolean);
        hidden?: true;
        name?: string;
        readOnly?: boolean;
        type?: never;
    }

    Hierarchy (view full)

    Properties

    description? +HiddenDisplayOptions | deputy

    Interface HiddenDisplayOptions

    interface HiddenDisplayOptions {
        description?: string;
        disabled?: string | boolean | ((config: UserConfiguration) => string | boolean);
        hidden?: true;
        name?: string;
        readOnly?: boolean;
        type?: never;
    }

    Hierarchy (view full)

    Properties

    description? disabled? hidden? name? @@ -7,11 +7,11 @@

    Properties

    description?: string

    Overridden description. DO NOT USE unless there is good reason to.

    By default, the description will be taken from internationalization strings. Its key follows the format "deputy.setting.user...description".

    -
    disabled?: string | boolean | ((config: UserConfiguration) => string | boolean)

    Whether an option should be disabled or not.

    -
    hidden?: true

    Whether an option should be hidden or not. If an option is hidden, it will not +

    disabled?: string | boolean | ((config: UserConfiguration) => string | boolean)

    Whether an option should be disabled or not.

    +
    hidden

    Whether an option should be hidden or not. If an option is hidden, it will not show up in the settings interface at all.

    -
    name?: string

    Overridden name. DO NOT USE unless there is good reason to.

    +
    name?: string

    Overridden name. DO NOT USE unless there is good reason to.

    By default, the name will be taken from internationalization strings. Its key follows the format "deputy.setting.user...name".

    -
    readOnly?: boolean

    Whether the value is read-only or not.

    -
    type?: never
    \ No newline at end of file +
    readOnly?: boolean

    Whether the value is read-only or not.

    +
    type?: never
    diff --git a/interfaces/_internal_.RawBackwardsCopyTemplateRow.html b/interfaces/_internal_.RawBackwardsCopyTemplateRow.html index 7625c1fe..55b973e8 100644 --- a/interfaces/_internal_.RawBackwardsCopyTemplateRow.html +++ b/interfaces/_internal_.RawBackwardsCopyTemplateRow.html @@ -1,6 +1,6 @@ RawBackwardsCopyTemplateRow | deputy

    Interface RawBackwardsCopyTemplateRow

    Represents a row in the {{copied}} template. These should represent their actual values instead of raw parameters from the template.

    -
    interface RawBackwardsCopyTemplateRow {
        articlename?: string;
        author?: string;
        authorlist?: string;
        date?: string;
        display_authors?: string;
        monthday?: string;
        org?: string;
        title?: string;
        url?: string;
        year?: string;
    }

    Implemented by

    Properties

    interface RawBackwardsCopyTemplateRow {
        articlename?: string;
        author?: string;
        authorlist?: string;
        date?: string;
        display_authors?: string;
        monthday?: string;
        org?: string;
        title?: string;
        url?: string;
        year?: string;
    }

    Implemented by

    Properties

    Properties

    articlename?: string

    Alias of title.

    -
    author?: string

    Used to input an author.

    -
    authorlist?: string

    Used to input a list of authors, usually separated by a semicolon. Overrides author.

    -
    date?: string

    The date of publishing for this publication.

    -
    display_authors?: string

    Whether to display authors or not.

    -
    monthday?: string

    The month and day of publishing for this publication.

    -
    org?: string

    The publisher of the publication.

    -
    title?: string

    The name of the article published.

    -
    url?: string

    The URL of the publication.

    -
    year?: string

    The year of publication for this publication.

    -
    \ No newline at end of file +
    author?: string

    Used to input an author.

    +
    authorlist?: string

    Used to input a list of authors, usually separated by a semicolon. Overrides author.

    +
    date?: string

    The date of publishing for this publication.

    +
    display_authors?: string

    Whether to display authors or not.

    +
    monthday?: string

    The month and day of publishing for this publication.

    +
    org?: string

    The publisher of the publication.

    +
    title?: string

    The name of the article published.

    +
    url?: string

    The URL of the publication.

    +
    year?: string

    The year of publication for this publication.

    +
    diff --git a/interfaces/_internal_.RawContributionSurveyRow.html b/interfaces/_internal_.RawContributionSurveyRow.html index 0dac9ef2..2a6a42a8 100644 --- a/interfaces/_internal_.RawContributionSurveyRow.html +++ b/interfaces/_internal_.RawContributionSurveyRow.html @@ -1,58 +1,58 @@ -RawContributionSurveyRow | deputy

    Interface RawContributionSurveyRow

    interface RawContributionSurveyRow {
        bullet: string;
        comments?: string;
        creation?: boolean;
        diffTemplate: string;
        diffs?: string;
        diffsTemplate?: string;
        extras?: string;
        page: string;
        revidText: Record<number, string>;
        revids: number[];
        type: "detailed" | "pageonly";
    }

    Properties

    bullet +RawContributionSurveyRow | deputy

    Interface RawContributionSurveyRow

    interface RawContributionSurveyRow {
        bullet: string;
        comments?: string;
        creation?: boolean;
        diffs?: string;
        diffsTemplate?: string;
        diffTemplate: string;
        extras?: string;
        page: string;
        revids: number[];
        revidText: Record<number, string>;
        type: "detailed" | "pageonly";
    }

    Properties

    bullet: string

    The bullet and all trailing whitespace. This matches the starting bullet (an asterisk) and the trailing whitespace. The whitespace is also included to avoid modifying rows that don't follow the format, as this needlessly modifies the rows.

    -
    `"* "`
    +
    `"* "`
     
    -
    comments?: string

    The comments attached to the diff. This includes the comment in its +

    comments?: string

    The comments attached to the diff. This includes the comment in its entirety and the signature of the user. Leading space is not included.

    -
    `"{{x}} [[User:Foo|Foo]] ([[User talk:Foo|talk]]) 00:00, 1 January 2000 (UTC)"`
    +
    `"{{x}} [[User:Foo|Foo]] ([[User talk:Foo|talk]]) 00:00, 1 January 2000 (UTC)"`
     
    -
    creation?: boolean

    true if one of the diffs include creation. This appends a '''N''' at the +

    creation?: boolean

    true if one of the diffs include creation. This appends a '''N''' at the start of the row text when built. The space is not removable (as it would cause issues with the link display to begin with).

    -
    diffTemplate: string

    Template to use for rebuilding row revisions.

    -

    $1 - Revision ID -$2 - Diff size

    -
    diffs?: string

    A string containing all diff links in the row. This includes all opening and +

    diffs?: string

    A string containing all diff links in the row. This includes all opening and closing link brackets.

    -
    `"[[Special:Diff/12345|(+420)]][[Special:Diff/12346|(+69)]]"`
    +
    `"[[Special:Diff/12345|(+420)]][[Special:Diff/12346|(+69)]]"`
     
    -
    diffsTemplate?: string

    Template to use for rebuilding the entirety of the diffs section.

    +
    diffsTemplate?: string

    Template to use for rebuilding the entirety of the diffs section.

    $1 - Diff links

    -
    "$1"
    +
    extras?: string

    Extra information attached to the diff. This usually comes before or after +

    diffTemplate: string

    Template to use for rebuilding row revisions.

    +

    $1 - Revision ID +$2 - Diff size

    +
    extras?: string

    Extra information attached to the diff. This usually comes before or after the colon, depending on the year the case was opened, including the actual colon. In practice, this string contains any text between the page title and the diffs.

    -
    `": (1 edits, 1 major, +10929)"`, `"(3 edits):"`
    +
    `": (1 edits, 1 major, +10929)"`, `"(3 edits):"`
     
    -
    page: string

    The page that the row refers to. This does not include the wikilink brackets. +

    page: string

    The page that the row refers to. This does not include the wikilink brackets. Page names include everything inside the brackets, meaning any leading colons from interwiki links or category/file links (e.g. [[:Category:Foo]]) are also included. The main ContributionSurveyRow class should be able to handle those page names.

    -
    `"List of characters in the Breaking Bad franchise"`
    +
    `"List of characters in the Breaking Bad franchise"`
     
    -
    revidText: Record<number, string>

    A map of all revision IDs to their apparent size. This is the diff size +

    revids: number[]

    An array of all revision IDs parsed from the diffs.

    +
    revidText: Record<number, string>

    A map of all revision IDs to their apparent size. This is the diff size provided in wikitext.

    -
    revids: number[]

    An array of all revision IDs parsed from the diffs.

    -
    type: "detailed" | "pageonly"
    \ No newline at end of file +
    type: "detailed" | "pageonly"
    diff --git a/interfaces/_internal_.RawCopiedTemplateRow.html b/interfaces/_internal_.RawCopiedTemplateRow.html index 2502ca82..33f483f7 100644 --- a/interfaces/_internal_.RawCopiedTemplateRow.html +++ b/interfaces/_internal_.RawCopiedTemplateRow.html @@ -1,6 +1,6 @@ RawCopiedTemplateRow | deputy

    Interface RawCopiedTemplateRow

    Represents a row in the {{copied}} template. These should represent their actual values instead of raw parameters from the template.

    -
    interface RawCopiedTemplateRow {
        afd?: string;
        date?: string;
        diff?: string;
        from?: string;
        from_oldid?: string;
        merge?: string;
        to?: string;
        to_diff?: string;
        to_oldid?: string;
    }

    Implemented by

    Properties

    interface RawCopiedTemplateRow {
        afd?: string;
        date?: string;
        diff?: string;
        from?: string;
        from_oldid?: string;
        merge?: string;
        to?: string;
        to_diff?: string;
        to_oldid?: string;
    }

    Implemented by

    Properties

    afd? date? diff? from? @@ -10,12 +10,12 @@ to_diff? to_oldid?

    Properties

    afd?: string

    Whether or not this copy was made from the results of an AfD discussion.

    -
    date?: string

    The date when the copy was performed.

    -
    diff?: string

    The URL of the copying diff. Overrides to_diff and to_oldid.

    -
    from?: string

    The original article.

    -
    from_oldid?: string

    The revision ID from which the content was copied from.

    -
    merge?: string

    Whether or not this copy was made from the results of a merge discussion.

    -
    to?: string

    The article that content was copied into.

    -
    to_diff?: string

    The revision number of the copying diff.

    -
    to_oldid?: string

    The oldid of the copying diff (for multiple edits).

    -
    \ No newline at end of file +
    date?: string

    The date when the copy was performed.

    +
    diff?: string

    The URL of the copying diff. Overrides to_diff and to_oldid.

    +
    from?: string

    The original article.

    +
    from_oldid?: string

    The revision ID from which the content was copied from.

    +
    merge?: string

    Whether or not this copy was made from the results of a merge discussion.

    +
    to?: string

    The article that content was copied into.

    +
    to_diff?: string

    The revision number of the copying diff.

    +
    to_oldid?: string

    The oldid of the copying diff (for multiple edits).

    +
    diff --git a/interfaces/_internal_.RawMergedFromTemplate.html b/interfaces/_internal_.RawMergedFromTemplate.html index 2c6fb984..8645a8ad 100644 --- a/interfaces/_internal_.RawMergedFromTemplate.html +++ b/interfaces/_internal_.RawMergedFromTemplate.html @@ -1,15 +1,15 @@ -RawMergedFromTemplate | deputy

    Interface RawMergedFromTemplate

    interface RawMergedFromTemplate {
        afd?: string;
        article: string;
        date: string;
        talk?: string;
        target?: string;
    }

    Implemented by

    Properties

    afd? +RawMergedFromTemplate | deputy

    Interface RawMergedFromTemplate

    interface RawMergedFromTemplate {
        afd?: string;
        article: string;
        date: string;
        talk?: string;
        target?: string;
    }

    Implemented by

    Properties

    afd?: string

    If the merge was the result of an AfD, this should be the full page title of the AfD discussion.

    -
    "Wikipedia:Articles for deletion/Wikipedia"
    +
    "Wikipedia:Articles for deletion/Wikipedia"
     
    -
    article: string

    The article that content from the target page was originally from.

    -
    date: string

    The date of the merge

    -
    talk?: string

    Whether to link to the original article's talk page or not.

    -
    target?: string

    The target of the merge.

    -
    \ No newline at end of file +
    article: string

    The article that content from the target page was originally from.

    +
    date: string

    The date of the merge

    +
    talk?: string

    Whether to link to the original article's talk page or not.

    +
    target?: string

    The target of the merge.

    +
    diff --git a/interfaces/_internal_.RawMergedToTemplate.html b/interfaces/_internal_.RawMergedToTemplate.html index 9c35421e..118002d3 100644 --- a/interfaces/_internal_.RawMergedToTemplate.html +++ b/interfaces/_internal_.RawMergedToTemplate.html @@ -1,7 +1,7 @@ -RawMergedToTemplate | deputy

    Interface RawMergedToTemplate

    interface RawMergedToTemplate {
        date: string;
        small?: string;
        to: string;
    }

    Implemented by

    Properties

    date +RawMergedToTemplate | deputy

    Interface RawMergedToTemplate

    interface RawMergedToTemplate {
        date: string;
        small?: string;
        to: string;
    }

    Implemented by

    Properties

    Properties

    date: string

    The date of the merge

    -
    small?: string

    Whether the template should be small or not

    -
    to: string

    The article that content from the source page was merged into.

    -
    \ No newline at end of file +
    small?: string

    Whether the template should be small or not

    +
    to: string

    The article that content from the source page was merged into.

    +
    diff --git a/interfaces/_internal_.RawSplitArticleTemplateRow.html b/interfaces/_internal_.RawSplitArticleTemplateRow.html index 26ca7854..de72776f 100644 --- a/interfaces/_internal_.RawSplitArticleTemplateRow.html +++ b/interfaces/_internal_.RawSplitArticleTemplateRow.html @@ -1,5 +1,5 @@ -RawSplitArticleTemplateRow | deputy

    Interface RawSplitArticleTemplateRow

    interface RawSplitArticleTemplateRow {
        date?: string;
        diff?: string;
        from_oldid?: string;
        to?: string;
    }

    Implemented by

    Properties

    date? +RawSplitArticleTemplateRow | deputy

    Interface RawSplitArticleTemplateRow

    interface RawSplitArticleTemplateRow {
        date?: string;
        diff?: string;
        from_oldid?: string;
        to?: string;
    }

    Implemented by

    Properties

    date?: string
    diff?: string
    from_oldid?: string
    to?: string
    \ No newline at end of file +

    Properties

    date?: string
    diff?: string
    from_oldid?: string
    to?: string
    diff --git a/interfaces/_internal_.RawTranslatedPageTemplate.html b/interfaces/_internal_.RawTranslatedPageTemplate.html index 32d6a3d8..3ac46145 100644 --- a/interfaces/_internal_.RawTranslatedPageTemplate.html +++ b/interfaces/_internal_.RawTranslatedPageTemplate.html @@ -1,4 +1,4 @@ -RawTranslatedPageTemplate | deputy

    Interface RawTranslatedPageTemplate

    interface RawTranslatedPageTemplate {
        comments: string;
        insertversion: string;
        lang: string;
        page: string;
        partial: string;
        section: string;
        small: string;
        version: string;
    }

    Implemented by

    Properties

    comments +RawTranslatedPageTemplate | deputy

    Interface RawTranslatedPageTemplate

    interface RawTranslatedPageTemplate {
        comments: string;
        insertversion: string;
        lang: string;
        page: string;
        partial: string;
        section: string;
        small: string;
        version: string;
    }

    Implemented by

    Properties

    Properties

    comments: string

    Additional pertinent information. Not period-appended. Actual parameter name is '3'.

    -
    insertversion: string

    The oldid for the subject page (the page that translated content was copied into) +

    insertversion: string

    The oldid for the subject page (the page that translated content was copied into) at the time translation was done.

    -
    lang: string

    Language code of the source page. Actual parameter name is '1'.

    -
    page: string

    Title of the source page. Actual parameter name is '2'.

    -
    partial: string

    Supplied with any value to indicate that the translation was partial.

    -
    section: string

    If only a section was translated, the name of the section.

    -
    small: string

    Whether to enable or disable small mode. Defaults to yes.

    -
    version: string

    The oldid for the source page at the time translation was done.

    -
    \ No newline at end of file +
    lang: string

    Language code of the source page. Actual parameter name is '1'.

    +
    page: string

    Title of the source page. Actual parameter name is '2'.

    +
    partial: string

    Supplied with any value to indicate that the translation was partial.

    +
    section: string

    If only a section was translated, the name of the section.

    +
    small: string

    Whether to enable or disable small mode. Defaults to yes.

    +
    version: string

    The oldid for the source page at the time translation was done.

    +
    diff --git a/interfaces/_internal_.RevisionData.html b/interfaces/_internal_.RevisionData.html index 7b3d87f6..3b7fef15 100644 --- a/interfaces/_internal_.RevisionData.html +++ b/interfaces/_internal_.RevisionData.html @@ -1,4 +1,4 @@ -RevisionData | deputy

    Interface RevisionData

    interface RevisionData {
        comment: string;
        commenthidden?: true;
        minor: boolean;
        parentid: number;
        revid: number;
        size: number;
        tags: string[];
        texthidden?: true;
        timestamp: string;
        user: string;
        userhidden?: true;
    }

    Hierarchy (view full)

    Properties

    comment +RevisionData | deputy

    Interface RevisionData

    interface RevisionData {
        comment: string;
        commenthidden?: true;
        minor: boolean;
        parentid: number;
        revid: number;
        size: number;
        tags: string[];
        texthidden?: true;
        timestamp: string;
        user: string;
        userhidden?: true;
    }

    Hierarchy (view full)

    Properties

    comment: string
    commenthidden?: true
    minor: boolean
    parentid: number
    revid: number
    size: number
    tags: string[]
    texthidden?: true
    timestamp: string
    user: string
    userhidden?: true
    \ No newline at end of file +

    Properties

    comment: string
    commenthidden
    minor: boolean
    parentid: number
    revid: number
    size: number
    tags: string[]
    texthidden
    timestamp: string
    user: string
    userhidden
    diff --git a/interfaces/_internal_.SerializedCopyrightProblemsListingData.html b/interfaces/_internal_.SerializedCopyrightProblemsListingData.html index 7596b31d..7a5b9c31 100644 --- a/interfaces/_internal_.SerializedCopyrightProblemsListingData.html +++ b/interfaces/_internal_.SerializedCopyrightProblemsListingData.html @@ -1,7 +1,7 @@ -SerializedCopyrightProblemsListingData | deputy

    Interface SerializedCopyrightProblemsListingData

    interface SerializedCopyrightProblemsListingData {
        basic: boolean;
        i?: number;
        id: string;
        lines: {
            end: number;
            start: number;
        };
        listingPage: {
            fragment: string;
            namespace: number;
            title: string;
        };
        title: {
            fragment: string;
            namespace: number;
            title: string;
        };
    }

    Properties

    basic +SerializedCopyrightProblemsListingData | deputy

    Interface SerializedCopyrightProblemsListingData

    interface SerializedCopyrightProblemsListingData {
        basic: boolean;
        i?: number;
        id: string;
        lines: {
            end: number;
            start: number;
        };
        listingPage: {
            fragment: string;
            namespace: number;
            title: string;
        };
        title: {
            fragment: string;
            namespace: number;
            title: string;
        };
    }

    Properties

    basic: boolean
    i?: number
    id: string
    lines: {
        end: number;
        start: number;
    }
    listingPage: {
        fragment: string;
        namespace: number;
        title: string;
    }
    title: {
        fragment: string;
        namespace: number;
        title: string;
    }
    \ No newline at end of file +

    Properties

    basic: boolean
    i?: number
    id: string
    lines: {
        end: number;
        start: number;
    }
    listingPage: {
        fragment: string;
        namespace: number;
        title: string;
    }
    title: {
        fragment: string;
        namespace: number;
        title: string;
    }
    diff --git a/interfaces/_internal_.SessionInformation.html b/interfaces/_internal_.SessionInformation.html index 3f3f0bac..805be2f4 100644 --- a/interfaces/_internal_.SessionInformation.html +++ b/interfaces/_internal_.SessionInformation.html @@ -1,5 +1,5 @@ -SessionInformation | deputy

    Interface SessionInformation

    interface SessionInformation {
        casePageId: number;
        caseSections: string[];
    }

    Properties

    casePageId +SessionInformation | deputy

    Interface SessionInformation

    interface SessionInformation {
        casePageId: number;
        caseSections: string[];
    }

    Properties

    casePageId: number

    A specific case page, refers to a case in the DeputyCasePageCacheStore.

    -
    caseSections: string[]

    The sections which were last left open. Stored as heading IDs.

    -
    \ No newline at end of file +
    caseSections: string[]

    The sections which were last left open. Stored as heading IDs.

    +
    diff --git a/interfaces/_internal_.SinglePageWorkflowDialogData.html b/interfaces/_internal_.SinglePageWorkflowDialogData.html index 3f1d8a74..4e509729 100644 --- a/interfaces/_internal_.SinglePageWorkflowDialogData.html +++ b/interfaces/_internal_.SinglePageWorkflowDialogData.html @@ -1,8 +1,8 @@ -SinglePageWorkflowDialogData | deputy

    Interface SinglePageWorkflowDialogData

    interface SinglePageWorkflowDialogData {
        page: TitleLike;
        revid?: number;
        shadow?: boolean;
    }

    Properties

    page +SinglePageWorkflowDialogData | deputy

    Interface SinglePageWorkflowDialogData

    interface SinglePageWorkflowDialogData {
        page: TitleLike;
        revid?: number;
        shadow?: boolean;
    }

    Properties

    Properties

    page: TitleLike
    revid?: number
    shadow?: boolean

    If false, no shadowing options will be provided (hide content only, etc.)

    -
    true
    +

    Properties

    page: TitleLike
    revid?: number
    shadow?: boolean

    If false, no shadowing options will be provided (hide content only, etc.)

    +
    \ No newline at end of file +
    diff --git a/interfaces/_internal_.TemplateData.html b/interfaces/_internal_.TemplateData.html index 193e50f1..108e847f 100644 --- a/interfaces/_internal_.TemplateData.html +++ b/interfaces/_internal_.TemplateData.html @@ -1,9 +1,9 @@ TemplateData | deputy

    Interface TemplateData

    Represents a template in a data-mw attribute.

    -
    interface TemplateData {
        template: {
            i: number;
            params: {
                [key: string]: {
                    wt: string;
                };
            };
            target: {
                href: string;
                wt: string;
            };
        };
    }

    Properties

    interface TemplateData {
        template: {
            i: number;
            params: {
                [key: string]: {
                    wt: string;
                };
            };
            target: {
                href: string;
                wt: string;
            };
        };
    }

    Properties

    Properties

    template: {
        i: number;
        params: {
            [key: string]: {
                wt: string;
            };
        };
        target: {
            href: string;
            wt: string;
        };
    }

    Information on the template.

    Type declaration

    • i: number

      The identifier of this template within the MediaWikiData.

    • params: {
          [key: string]: {
              wt: string;
          };
      }

      The properties of this template.

      • [key: string]: {
            wt: string;
        }
        • wt: string
    • target: {
          href: string;
          wt: string;
      }

      The template target.

      • href: string

        A link to the template relative to $wgArticlePath.

      • wt: string

        The wikitext of the template.

        -
    \ No newline at end of file +
    diff --git a/interfaces/_internal_.VisibleDisplayOptions.html b/interfaces/_internal_.VisibleDisplayOptions.html index 60b55428..515e05f9 100644 --- a/interfaces/_internal_.VisibleDisplayOptions.html +++ b/interfaces/_internal_.VisibleDisplayOptions.html @@ -1,4 +1,4 @@ -VisibleDisplayOptions | deputy

    Interface VisibleDisplayOptions

    interface VisibleDisplayOptions {
        description?: string;
        disabled?: string | boolean | ((config: UserConfiguration) => string | boolean);
        extraOptions?: Record<string, any>;
        hidden?: false | ((config: UserConfiguration) => string | boolean);
        name?: string;
        readOnly?: boolean;
        type:
            | "number"
            | "page"
            | "text"
            | "checkbox"
            | "select"
            | "radio"
            | "checkboxes"
            | "code"
            | "unimplemented";
    }

    Hierarchy (view full)

    Properties

    description? +VisibleDisplayOptions | deputy

    Interface VisibleDisplayOptions

    interface VisibleDisplayOptions {
        description?: string;
        disabled?: string | boolean | ((config: UserConfiguration) => string | boolean);
        extraOptions?: Record<string, any>;
        hidden?: false | ((config: UserConfiguration) => string | boolean);
        name?: string;
        readOnly?: boolean;
        type:
            | "number"
            | "page"
            | "text"
            | "checkbox"
            | "select"
            | "radio"
            | "checkboxes"
            | "code"
            | "unimplemented";
    }

    Hierarchy (view full)

    Properties

    Properties

    description?: string

    Overridden description. DO NOT USE unless there is good reason to.

    By default, the description will be taken from internationalization strings. Its key follows the format "deputy.setting.user...description".

    -
    disabled?: string | boolean | ((config: UserConfiguration) => string | boolean)

    Whether an option should be disabled or not.

    -
    extraOptions?: Record<string, any>

    Extra options to pass to the UI element.

    -
    hidden?: false | ((config: UserConfiguration) => string | boolean)

    Whether an option should be hidden or not. If an option is hidden, it will not +

    disabled?: string | boolean | ((config: UserConfiguration) => string | boolean)

    Whether an option should be disabled or not.

    +
    extraOptions?: Record<string, any>

    Extra options to pass to the UI element.

    +
    hidden?: false | ((config: UserConfiguration) => string | boolean)

    Whether an option should be hidden or not. If an option is hidden, it will not show up in the settings interface at all.

    -
    name?: string

    Overridden name. DO NOT USE unless there is good reason to.

    +
    name?: string

    Overridden name. DO NOT USE unless there is good reason to.

    By default, the name will be taken from internationalization strings. Its key follows the format "deputy.setting.user...name".

    -
    readOnly?: boolean

    Whether the value is read-only or not.

    -
    type:
        | "number"
        | "page"
        | "text"
        | "checkbox"
        | "select"
        | "radio"
        | "checkboxes"
        | "code"
        | "unimplemented"

    The type of UI element to display.

    -
    \ No newline at end of file +
    readOnly?: boolean

    Whether the value is read-only or not.

    +
    type:
        | "number"
        | "page"
        | "text"
        | "checkbox"
        | "select"
        | "radio"
        | "checkboxes"
        | "code"
        | "unimplemented"

    The type of UI element to display.

    +
    diff --git a/interfaces/_internal_.WikiHeading.html b/interfaces/_internal_.WikiHeading.html index b2e03a4b..f86f3f9f 100644 --- a/interfaces/_internal_.WikiHeading.html +++ b/interfaces/_internal_.WikiHeading.html @@ -1,18 +1,18 @@ WikiHeading | deputy

    Interface WikiHeading

    A parsed wikitext heading.

    -
    interface WikiHeading {
        h: HTMLHeadingElement;
        id: string;
        level: number;
        root: Element;
        title: string;
        type: WikiHeadingType;
    }

    Properties

    h +
    interface WikiHeading {
        h: HTMLHeadingElement;
        id: string;
        level: number;
        root: Element;
        title: string;
        type: WikiHeadingType;
    }

    Properties

    Properties

    The <h*> element of this heading.

    -
    id: string

    The ID of this heading. Also known as the fragment. On Parsoid, this +

    id: string

    The ID of this heading. Also known as the fragment. On Parsoid, this is the html5 fragment mode (mostly Unicode characters).

    -
    level: number

    The level of this heading. Goes from 1 to 6, referring to h1 to h6.

    -
    root: Element

    The root element of this heading. This refers to the topmost element +

    level: number

    The level of this heading. Goes from 1 to 6, referring to h1 to h6.

    +
    root: Element

    The root element of this heading. This refers to the topmost element related to this heading, excluding the <section> which contains it.

    -
    title: string

    The title of this heading. This is the actual text that the reader can +

    title: string

    The title of this heading. This is the actual text that the reader can see, and the actual text that matters. Unsupported syntax, such as using <math> templates in the heading, may not work.

    -

    The type of this heading.

    -
    \ No newline at end of file +

    The type of this heading.

    +
    diff --git a/modules.html b/modules.html index 2edd39b2..a335a626 100644 --- a/modules.html +++ b/modules.html @@ -1,3 +1,3 @@ -deputy

    deputy

    Index

    Modules

    <internal> +deputy

    deputy

    Index

    Modules

    Classes

    \ No newline at end of file +
    diff --git a/modules/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.html b/modules/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.html deleted file mode 100644 index 17094825..00000000 --- a/modules/_internal_.__home_runner_work_deputy_deputy_project_src_util_blockExit_.html +++ /dev/null @@ -1,3 +0,0 @@ -"/home/runner/work/deputy/deputy/project/src/util/blockExit" | deputy

    Namespace "/home/runner/work/deputy/deputy/project/src/util/blockExit"

    Index

    Functions

    \ No newline at end of file diff --git a/modules/_internal_.html b/modules/_internal_.html index ee11a9a4..f9b27ec2 100644 --- a/modules/_internal_.html +++ b/modules/_internal_.html @@ -1,4 +1,4 @@ -<internal> | deputy

    Module <internal>

    Namespaces

    "/home/runner/work/deputy/deputy/project/src/util/blockExit" +<internal> | deputy

    Module <internal>

    Enumeration Members

    Missing: 4
    PresumptiveRemoval: 5
    Unknown: 1
    WithViolations: 2
    WithoutViolations: 3
    \ No newline at end of file +

    Enumeration Members

    Missing
    PresumptiveRemoval
    Unknown
    WithoutViolations
    WithViolations
    diff --git a/modules/_internal_.src_util_blockExit.html b/modules/_internal_.src_util_blockExit.html new file mode 100644 index 00000000..34b74905 --- /dev/null +++ b/modules/_internal_.src_util_blockExit.html @@ -0,0 +1,3 @@ +src/util/blockExit | deputy

    Namespace src/util/blockExit

    Index

    Functions

    diff --git a/types/_internal_.ArrayOrNot.html b/types/_internal_.ArrayOrNot.html index 52d6d542..a0021b8f 100644 --- a/types/_internal_.ArrayOrNot.html +++ b/types/_internal_.ArrayOrNot.html @@ -1 +1 @@ -ArrayOrNot | deputy

    Type Alias ArrayOrNot<T>

    ArrayOrNot<T>: T[] | T

    Type Parameters

    • T
    \ No newline at end of file +ArrayOrNot | deputy

    Type Alias ArrayOrNot<T>

    ArrayOrNot<T>: T[] | T

    Type Parameters

    • T
    diff --git a/types/_internal_.CleanParamsOption.html b/types/_internal_.CleanParamsOption.html index 9c2f2bf6..1bcb76cb 100644 --- a/types/_internal_.CleanParamsOption.html +++ b/types/_internal_.CleanParamsOption.html @@ -1 +1 @@ -CleanParamsOption | deputy

    Type Alias CleanParamsOption<T>

    CleanParamsOption<T>: keyof T | (keyof T)[] | boolean

    Type Parameters

    • T
    \ No newline at end of file +CleanParamsOption | deputy

    Type Alias CleanParamsOption<T>

    CleanParamsOption<T>: keyof T | (keyof T)[] | boolean

    Type Parameters

    • T
    diff --git a/types/_internal_.CopyrightProblemsListingData.html b/types/_internal_.CopyrightProblemsListingData.html index acacccdc..20ef003f 100644 --- a/types/_internal_.CopyrightProblemsListingData.html +++ b/types/_internal_.CopyrightProblemsListingData.html @@ -1 +1 @@ -CopyrightProblemsListingData | deputy
    \ No newline at end of file +CopyrightProblemsListingData | deputy
    diff --git a/types/_internal_.CopyrightProblemsResponseSet.html b/types/_internal_.CopyrightProblemsResponseSet.html index 7a84e447..66bb5f71 100644 --- a/types/_internal_.CopyrightProblemsResponseSet.html +++ b/types/_internal_.CopyrightProblemsResponseSet.html @@ -1 +1 @@ -CopyrightProblemsResponseSet | deputy

    Type Alias CopyrightProblemsResponseSet

    CopyrightProblemsResponseSet: {
        [key: string]: CopyrightProblemsResponse | null;
    }
    \ No newline at end of file +CopyrightProblemsResponseSet | deputy

    Type Alias CopyrightProblemsResponseSet

    CopyrightProblemsResponseSet: {
        [key: string]: CopyrightProblemsResponse | null;
    }
    diff --git a/types/_internal_.DeputyMessage.html b/types/_internal_.DeputyMessage.html index 1fa154ca..623a8a16 100644 --- a/types/_internal_.DeputyMessage.html +++ b/types/_internal_.DeputyMessage.html @@ -1 +1 @@ -DeputyMessage | deputy
    \ No newline at end of file +DeputyMessage | deputy
    diff --git a/types/_internal_.DeputyMessageEvent.html b/types/_internal_.DeputyMessageEvent.html index 6f933196..348fc567 100644 --- a/types/_internal_.DeputyMessageEvent.html +++ b/types/_internal_.DeputyMessageEvent.html @@ -1 +1 @@ -DeputyMessageEvent | deputy

    Type Alias DeputyMessageEvent<T>

    DeputyMessageEvent<T>: Event & {
        data: LowLevelDeputyMessage & T;
    }

    Type Parameters

    \ No newline at end of file +DeputyMessageEvent | deputy

    Type Alias DeputyMessageEvent<T>

    DeputyMessageEvent<T>: Event & {
        data: LowLevelDeputyMessage & T;
    }

    Type Parameters

    diff --git a/types/_internal_.DeputyRequestMessage.html b/types/_internal_.DeputyRequestMessage.html index def0be61..3b5c6ef4 100644 --- a/types/_internal_.DeputyRequestMessage.html +++ b/types/_internal_.DeputyRequestMessage.html @@ -1 +1 @@ -DeputyRequestMessage | deputy

    Type Alias DeputyRequestMessage

    DeputyRequestMessage: DeputySessionRequestMessage
    \ No newline at end of file +DeputyRequestMessage | deputy

    Type Alias DeputyRequestMessage

    DeputyRequestMessage: DeputySessionRequestMessage
    diff --git a/types/_internal_.DeputyResponseMessage.html b/types/_internal_.DeputyResponseMessage.html index c6bf655c..792f6f5c 100644 --- a/types/_internal_.DeputyResponseMessage.html +++ b/types/_internal_.DeputyResponseMessage.html @@ -1 +1 @@ -DeputyResponseMessage | deputy

    Type Alias DeputyResponseMessage

    DeputyResponseMessage: DeputySessionResponseMessage
    \ No newline at end of file +DeputyResponseMessage | deputy

    Type Alias DeputyResponseMessage

    DeputyResponseMessage: DeputySessionResponseMessage
    diff --git a/types/_internal_.DisplayOptions.html b/types/_internal_.DisplayOptions.html index 347cf2ef..6604bc01 100644 --- a/types/_internal_.DisplayOptions.html +++ b/types/_internal_.DisplayOptions.html @@ -1 +1 @@ -DisplayOptions | deputy
    \ No newline at end of file +DisplayOptions | deputy
    diff --git a/types/_internal_.EnumValue.html b/types/_internal_.EnumValue.html index 1926efab..b1be4dde 100644 --- a/types/_internal_.EnumValue.html +++ b/types/_internal_.EnumValue.html @@ -1 +1 @@ -EnumValue | deputy

    Type Alias EnumValue<T>

    EnumValue<T>: T[keyof T]

    Type Parameters

    • T
    \ No newline at end of file +EnumValue | deputy

    Type Alias EnumValue<T>

    EnumValue<T>: T[keyof T]

    Type Parameters

    • T
    diff --git a/types/_internal_.LowLevelDeputyMessage.html b/types/_internal_.LowLevelDeputyMessage.html index 94705fff..c2e4b0c8 100644 --- a/types/_internal_.LowLevelDeputyMessage.html +++ b/types/_internal_.LowLevelDeputyMessage.html @@ -1 +1 @@ -LowLevelDeputyMessage | deputy

    Type Alias LowLevelDeputyMessage

    LowLevelDeputyMessage: DeputyMessage & {
        _deputy: true;
        _deputyMessageId: string;
    }
    \ No newline at end of file +LowLevelDeputyMessage | deputy

    Type Alias LowLevelDeputyMessage

    LowLevelDeputyMessage: DeputyMessage & {
        _deputy: true;
        _deputyMessageId: string;
    }
    diff --git a/types/_internal_.NativeTransformerType.html b/types/_internal_.NativeTransformerType.html index 5de1c983..12da80fa 100644 --- a/types/_internal_.NativeTransformerType.html +++ b/types/_internal_.NativeTransformerType.html @@ -1,2 +1,2 @@ NativeTransformerType | deputy

    Type Alias NativeTransformerType

    NativeTransformerType: ArrayOrNot<
        | boolean
        | number
        | string
        | null
        | undefined>

    Types that can be handled by the in-built JSON serializer normally.

    -
    \ No newline at end of file +
    diff --git a/types/_internal_.OneWayDeputyMessage.html b/types/_internal_.OneWayDeputyMessage.html index 1ab737a8..7e2bf65e 100644 --- a/types/_internal_.OneWayDeputyMessage.html +++ b/types/_internal_.OneWayDeputyMessage.html @@ -1 +1 @@ -OneWayDeputyMessage | deputy

    Type Alias OneWayDeputyMessage

    OneWayDeputyMessage: DeputyMessage & {
        type: keyof typeof OneWayDeputyMessageMap;
    }
    \ No newline at end of file +OneWayDeputyMessage | deputy

    Type Alias OneWayDeputyMessage

    OneWayDeputyMessage: DeputyMessage & {
        type: keyof typeof OneWayDeputyMessageMap;
    }
    diff --git a/types/_internal_.PromiseOrNot.html b/types/_internal_.PromiseOrNot.html index e0a66ebe..a4b9f913 100644 --- a/types/_internal_.PromiseOrNot.html +++ b/types/_internal_.PromiseOrNot.html @@ -1 +1 @@ -PromiseOrNot | deputy

    Type Alias PromiseOrNot<T>

    PromiseOrNot<T>: Promise<T> | T

    Type Parameters

    • T
    \ No newline at end of file +PromiseOrNot | deputy

    Type Alias PromiseOrNot<T>

    PromiseOrNot<T>: Promise<T> | T

    Type Parameters

    • T
    diff --git a/types/_internal_.ResponseMessage.html b/types/_internal_.ResponseMessage.html index b3529367..eacf0806 100644 --- a/types/_internal_.ResponseMessage.html +++ b/types/_internal_.ResponseMessage.html @@ -1 +1 @@ -ResponseMessage | deputy

    Type Alias ResponseMessage<T>

    ResponseMessage<T>: DeputyMessage & {
        type: typeof OneWayDeputyMessageMap[T["type"]];
    }

    Type Parameters

    \ No newline at end of file +ResponseMessage | deputy

    Type Alias ResponseMessage<T>

    ResponseMessage<T>: DeputyMessage & {
        type: typeof OneWayDeputyMessageMap[T["type"]];
    }

    Type Parameters

    diff --git a/types/_internal_.SelfTransformer.html b/types/_internal_.SelfTransformer.html index 1b1ae06a..7eaaa3e4 100644 --- a/types/_internal_.SelfTransformer.html +++ b/types/_internal_.SelfTransformer.html @@ -1 +1 @@ -SelfTransformer | deputy

    Type Alias SelfTransformer<TargetType, SourceType>

    SelfTransformer<TargetType, SourceType>: ((value?: SourceType) => TargetType)

    Type Parameters

    • TargetType
    • SourceType
    \ No newline at end of file +SelfTransformer | deputy

    Type Alias SelfTransformer<TargetType, SourceType>

    SelfTransformer<TargetType, SourceType>: ((value?: SourceType) => TargetType)

    Type Parameters

    • TargetType
    • SourceType
    diff --git a/types/_internal_.SelfTransformerParameter.html b/types/_internal_.SelfTransformerParameter.html index 56017ee1..9a629be9 100644 --- a/types/_internal_.SelfTransformerParameter.html +++ b/types/_internal_.SelfTransformerParameter.html @@ -1 +1 @@ -SelfTransformerParameter | deputy

    Type Alias SelfTransformerParameter<Key, TargetType, SourceType>

    Type Parameters

    • Key extends string
    • TargetType
    • SourceType
    \ No newline at end of file +SelfTransformerParameter | deputy

    Type Alias SelfTransformerParameter<Key, TargetType, SourceType>

    Type Parameters

    • Key extends string
    • TargetType
    • SourceType
    diff --git a/types/_internal_.TemplateDataModifier.html b/types/_internal_.TemplateDataModifier.html index 808b054c..cae03531 100644 --- a/types/_internal_.TemplateDataModifier.html +++ b/types/_internal_.TemplateDataModifier.html @@ -1,2 +1,2 @@ TemplateDataModifier | deputy

    Type Alias TemplateDataModifier

    TemplateDataModifier: ((templateData: TemplateData) => TemplateData | null)

    Represents a callback for template data-modifying operations.

    -
    \ No newline at end of file +
    diff --git a/types/_internal_.TitleLike.html b/types/_internal_.TitleLike.html index cbe5addb..8493770b 100644 --- a/types/_internal_.TitleLike.html +++ b/types/_internal_.TitleLike.html @@ -1 +1 @@ -TitleLike | deputy

    Type Alias TitleLike

    TitleLike: string | mw.Title | {
        namespace: number;
        title: string;
    }
    \ No newline at end of file +TitleLike | deputy

    Type Alias TitleLike

    TitleLike: string | mw.Title | {
        namespace: number;
        title: string;
    }
    diff --git a/types/_internal_.Transformer.html b/types/_internal_.Transformer.html index 95e1b75f..6c6c5a3c 100644 --- a/types/_internal_.Transformer.html +++ b/types/_internal_.Transformer.html @@ -1 +1 @@ -Transformer | deputy

    Type Alias Transformer<TargetType, SourceType>

    Transformer<TargetType, SourceType>: ((value: SourceType) => TargetType)

    Type Parameters

    • TargetType
    • SourceType
    \ No newline at end of file +Transformer | deputy

    Type Alias Transformer<TargetType, SourceType>

    Transformer<TargetType, SourceType>: ((value: SourceType) => TargetType)

    Type Parameters

    • TargetType
    • SourceType
    diff --git a/types/_internal_.TransformerParameter.html b/types/_internal_.TransformerParameter.html index 9c0c864d..dddf1f32 100644 --- a/types/_internal_.TransformerParameter.html +++ b/types/_internal_.TransformerParameter.html @@ -1 +1 @@ -TransformerParameter | deputy

    Type Alias TransformerParameter<Key, TargetType, SourceType>

    Type Parameters

    • Key extends string
    • TargetType
    • SourceType
    \ No newline at end of file +TransformerParameter | deputy

    Type Alias TransformerParameter<Key, TargetType, SourceType>

    Type Parameters

    • Key extends string
    • TargetType
    • SourceType
    diff --git a/types/_internal_.WikiPageConfiguration.html b/types/_internal_.WikiPageConfiguration.html index 02f3f150..6347153f 100644 --- a/types/_internal_.WikiPageConfiguration.html +++ b/types/_internal_.WikiPageConfiguration.html @@ -1 +1 @@ -WikiPageConfiguration | deputy

    Type Alias WikiPageConfiguration

    WikiPageConfiguration: {
        editable: boolean;
        title: mw.Title;
        wt: string;
    }
    \ No newline at end of file +WikiPageConfiguration | deputy

    Type Alias WikiPageConfiguration

    WikiPageConfiguration: {
        editable: boolean;
        title: mw.Title;
        wt: string;
    }
    diff --git a/variables/_internal_.OneWayDeputyMessageMap.html b/variables/_internal_.OneWayDeputyMessageMap.html index 2ce4bce0..1305eb8b 100644 --- a/variables/_internal_.OneWayDeputyMessageMap.html +++ b/variables/_internal_.OneWayDeputyMessageMap.html @@ -1,3 +1,3 @@ OneWayDeputyMessageMap | deputy

    Variable OneWayDeputyMessageMapConst

    OneWayDeputyMessageMap: {
        pageNextRevisionRequest: "pageNextRevisionResponse";
        pageNextRevisionResponse: "pageNextRevisionRequest";
        pageStatusRequest: "pageStatusResponse";
        pageStatusResponse: "pageStatusRequest";
        pageStatusUpdate: "acknowledge";
        revisionStatusUpdate: "acknowledge";
        sessionRequest: "sessionResponse";
        sessionResponse: "sessionRequest";
        sessionStop: "acknowledge";
        userConfigUpdate: "userConfigUpdate";
        wikiConfigUpdate: "wikiConfigUpdate";
    } = ...

    A constant map of specific one-way Deputy message types and their respective response messages.

    -
    \ No newline at end of file +