diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 00000000..e2ac6616 --- /dev/null +++ b/docs/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/assets/highlight.css b/docs/assets/highlight.css new file mode 100644 index 00000000..426d8134 --- /dev/null +++ b/docs/assets/highlight.css @@ -0,0 +1,71 @@ +:root { + --light-hl-0: #AF00DB; + --dark-hl-0: #C586C0; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #001080; + --dark-hl-2: #9CDCFE; + --light-hl-3: #A31515; + --dark-hl-3: #CE9178; + --light-hl-4: #0000FF; + --dark-hl-4: #569CD6; + --light-hl-5: #0070C1; + --dark-hl-5: #4FC1FF; + --light-hl-6: #795E26; + --dark-hl-6: #DCDCAA; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +pre, code { background: var(--code-background); } diff --git a/docs/assets/main.js b/docs/assets/main.js new file mode 100644 index 00000000..7270cff8 --- /dev/null +++ b/docs/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(B,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ve.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.handleValueChange()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(e=>{e.style.display="block";let n=Array.from(e.querySelectorAll(".tsd-index-link")).every(r=>r.offsetParent==null);e.style.display=n?"none":"block"})}};var Z=class extends C{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js new file mode 100644 index 00000000..83ef3b60 --- /dev/null +++ b/docs/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACo2WTYvbMBCG/4vPoaZpdym5tVlKF8JSmpQ9lB5mnYktYktBGi8bSv97kZ3EI+urV7/zPpEd6UG//hSEb1Ssio2qhdyiMULJYlGcgJpiVVQtGIOm5Om7hrq2WBRHIffF6v3y09/FjfLToPbb9mmq9az00W/Zp7nWozyocNMmufZGGAq3bZJrbwnIhOtDlOvbr/IABGHENU1RaqTPumrEKz6DlkLWbDmHXlYklDSlP+Uy7z/OkD01SsdIQ5gGrIGwVlpgbDnTQAbUgIaKMLaYW57BqLbFsRUDTRNp1FeQe9VFKGOYBmxA1j3UGEFc4zTkO9T41Hcv0Q8zDeRA2sBLi/aw7J2tOMO5Y2noDyAh6whqDDMAbGEoNOIUw7CRNGyLiY04hhlA33WgzzHCmKYRO4ieTBtlyoLa2HYZsnTdumStJKGkCIRN5FGucD2Ob90QxPWuB/HlG4LM9OtRAg52MPAmlHnAA/Qt57yCFnavm9IZcEEflgzkynUiCUmoD1ChKd0Rl7W8u2ewixrPQcw1TAIaODnG5P0x+4+6/R91NxyxFImNZaBzj7uskMVniJuhw4xbnILM7c0AIXe75eEKFOwOSar6pIgriFWHJFW1Jt+eIPzD1zAFmNuY1UMunpWDJuaIqIdd0ChaVx4MM8UpyA7C77GD5EtYGXxR6tgBv2WyPh/IgTyVzjhBkfqYb8JQ7JSzPLkfL1eFtdrzzYWy70zphC6FXyCtael8Qq9+eT5v/v4H/2sN8DAMAAA=" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js new file mode 100644 index 00000000..f469443e --- /dev/null +++ b/docs/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/assets/style.css b/docs/assets/style.css new file mode 100644 index 00000000..98a43779 --- /dev/null +++ b/docs/assets/style.css @@ -0,0 +1,1414 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a:not(.link), +h2 > a:not(.link), +h3 > a:not(.link), +h4 > a:not(.link), +h5 > a:not(.link), +h6 > a:not(.link) { + text-decoration: none; + color: var(--color-text); +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/classes/LoginSession.html b/docs/classes/LoginSession.html new file mode 100644 index 00000000..81448db3 --- /dev/null +++ b/docs/classes/LoginSession.html @@ -0,0 +1,6 @@ +LoginSession | ao3-toolkit

Class LoginSession

Class used to log in users. This is needed to access certain pages that are only accessible for logged in users

+

Constructors

Properties

Methods

Constructors

Properties

#instance?: AxiosInstance
#logindata: Login

Methods

  • Returns Promise<{
        instance: AxiosInstance;
        username: string;
    }>

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/User.html b/docs/classes/User.html new file mode 100644 index 00000000..10757d65 --- /dev/null +++ b/docs/classes/User.html @@ -0,0 +1,11 @@ +User | ao3-toolkit

Class User

Class defining information about a single user

+

Param: user.username

string of the username

+

Param: user.userLink

optional string of link to user profile

+

Param: user.logindata

optional Login object to store the users username and password

+

Param: user.pseuds

array of strings containing the pseuds of the user

+

Constructors

Properties

Constructors

  • Parameters

    • user: {
          logindata?: Login;
          pseuds?: string[];
          userLink?: string;
          username: string;
      }
      • Optional logindata?: Login
      • Optional pseuds?: string[]
      • Optional userLink?: string
      • username: string

    Returns User

Properties

logindata?: Login
pseuds?: string[]
userLink?: string
username: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/Work.html b/docs/classes/Work.html new file mode 100644 index 00000000..36c68d21 --- /dev/null +++ b/docs/classes/Work.html @@ -0,0 +1,9 @@ +Work | ao3-toolkit

Class Work

Base class that holds information about a single Work and optional data based on the context or the user. (e.g. history/bookmarks)

+

Param: info

WorkInfo object containing information about the work

+

Param: content

WorkContent object containing the content of the work

+

Param: userdata

Arry of WorkUserData objects containing user-linked information relating to the work

+

Constructors

Properties

Constructors

Properties

content: undefined | WorkContent
info: undefined | WorkInfo
userdata: undefined | WorkUserData[]

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/WorkInfo.html b/docs/classes/WorkInfo.html new file mode 100644 index 00000000..7978a423 --- /dev/null +++ b/docs/classes/WorkInfo.html @@ -0,0 +1,33 @@ +WorkInfo | ao3-toolkit

Class WorkInfo

Class that contains information about a single work.

+

Param: options

can be an object with information about the work or a number that is the id of the work

+

Param: options.title

string containing the title of the work

+

Param: options.id

number that is the id of the work

+

Param: options.author

Arry of User objects containing the name(s) of the author(s) and url(s) to the profile(s)

+

Param: options.fandom

Array of Fandom objects associated with the work

+

Param: options.stats

WorkStats Object containing information about the work like length, number of chapters, etc.

+

Param: options.relationships

Array of Relationship objects associated with the work

+

Param: options.characters

Array of Character objects associated with the work

+

Param: options.rating

Rating Object detailing the Rating of the work

+

Param: options.archiveWarnings

Array of ArchiveWarning objects detailing the Archvie Warnings associated with the work

+

Param: options.tags

Array of Tag objects associated with the work

+

Param: options.language

string containing the language code of the work (checked against LanguageCodes enum)

+

Param: options.series

Array of SeriesInfo objects detailing what Series the work is part of and where in the Series it is positioned

+

Param: options.collections

either an Array of Collection objects detailing what collections the work is part of or a the number of collections the work belongs to.

+

Param: options.summary

string containing the summary of the work

+

Constructors

Properties

archiveWarnings?: ArchiveWarning[]
authors?: User[]
categories?: Category[]
characters?: Character[]
collections?: Collection[]
fandom?: Fandom[]
id?: number
language?: string
rating?: Rating
relationships?: Relationship[]
series?: SeriesInfo[]
stats?: WorkStats
summary?: string
tags?: Tag[]
title?: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/WorkList.html b/docs/classes/WorkList.html new file mode 100644 index 00000000..98555af1 --- /dev/null +++ b/docs/classes/WorkList.html @@ -0,0 +1,15 @@ +WorkList | ao3-toolkit

Class WorkList

This Class describes a list of works. It includes methods to sort the works by different metrics

+

Constructors

Properties

#context: undefined | string
works: Work[]

Methods

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/WorkStats.html b/docs/classes/WorkStats.html new file mode 100644 index 00000000..a2ba2d20 --- /dev/null +++ b/docs/classes/WorkStats.html @@ -0,0 +1,15 @@ +WorkStats | ao3-toolkit

Class WorkStats

Class to define statistics of the individual work

+

Param: input.words

number of words in the work

+

Param: input.chapters

ChapterInformation detailing the number of written chapters and the maximum amount of chapters

+

Param: input.kudos

number of kudos the work has

+

Param: input.hits

number of hits the work has

+

Param: input.bookmarks

number of bookmarks the work has

+

Param: input.finished

optional parameter to indicate that the work is finished. If this is undefined, the constructor of the class checks the chapter object if the work is finished

+

Constructors

Properties

Constructors

Properties

bookmarks: number
finished: boolean
hits: number
kudos: number
words: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/classes/WorkUserData.html b/docs/classes/WorkUserData.html new file mode 100644 index 00000000..52110957 --- /dev/null +++ b/docs/classes/WorkUserData.html @@ -0,0 +1,6 @@ +WorkUserData | ao3-toolkit

Class WorkUserData

Class that describes data about a single user like their reading history and bookmarks

+

Constructors

Properties

Constructors

Properties

bookmark?: WorkBookmark
historyWithWork?: WorkHistory
user: User

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/LanguageCodes.html b/docs/enums/LanguageCodes.html new file mode 100644 index 00000000..3f1ec6db --- /dev/null +++ b/docs/enums/LanguageCodes.html @@ -0,0 +1,122 @@ +LanguageCodes | ao3-toolkit

Enumeration LanguageCodes

collection of every supported language and the corresponding language code

+

Enumeration Members

AfSoomaali: "so"
Afrikaans: "afr"
Arabic: "ar"
Aramaic: "arc"
Armenian: "hy"
Asturianu: "ast"
Azerbaijan: "azj"
BahasaIndonesia: "id"
BahasaMalaysia: "ms"
Bangla: "bn"
BasaJawa: "jv"
Bashkortostan: "ba"
Belarusian: "be"
Bosanski: "bos"
Brezhoneg: "br"
Bulgarian: "bg"
Cantonese: "yue"
Català: "ca"
Cebuano: "ceb"
Chechen: "ce"
ChinukWawa: "chn"
Coptic: "cop"
Cymraeg: "cy"
Dansk: "da"
Deutsch: "de"
Dzongkha: "bod"
EaldEnglisċ: "ang"
EestiKeel: "et"
Egyptian: "egy"
English: "en"
Español: "es"
Esperanto: "eo"
Euskara: "eu"
Farsi: "fa"
Filipino: "fil"
Français: "fr"
Furlan: "fur"
Gaeilge: "ga"
Galego: "gl"
Georgian: "kat"
Germanic: "gem"
Gothic: "got"
Greek: "el"
Gàidhlig: "gd"
Hakka: "hak"
Hausa: "hau"
Hebrew: "he"
Hindi: "hi"
HokkienTaiwanese: "nan"
Hrvatski: "hr"
Interlingua: "ia"
IsiZulu: "zu"
Italiano: "it"
Japanese: "ja"
Kannada: "kan"
Kazakh: "kaz"
Khmer: "khm"
Khuzdul: "qkz"
Kiswahili: "sw"
Korean: "ko"
KreyòlAyisyen: "ht"
Kurdî: "ku"
Kyrgyz: "kir"
LangueDesSignesQuébécoise: "fcs"
LatviešuValoda: "lv"
LietuviųKalba: "lt"
LinguaLatina: "la"
Lëtzebuergesch: "lb"
MaayaTàan: "yua"
Macedonian: "mk"
Magyar: "hu"
Malayalam: "ml"
Malti: "mt"
Manchu: "mnc"
Mandarin: "zh"
Marathi: "mr"
Mikisúkî: "mik"
Mongolian: "mon"
Myanmar: "my"
Nederlands: "nl"
Norsk: "no"
Nāhuatl: "nah"
Ottoman: "ota"
Pashto: "ps"
Plattdüütsch: "nds"
Polski: "pl"
PortuguêsBrasileiro: "ptBR"
PortuguêsEuropeu: "ptPT"
Punjabi: "pa"
Quenya: "qya"
Română: "ro"
Russian: "ru"
Scots: "sco"
Serbian: "sr"
Shqip: "sq"
Sindarin: "sjn"
Sinhala: "sin"
Slovenčina: "sk"
Slovenščina: "slv"
Sumerian: "sux"
Suomi: "fi"
Svenska: "sv"
Tamil: "ta"
Telugu: "tel"
Thai: "th"
Thermian: "tqx"
TiếngViệt: "vi"
TlhInganHol: "tlh"
TokiPona: "tok"
Tsakonia: "tsd"
Türkçe: "tr"
Uighur: "uig"
Ukrainian: "uk"
Urdu: "urd"
Volapük: "vol"
Wu: "wuu"
Yiddish: "yi"
Íslenska: "is"
Čeština: "cs"
ŌleloHawaii: "haw"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/enums/Listtype.html b/docs/enums/Listtype.html new file mode 100644 index 00000000..2041a755 --- /dev/null +++ b/docs/enums/Listtype.html @@ -0,0 +1,4 @@ +Listtype | ao3-toolkit

Enumeration Listtype

enum that collects the different types of possible list

+

Enumeration Members

Enumeration Members

Bookmarks: "Bookmarks"
History: "History"

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getArchiveWarnings.html b/docs/functions/getArchiveWarnings.html new file mode 100644 index 00000000..fe0f0b4f --- /dev/null +++ b/docs/functions/getArchiveWarnings.html @@ -0,0 +1,5 @@ +getArchiveWarnings | ao3-toolkit

Function getArchiveWarnings

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<ArchiveWarning[]>

      +
    • Array of ArchiveWarning objects cotaining information about the warnings associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getAuthor.html b/docs/functions/getAuthor.html new file mode 100644 index 00000000..26868e3d --- /dev/null +++ b/docs/functions/getAuthor.html @@ -0,0 +1,5 @@ +getAuthor | ao3-toolkit

Function getAuthor

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<User[]>

      +
    • Array of User objects containing information about the authors of the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getCategories.html b/docs/functions/getCategories.html new file mode 100644 index 00000000..0063522b --- /dev/null +++ b/docs/functions/getCategories.html @@ -0,0 +1,5 @@ +getCategories | ao3-toolkit

Function getCategories

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<Category[]>

      +
    • Array of Category objects cotaining information about the categories associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getCharacter.html b/docs/functions/getCharacter.html new file mode 100644 index 00000000..f1e08d92 --- /dev/null +++ b/docs/functions/getCharacter.html @@ -0,0 +1,5 @@ +getCharacter | ao3-toolkit

Function getCharacter

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<Character[]>

      +
    • Array of Character objects cotaining information about the fandoms associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getCollections.html b/docs/functions/getCollections.html new file mode 100644 index 00000000..3b4b7c92 --- /dev/null +++ b/docs/functions/getCollections.html @@ -0,0 +1,5 @@ +getCollections | ao3-toolkit

Function getCollections

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<Collection[]>

      +
    • Array of Collection objects cotaining information about the series associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getFandom.html b/docs/functions/getFandom.html new file mode 100644 index 00000000..5d0a9177 --- /dev/null +++ b/docs/functions/getFandom.html @@ -0,0 +1,5 @@ +getFandom | ao3-toolkit

Function getFandom

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<Fandom[]>

      +
    • Array of Fandom objects cotaining information about the fandoms associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getLanguage.html b/docs/functions/getLanguage.html new file mode 100644 index 00000000..94e95ed0 --- /dev/null +++ b/docs/functions/getLanguage.html @@ -0,0 +1,3 @@ +getLanguage | ao3-toolkit

Function getLanguage

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<string>

    string containing the language of the work

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getPageNumber.html b/docs/functions/getPageNumber.html new file mode 100644 index 00000000..899f3fac --- /dev/null +++ b/docs/functions/getPageNumber.html @@ -0,0 +1,3 @@ +getPageNumber | ao3-toolkit

Function getPageNumber

  • Parameters

    • $: CheerioAPI

      cheerio object of a list of works

      +

    Returns number

    the number of pages from the bottom navigation

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getParsableInfodata.html b/docs/functions/getParsableInfodata.html new file mode 100644 index 00000000..794c23cc --- /dev/null +++ b/docs/functions/getParsableInfodata.html @@ -0,0 +1,3 @@ +getParsableInfodata | ao3-toolkit

Function getParsableInfodata

  • Parameters

    • input: number | CheerioAPI

      a work id as a number or a parsable cheerio object

      +

    Returns Promise<cheerio.CheerioAPI>

    a parsable cheerio object

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getRating.html b/docs/functions/getRating.html new file mode 100644 index 00000000..682ba7d4 --- /dev/null +++ b/docs/functions/getRating.html @@ -0,0 +1,5 @@ +getRating | ao3-toolkit

Function getRating

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<Rating>

      +
    • Rating object detailing the rating of the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getRelationship.html b/docs/functions/getRelationship.html new file mode 100644 index 00000000..9055f807 --- /dev/null +++ b/docs/functions/getRelationship.html @@ -0,0 +1,5 @@ +getRelationship | ao3-toolkit

Function getRelationship

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<Relationship[]>

      +
    • Array of Relationship objects cotaining information about the fandoms associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getSeries.html b/docs/functions/getSeries.html new file mode 100644 index 00000000..e3451107 --- /dev/null +++ b/docs/functions/getSeries.html @@ -0,0 +1,5 @@ +getSeries | ao3-toolkit

Function getSeries

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<SeriesInfo[]>

      +
    • Array of SeriesInfo objects cotaining information about the series associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getSummary.html b/docs/functions/getSummary.html new file mode 100644 index 00000000..035115fd --- /dev/null +++ b/docs/functions/getSummary.html @@ -0,0 +1,3 @@ +getSummary | ao3-toolkit

Function getSummary

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<string>

    string containing the language of the work

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getTags.html b/docs/functions/getTags.html new file mode 100644 index 00000000..63402f15 --- /dev/null +++ b/docs/functions/getTags.html @@ -0,0 +1,5 @@ +getTags | ao3-toolkit

Function getTags

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<Tag[]>

      +
    • Array of Tag objects cotaining information about the tags associated with the work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getTitle.html b/docs/functions/getTitle.html new file mode 100644 index 00000000..3f98be0d --- /dev/null +++ b/docs/functions/getTitle.html @@ -0,0 +1,3 @@ +getTitle | ao3-toolkit

Function getTitle

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a number or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<string>

    string containing the title of the work

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getWorkContent.html b/docs/functions/getWorkContent.html new file mode 100644 index 00000000..e18dafda --- /dev/null +++ b/docs/functions/getWorkContent.html @@ -0,0 +1,4 @@ +getWorkContent | ao3-toolkit

Function getWorkContent

  • This function takes a work id or cheerio object, parses the data and returns an object containing the forword, afterword and each chapter

    +

    Parameters

    • input: number | CheerioAPI

      a work id or a cheerio object of the first chapter

      +

    Returns Promise<WorkContent>

    an object of tyoe WorkContent containing the forword, afterword and each chapter

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getWorkInfo.html b/docs/functions/getWorkInfo.html new file mode 100644 index 00000000..bcfeffba --- /dev/null +++ b/docs/functions/getWorkInfo.html @@ -0,0 +1,5 @@ +getWorkInfo | ao3-toolkit

Function getWorkInfo

  • Parameters

    • input: number | CheerioAPI

      either a work id in form of a mumber or a parsable cheerio.CheerioAPI Object

      +

    Returns Promise<WorkInfo>

      +
    • the WorkInfo of the corresponding work
    • +
    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getWorkList.html b/docs/functions/getWorkList.html new file mode 100644 index 00000000..5d0602f5 --- /dev/null +++ b/docs/functions/getWorkList.html @@ -0,0 +1,6 @@ +getWorkList | ao3-toolkit

Function getWorkList

  • Parameters

    • logindata: Login

      a Login Object containing the username and password of the logged in user (the password is not used in this case, only the username)

      +
    • instance: undefined | AxiosInstance

      AxiosInstance returned by LoginSession.login

      +
    • Optional listtype: Listtype

      define the Listtype

      +
    • Optional pageSpan: number | PageSpan

      the pageSpan to define the pages that should be parsed

      +

    Returns Promise<WorkList | undefined>

    a new WorkList Object

    +

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/functions/getWorkStats.html b/docs/functions/getWorkStats.html new file mode 100644 index 00000000..db92b687 --- /dev/null +++ b/docs/functions/getWorkStats.html @@ -0,0 +1 @@ +getWorkStats | ao3-toolkit

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..621d05b2 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,39 @@ +ao3-toolkit

ao3-toolkit

ao3-toolkit

A Toolkit for interfacing with the Archive of Our Own

+

Installation

ao3-toolkit runs on Node.js and is available as a NPM package.

+
npm install ao3-toolkit
+
+

Usage

+

[!IMPORTANT] +In a blog post the admins talk about how they handle data scraping: +"We've put in place certain technical measures to hinder large-scale data scraping on AO3, such as rate limiting, and we're constantly monitoring our traffic for signs of abusive data collection. We do not make exceptions for researchers or those wishing to create datasets. However, we don't have a policy against responsible data collection — such as those done by academic researchers, fans backing up works to Wayback Machine or Google's search indexing. Putting systems in place that attempt to block all scraping would be difficult or impossible without also blocking legitimate uses of the site."

+
+

Logging in to ao3

import { LoginSession } from "ao3-toolkit";

const session = await new LoginSession({
username: string,
password: string,
}).login(); +
+

Fetching single works

import { getWorkInfo } from "ao3-toolkit";

const work = await getWorkInfo(id: number) +
+

Fetching work content

import { getWorkContent } from "ao3-toolkit";

const work = await getWorkContent(id: number) +
+

Fetching work stats

import { getWorkStats } from "ao3-toolkit";

const work = await getWorkStats(id: number) +
+

Fetching user history

import { LoginSession, getWorkList } from "ao3-toolkit";

const session = await new LoginSession({
username: string,
password: string,
}).login();

const history = await getWorkList(
logindata,
session.instance,
Listtype.History
); +
+

Fetching user bookmarks

import { LoginSession, getWorkList } from "ao3-toolkit";

const session = await new LoginSession({
username: string,
password: string,
}).login();

const history = await getWorkList(
logindata,
session.instance,
Listtype.Bookmark
); +
+

Roadmap

    +
  • Fetching work comments
  • +
  • Fetching user stats
      +
    • favourite tags
    • +
    • favourite fandoms
    • +
    +
  • +
  • Fetching user stats
      +
    • words read
    • +
    • fics read
    • +
    +
  • +
+

Documentation

Documentation is generated with TypeDoc

+

Contributing

This project is written by a lone developer who learns as they go. Contributions are welcome and appreciated. So clone the repository, make a Pull request and add a Changeset. If you have any feedback, please open an Issue or reach out to me at me@lucaengelhard.com.

+

Inspiration and similar Projects:

https://github.com/cyrusae/AO3.js
https://github.com/misaalanshori/ao3webapi
https://github.com/timing1337/ao3_ts
https://github.com/ReyhanArdiya/stories-scrapper
https://github.com/dr-off/ao3-api
https://github.com/Dramatycznie/AO3_Scraper
https://github.com/rsanjabi/narratives
https://github.com/syrtis-m/ao3-bookmark-getter
https://github.com/niacdoial/AO3-stylish-downloader
https://github.com/gmastergreatee/Fanfiction-Manager

+

License

MIT

+

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/ArchiveWarning.html b/docs/interfaces/ArchiveWarning.html new file mode 100644 index 00000000..f9cc1d10 --- /dev/null +++ b/docs/interfaces/ArchiveWarning.html @@ -0,0 +1,3 @@ +ArchiveWarning | ao3-toolkit

Interface ArchiveWarning

interface ArchiveWarning {
    warningLink: undefined | string;
    warningName: string;
}

Properties

warningLink: undefined | string
warningName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Category.html b/docs/interfaces/Category.html new file mode 100644 index 00000000..1b786cce --- /dev/null +++ b/docs/interfaces/Category.html @@ -0,0 +1,3 @@ +Category | ao3-toolkit

Interface Category

interface Category {
    categoryLink: undefined | string;
    categoryName: string;
}

Properties

categoryLink: undefined | string
categoryName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Chapter.html b/docs/interfaces/Chapter.html new file mode 100644 index 00000000..17faa4e1 --- /dev/null +++ b/docs/interfaces/Chapter.html @@ -0,0 +1,5 @@ +Chapter | ao3-toolkit

Interface Chapter

interface Chapter {
    chapterContent?: null | string;
    chapterNotes?: string;
    chapterSummary?: string;
    chapterTitle?: string;
}

Properties

chapterContent?: null | string
chapterNotes?: string
chapterSummary?: string
chapterTitle?: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/ChapterInformation.html b/docs/interfaces/ChapterInformation.html new file mode 100644 index 00000000..a3b3b6a5 --- /dev/null +++ b/docs/interfaces/ChapterInformation.html @@ -0,0 +1,3 @@ +ChapterInformation | ao3-toolkit

Interface ChapterInformation

interface ChapterInformation {
    chaptersMax: number;
    chaptersWritten: number;
}

Properties

chaptersMax: number
chaptersWritten: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Character.html b/docs/interfaces/Character.html new file mode 100644 index 00000000..a785fb49 --- /dev/null +++ b/docs/interfaces/Character.html @@ -0,0 +1,3 @@ +Character | ao3-toolkit

Interface Character

interface Character {
    characterLink: undefined | string;
    characterName: string;
}

Properties

characterLink: undefined | string
characterName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Collection.html b/docs/interfaces/Collection.html new file mode 100644 index 00000000..3efa2954 --- /dev/null +++ b/docs/interfaces/Collection.html @@ -0,0 +1,3 @@ +Collection | ao3-toolkit

Interface Collection

interface Collection {
    collectionLink: undefined | string;
    collectionName: string;
}

Properties

collectionLink: undefined | string
collectionName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Fandom.html b/docs/interfaces/Fandom.html new file mode 100644 index 00000000..ad4ac1d4 --- /dev/null +++ b/docs/interfaces/Fandom.html @@ -0,0 +1,3 @@ +Fandom | ao3-toolkit

Interface Fandom

interface Fandom {
    fandomLink: undefined | string;
    fandomName: string;
}

Properties

Properties

fandomLink: undefined | string
fandomName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Login.html b/docs/interfaces/Login.html new file mode 100644 index 00000000..ab1fa95b --- /dev/null +++ b/docs/interfaces/Login.html @@ -0,0 +1,4 @@ +Login | ao3-toolkit

Interface Login

Type that describes the two parts of login data: username and password

+
interface Login {
    password: string;
    username: string;
}

Properties

Properties

password: string
username: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Notes.html b/docs/interfaces/Notes.html new file mode 100644 index 00000000..7bc298d7 --- /dev/null +++ b/docs/interfaces/Notes.html @@ -0,0 +1,3 @@ +Notes | ao3-toolkit

Interface Notes

interface Notes {
    endNote: string;
    preNote: string;
}

Properties

Properties

endNote: string
preNote: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/PageSpan.html b/docs/interfaces/PageSpan.html new file mode 100644 index 00000000..5394588a --- /dev/null +++ b/docs/interfaces/PageSpan.html @@ -0,0 +1,5 @@ +PageSpan | ao3-toolkit

Interface PageSpan

a span of Pages that should be parsed when fetching a list of pages. The exclude key is an array of numbers that define the pages that should be ignored

+
interface PageSpan {
    end: number;
    exclude?: number[];
    start: number;
}

Properties

Properties

end: number
exclude?: number[]
start: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Rating.html b/docs/interfaces/Rating.html new file mode 100644 index 00000000..c653781f --- /dev/null +++ b/docs/interfaces/Rating.html @@ -0,0 +1,3 @@ +Rating | ao3-toolkit

Interface Rating

interface Rating {
    ratingLink: undefined | string;
    ratingName: string;
}

Properties

Properties

ratingLink: undefined | string
ratingName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Relationship.html b/docs/interfaces/Relationship.html new file mode 100644 index 00000000..efe552c7 --- /dev/null +++ b/docs/interfaces/Relationship.html @@ -0,0 +1,3 @@ +Relationship | ao3-toolkit

Interface Relationship

interface Relationship {
    relationshipLink: undefined | string;
    relationshipName: string;
}

Properties

relationshipLink: undefined | string
relationshipName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/SeriesInfo.html b/docs/interfaces/SeriesInfo.html new file mode 100644 index 00000000..37493231 --- /dev/null +++ b/docs/interfaces/SeriesInfo.html @@ -0,0 +1,4 @@ +SeriesInfo | ao3-toolkit

Interface SeriesInfo

interface SeriesInfo {
    seriesLink: undefined | string;
    seriesName: string;
    seriesPart: number;
}

Properties

seriesLink: undefined | string
seriesName: string
seriesPart: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/Tag.html b/docs/interfaces/Tag.html new file mode 100644 index 00000000..2fe857c6 --- /dev/null +++ b/docs/interfaces/Tag.html @@ -0,0 +1,3 @@ +Tag | ao3-toolkit

Interface Tag

interface Tag {
    tagLink: undefined | string;
    tagName: string;
}

Properties

Properties

tagLink: undefined | string
tagName: string

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/WorkBookmark.html b/docs/interfaces/WorkBookmark.html new file mode 100644 index 00000000..56487240 --- /dev/null +++ b/docs/interfaces/WorkBookmark.html @@ -0,0 +1,4 @@ +WorkBookmark | ao3-toolkit

Interface WorkBookmark

interface WorkBookmark {
    bookmarkNotes?: string;
    bookmarkerTags?: Tag[];
    dateBookmarked: Date;
}

Properties

bookmarkNotes?: string
bookmarkerTags?: Tag[]
dateBookmarked: Date

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/WorkContent.html b/docs/interfaces/WorkContent.html new file mode 100644 index 00000000..e25af060 --- /dev/null +++ b/docs/interfaces/WorkContent.html @@ -0,0 +1,4 @@ +WorkContent | ao3-toolkit

Interface WorkContent

WorkConten is an object containing of the Notes at the beginning and the end of the work and an array of Chapters

+
interface WorkContent {
    chapters: Chapter[];
    notes: Notes;
}

Properties

Properties

chapters: Chapter[]
notes: Notes

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/interfaces/WorkHistory.html b/docs/interfaces/WorkHistory.html new file mode 100644 index 00000000..0743c79a --- /dev/null +++ b/docs/interfaces/WorkHistory.html @@ -0,0 +1,5 @@ +WorkHistory | ao3-toolkit

Interface WorkHistory

interface WorkHistory {
    lastVisit: Date;
    ratio: number;
    timesVisited: number;
    wordsRead: number;
}

Properties

lastVisit: Date
ratio: number
timesVisited: number
wordsRead: number

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html new file mode 100644 index 00000000..5d494954 --- /dev/null +++ b/docs/modules.html @@ -0,0 +1,47 @@ +ao3-toolkit

Generated using TypeDoc

\ No newline at end of file diff --git a/docs/variables/axiosDefaults.html b/docs/variables/axiosDefaults.html new file mode 100644 index 00000000..6d7dc155 --- /dev/null +++ b/docs/variables/axiosDefaults.html @@ -0,0 +1,2 @@ +axiosDefaults | ao3-toolkit

Variable axiosDefaultsConst

axiosDefaults: {
    axios: {
        headers: {
            User-Agent: string;
        };
    };
    batch: number;
} = ...

defaults for making axios requests. Includes the User Agent that is sent with every request. It tries to get the name of the package.json of the calling package

+

Type declaration

  • axios: {
        headers: {
            User-Agent: string;
        };
    }
    • headers: {
          User-Agent: string;
      }
      • User-Agent: string
  • batch: number

Generated using TypeDoc

\ No newline at end of file diff --git a/src/classes/ClassLoginSession.ts b/src/classes/ClassLoginSession.ts index d67ff019..8d2bf92a 100644 --- a/src/classes/ClassLoginSession.ts +++ b/src/classes/ClassLoginSession.ts @@ -7,7 +7,9 @@ import { axiosDefaults } from "../config/axiosDefaults"; import fs from "fs"; -//TODO: Write Docs (https://www.notion.so/Write-Docs-2cbcbd3f12334a30b2aa07ed94eb56c2) +/** + * Class used to log in users. This is needed to access certain pages that are only accessible for logged in users + */ export default class LoginSession { #logindata; #instance?: AxiosInstance; diff --git a/src/classes/ClassWorkList.ts b/src/classes/ClassWorkList.ts index a7eaab19..feef8a12 100644 --- a/src/classes/ClassWorkList.ts +++ b/src/classes/ClassWorkList.ts @@ -1,6 +1,8 @@ import Work from "./ClassWork"; -//TODO: Write Docs (https://www.notion.so/Write-Docs-173043f91b6149e890303ff7cf55b28f) +/** + * This Class describes a list of works. It includes methods to sort the works by different metrics + */ export default class WorkList { works; #context; diff --git a/src/classes/ClassWorkUserData.ts b/src/classes/ClassWorkUserData.ts index 3d8e4868..8652977e 100644 --- a/src/classes/ClassWorkUserData.ts +++ b/src/classes/ClassWorkUserData.ts @@ -4,7 +4,9 @@ import { } from "../interfaces/InterfaceWorkUsersData"; import User from "./ClassUser"; -//TODO: Write Docs (https://www.notion.so/Write-Docs-02f09f5aed5342ecbaefcbec125062b3) +/** + * Class that describes data about a single user like their reading history and bookmarks + */ export default class WorkUserData { user: User; historyWithWork?: WorkHistory; diff --git a/src/config/axiosDefaults.ts b/src/config/axiosDefaults.ts index 30299574..62620ce1 100644 --- a/src/config/axiosDefaults.ts +++ b/src/config/axiosDefaults.ts @@ -38,7 +38,9 @@ export function getAxiosUserAgent() { return `bot/${packageInfo.name}/${packageInfo.version}/ao3-toolkit/${packageInfo.depsVersion.ao3Toolkit}/Axios/${packageInfo.depsVersion.axios}`; } -//TODO: Write Docs (https://www.notion.so/Write-Docs-6bf773f91ce64068b8a920428e171ef6) +/** + * defaults for making axios requests. Includes the User Agent that is sent with every request. It tries to get the name of the package.json of the calling package + */ export const axiosDefaults = { batch: 10, diff --git a/src/enums/EnumLanguageCodes.ts b/src/enums/EnumLanguageCodes.ts index e2b1d891..a5874463 100644 --- a/src/enums/EnumLanguageCodes.ts +++ b/src/enums/EnumLanguageCodes.ts @@ -1,5 +1,7 @@ -//TODO: Write Docs (https://www.notion.so/Write-Docs-0afb5d12d5fd419dae38ff68e19a62cb) //TODO: Rethink usage (https://www.notion.so/Rethink-usage-3c5137a9d07a426c8371a9f919363059) +/** + * collection of every supported language and the corresponding language code + */ export enum LanguageCodes { AfSoomaali = "so", Afrikaans = "afr", diff --git a/src/enums/EnumWorkLists.ts b/src/enums/EnumWorkLists.ts index fabd55ae..ebae903d 100644 --- a/src/enums/EnumWorkLists.ts +++ b/src/enums/EnumWorkLists.ts @@ -1,4 +1,6 @@ -//TODO: Write Docs (https://www.notion.so/Write-Docs-ed2fbd120fb54417998b0be7dc44d412) +/** + * enum that collects the different types of possible list + */ export enum Listtype { History = "History", Bookmarks = "Bookmarks", diff --git a/src/interfaces/InterfaceUserData.ts b/src/interfaces/InterfaceUserData.ts index 72c6d815..b99f6a61 100644 --- a/src/interfaces/InterfaceUserData.ts +++ b/src/interfaces/InterfaceUserData.ts @@ -1,4 +1,6 @@ -//TODO: Write Docs (https://www.notion.so/Write-Docs-ee5b520cf9f144279ae68a3df3b86ecc) +/** + * Type that describes the two parts of login data: username and password + */ export interface Login { username: string; password: string; diff --git a/src/interfaces/InterfaceWorkContent.ts b/src/interfaces/InterfaceWorkContent.ts index ee15d0c5..820de1c5 100644 --- a/src/interfaces/InterfaceWorkContent.ts +++ b/src/interfaces/InterfaceWorkContent.ts @@ -1,4 +1,6 @@ -//TODO: Write Docs (https://www.notion.so/Write-Docs-5a4f9a187ce74604b27f079919a8f47a) +/** + * WorkConten is an object containing of the {@link Notes} at the beginning and the end of the work and an array of {@link Chapter}s + */ export default interface WorkContent { notes: Notes; chapters: Chapter[]; diff --git a/src/interfaces/InterfaceWorkInfo.ts b/src/interfaces/InterfaceWorkInfo.ts index 659f7044..b8739a39 100644 --- a/src/interfaces/InterfaceWorkInfo.ts +++ b/src/interfaces/InterfaceWorkInfo.ts @@ -1,4 +1,3 @@ -//TODO: Write Docs (https://www.notion.so/Write-Docs-6ed443860cdd4703a3642503a4bf28e7) export interface Fandom { fandomName: string; fandomLink: string | undefined; diff --git a/src/interfaces/InterfaceWorkList.ts b/src/interfaces/InterfaceWorkList.ts index c8dfb59a..85cc2837 100644 --- a/src/interfaces/InterfaceWorkList.ts +++ b/src/interfaces/InterfaceWorkList.ts @@ -1,4 +1,6 @@ -//TODO: Write Docs (https://www.notion.so/Write-Docs-ec9b6d383ce244bb9d2462eb9bf40e67) +/** + * a span of Pages that should be parsed when fetching a list of pages. The exclude key is an array of numbers that define the pages that should be ignored + */ export interface PageSpan { start: number; end: number; diff --git a/src/interfaces/InterfaceWorkUsersData.ts b/src/interfaces/InterfaceWorkUsersData.ts index f69fee8a..2429af69 100644 --- a/src/interfaces/InterfaceWorkUsersData.ts +++ b/src/interfaces/InterfaceWorkUsersData.ts @@ -1,6 +1,5 @@ import { Tag } from "./InterfaceWorkInfo"; -//TODO: Write Docs (https://www.notion.so/Write-Docs-7d5ca69100794a459b38d2d876a568fc) export interface WorkHistory { lastVisit: Date; timesVisited: number; diff --git a/src/utils/getWorkList.ts b/src/utils/getWorkList.ts index f94fd4e6..80908caf 100644 --- a/src/utils/getWorkList.ts +++ b/src/utils/getWorkList.ts @@ -32,7 +32,16 @@ import { Tag, } from "../interfaces/InterfaceWorkInfo"; -//TODO: Write Docs (https://www.notion.so/Write-Docs-4e0db3422c3f4e269eaa4a1d16d27fe7) +import LoginSession from "../classes/ClassLoginSession"; + +/** + * + * @param logindata - a {@link Login} Object containing the username and password of the logged in user (the password is not used in this case, only the username) + * @param instance - AxiosInstance returned by {@link LoginSession.login} + * @param listtype - define the {@link Listtype} + * @param pageSpan - the {@link pageSpan} to define the pages that should be parsed + * @returns a new {@link WorkList} Object + */ export default async function getWorkList( logindata: Login, instance: AxiosInstance | undefined, diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts index 77375b55..c7657c4b 100644 --- a/src/utils/helpers.ts +++ b/src/utils/helpers.ts @@ -57,7 +57,12 @@ export function linkToAbsolute(linktext: string | undefined) { return linktext; } -//TODO: Write Docs (https://www.notion.so/Write-Docs-1953b6cd60e54cfdb7f04a5c3927528c) +/** + * Make sure the variable in a parseInt is a string + * + * @param input a string or undefined variable + * @returns a string or "0" if input is undefined + */ export function defineParseIntString(input: string | undefined): string { if (input) { return input;