diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e2ac6616a --- /dev/null +++ b/.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/assets/highlight.css b/assets/highlight.css new file mode 100644 index 000000000..5674cf392 --- /dev/null +++ b/assets/highlight.css @@ -0,0 +1,22 @@ +:root { + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --code-background: var(--dark-code-background); +} + +pre, code { background: var(--code-background); } diff --git a/assets/icons.js b/assets/icons.js new file mode 100644 index 000000000..e88e8ca77 --- /dev/null +++ b/assets/icons.js @@ -0,0 +1,18 @@ +(function() { + addIcons(); + function addIcons() { + if (document.readyState === "loading") return document.addEventListener("DOMContentLoaded", addIcons); + const svg = document.body.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "svg")); + svg.innerHTML = `""`; + svg.style.display = "none"; + if (location.protocol === "file:") updateUseElements(); + } + + function updateUseElements() { + document.querySelectorAll("use").forEach(el => { + if (el.getAttribute("href").includes("#icon-")) { + el.setAttribute("href", el.getAttribute("href").replace(/.*#/, "#")); + } + }); + } +})() \ No newline at end of file diff --git a/assets/icons.svg b/assets/icons.svg new file mode 100644 index 000000000..e371b8b5d --- /dev/null +++ b/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/main.js b/assets/main.js new file mode 100644 index 000000000..21a5d74d2 --- /dev/null +++ b/assets/main.js @@ -0,0 +1,60 @@ +"use strict"; +window.translations={"copy":"Copy","copied":"Copied!","normally_hidden":"This member is normally hidden due to your filter settings."}; +"use strict";(()=>{var Pe=Object.create;var ie=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var _e=Object.getOwnPropertyNames;var Re=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Fe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var De=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _e(e))!Me.call(t,i)&&i!==n&&ie(t,i,{get:()=>e[i],enumerable:!(r=Oe(e,i))||r.enumerable});return t};var Ae=(t,e,n)=>(n=t!=null?Pe(Re(t)):{},De(e||!t||!t.__esModule?ie(n,"default",{value:t,enumerable:!0}):n,t));var ue=Fe((ae,le)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),p;m in s.node.edges?p=s.node.edges[m]:(p=new t.TokenSet,s.node.edges[m]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof ae=="object"?le.exports=n():e.lunr=n()}(this,function(){return t})})()});var se=[];function G(t,e){se.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){se.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!Ve(e)){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r,document.querySelector(".col-sidebar").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(!n)return;let r=n.offsetParent==null,i=n;for(;i!==document.body;)i instanceof HTMLDetailsElement&&(i.open=!0),i=i.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let s=document.createElement("p");s.classList.add("warning"),s.textContent=window.translations.normally_hidden,n.prepend(s)}r&&e.scrollIntoView()}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent=window.translations.copied,e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent=window.translations.copy},100)},1e3)})})}};function Ve(t){let e=t.getBoundingClientRect(),n=Math.max(document.documentElement.clientHeight,window.innerHeight);return!(e.bottom<0||e.top-n>=0)}var oe=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var pe=Ae(ue());async function ce(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=pe.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function fe(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{ce(e,t)}),ce(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");i.addEventListener("mouseup",()=>{te(t)}),r.addEventListener("focus",()=>t.classList.add("has-focus")),He(t,i,r,e)}function He(t,e,n,r){n.addEventListener("input",oe(()=>{Ne(t,e,n,r)},200)),n.addEventListener("keydown",i=>{i.key=="Enter"?Be(e,t):i.key=="ArrowUp"?(de(e,n,-1),i.preventDefault()):i.key==="ArrowDown"&&(de(e,n,1),i.preventDefault())}),document.body.addEventListener("keypress",i=>{i.altKey||i.ctrlKey||i.metaKey||!n.matches(":focus")&&i.key==="/"&&(i.preventDefault(),n.focus())}),document.body.addEventListener("keyup",i=>{t.classList.contains("has-focus")&&(i.key==="Escape"||!e.matches(":focus-within")&&!n.matches(":focus"))&&(n.blur(),te(t))})}function te(t){t.classList.remove("has-focus")}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=he(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${he(l.parent,i)}.${d}`);let m=document.createElement("li");m.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,m.append(p),p.addEventListener("focus",()=>{e.querySelector(".current")?.classList.remove("current"),m.classList.add("current")}),e.appendChild(m)}}function de(t,e,n){let r=t.querySelector(".current");if(!r)r=t.querySelector(n==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let i=r;if(n===1)do i=i.nextElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);else do i=i.previousElementSibling??void 0;while(i instanceof HTMLElement&&i.offsetParent==null);i?(r.classList.remove("current"),i.classList.add("current")):n===-1&&(r.classList.remove("current"),e.focus())}}function Be(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),te(e)}}function he(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(ee(t.substring(s,o)),`${ee(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ee(t.substring(s))),i.join("")}var je={"&":"&","<":"<",">":">","'":"'",'"':"""};function ee(t){return t.replace(/[&<>"'"]/g,e=>je[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",ye="mousemove",N="mouseup",J={x:0,y:0},me=!1,ne=!1,qe=!1,D=!1,ve=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(ve?"is-mobile":"not-mobile");ve&&"ontouchstart"in document.documentElement&&(qe=!0,F="touchstart",ye="touchmove",N="touchend");document.addEventListener(F,t=>{ne=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(ye,t=>{if(ne&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(N,()=>{ne=!1});document.addEventListener("click",t=>{me&&(t.preventDefault(),t.stopImmediatePropagation(),me=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var re;try{re=localStorage}catch{re={getItem(){return null},setItem(){}}}var Q=re;var ge=document.head.appendChild(document.createElement("style"));ge.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ge.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function Ee(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,xe(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),xe(t.value)})}function xe(t){document.documentElement.dataset.theme=t}var K;function we(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",Le),Le())}async function Le(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();K=t.dataset.base,K.endsWith("/")||(K+="/"),t.innerHTML="";for(let s of i)Se(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function Se(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-accordion`:"tsd-accordion";let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.dataset.key=i.join("$"),o.innerHTML='',be(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)Se(u,l,i)}else be(t,r,t.class)}function be(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=K+t.path,n&&(r.className=n),location.pathname===r.pathname&&!r.href.includes("#")&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Te=document.getElementById("tsd-theme");Te&&Ee(Te);var $e=new U;Object.defineProperty(window,"app",{value:$e});fe();we();})(); +/*! 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/assets/navigation.js b/assets/navigation.js new file mode 100644 index 000000000..bc857e4b3 --- /dev/null +++ b/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/assets/search.js b/assets/search.js new file mode 100644 index 000000000..b44006819 --- /dev/null +++ b/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/assets/style.css b/assets/style.css new file mode 100644 index 000000000..9d619a641 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,1448 @@ +: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-focus-outline: #3584e4; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: 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-color-document: #000000; + + --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-focus-outline: #4c97f2; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: 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-color-document: #ffffff; + + --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-focus-outline: var(--light-color-focus-outline); + + --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); + --color-document: var(--light-color-document); + + --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-focus-outline: var(--dark-color-focus-outline); + + --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); + --color-document: var(--dark-color-document); + + --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-focus-outline: var(--light-color-focus-outline); + + --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); + --color-document: var(--light-color-document); + + --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-focus-outline: var(--dark-color-focus-outline); + + --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); + --color-document: var(--dark-color-document); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +*:focus-visible, +.tsd-accordion-summary:focus-visible svg { + outline: 2px solid var(--color-focus-outline); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +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; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} +footer > p { + margin: 0 1em; +} + +.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: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + 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; +} +a.tsd-anchor-link { + color: var(--color-text); +} + +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: -moz-fit-content; + width: fit-content; + align-items: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus-visible + svg { + outline: 2px solid var(--color-focus-outline); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.settings-label { + font-weight: bold; + text-transform: uppercase; + display: inline-block; +} + +.tsd-filter-visibility .settings-label { + margin: 0.75rem 0 0.5rem 0; +} + +.tsd-theme-toggle .settings-label { + margin: 0.75rem 0.75rem 0 0; +} + +.tsd-hierarchy { + 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-navigation .tsd-nav-link { + display: none; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation-section { + margin-left: 10px; +} +.tsd-page-navigation-section > summary { + padding: 0.25rem; +} +.tsd-page-navigation-section > div { + margin-left: 20px; +} +.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 { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; + vertical-align: text-top; +} +.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: 2rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} +.tsd-panel-group > .tsd-accordion-summary { + margin-bottom: 1rem; +} + +#tsd-search { + 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-signatures .tsd-index-signature:not(:last-child) { + margin-bottom: 1em; +} +.tsd-signatures .tsd-index-signature .tsd-signature { + border-width: 1px; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 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%; + } + #tsd-toolbar-links { + display: none; + } + .tsd-navigation .tsd-nav-link { + display: flex; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + 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/classes/AllowAllTenantGate.html b/classes/AllowAllTenantGate.html new file mode 100644 index 000000000..50aa04be5 --- /dev/null +++ b/classes/AllowAllTenantGate.html @@ -0,0 +1,5 @@ +AllowAllTenantGate | DWN-SDK Documentation - v0.5.1

A tenant gate that treats every DID as an active tenant.

+

Implements

Constructors

Methods

Constructors

Methods

diff --git a/classes/Cid.html b/classes/Cid.html new file mode 100644 index 000000000..7f56bc208 --- /dev/null +++ b/classes/Cid.html @@ -0,0 +1,17 @@ +Cid | DWN-SDK Documentation - v0.5.1

Utility class for creating CIDs. Exported for the convenience of developers.

+

Constructors

Methods

  • Computes a V1 CID for the provided payload

    +

    Parameters

    • payload: any
    • codecCode: number = cbor.code

      the codec to use. Defaults to cbor

      +
    • multihashCode: number = sha256.code

      the multihasher to use. Defaults to sha256

      +

    Returns Promise<string>

    payload CID

    +

    codec is not supported

    +

    encoding fails

    +

    if hasher is not supported

    +
  • Parameters

    • content: Uint8Array

    Returns Promise<string>

    V1 CID of the DAG comprised by chunking data into unixfs DAG-PB encoded blocks

    +
  • Parameters

    • dataStream: Readable

    Returns Promise<string>

    V1 CID of the DAG comprised by chunking data into unixfs DAG-PB encoded blocks

    +
  • Parses the given CID string into a {CID}.

    +

    Parameters

    • str: string

    Returns CID<unknown, number, number, Version>

diff --git a/classes/DataStoreLevel.html b/classes/DataStoreLevel.html new file mode 100644 index 000000000..a0126373d --- /dev/null +++ b/classes/DataStoreLevel.html @@ -0,0 +1,27 @@ +DataStoreLevel | DWN-SDK Documentation - v0.5.1

A simple implementation of DataStore that works in both the browser and server-side. +Leverages LevelDB under the hood.

+

It has the following structure (+ represents an additional sublevel/partition): +'data' + + + ->

+

Implements

Constructors

Properties

Methods

Constructors

Properties

blockstore: BlockstoreLevel
config: DataStoreLevelConfig

Methods

  • Deletes the specified data. No-op if the data does not exist.

    +

    Parameters

    • tenant: string
    • recordId: string

      The logical ID of the record that references the data.

      +
    • dataCid: string

      The IPFS CID of the data.

      +

    Returns Promise<void>

  • Fetches the specified data.

    +

    Parameters

    • tenant: string
    • recordId: string

      The logical ID of the record that references the data.

      +
    • dataCid: string

      The IPFS CID of the data.

      +

    Returns Promise<undefined | DataStoreGetResult>

    the data size and data stream if found, otherwise undefined.

    +
diff --git a/classes/DataStream.html b/classes/DataStream.html new file mode 100644 index 000000000..b269bbb4d --- /dev/null +++ b/classes/DataStream.html @@ -0,0 +1,13 @@ +DataStream | DWN-SDK Documentation - v0.5.1

Utility class for readable data stream, intentionally named to disambiguate from ReadableStream, readable-stream, Readable etc.

+

Constructors

Methods

  • Duplicates the given data stream into the number of streams specified so that multiple handlers can consume the same data stream.

    +

    Parameters

    • dataStream: Readable
    • count: number

    Returns Readable[]

  • Creates a readable stream from the bytes given.

    +

    Parameters

    • bytes: Uint8Array

    Returns Readable

  • Creates a readable stream from the object given.

    +

    Parameters

    • object: Record<string, any>

    Returns Readable

  • Reads the entire readable stream given into array of bytes.

    +

    Parameters

    • readableStream: Readable

    Returns Promise<Uint8Array>

  • Reads the entire readable stream and JSON parses it into an object.

    +

    Parameters

    • readableStream: Readable

    Returns Promise<object>

diff --git a/classes/Dwn.html b/classes/Dwn.html new file mode 100644 index 000000000..f0040a89b --- /dev/null +++ b/classes/Dwn.html @@ -0,0 +1,16 @@ +Dwn | DWN-SDK Documentation - v0.5.1

Methods

  • Initializes the DWN instance and opens the connection to it.

    +

    Returns Promise<void>

  • Validates structure of DWN message

    +

    Parameters

    • rawMessage: any

    Returns Promise<undefined | GenericMessageReply>

    GenericMessageReply if the message has an integrity error, otherwise undefined.

    +
  • Checks tenant gate to see if tenant is allowed.

    +

    Parameters

    • tenant: string

      The tenant DID to route the given message to.

      +

    Returns Promise<undefined | GenericMessageReply>

    GenericMessageReply if the message has an integrity error, otherwise undefined.

    +
diff --git a/classes/DwnConstant.html b/classes/DwnConstant.html new file mode 100644 index 000000000..db7df65d7 --- /dev/null +++ b/classes/DwnConstant.html @@ -0,0 +1,6 @@ +DwnConstant | DWN-SDK Documentation - v0.5.1

Constructors

Properties

maxDataSizeAllowedToBeEncoded: 30000 = 30_000

The maximum size of raw data that will be returned as encodedData.

+

We chose 30k, as after encoding it would give plenty of headroom up to the 65k limit in most SQL variants. +We currently encode using base64url which is a 33% increase in size.

+
diff --git a/classes/DwnError.html b/classes/DwnError.html new file mode 100644 index 000000000..93b2684c3 --- /dev/null +++ b/classes/DwnError.html @@ -0,0 +1,4 @@ +DwnError | DWN-SDK Documentation - v0.5.1

A class that represents a DWN error.

+

Hierarchy

  • Error
    • DwnError

Constructors

Properties

Constructors

Properties

code: string
diff --git a/classes/Encoder.html b/classes/Encoder.html new file mode 100644 index 000000000..540fe8280 --- /dev/null +++ b/classes/Encoder.html @@ -0,0 +1,11 @@ +Encoder | DWN-SDK Documentation - v0.5.1

Utility class for encoding/converting data into various formats.

+

Constructors

Methods

  • Parameters

    • base64urlString: string

    Returns Uint8Array

  • Parameters

    • base64urlString: string

    Returns any

  • Parameters

    • obj: Record<string, any>

    Returns Uint8Array

diff --git a/classes/Encryption.html b/classes/Encryption.html new file mode 100644 index 000000000..b61dd9384 --- /dev/null +++ b/classes/Encryption.html @@ -0,0 +1,17 @@ +Encryption | DWN-SDK Documentation - v0.5.1

Utility class for performing common, non-DWN specific encryption operations.

+

Constructors

Accessors

Methods

  • Decrypts the given cipher stream using AES-256-CTR algorithm.

    +

    Parameters

    • key: Uint8Array
    • initializationVector: Uint8Array
    • cipherStream: Readable

    Returns Promise<Readable>

  • Encrypts the given plaintext stream using AES-256-CTR algorithm.

    +

    Parameters

    • key: Uint8Array
    • initializationVector: Uint8Array
    • plaintextStream: Readable

    Returns Promise<Readable>

  • Decrypt the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme) +with SECP256K1 for the asymmetric calculations, HKDF as the key-derivation function, +and AES-GCM for the symmetric encryption and MAC algorithms.

    +

    Parameters

    • input: EciesEncryptionInput

    Returns Promise<Uint8Array>

  • Encrypts the given plaintext using ECIES (Elliptic Curve Integrated Encryption Scheme) +with SECP256K1 for the asymmetric calculations, HKDF as the key-derivation function, +and AES-GCM for the symmetric encryption and MAC algorithms.

    +

    Parameters

    • publicKeyBytes: Uint8Array
    • plaintext: Uint8Array

    Returns Promise<EciesEncryptionOutput>

diff --git a/classes/EventEmitterStream.html b/classes/EventEmitterStream.html new file mode 100644 index 000000000..e9502b4f7 --- /dev/null +++ b/classes/EventEmitterStream.html @@ -0,0 +1,7 @@ +EventEmitterStream | DWN-SDK Documentation - v0.5.1

The EventStream interface implements a pub/sub system based on Message filters.

+

Implements

Constructors

Methods

Constructors

Methods

diff --git a/classes/EventLogLevel.html b/classes/EventLogLevel.html new file mode 100644 index 000000000..1c8666063 --- /dev/null +++ b/classes/EventLogLevel.html @@ -0,0 +1,28 @@ +EventLogLevel | DWN-SDK Documentation - v0.5.1

Implements

Constructors

Properties

index: IndexLevel
ulidFactory: ULIDFactory

Methods

  • adds an event to a tenant's event log

    +

    Parameters

    • tenant: string

      the tenant's DID

      +
    • messageCid: string

      the CID of the message

      +
    • indexes: KeyValues

      (key-value pairs) to be included as part of indexing this event.

      +

    Returns Promise<void>

  • deletes any events that have any of the messageCids provided

    +

    Parameters

    • tenant: string
    • messageCids: string[]

    Returns Promise<void>

    the number of events deleted

    +
  • Retrieves all of a tenant's events that occurred after the cursor provided. +If no cursor is provided, all events for a given tenant will be returned.

    +

    The cursor is a messageCid.

    +

    Returns an array of messageCids that represent the events.

    +

    Parameters

    Returns Promise<{
        cursor?: PaginationCursor;
        events: string[];
    }>

  • retrieves a filtered set of events that occurred after a the cursor provided, accepts multiple filters.

    +

    If no cursor is provided, all events for a given tenant and filter combo will be returned. +The cursor is a messageCid.

    +

    Returns an array of messageCids that represent the events.

    +

    Parameters

    Returns Promise<{
        cursor?: PaginationCursor;
        events: string[];
    }>

diff --git a/classes/HdKey.html b/classes/HdKey.html new file mode 100644 index 000000000..af2b51309 --- /dev/null +++ b/classes/HdKey.html @@ -0,0 +1,14 @@ +HdKey | DWN-SDK Documentation - v0.5.1

Class containing hierarchical deterministic key related utility methods used by the DWN.

+

Constructors

Methods

  • Derives a key using HMAC-based Extract-and-Expand Key Derivation Function (HKDF) as defined in RFC 5869. +TODO: Consolidate HKDF implementation and usage with web5-js - https://github.com/TBD54566975/dwn-sdk-js/issues/742

    +

    Parameters

    • params: {
          hashAlgorithm: "SHA-256" | "SHA-384" | "SHA-512";
          info: Uint8Array;
          initialKeyMaterial: Uint8Array;
          keyLengthInBytes: number;
      }
      • hashAlgorithm: "SHA-256" | "SHA-384" | "SHA-512"
      • info: Uint8Array
      • initialKeyMaterial: Uint8Array
      • keyLengthInBytes: number

    Returns Promise<Uint8Array>

  • Derives a hardened hierarchical deterministic private key.

    +

    Parameters

    • privateKey: Uint8Array
    • relativePath: string[]

    Returns Promise<Uint8Array>

  • Derives a descendant public key from an ancestor private key. +NOTE: currently only supports SECP256K1 keys.

    +

    Parameters

    Returns Promise<PublicJwk>

diff --git a/classes/Jws.html b/classes/Jws.html new file mode 100644 index 000000000..b6f83c973 --- /dev/null +++ b/classes/Jws.html @@ -0,0 +1,18 @@ +Jws | DWN-SDK Documentation - v0.5.1

Utility class for JWS related operations.

+

Constructors

Methods

  • Decodes the payload of the given JWS object as a plain object.

    +

    Parameters

    • jws: GeneralJws

    Returns any

  • Extracts the DID from the given kid string.

    +

    Parameters

    • kid: string

    Returns string

  • Gets the kid from a general JWS signature entry.

    +

    Parameters

    • signatureEntry: SignatureEntry

    Returns string

  • Gets the signer DID from a general JWS signature entry.

    +

    Parameters

    • signatureEntry: SignatureEntry

    Returns string

  • Verifies the signature against the given payload.

    +

    Parameters

    • base64UrlPayload: string
    • signatureEntry: SignatureEntry
    • jwkPublic: PublicJwk

    Returns Promise<boolean>

    true if signature is valid; false otherwise

    +
diff --git a/classes/Message.html b/classes/Message.html new file mode 100644 index 000000000..c3683ebbc --- /dev/null +++ b/classes/Message.html @@ -0,0 +1,48 @@ +Message | DWN-SDK Documentation - v0.5.1

A class containing utility methods for working with DWN messages.

+

Constructors

Methods

  • Compares message CID in lexicographical order according to the spec.

    +

    Returns Promise<number>

    1 if a is larger than b; -1 if a is smaller/older than b; 0 otherwise (same message)

    +
  • Compares the messageTimestamp of the given messages with a fallback to message CID according to the spec.

    +

    Returns Promise<number>

    1 if a is larger/newer than b; -1 if a is smaller/older than b; 0 otherwise (same age)

    +
  • Creates the authorization property to be included in a DWN message.

    +

    Parameters

    Returns Promise<AuthorizationModel>

    used as an authorization property.

    +
  • Creates a generic signature from the given DWN message descriptor by including descriptorCid as the required property in the signature payload. +NOTE: there is an opportunity to consolidate RecordsWrite.createSignerSignature() wth this method

    +

    Parameters

    • descriptor: Descriptor
    • signer: Signer
    • OptionaladditionalPayloadProperties: {
          delegatedGrantId?: string;
          permissionGrantId?: string;
          protocolRole?: string;
      }
      • OptionaldelegatedGrantId?: string
      • OptionalpermissionGrantId?: string
      • OptionalprotocolRole?: string

    Returns Promise<GeneralJws>

  • Gets the DID of the author of the given message.

    +

    Parameters

    Returns undefined | string

  • Gets the DID of the signer of the given message, returns undefined if message is not signed.

    +

    Parameters

    Returns undefined | string

  • Validates the given message against the corresponding JSON schema.

    +

    Parameters

    • rawMessage: any

    Returns void

    if fails validation.

    +
  • Validates the structural integrity of the message signature given:

    +
      +
    1. The message signature must contain exactly 1 signature
    2. +
    3. Passes JSON schema validation
    4. +
    5. The descriptorCid property matches the CID of the message descriptor +NOTE: signature is NOT verified.
    6. +
    +

    Parameters

    • messageSignature: GeneralJws
    • messageDescriptor: Descriptor
    • payloadJsonSchemaKey: string = 'GenericSignaturePayload'

      The key to look up the JSON schema referenced in compile-validators.js and perform payload schema validation on.

      +

    Returns Promise<GenericSignaturePayload>

    the parsed JSON payload object if validation succeeds.

    +
diff --git a/classes/MessageStoreLevel.html b/classes/MessageStoreLevel.html new file mode 100644 index 000000000..1128912ad --- /dev/null +++ b/classes/MessageStoreLevel.html @@ -0,0 +1,26 @@ +MessageStoreLevel | DWN-SDK Documentation - v0.5.1

A simple implementation of MessageStore that works in both the browser and server-side. +Leverages LevelDB under the hood.

+

Implements

Constructors

Properties

blockstore: BlockstoreLevel
config: MessageStoreLevelConfig
index: IndexLevel

Methods

diff --git a/classes/MessagesQuery.html b/classes/MessagesQuery.html new file mode 100644 index 000000000..da18b84be --- /dev/null +++ b/classes/MessagesQuery.html @@ -0,0 +1,19 @@ +MessagesQuery | DWN-SDK Documentation - v0.5.1

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

diff --git a/classes/MessagesRead.html b/classes/MessagesRead.html new file mode 100644 index 000000000..4b40ccd07 --- /dev/null +++ b/classes/MessagesRead.html @@ -0,0 +1,19 @@ +MessagesRead | DWN-SDK Documentation - v0.5.1

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

diff --git a/classes/MessagesSubscribe.html b/classes/MessagesSubscribe.html new file mode 100644 index 000000000..27be58b30 --- /dev/null +++ b/classes/MessagesSubscribe.html @@ -0,0 +1,21 @@ +MessagesSubscribe | DWN-SDK Documentation - v0.5.1

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

diff --git a/classes/PermissionGrant.html b/classes/PermissionGrant.html new file mode 100644 index 000000000..06ec6a26a --- /dev/null +++ b/classes/PermissionGrant.html @@ -0,0 +1,23 @@ +PermissionGrant | DWN-SDK Documentation - v0.5.1

A class representing a Permission Grant for a more convenient abstraction.

+

Properties

Optional conditions that must be met when the grant is used.

+
dateExpires: string

Timestamp at which this grant will no longer be active.

+
dateGranted: string

The date at which the grant was given.

+
delegated?: boolean

Whether this grant is delegated or not. If true, the grantedTo will be able to act as the grantedTo within the scope of this grant.

+
description?: string

Optional string that communicates what the grant would be used for

+
grantee: string

The grantee of the permission.

+
grantor: string

The grantor of the permission.

+
id: string

The ID of the permission grant, which is the record ID DWN message.

+
requestId?: string

Optional CID of a permission request. This is optional because grants may be given without being officially requested

+

The scope of the allowed access.

+

Methods

diff --git a/classes/PermissionRequest.html b/classes/PermissionRequest.html new file mode 100644 index 000000000..4bceec7bd --- /dev/null +++ b/classes/PermissionRequest.html @@ -0,0 +1,16 @@ +PermissionRequest | DWN-SDK Documentation - v0.5.1

A class representing a Permission Request for a more convenient abstraction.

+

Properties

Optional conditions that must be met when the requested grant is used.

+
delegated?: boolean

Whether the requested grant is delegated or not. +If true, the requestor will be able to act as the grantor of the permission within the scope of the requested grant.

+
description?: string

Optional string that communicates what the requested grant would be used for.

+
id: string

The ID of the permission request, which is the record ID DWN message.

+
requester: string

The requester for of the permission.

+

The scope of the allowed access.

+

Methods

diff --git a/classes/PermissionsProtocol.html b/classes/PermissionsProtocol.html new file mode 100644 index 000000000..80772a06d --- /dev/null +++ b/classes/PermissionsProtocol.html @@ -0,0 +1,32 @@ +PermissionsProtocol | DWN-SDK Documentation - v0.5.1

This is a first-class DWN protocol for managing permission grants of a given DWN.

+

Constructors

Properties

definition: ProtocolDefinition = ...

The definition of the Permissions protocol.

+
grantPath: "grant" = 'grant'

The protocol path of the grant record.

+
requestPath: "request" = 'request'

The protocol path of the request record.

+
revocationPath: "grant/revocation" = 'grant/revocation'

The protocol path of the revocation record.

+
uri: "https://tbd.website/dwn/permissions" = 'https://tbd.website/dwn/permissions'

The URI of the DWN Permissions protocol.

+

Methods

  • Fetches PermissionGrant with the specified recordID.

    +

    Parameters

    • tenant: string
    • messageStore: MessageStore
    • permissionGrantId: string

    Returns Promise<PermissionGrant>

    the PermissionGrant matching the recordId specified.

    +

    if PermissionGrant does not exist

    +
  • Validates the given Permissions protocol RecordsWrite. It can be a request, grant, or revocation.

    +

    Parameters

    Returns void

diff --git a/classes/Poller.html b/classes/Poller.html new file mode 100644 index 000000000..3b720c109 --- /dev/null +++ b/classes/Poller.html @@ -0,0 +1,12 @@ +Poller | DWN-SDK Documentation - v0.5.1

Constructors

Properties

pollRetrySleep: number = 20

The interval in milliseconds to wait before retrying the delegate function.

+
pollTimeout: number = 2000

The maximum time in milliseconds to wait before timing out the delegate function.

+

Methods

  • Polls the delegate function until it succeeds or the timeout is exceeded.

    +

    Type Parameters

    • T

    Parameters

    • delegate: (() => Promise<T>)

      a function that returns a promise and may throw.

      +
        • (): Promise<T>
        • Returns Promise<T>

    • retrySleep: number = Poller.pollRetrySleep

      the interval in milliseconds to wait before retrying the delegate function.

      +
    • timeout: number = Poller.pollTimeout

      the maximum time in milliseconds to wait before timing out the delegate function.

      +

    Returns Promise<T>

    Operation timed out if the timeout is exceeded.

    +
diff --git a/classes/PrivateKeySigner.html b/classes/PrivateKeySigner.html new file mode 100644 index 000000000..6db6a25c2 --- /dev/null +++ b/classes/PrivateKeySigner.html @@ -0,0 +1,17 @@ +PrivateKeySigner | DWN-SDK Documentation - v0.5.1

A signer that signs using a private key.

+

Implements

Constructors

Properties

Methods

Constructors

Properties

algorithm: string

The name of the signature algorithm used by this signer. +This value will be used as the "alg" parameter in JWS produced. +This parameter is not used by the DWN but is unfortunately a required header property for a JWS as per: +https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.1 +Valid signature algorithm values can be found at https://www.iana.org/assignments/jose/jose.xhtml

+
keyId: string

The ID of the key used by this signer. +This needs to be a fully-qualified ID (ie. prefixed with DID) so that author can be parsed out for processing such as recordId computation. +Example: did:example:alice#key1 +This value will be used as the "kid" parameter in JWS produced. +While this property is not a required property per JWS specification, it is required for DWN authentication.

+

Methods

  • Signs the given content and returns the signature as bytes.

    +

    Parameters

    • content: Uint8Array

    Returns Promise<Uint8Array>

diff --git a/classes/Protocols.html b/classes/Protocols.html new file mode 100644 index 000000000..b26b67bd1 --- /dev/null +++ b/classes/Protocols.html @@ -0,0 +1,7 @@ +Protocols | DWN-SDK Documentation - v0.5.1

Class containing Protocol related utility methods.

+

Constructors

Methods

  • Derives public encryptions keys and inject it in the $encryption property for each protocol path segment of the given Protocol definition, +then returns the final encryption-enabled protocol definition. +NOTE: The original definition passed in is unmodified.

    +

    Parameters

    Returns Promise<ProtocolDefinition>

diff --git a/classes/ProtocolsConfigure.html b/classes/ProtocolsConfigure.html new file mode 100644 index 000000000..88949fef2 --- /dev/null +++ b/classes/ProtocolsConfigure.html @@ -0,0 +1,22 @@ +ProtocolsConfigure | DWN-SDK Documentation - v0.5.1

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

  • Authorizes the author-delegate who signed this message.

    +

    Parameters

    • messageStore: MessageStore

      Used to check if the grant has been revoked.

      +

    Returns Promise<void>

diff --git a/classes/ProtocolsQuery.html b/classes/ProtocolsQuery.html new file mode 100644 index 000000000..9a2501a0a --- /dev/null +++ b/classes/ProtocolsQuery.html @@ -0,0 +1,21 @@ +ProtocolsQuery | DWN-SDK Documentation - v0.5.1

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

diff --git a/classes/Records.html b/classes/Records.html new file mode 100644 index 000000000..a21d4a47b --- /dev/null +++ b/classes/Records.html @@ -0,0 +1,64 @@ +Records | DWN-SDK Documentation - v0.5.1

Class containing useful utilities related to the Records interface.

+

Constructors

Methods

  • This will create individual keys for each of the tags that look like tag.tag_property

    +

    Parameters

    Returns KeyValues

  • Checks if the given RecordsDelete message can be performed against a record with the given newest existing state.

    +

    Parameters

    Returns boolean

  • Constructs the full key derivation path using dataFormats scheme.

    +

    Parameters

    • schema: undefined | string
    • dataFormat: string

    Returns string[]

  • Constructs the full key derivation path using protocolContext scheme.

    +

    Parameters

    • contextId: undefined | string

    Returns string[]

  • Constructs the full key derivation path using protocolPath scheme.

    +

    Parameters

    Returns string[]

  • Constructs the full key derivation path using schemas scheme.

    +

    Parameters

    • schema: undefined | string

    Returns string[]

  • Converts an incoming RecordsFilter into a Filter usable by MessageStore.

    +

    Parameters

    Returns Filter

    a generic Filter able to be used with MessageStore.

    +
  • Decrypts the encrypted data in a message reply using the given ancestor private key.

    +

    Parameters

    Returns Promise<Readable>

  • Derives a descendant private key given an ancestor private key and the full absolute derivation path. +NOTE: right now only ECIES-ES256K algorithm is supported for asymmetric encryption, +so we will only derive SECP256K1 key without additional conditional checks

    +

    Parameters

    Returns Promise<Uint8Array>

  • Checks if the filter supports returning published records.

    +

    Parameters

    Returns boolean

  • Checks if the filter supports returning unpublished records.

    +

    Parameters

    Returns boolean

  • Extracts the parent context ID from the given context ID.

    +

    Parameters

    • contextId: undefined | string

    Returns undefined | string

  • Parameters

    • filter:
          | string
          | number
          | boolean
          | {
              gt: RangeValue;
          } & {
              gte?: undefined;
          } & Partial<{
              gt: RangeValue;
          } & {
              gte?: undefined;
          }> & Partial<{
              lt: RangeValue;
          } & {
              lte?: undefined;
          }>
          | {
              gt: RangeValue;
          } & {
              gte?: undefined;
          } & Partial<{
              gt: RangeValue;
          } & {
              gte?: undefined;
          }> & Partial<{
              lt?: undefined;
          } & {
              lte: RangeValue;
          }>
          | never
          | never
          | never
          | never
          | {
              gt?: undefined;
          } & {
              gte: RangeValue;
          } & Partial<{
              gt?: undefined;
          } & {
              gte: RangeValue;
          }> & Partial<{
              lt: RangeValue;
          } & {
              lte?: undefined;
          }>
          | {
              gt?: undefined;
          } & {
              gte: RangeValue;
          } & Partial<{
              gt?: undefined;
          } & {
              gte: RangeValue;
          }> & Partial<{
              lt?: undefined;
          } & {
              lte: RangeValue;
          }>
          | {
              lt: RangeValue;
          } & {
              lte?: undefined;
          } & Partial<{
              gt: RangeValue;
          } & {
              gte?: undefined;
          }> & Partial<{
              lt: RangeValue;
          } & {
              lte?: undefined;
          }>
          | never
          | {
              lt: RangeValue;
          } & {
              lte?: undefined;
          } & Partial<{
              gt?: undefined;
          } & {
              gte: RangeValue;
          }> & Partial<{
              lt: RangeValue;
          } & {
              lte?: undefined;
          }>
          | never
          | never
          | {
              lt?: undefined;
          } & {
              lte: RangeValue;
          } & Partial<{
              gt: RangeValue;
          } & {
              gte?: undefined;
          }> & Partial<{
              lt?: undefined;
          } & {
              lte: RangeValue;
          }>
          | never
          | {
              lt?: undefined;
          } & {
              lte: RangeValue;
          } & Partial<{
              gt?: undefined;
          } & {
              gte: RangeValue;
          }> & Partial<{
              lt?: undefined;
          } & {
              lte: RangeValue;
          }>
          | StartsWithFilter

    Returns filter is StartsWithFilter

  • Normalizes the protocol and schema URLs within a provided RecordsFilter and returns a copy of RecordsFilter with the modified values.

    +

    Parameters

    Returns RecordsFilter

    a copy of the incoming RecordsFilter with the normalized properties.

    +
  • Checks whether or not the incoming records query filter should build an unpublished author MessageStore filter.

    +

    Parameters

    • filter: RecordsFilter

      The incoming RecordsFilter to evaluate against.

      +
    • author: string

      The author to check against the filter, typically the query/subscribe message author.

      +

    Returns boolean

    True if the filter contains the author, or if the author filter is undefined/empty.

    +
  • Checks whether or not the incoming records query filter should build an unpublished recipient MessageStore filter.

    +

    Parameters

    • filter: RecordsFilter

      The incoming RecordsFilter to evaluate against.

      +
    • recipient: string

      The recipient to check against the filter, typically the query/subscribe message author.

      +

    Returns boolean

    True if the filter contains the recipient, or if the recipient filter is undefined/empty.

    +
  • Determines if signature payload contains a protocolRole and should be authorized as such.

    +

    Parameters

    • signaturePayload: GenericSignaturePayload

    Returns boolean

  • Validates that ancestor derivation path matches the descendant derivation path completely.

    +

    Parameters

    • ancestorKeyDerivationPath: string[]
    • descendantKeyDerivationPath: string[]

    Returns void

    with DwnErrorCode.RecordsInvalidAncestorKeyDerivationSegment if fails validation.

    +
  • Validates the referential integrity of both author-delegated grant and owner-delegated grant.

    +

    Parameters

    • message:
          | RecordsWriteMessage
          | RecordsQueryMessage
          | RecordsDeleteMessage
          | RecordsSubscribeMessage
          | RecordsReadMessage
    • authorSignaturePayload: undefined | GenericSignaturePayload

      Decoded payload of the author signature of the message. Pass undefined if message is not signed. +Passed purely as a performance optimization so we don't have to decode the signature payload again.

      +
    • OptionalownerSignaturePayload: GenericSignaturePayload

      Decoded payload of the owner signature of the message. Pass undefined if no owner signature is present. +Passed purely as a performance optimization so we don't have to decode the owner signature payload again.

      +

    Returns Promise<void>

diff --git a/classes/RecordsDelete.html b/classes/RecordsDelete.html new file mode 100644 index 000000000..28c420f79 --- /dev/null +++ b/classes/RecordsDelete.html @@ -0,0 +1,23 @@ +RecordsDelete | DWN-SDK Documentation - v0.5.1

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

diff --git a/classes/RecordsQuery.html b/classes/RecordsQuery.html new file mode 100644 index 000000000..9f56901e0 --- /dev/null +++ b/classes/RecordsQuery.html @@ -0,0 +1,23 @@ +RecordsQuery | DWN-SDK Documentation - v0.5.1

A class representing a RecordsQuery DWN message.

+

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

  • Authorizes the delegate who signed this message.

    +

    Parameters

    • messageStore: MessageStore

      Used to check if the grant has been revoked.

      +

    Returns Promise<void>

diff --git a/classes/RecordsRead.html b/classes/RecordsRead.html new file mode 100644 index 000000000..2a8f40517 --- /dev/null +++ b/classes/RecordsRead.html @@ -0,0 +1,24 @@ +RecordsRead | DWN-SDK Documentation - v0.5.1

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

diff --git a/classes/RecordsSubscribe.html b/classes/RecordsSubscribe.html new file mode 100644 index 000000000..157e2adae --- /dev/null +++ b/classes/RecordsSubscribe.html @@ -0,0 +1,23 @@ +RecordsSubscribe | DWN-SDK Documentation - v0.5.1

A class representing a RecordsSubscribe DWN message.

+

Hierarchy

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get isSignedByAuthorDelegate(): boolean
  • If this message is signed by an author-delegate.

    +

    Returns boolean

  • get message(): M
  • Valid JSON message representing this DWN message.

    +

    Returns M

  • get signaturePayload(): undefined | GenericSignaturePayload
  • Decoded payload of the signature of this message.

    +

    Returns undefined | GenericSignaturePayload

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

diff --git a/classes/RecordsWrite.html b/classes/RecordsWrite.html new file mode 100644 index 000000000..d1451c762 --- /dev/null +++ b/classes/RecordsWrite.html @@ -0,0 +1,90 @@ +RecordsWrite | DWN-SDK Documentation - v0.5.1

A class representing a RecordsWrite DWN message. +NOTE: Unable to extend AbstractMessage directly because the incompatible _message type, which is not just a generic <M> type.

+

Implements

Properties

attesters: string[]

Accessors

  • get author(): undefined | string
  • DID of the logical author of this message. +NOTE: we say "logical" author because a message can be signed by a delegate of the actual author, +in which case the author DID would not be the same as the signer/delegate DID, +but be the DID of the grantor (grantedBy) of the delegated grant presented.

    +

    Returns undefined | string

  • get owner(): undefined | string
  • The owner DID of the message if owner signature is present in the message; undefined otherwise. +This is the logical owner of the message, not to be confused with the actual signer of the owner signature, +this is because the signer of the owner signature may not be the actual DWN owner, but a delegate authorized by the owner.

    +

    Returns undefined | string

  • get ownerSignaturePayload(): undefined | GenericSignaturePayload
  • Decoded owner signature payload.

    +

    Returns undefined | GenericSignaturePayload

  • get ownerSignatureSigner(): undefined | string
  • Gets the signer of owner signature; undefined if owner signature is not present in the message. +This is not to be confused with the logical owner #owner of the message, +this is because the signer of the owner signature may not be the actual DWN owner, but a delegate authorized by the owner. +In the case that the owner signature is signed by the actual DWN owner, this value will be the same as #owner.

    +

    Returns undefined | string

  • get signer(): undefined | string
  • Gets the signer of this message. +This is not to be confused with the logical author of the message.

    +

    Returns undefined | string

Methods

  • Authorizes the author-delegate who signed this message.

    +

    Parameters

    • messageStore: MessageStore

      Used to check if the grant has been revoked.

      +

    Returns Promise<void>

  • Authorizes the owner-delegate who signed this message.

    +

    Parameters

    • messageStore: MessageStore

      Used to check if the grant has been revoked.

      +

    Returns Promise<void>

  • Encrypts the symmetric encryption key using the public keys given and attach the resulting encryption property to the RecordsWrite.

    +

    Parameters

    Returns Promise<void>

  • Signs the RecordsWrite as the DWN owner. +This is used when the DWN owner wants to retain a copy of a message that the owner did not author. +NOTE: requires the RecordsWrite to already have the author's signature.

    +

    Parameters

    Returns Promise<void>

  • Signs the RecordsWrite as the DWN owner-delegate. +This is used when a DWN owner-delegate wants to retain a copy of a message that the owner did not author. +NOTE: requires the RecordsWrite to already have the author's signature.

    +

    Parameters

    Returns Promise<void>

  • Creates the attestation property of a RecordsWrite message if given signature inputs; returns undefined otherwise.

    +

    Parameters

    • descriptorCid: string
    • Optionalsigners: Signer[]

    Returns Promise<undefined | GeneralJws>

  • Convenience method that creates a message by:

    +
      +
    1. Copying over immutable properties from the given source message
    2. +
    3. Copying over mutable properties that are not overwritten from the given source message
    4. +
    5. Replace the mutable properties that are given new value
    6. +
    +

    Parameters

    Returns Promise<RecordsWrite>

  • Creates the signature property in the authorization of a RecordsWrite message.

    +

    Parameters

    • input: {
          attestation: undefined | GeneralJws;
          contextId: undefined | string;
          delegatedGrantId?: string;
          descriptorCid: string;
          encryption: undefined | EncryptionProperty;
          permissionGrantId?: string;
          protocolRole?: string;
          recordId: string;
          signer: Signer;
      }
      • attestation: undefined | GeneralJws
      • contextId: undefined | string
      • OptionaldelegatedGrantId?: string
      • descriptorCid: string
      • encryption: undefined | EncryptionProperty
      • OptionalpermissionGrantId?: string
      • OptionalprotocolRole?: string
      • recordId: string
      • signer: Signer

    Returns Promise<GeneralJws>

diff --git a/classes/ResumableTaskStoreLevel.html b/classes/ResumableTaskStoreLevel.html new file mode 100644 index 000000000..b8b7cfd96 --- /dev/null +++ b/classes/ResumableTaskStoreLevel.html @@ -0,0 +1,41 @@ +ResumableTaskStoreLevel | DWN-SDK Documentation - v0.5.1

A simple single-instance implementation of ResumableTaskStore that works in both browsers and node.js. +Leverages LevelDB under the hood.

+

Implements

Constructors

Properties

Methods

Constructors

Properties

config: ResumableTaskStoreLevelConfig
db: LevelWrapper<string>

Methods

  • Deletes the task associated with the task ID provided. +No-op if the task is not found, as this implies that the task has already been completed. +Called when the task has been successfully completed.

    +

    Parameters

    • taskId: string

    Returns Promise<void>

  • Extends the timeout of the task associated with the task ID provided. +No-op if the task is not found, as this implies that the task has already been completed. +This allows the client that is executing the task to continue working on it before the task is considered timed out.

    +

    Parameters

    • taskId: string

      ID of the task to extend the timeout for.

      +
    • timeoutInSeconds: number

      Timeout in seconds from the current time.

      +

    Returns Promise<void>

  • Grabs a number of unhandled tasks from the store. +Unhandled tasks are tasks that are not currently in-flight/under processing (ie. tasks that have timed-out). +NOTE: The implementation must make sure that once a task is grabbed by a client, +tis timeout must be updated so that it is considered in-flight/under processing +and cannot be grabbed by another client until it is timed-out.

    +

    Parameters

    • count: number

      Desired number of tasks to grab.

      +

    Returns Promise<ManagedResumableTask[]>

    A list of tasks exclusive for the caller to handle; or empty array if there is no tasks, or if all tasks are already grabbed by others.

    +
  • Registers a new resumable task that is currently in-flight/under processing to the store. +If the task is timed out, a client will be able to grab it through the grab() method and resume the task.

    +

    Parameters

    • task: any

      Task specific data. This is deliberately of type any because this store should not have to be ware of its type.

      +
    • timeoutInSeconds: number

      Timeout in seconds from the current time.

      +

    Returns Promise<ManagedResumableTask>

    A ManagedResumableTask object that can be used to extend or delete the task.

    +

    with code set to ResumableTaskAlreadyExists if the same task is already registered.

    +
diff --git a/classes/Secp256k1.html b/classes/Secp256k1.html new file mode 100644 index 000000000..6f36c785e --- /dev/null +++ b/classes/Secp256k1.html @@ -0,0 +1,27 @@ +Secp256k1 | DWN-SDK Documentation - v0.5.1

Class containing SECP256K1 related utility methods.

+

Constructors

Methods

  • Generates key pair in raw bytes, where the publicKey is compressed.

    +

    Returns Promise<{
        privateKey: Uint8Array;
        publicKey: Uint8Array;
    }>

  • Gets the compressed public key of the given private key.

    +

    Parameters

    • privateKey: Uint8Array

    Returns Promise<Uint8Array>

  • Creates a private key in raw bytes from the given SECP256K1 JWK.

    +

    Parameters

    Returns Uint8Array

  • Creates a compressed key in raw bytes from the given SECP256K1 JWK.

    +

    Parameters

    Returns Uint8Array

  • Signs the provided content using the provided JWK.

    +

    Parameters

    Returns Promise<Uint8Array>

  • Verifies a signature against the provided payload hash and public key.

    +

    Parameters

    • content: Uint8Array
    • signature: Uint8Array
    • publicJwk: PublicJwk

    Returns Promise<boolean>

    a boolean indicating whether the signature is valid.

    +
diff --git a/classes/Secp256r1.html b/classes/Secp256r1.html new file mode 100644 index 000000000..4648b2e7e --- /dev/null +++ b/classes/Secp256r1.html @@ -0,0 +1,20 @@ +Secp256r1 | DWN-SDK Documentation - v0.5.1

Class containing SECP256R1 related utility methods.

+

Constructors

Methods

  • Creates a private key in raw bytes from the given SECP256R1 JWK.

    +

    Parameters

    Returns Uint8Array

  • Signs the provided content using the provided JWK. +Signature that is outputted is JWS format, not DER.

    +

    Parameters

    Returns Promise<Uint8Array>

  • Verifies a signature against the provided payload hash and public key.

    +

    Parameters

    • content: Uint8Array
    • signature: Uint8Array

      the signature to verify. Can be in either DER or compact format. If using Oracle Cloud KMS, keys will be DER formatted.

      +
    • publicJwk: PublicJwk

    Returns Promise<boolean>

    a boolean indicating whether the signature is valid.

    +
diff --git a/classes/TestDataGenerator.html b/classes/TestDataGenerator.html new file mode 100644 index 000000000..64798ebe0 --- /dev/null +++ b/classes/TestDataGenerator.html @@ -0,0 +1,60 @@ +TestDataGenerator | DWN-SDK Documentation - v0.5.1

Utility class for generating data for testing.

+

Constructors

Methods

  • Generates a dummy authorization property for a DWN message that only conforms to schema validation.

    +

    Returns AuthorizationModel

  • Generates a dummy authorization property for a DWN message that only conforms to schema validation.

    +

    Returns GeneralJws

  • Generates a valid RecordsWrite that modifies the given an existing write. +Any mutable property is not specified will be automatically mutated. +e.g. if published is not specified, it will be toggled from the state of the given existing write.

    +

    Parameters

    • input: GenerateFromRecordsWriteInput

    Returns Promise<GenerateFromRecordsWriteOut>

  • Parameters

    • Optionalinput: GenerateGrantCreateInput

    Returns Promise<GenerateGrantCreateOutput>

  • Parameters

    • input: GenerateMessagesQueryInput

    Returns Promise<GenerateMessagesQueryOutput>

  • Parameters

    • input: GenerateMessagesReadInput

    Returns Promise<GenerateMessagesReadOutput>

  • Generates a MessagesSubscribe message for testing.

    +

    Parameters

    • Optionalinput: GenerateMessagesSubscribeInput

    Returns Promise<GenerateMessagesSubscribeOutput>

  • Generates a encrypted RecordsWrite message for testing.

    +

    Parameters

    • input: {
          author: Persona;
          encryptSymmetricKeyWithProtocolContextDerivedKey: boolean;
          encryptSymmetricKeyWithProtocolPathDerivedKey: boolean;
          plaintextBytes: Uint8Array;
          protocolContextDerivedPublicJwk?: PublicJwk;
          protocolContextDerivingRootKeyId?: string;
          protocolDefinition: ProtocolDefinition;
          protocolParentContextId?: string;
          protocolPath: string;
          recipient?: string;
      }
      • author: Persona
      • encryptSymmetricKeyWithProtocolContextDerivedKey: boolean

        Set to true to attach the symmetric key encrypted by the protocol context derived public key

        +
      • encryptSymmetricKeyWithProtocolPathDerivedKey: boolean

        Set to true to attach the symmetric key encrypted by the protocol path derived public key

        +
      • plaintextBytes: Uint8Array
      • OptionalprotocolContextDerivedPublicJwk?: PublicJwk
      • OptionalprotocolContextDerivingRootKeyId?: string
      • protocolDefinition: ProtocolDefinition

        Protocol definition used to generate the RecordsWrite. +Must be the RECIPIENT's protocol definition if encryptSymmetricKeyWithProtocolPathDerivedKey is true, +because the recipient's public keys will be needed to encrypt the symmetric key.

        +
      • OptionalprotocolParentContextId?: string
      • protocolPath: string
      • Optionalrecipient?: string

    Returns Promise<{
        dataStream: Readable;
        encryptedDataBytes: Uint8Array;
        encryptionInput: EncryptionInput;
        message: RecordsWriteMessage;
        recordsWrite: RecordsWrite;
    }>

  • Generates a ProtocolsConfigure message for testing. +Optional parameters are generated if not given. +Implementation currently uses ProtocolsConfigure.create().

    +

    Parameters

    • Optionalinput: GenerateProtocolsConfigureInput

    Returns Promise<GenerateProtocolsConfigureOutput>

  • Generates a ProtocolsQuery message for testing.

    +

    Parameters

    • Optionalinput: GenerateProtocolsQueryInput

    Returns Promise<GenerateProtocolsQueryOutput>

  • Generates a RecordsDelete for testing.

    +

    Parameters

    • Optionalinput: GenerateRecordsDeleteInput

    Returns Promise<GenerateRecordsDeleteOutput>

  • Generates a RecordsQuery message for testing.

    +

    Parameters

    • Optionalinput: GenerateRecordsQueryInput

    Returns Promise<GenerateRecordsQueryOutput>

  • Generates a RecordsSubscribe message for testing.

    +

    Parameters

    • Optionalinput: GenerateRecordsSubscribeInput

    Returns Promise<GenerateRecordsSubscribeOutput>

  • Generates a RecordsWrite message for testing. +dataBytes & dataStream returned will be undefined as long as dataCid or dataSize is given. +Implementation currently uses RecordsWrite.create().

    +

    Parameters

    • Optionalinput: GenerateRecordsWriteInput

    Returns Promise<GenerateRecordsWriteOutput>

  • Generates a random within a range (inclusive).

    +

    Parameters

    • min: number

      lowest potential value.

      +
    • max: number

      greatest potential value.

      +

    Returns number

  • Generates a random timestamp. Optionally allows you to set specific non-randomized values for the timestamp.

    +

    Parameters

    • Optionaloptions: {
          day?: number;
          hour?: number;
          microsecond?: number;
          millisecond?: number;
          minute?: number;
          month?: number;
          second?: number;
          year?: number;
      }
      • Optionalday?: number
      • Optionalhour?: number
      • Optionalmicrosecond?: number
      • Optionalmillisecond?: number
      • Optionalminute?: number
      • Optionalmonth?: number
      • Optionalsecond?: number
      • Optionalyear?: number

    Returns string

    random UTC ISO-8601 timestamp

    +
diff --git a/classes/Time.html b/classes/Time.html new file mode 100644 index 000000000..1d1247da4 --- /dev/null +++ b/classes/Time.html @@ -0,0 +1,24 @@ +Time | DWN-SDK Documentation - v0.5.1

Time related utilities.

+

Constructors

Methods

  • Creates a UTC ISO-8601 timestamp offset from now or given timestamp accepted by DWN.

    +

    Parameters

    • offset: {
          seconds: number;
      }

      Negative number means offset into the past.

      +
      • seconds: number
    • Optionaltimestamp: string

    Returns string

  • Creates a UTC ISO-8601 timestamp in microsecond precision accepted by DWN.

    +

    Parameters

    • options: {
          day?: number;
          hour?: number;
          microsecond?: number;
          millisecond?: number;
          minute?: number;
          month?: number;
          second?: number;
          year?: number;
      }

      Options for creating the timestamp.

      +
      • Optionalday?: number
      • Optionalhour?: number
      • Optionalmicrosecond?: number
      • Optionalmillisecond?: number
      • Optionalminute?: number
      • Optionalmonth?: number
      • Optionalsecond?: number
      • Optionalyear?: number

    Returns string

    string

    +
  • Returns an UTC ISO-8601 timestamp with microsecond precision accepted by DWN. +using @js-temporal/polyfill

    +

    Returns string

  • sleeps for the desired duration

    +

    Parameters

    • durationInMillisecond: number

      the desired amount of sleep time

      +

    Returns Promise<void>

    when the provided duration has passed

    +
  • Validates that the provided timestamp is a valid number

    +

    Parameters

    • timestamp: string

      the timestamp to validate

      +

    Returns void

    DwnError if timestamp is not a valid number

    +
diff --git a/enums/DateSort.html b/enums/DateSort.html new file mode 100644 index 000000000..827dde877 --- /dev/null +++ b/enums/DateSort.html @@ -0,0 +1,5 @@ +DateSort | DWN-SDK Documentation - v0.5.1

Enumeration DateSort

Enumeration Members

CreatedAscending
CreatedDescending
PublishedAscending
PublishedDescending
diff --git a/enums/DwnErrorCode.html b/enums/DwnErrorCode.html new file mode 100644 index 000000000..738f1c4e2 --- /dev/null +++ b/enums/DwnErrorCode.html @@ -0,0 +1,152 @@ +DwnErrorCode | DWN-SDK Documentation - v0.5.1

Enumeration DwnErrorCode

DWN SDK error codes.

+

Enumeration Members

AuthenticateDescriptorCidMismatch +AuthenticateJwsMissing +AuthenticationMoreThanOneSignatureNotSupported +AuthorizationNotGrantedToAuthor +ComputeCidCodecNotSupported +ComputeCidMultihashNotSupported +Ed25519InvalidJwk +EventEmitterStreamNotOpenError +GeneralJwsVerifierGetPublicKeyNotFound +GeneralJwsVerifierInvalidSignature +GrantAuthorizationGrantExpired +GrantAuthorizationGrantMissing +GrantAuthorizationGrantNotYetActive +GrantAuthorizationGrantRevoked +GrantAuthorizationInterfaceMismatch +GrantAuthorizationMethodMismatch +GrantAuthorizationNotGrantedForTenant +GrantAuthorizationNotGrantedToAuthor +HdKeyDerivationPathInvalid +IndexInvalidCursorSortProperty +IndexInvalidCursorValueType +IndexInvalidSortPropertyInMemory +IndexMissingIndexableProperty +JwsDecodePlainObjectPayloadInvalid +JwsVerifySignatureUnsupportedCrv +MessageGetInvalidCid +MessagesGrantAuthorizationMismatchedProtocol +MessagesQueryAuthorizationFailed +MessagesReadAuthorizationFailed +MessagesReadInvalidCid +MessagesReadVerifyScopeFailed +MessagesSubscribeAuthorizationFailed +MessagesSubscribeEventStreamUnimplemented +ParseCidCodecNotSupported +ParseCidMultihashNotSupported +PermissionsProtocolCreateGrantRecordsScopeMissingProtocol +PermissionsProtocolCreateRequestRecordsScopeMissingProtocol +PermissionsProtocolGetScopeInvalidProtocol +PermissionsProtocolValidateRevocationProtocolTagMismatch +PermissionsProtocolValidateSchemaUnexpectedRecord +PermissionsProtocolValidateScopeContextIdProhibitedProperties +PermissionsProtocolValidateScopeMissingProtocolTag +PermissionsProtocolValidateScopeProtocolMismatch +PrivateKeySignerUnableToDeduceAlgorithm +PrivateKeySignerUnableToDeduceKeyId +PrivateKeySignerUnsupportedCurve +ProtocolAuthorizationActionNotAllowed +ProtocolAuthorizationActionRulesNotFound +ProtocolAuthorizationDuplicateRoleRecipient +ProtocolAuthorizationIncorrectContextId +ProtocolAuthorizationIncorrectDataFormat +ProtocolAuthorizationIncorrectProtocolPath +ProtocolAuthorizationInvalidSchema +ProtocolAuthorizationInvalidType +ProtocolAuthorizationMatchingRoleRecordNotFound +ProtocolAuthorizationMaxSizeInvalid +ProtocolAuthorizationMinSizeInvalid +ProtocolAuthorizationMissingContextId +ProtocolAuthorizationMissingRuleSet +ProtocolAuthorizationNotARole +ProtocolAuthorizationParentlessIncorrectProtocolPath +ProtocolAuthorizationParentNotFoundConstructingRecordChain +ProtocolAuthorizationProtocolNotFound +ProtocolAuthorizationRoleMissingRecipient +ProtocolAuthorizationTagsInvalidSchema +ProtocolsConfigureAuthorizationFailed +ProtocolsConfigureDuplicateActorInRuleSet +ProtocolsConfigureDuplicateRoleInRuleSet +ProtocolsConfigureInvalidActionDeleteWithoutCreate +ProtocolsConfigureInvalidActionMissingOf +ProtocolsConfigureInvalidActionOfNotAllowed +ProtocolsConfigureInvalidActionUpdateWithoutCreate +ProtocolsConfigureInvalidRecipientOfAction +ProtocolsConfigureInvalidRuleSetRecordType +ProtocolsConfigureInvalidSize +ProtocolsConfigureInvalidTagSchema +ProtocolsConfigureRecordNestingDepthExceeded +ProtocolsConfigureRoleDoesNotExistAtGivenPath +ProtocolsConfigureRoleReadActionMissing +ProtocolsGrantAuthorizationQueryProtocolScopeMismatch +ProtocolsGrantAuthorizationScopeProtocolMismatch +ProtocolsQueryUnauthorized +RecordsAuthorDelegatedGrantAndIdExistenceMismatch +RecordsAuthorDelegatedGrantCidMismatch +RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch +RecordsAuthorDelegatedGrantNotADelegatedGrant +RecordsDecryptNoMatchingKeyEncryptedFound +RecordsDeleteAuthorizationFailed +RecordsDerivePrivateKeyUnSupportedCurve +RecordsGrantAuthorizationConditionPublicationProhibited +RecordsGrantAuthorizationConditionPublicationRequired +RecordsGrantAuthorizationDeleteProtocolScopeMismatch +RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch +RecordsGrantAuthorizationScopeContextIdMismatch +RecordsGrantAuthorizationScopeProtocolMismatch +RecordsGrantAuthorizationScopeProtocolPathMismatch +RecordsInvalidAncestorKeyDerivationSegment +RecordsOwnerDelegatedGrantAndIdExistenceMismatch +RecordsOwnerDelegatedGrantCidMismatch +RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch +RecordsOwnerDelegatedGrantNotADelegatedGrant +RecordsProtocolContextDerivationSchemeMissingContextId +RecordsProtocolPathDerivationSchemeMissingProtocol +RecordsQueryCreateFilterPublishedSortInvalid +RecordsQueryFilterMissingRequiredProperties +RecordsQueryParseFilterPublishedSortInvalid +RecordsReadAuthorizationFailed +RecordsReadReturnedMultiple +RecordsSchemasDerivationSchemeMissingSchema +RecordsSubscribeEventStreamUnimplemented +RecordsSubscribeFilterMissingRequiredProperties +RecordsWriteAttestationIntegrityDescriptorCidMismatch +RecordsWriteAttestationIntegrityInvalidPayloadProperty +RecordsWriteAttestationIntegrityMoreThanOneSignature +RecordsWriteAuthorizationFailed +RecordsWriteCreateDataAndDataCidMutuallyExclusive +RecordsWriteCreateDataCidAndDataSizeMutuallyInclusive +RecordsWriteCreateMissingSigner +RecordsWriteCreateProtocolAndProtocolPathMutuallyInclusive +RecordsWriteDataCidMismatch +RecordsWriteDataSizeMismatch +RecordsWriteGetEntryIdUndefinedAuthor +RecordsWriteGetInitialWriteNotFound +RecordsWriteGetNewestWriteRecordNotFound +RecordsWriteImmutablePropertyChanged +RecordsWriteMissingDataInPrevious +RecordsWriteMissingEncodedDataInPrevious +RecordsWriteMissingProtocol +RecordsWriteMissingSchema +RecordsWriteMissingSigner +RecordsWriteNotAllowedAfterDelete +RecordsWriteOwnerAndTenantMismatch +RecordsWriteSignAsOwnerDelegateUnknownAuthor +RecordsWriteSignAsOwnerUnknownAuthor +RecordsWriteValidateIntegrityAttestationMismatch +RecordsWriteValidateIntegrityContextIdMismatch +RecordsWriteValidateIntegrityContextIdNotInSignerSignaturePayload +RecordsWriteValidateIntegrityDateCreatedMismatch +RecordsWriteValidateIntegrityEncryptionCidMismatch +RecordsWriteValidateIntegrityRecordIdUnauthorized +SchemaValidatorAdditionalPropertyNotAllowed +SchemaValidatorFailure +SchemaValidatorSchemaNotFound +SchemaValidatorUnevaluatedPropertyNotAllowed +Secp256k1KeyNotValid +Secp256r1KeyNotValid +TimestampInvalid +UrlProtocolNotNormalizable +UrlProtocolNotNormalized +UrlSchemaNotNormalized +

Enumeration Members

AuthenticateDescriptorCidMismatch
AuthenticateJwsMissing
AuthenticationMoreThanOneSignatureNotSupported
AuthorizationNotGrantedToAuthor
ComputeCidCodecNotSupported
ComputeCidMultihashNotSupported
Ed25519InvalidJwk
EventEmitterStreamNotOpenError
GeneralJwsVerifierGetPublicKeyNotFound
GeneralJwsVerifierInvalidSignature
GrantAuthorizationGrantExpired
GrantAuthorizationGrantMissing
GrantAuthorizationGrantNotYetActive
GrantAuthorizationGrantRevoked
GrantAuthorizationInterfaceMismatch
GrantAuthorizationMethodMismatch
GrantAuthorizationNotGrantedForTenant
GrantAuthorizationNotGrantedToAuthor
HdKeyDerivationPathInvalid
IndexInvalidCursorSortProperty
IndexInvalidCursorValueType
IndexInvalidSortPropertyInMemory
IndexMissingIndexableProperty
JwsDecodePlainObjectPayloadInvalid
JwsVerifySignatureUnsupportedCrv
MessageGetInvalidCid
MessagesGrantAuthorizationMismatchedProtocol
MessagesQueryAuthorizationFailed
MessagesReadAuthorizationFailed
MessagesReadInvalidCid
MessagesReadVerifyScopeFailed
MessagesSubscribeAuthorizationFailed
MessagesSubscribeEventStreamUnimplemented
ParseCidCodecNotSupported
ParseCidMultihashNotSupported
PermissionsProtocolCreateGrantRecordsScopeMissingProtocol
PermissionsProtocolCreateRequestRecordsScopeMissingProtocol
PermissionsProtocolGetScopeInvalidProtocol
PermissionsProtocolValidateRevocationProtocolTagMismatch
PermissionsProtocolValidateSchemaUnexpectedRecord
PermissionsProtocolValidateScopeContextIdProhibitedProperties
PermissionsProtocolValidateScopeMissingProtocolTag
PermissionsProtocolValidateScopeProtocolMismatch
PrivateKeySignerUnableToDeduceAlgorithm
PrivateKeySignerUnableToDeduceKeyId
PrivateKeySignerUnsupportedCurve
ProtocolAuthorizationActionNotAllowed
ProtocolAuthorizationActionRulesNotFound
ProtocolAuthorizationDuplicateRoleRecipient
ProtocolAuthorizationIncorrectContextId
ProtocolAuthorizationIncorrectDataFormat
ProtocolAuthorizationIncorrectProtocolPath
ProtocolAuthorizationInvalidSchema
ProtocolAuthorizationInvalidType
ProtocolAuthorizationMatchingRoleRecordNotFound
ProtocolAuthorizationMaxSizeInvalid
ProtocolAuthorizationMinSizeInvalid
ProtocolAuthorizationMissingContextId
ProtocolAuthorizationMissingRuleSet
ProtocolAuthorizationNotARole
ProtocolAuthorizationParentlessIncorrectProtocolPath
ProtocolAuthorizationParentNotFoundConstructingRecordChain
ProtocolAuthorizationProtocolNotFound
ProtocolAuthorizationRoleMissingRecipient
ProtocolAuthorizationTagsInvalidSchema
ProtocolsConfigureAuthorizationFailed
ProtocolsConfigureDuplicateActorInRuleSet
ProtocolsConfigureDuplicateRoleInRuleSet
ProtocolsConfigureInvalidActionDeleteWithoutCreate
ProtocolsConfigureInvalidActionMissingOf
ProtocolsConfigureInvalidActionOfNotAllowed
ProtocolsConfigureInvalidActionUpdateWithoutCreate
ProtocolsConfigureInvalidRecipientOfAction
ProtocolsConfigureInvalidRuleSetRecordType
ProtocolsConfigureInvalidSize
ProtocolsConfigureInvalidTagSchema
ProtocolsConfigureRecordNestingDepthExceeded
ProtocolsConfigureRoleDoesNotExistAtGivenPath
ProtocolsConfigureRoleReadActionMissing
ProtocolsGrantAuthorizationQueryProtocolScopeMismatch
ProtocolsGrantAuthorizationScopeProtocolMismatch
ProtocolsQueryUnauthorized
RecordsAuthorDelegatedGrantAndIdExistenceMismatch
RecordsAuthorDelegatedGrantCidMismatch
RecordsAuthorDelegatedGrantGrantedToAndOwnerSignatureMismatch
RecordsAuthorDelegatedGrantNotADelegatedGrant
RecordsDecryptNoMatchingKeyEncryptedFound
RecordsDeleteAuthorizationFailed
RecordsDerivePrivateKeyUnSupportedCurve
RecordsGrantAuthorizationConditionPublicationProhibited
RecordsGrantAuthorizationConditionPublicationRequired
RecordsGrantAuthorizationDeleteProtocolScopeMismatch
RecordsGrantAuthorizationQueryOrSubscribeProtocolScopeMismatch
RecordsGrantAuthorizationScopeContextIdMismatch
RecordsGrantAuthorizationScopeProtocolMismatch
RecordsGrantAuthorizationScopeProtocolPathMismatch
RecordsInvalidAncestorKeyDerivationSegment
RecordsOwnerDelegatedGrantAndIdExistenceMismatch
RecordsOwnerDelegatedGrantCidMismatch
RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch
RecordsOwnerDelegatedGrantNotADelegatedGrant
RecordsProtocolContextDerivationSchemeMissingContextId
RecordsProtocolPathDerivationSchemeMissingProtocol
RecordsQueryCreateFilterPublishedSortInvalid
RecordsQueryFilterMissingRequiredProperties
RecordsQueryParseFilterPublishedSortInvalid
RecordsReadAuthorizationFailed
RecordsReadReturnedMultiple
RecordsSchemasDerivationSchemeMissingSchema
RecordsSubscribeEventStreamUnimplemented
RecordsSubscribeFilterMissingRequiredProperties
RecordsWriteAttestationIntegrityDescriptorCidMismatch
RecordsWriteAttestationIntegrityInvalidPayloadProperty
RecordsWriteAttestationIntegrityMoreThanOneSignature
RecordsWriteAuthorizationFailed
RecordsWriteCreateDataAndDataCidMutuallyExclusive
RecordsWriteCreateDataCidAndDataSizeMutuallyInclusive
RecordsWriteCreateMissingSigner
RecordsWriteCreateProtocolAndProtocolPathMutuallyInclusive
RecordsWriteDataCidMismatch
RecordsWriteDataSizeMismatch
RecordsWriteGetEntryIdUndefinedAuthor
RecordsWriteGetInitialWriteNotFound
RecordsWriteGetNewestWriteRecordNotFound
RecordsWriteImmutablePropertyChanged
RecordsWriteMissingDataInPrevious
RecordsWriteMissingEncodedDataInPrevious
RecordsWriteMissingProtocol
RecordsWriteMissingSchema
RecordsWriteMissingSigner
RecordsWriteNotAllowedAfterDelete
RecordsWriteOwnerAndTenantMismatch
RecordsWriteSignAsOwnerDelegateUnknownAuthor
RecordsWriteSignAsOwnerUnknownAuthor
RecordsWriteValidateIntegrityAttestationMismatch
RecordsWriteValidateIntegrityContextIdMismatch
RecordsWriteValidateIntegrityContextIdNotInSignerSignaturePayload
RecordsWriteValidateIntegrityDateCreatedMismatch
RecordsWriteValidateIntegrityEncryptionCidMismatch
RecordsWriteValidateIntegrityRecordIdUnauthorized
SchemaValidatorAdditionalPropertyNotAllowed
SchemaValidatorFailure
SchemaValidatorSchemaNotFound
SchemaValidatorUnevaluatedPropertyNotAllowed
Secp256k1KeyNotValid
Secp256r1KeyNotValid
TimestampInvalid
UrlProtocolNotNormalizable
UrlProtocolNotNormalized
UrlSchemaNotNormalized
diff --git a/enums/DwnInterfaceName.html b/enums/DwnInterfaceName.html new file mode 100644 index 000000000..aa4d6c512 --- /dev/null +++ b/enums/DwnInterfaceName.html @@ -0,0 +1,4 @@ +DwnInterfaceName | DWN-SDK Documentation - v0.5.1

Enumeration DwnInterfaceName

Enumeration Members

Enumeration Members

Messages
Protocols
Records
diff --git a/enums/DwnMethodName.html b/enums/DwnMethodName.html new file mode 100644 index 000000000..614ba34cb --- /dev/null +++ b/enums/DwnMethodName.html @@ -0,0 +1,7 @@ +DwnMethodName | DWN-SDK Documentation - v0.5.1

Enumeration DwnMethodName

Enumeration Members

Enumeration Members

Configure
Delete
Query
Read
Subscribe
Write
diff --git a/enums/EncryptionAlgorithm.html b/enums/EncryptionAlgorithm.html new file mode 100644 index 000000000..f639f21d3 --- /dev/null +++ b/enums/EncryptionAlgorithm.html @@ -0,0 +1,3 @@ +EncryptionAlgorithm | DWN-SDK Documentation - v0.5.1

Enumeration EncryptionAlgorithm

Enumeration Members

Enumeration Members

Aes256Ctr
EciesSecp256k1
diff --git a/enums/KeyDerivationScheme.html b/enums/KeyDerivationScheme.html new file mode 100644 index 000000000..c2b767bea --- /dev/null +++ b/enums/KeyDerivationScheme.html @@ -0,0 +1,7 @@ +KeyDerivationScheme | DWN-SDK Documentation - v0.5.1

Enumeration KeyDerivationScheme

Enumeration Members

DataFormats

Key derivation using the dataFormat value for Flat-space records.

+
ProtocolContext
ProtocolPath
Schemas

Key derivation using the schema value for Flat-space records.

+
diff --git a/enums/PermissionConditionPublication.html b/enums/PermissionConditionPublication.html new file mode 100644 index 000000000..6424865fc --- /dev/null +++ b/enums/PermissionConditionPublication.html @@ -0,0 +1,3 @@ +PermissionConditionPublication | DWN-SDK Documentation - v0.5.1

Enumeration PermissionConditionPublication

Enumeration Members

Enumeration Members

Prohibited
Required
diff --git a/enums/SortDirection.html b/enums/SortDirection.html new file mode 100644 index 000000000..76f6a9825 --- /dev/null +++ b/enums/SortDirection.html @@ -0,0 +1,3 @@ +SortDirection | DWN-SDK Documentation - v0.5.1

Enumeration SortDirection

Enumeration Members

Enumeration Members

Ascending
Descending
diff --git a/functions/authenticate.html b/functions/authenticate.html new file mode 100644 index 000000000..9580fdeb5 --- /dev/null +++ b/functions/authenticate.html @@ -0,0 +1,3 @@ +authenticate | DWN-SDK Documentation - v0.5.1
  • Verifies all the signature(s) within the authorization property.

    +

    Parameters

    • authorizationModel: undefined | AuthorizationModel
    • didResolver: DidResolver

    Returns Promise<void>

    if fails authentication

    +
diff --git a/functions/executeUnlessAborted.html b/functions/executeUnlessAborted.html new file mode 100644 index 000000000..81d6abb6a --- /dev/null +++ b/functions/executeUnlessAborted.html @@ -0,0 +1,2 @@ +executeUnlessAborted | DWN-SDK Documentation - v0.5.1

Function executeUnlessAborted

  • Wraps the given Promise such that it will reject if the AbortSignal is triggered.

    +

    Type Parameters

    • T

    Parameters

    • promise: Promise<T>
    • signal: undefined | AbortSignal

    Returns Promise<T>

diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..7f59ebfcc --- /dev/null +++ b/hierarchy.html @@ -0,0 +1 @@ +DWN-SDK Documentation - v0.5.1
diff --git a/index.html b/index.html new file mode 100644 index 000000000..3da907361 --- /dev/null +++ b/index.html @@ -0,0 +1,152 @@ +DWN-SDK Documentation - v0.5.1

DWN-SDK Documentation - v0.5.1

Index

Enumerations

Classes

Interfaces

Type Aliases

ActiveTenantCheckResult +CreateFromOptions +DataEncodedRecordsWriteMessage +DataStoreGetResult +DataStorePutResult +DerivedPrivateJwk +DwnConfig +EncryptedKey +EncryptionInput +EncryptionProperty +EqualFilter +EventListener +Filter +GenericMessage +GenericMessageReply +InternalRecordsWriteMessage +KeyEncryptionInput +KeyMaterial +ManagedResumableTask +MessageEvent +MessagesFilter +MessageSort +MessagesPermissionScope +MessagesQueryMessage +MessagesQueryOptions +MessagesQueryReply +MessagesReadMessage +MessagesReadOptions +MessagesReadReply +MessagesReadReplyEntry +MessagesSubscribeDescriptor +MessagesSubscribeMessage +MessagesSubscribeOptions +MessagesSubscribeReply +MessageSubscriptionHandler +OneOfFilter +Pagination +PaginationCursor +PermissionConditions +PermissionGrantData +PermissionRequestData +PermissionRevocationData +PermissionScope +Persona +PrivateJwk +ProtocolDefinition +ProtocolPermissionScope +ProtocolRuleSet +ProtocolsConfigureDescriptor +ProtocolsConfigureMessage +ProtocolsConfigureOptions +ProtocolsQueryFilter +ProtocolsQueryMessage +ProtocolsQueryOptions +ProtocolsQueryReply +ProtocolTypes +PublicJwk +QueryOptions +QueryResultEntry +RangeCriterion +RangeFilter +RecordEvent +RecordsDeleteDescriptor +RecordsDeleteMessage +RecordsDeleteOptions +RecordsFilter +RecordsPermissionScope +RecordsQueryDescriptor +RecordsQueryMessage +RecordsQueryOptions +RecordsQueryReply +RecordsQueryReplyEntry +RecordsReadDescriptor +RecordsReadMessage +RecordsReadOptions +RecordsReadReply +RecordsReadReplyEntry +RecordsSubscribeDescriptor +RecordsSubscribeMessage +RecordsSubscribeMessageOptions +RecordsSubscribeOptions +RecordsSubscribeReply +RecordSubscriptionHandler +RecordsWriteAttestationPayload +RecordsWriteDescriptor +RecordsWriteMessage +RecordsWriteMessageOptions +RecordsWriteOptions +RecordsWriteSignaturePayload +RecordsWriteTags +RecordsWriteTagsFilter +RecordsWriteTagValue +SubscriptionReply +UnionMessageReply +

Functions

diff --git a/interfaces/DataStore.html b/interfaces/DataStore.html new file mode 100644 index 000000000..0e708bcd3 --- /dev/null +++ b/interfaces/DataStore.html @@ -0,0 +1,21 @@ +DataStore | DWN-SDK Documentation - v0.5.1

The interface that defines how to store and fetch data associated with a message.

+
interface DataStore {
    clear(): Promise<void>;
    close(): Promise<void>;
    delete(tenant: string, recordId: string, dataCid: string): Promise<void>;
    get(tenant: string, recordId: string, dataCid: string): Promise<undefined | DataStoreGetResult>;
    open(): Promise<void>;
    put(tenant: string, recordId: string, dataCid: string, dataStream: Readable): Promise<DataStorePutResult>;
}

Implemented by

Methods

Methods

  • Clears the entire store. Mainly used for testing to cleaning up in test environments.

    +

    Returns Promise<void>

  • Deletes the specified data. No-op if the data does not exist.

    +

    Parameters

    • tenant: string
    • recordId: string

      The logical ID of the record that references the data.

      +
    • dataCid: string

      The IPFS CID of the data.

      +

    Returns Promise<void>

  • Fetches the specified data.

    +

    Parameters

    • tenant: string
    • recordId: string

      The logical ID of the record that references the data.

      +
    • dataCid: string

      The IPFS CID of the data.

      +

    Returns Promise<undefined | DataStoreGetResult>

    the data size and data stream if found, otherwise undefined.

    +
  • Stores the given data.

    +

    Parameters

    • tenant: string
    • recordId: string

      The logical ID of the record that references the data.

      +
    • dataCid: string

      The IPFS CID of the data.

      +
    • dataStream: Readable

    Returns Promise<DataStorePutResult>

diff --git a/interfaces/EventLog.html b/interfaces/EventLog.html new file mode 100644 index 000000000..1ea7539c1 --- /dev/null +++ b/interfaces/EventLog.html @@ -0,0 +1,25 @@ +EventLog | DWN-SDK Documentation - v0.5.1
interface EventLog {
    append(tenant: string, messageCid: string, indexes: KeyValues): Promise<void>;
    clear(): Promise<void>;
    close(): Promise<void>;
    deleteEventsByCid(tenant: string, messageCids: string[]): Promise<void>;
    getEvents(tenant: string, cursor?: PaginationCursor): Promise<{
        cursor?: PaginationCursor;
        events: string[];
    }>;
    open(): Promise<void>;
    queryEvents(tenant: string, filters: Filter[], cursor?: PaginationCursor): Promise<{
        cursor?: PaginationCursor;
        events: string[];
    }>;
}

Implemented by

Methods

  • adds an event to a tenant's event log

    +

    Parameters

    • tenant: string

      the tenant's DID

      +
    • messageCid: string

      the CID of the message

      +
    • indexes: KeyValues

      (key-value pairs) to be included as part of indexing this event.

      +

    Returns Promise<void>

  • Clears the entire store. Mainly used for cleaning up in test environment.

    +

    Returns Promise<void>

  • closes the connection to the underlying store

    +

    Returns Promise<void>

  • deletes any events that have any of the messageCids provided

    +

    Parameters

    • tenant: string
    • messageCids: string[]

    Returns Promise<void>

    the number of events deleted

    +
  • Retrieves all of a tenant's events that occurred after the cursor provided. +If no cursor is provided, all events for a given tenant will be returned.

    +

    The cursor is a messageCid.

    +

    Returns an array of messageCids that represent the events.

    +

    Parameters

    Returns Promise<{
        cursor?: PaginationCursor;
        events: string[];
    }>

  • opens a connection to the underlying store

    +

    Returns Promise<void>

  • retrieves a filtered set of events that occurred after a the cursor provided, accepts multiple filters.

    +

    If no cursor is provided, all events for a given tenant and filter combo will be returned. +The cursor is a messageCid.

    +

    Returns an array of messageCids that represent the events.

    +

    Parameters

    Returns Promise<{
        cursor?: PaginationCursor;
        events: string[];
    }>

diff --git a/interfaces/EventStream.html b/interfaces/EventStream.html new file mode 100644 index 000000000..5a5a90a88 --- /dev/null +++ b/interfaces/EventStream.html @@ -0,0 +1,6 @@ +EventStream | DWN-SDK Documentation - v0.5.1

The EventStream interface implements a pub/sub system based on Message filters.

+
interface EventStream {
    close(): Promise<void>;
    emit(tenant: string, event: MessageEvent, indexes: KeyValues): void;
    open(): Promise<void>;
    subscribe(tenant: string, id: string, listener: EventListener): Promise<EventSubscription>;
}

Implemented by

Methods

Methods

diff --git a/interfaces/EventSubscription.html b/interfaces/EventSubscription.html new file mode 100644 index 000000000..0b979225a --- /dev/null +++ b/interfaces/EventSubscription.html @@ -0,0 +1,3 @@ +EventSubscription | DWN-SDK Documentation - v0.5.1

Interface EventSubscription

interface EventSubscription {
    close: (() => Promise<void>);
    id: string;
}

Properties

Properties

close: (() => Promise<void>)
id: string
diff --git a/interfaces/MessageStore.html b/interfaces/MessageStore.html new file mode 100644 index 000000000..698ee1874 --- /dev/null +++ b/interfaces/MessageStore.html @@ -0,0 +1,18 @@ +MessageStore | DWN-SDK Documentation - v0.5.1

Interface MessageStore

interface MessageStore {
    clear(): Promise<void>;
    close(): Promise<void>;
    delete(tenant: string, cid: string, options?: MessageStoreOptions): Promise<void>;
    get(tenant: string, cid: string, options?: MessageStoreOptions): Promise<undefined | GenericMessage>;
    open(): Promise<void>;
    put(tenant: string, message: GenericMessage, indexes: KeyValues, options?: MessageStoreOptions): Promise<void>;
    query(tenant: string, filters: Filter[], messageSort?: MessageSort, pagination?: Pagination, options?: MessageStoreOptions): Promise<{
        cursor?: PaginationCursor;
        messages: GenericMessage[];
    }>;
}

Implemented by

Methods

Methods

  • Clears the entire store. Mainly used for cleaning up in test environment.

    +

    Returns Promise<void>

  • adds a message to the underlying store. Uses the message's cid as the key

    +

    Parameters

    Returns Promise<void>

diff --git a/interfaces/MessageStoreOptions.html b/interfaces/MessageStoreOptions.html new file mode 100644 index 000000000..1c57801d5 --- /dev/null +++ b/interfaces/MessageStoreOptions.html @@ -0,0 +1,2 @@ +MessageStoreOptions | DWN-SDK Documentation - v0.5.1

Interface MessageStoreOptions

interface MessageStoreOptions {
    signal?: AbortSignal;
}

Properties

Properties

signal?: AbortSignal
diff --git a/interfaces/MessageSubscription.html b/interfaces/MessageSubscription.html new file mode 100644 index 000000000..7e084ed78 --- /dev/null +++ b/interfaces/MessageSubscription.html @@ -0,0 +1,3 @@ +MessageSubscription | DWN-SDK Documentation - v0.5.1

Interface MessageSubscription

interface MessageSubscription {
    close: (() => Promise<void>);
    id: string;
}

Properties

Properties

close: (() => Promise<void>)
id: string
diff --git a/interfaces/ResumableTaskStore.html b/interfaces/ResumableTaskStore.html new file mode 100644 index 000000000..d301d96bf --- /dev/null +++ b/interfaces/ResumableTaskStore.html @@ -0,0 +1,57 @@ +ResumableTaskStore | DWN-SDK Documentation - v0.5.1

Interface ResumableTaskStore

Interface for interacting with the resumable task store.

+

Implementer's Note: +The store implementation used in a horizontally scalable deployment, such as in a Kubernetes cluster, +must account for concurrent access by multiple ResumableTaskStore instances. +It would be undesirable to have many kubernetes pods all trying to handle the same resumable task. +A minimal viable implementation can use a per tenant exclusive lock on the store when grab() and method is called. +This would prevent issues that occur from concurrent modification to the same task to the store, +but negatively impacts the throughput performance of the DWN. +Requirements for a more performant implementation that allows distributed processing of resumable tasks across multiple clients:

+
    +
  1. The implementation probably requires both: +a. a persistent store for storing the data of each resumable task; and +b. an message streaming queue/service for distributing the each task exclusively to one of multiple handling clients.
  2. +
  3. The grab() and/or open() implementation will need to copy the timed-out tasks from persistent store into the message queue/service +for distributed processing by multiple clients when there is no resumable tasks to grab in the message queue. +During the move, the persistent store should be locked to prevent multiple copies of the same tasks from being copied.
  4. +
  5. Both Google's pub-sub and Amazon's SQS require an Ack ID / Receipt Handle to acknowledge the message, +The value of Ack ID / Receipt Handle is not known until the message is received, +therefore the implementer will likely need to have an in-memory mapping of task ID -> Ack ID / Receipt Handle +so that delete() can be called with task ID.
  6. +
+
interface ResumableTaskStore {
    clear(): Promise<void>;
    close(): Promise<void>;
    delete(taskId: string): Promise<void>;
    extend(taskId: string, timeoutInSeconds: number): Promise<void>;
    grab(count: number): Promise<ManagedResumableTask[]>;
    open(): Promise<void>;
    read(taskId: string): Promise<undefined | ManagedResumableTask>;
    register(task: any, timeoutInSeconds: number): Promise<ManagedResumableTask>;
}

Implemented by

Methods

  • Deletes the task associated with the task ID provided. +No-op if the task is not found, as this implies that the task has already been completed. +Called when the task has been successfully completed.

    +

    Parameters

    • taskId: string

    Returns Promise<void>

  • Extends the timeout of the task associated with the task ID provided. +No-op if the task is not found, as this implies that the task has already been completed. +This allows the client that is executing the task to continue working on it before the task is considered timed out.

    +

    Parameters

    • taskId: string

      ID of the task to extend the timeout for.

      +
    • timeoutInSeconds: number

      Timeout in seconds from the current time.

      +

    Returns Promise<void>

  • Grabs a number of unhandled tasks from the store. +Unhandled tasks are tasks that are not currently in-flight/under processing (ie. tasks that have timed-out). +NOTE: The implementation must make sure that once a task is grabbed by a client, +tis timeout must be updated so that it is considered in-flight/under processing +and cannot be grabbed by another client until it is timed-out.

    +

    Parameters

    • count: number

      Desired number of tasks to grab.

      +

    Returns Promise<ManagedResumableTask[]>

    A list of tasks exclusive for the caller to handle; or empty array if there is no tasks, or if all tasks are already grabbed by others.

    +
  • Reads the task associated with the task ID provided regardless of whether it is in-flight/under processing or not. +This is mainly introduced for testing purposes: ie. to check the status of a task for easy test verification.

    +

    Parameters

    • taskId: string

      ID of the task to read.

      +

    Returns Promise<undefined | ManagedResumableTask>

  • Registers a new resumable task that is currently in-flight/under processing to the store. +If the task is timed out, a client will be able to grab it through the grab() method and resume the task.

    +

    Parameters

    • task: any

      Task specific data. This is deliberately of type any because this store should not have to be ware of its type.

      +
    • timeoutInSeconds: number

      Timeout in seconds from the current time.

      +

    Returns Promise<ManagedResumableTask>

    A ManagedResumableTask object that can be used to extend or delete the task.

    +

    with code set to ResumableTaskAlreadyExists if the same task is already registered.

    +
diff --git a/interfaces/Signer.html b/interfaces/Signer.html new file mode 100644 index 000000000..0bff7f0f5 --- /dev/null +++ b/interfaces/Signer.html @@ -0,0 +1,16 @@ +Signer | DWN-SDK Documentation - v0.5.1

A signer that is capable of generating a digital signature over any given bytes.

+
interface Signer {
    algorithm: string;
    keyId: string;
    sign(content: Uint8Array): Promise<Uint8Array>;
}

Implemented by

Properties

Methods

Properties

algorithm: string

The name of the signature algorithm used by this signer. +This value will be used as the "alg" parameter in JWS produced. +This parameter is not used by the DWN but is unfortunately a required header property for a JWS as per: +https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.1 +Valid signature algorithm values can be found at https://www.iana.org/assignments/jose/jose.xhtml

+
keyId: string

The ID of the key used by this signer. +This needs to be a fully-qualified ID (ie. prefixed with DID) so that author can be parsed out for processing such as recordId computation. +Example: did:example:alice#key1 +This value will be used as the "kid" parameter in JWS produced. +While this property is not a required property per JWS specification, it is required for DWN authentication.

+

Methods

  • Signs the given content and returns the signature as bytes.

    +

    Parameters

    • content: Uint8Array

    Returns Promise<Uint8Array>

diff --git a/interfaces/TenantGate.html b/interfaces/TenantGate.html new file mode 100644 index 000000000..91bcaffc1 --- /dev/null +++ b/interfaces/TenantGate.html @@ -0,0 +1,4 @@ +TenantGate | DWN-SDK Documentation - v0.5.1

An interface that gates tenant access to the DWN.

+
interface TenantGate {
    isActiveTenant(did: string): Promise<ActiveTenantCheckResult>;
}

Implemented by

Methods

diff --git a/types/ActiveTenantCheckResult.html b/types/ActiveTenantCheckResult.html new file mode 100644 index 000000000..ce486633c --- /dev/null +++ b/types/ActiveTenantCheckResult.html @@ -0,0 +1,4 @@ +ActiveTenantCheckResult | DWN-SDK Documentation - v0.5.1

Type Alias ActiveTenantCheckResult

ActiveTenantCheckResult: {
    detail?: string;
    isActiveTenant: boolean;
}

The result of the isActiveTenant() call.

+

Type declaration

  • Optionaldetail?: string

    An optional detail message if the given DID is not an active tenant of the DWN.

    +
  • isActiveTenant: boolean

    true if the given DID is an active tenant of the DWN; false otherwise.

    +
diff --git a/types/CreateFromOptions.html b/types/CreateFromOptions.html new file mode 100644 index 000000000..8a4a72e53 --- /dev/null +++ b/types/CreateFromOptions.html @@ -0,0 +1,4 @@ +CreateFromOptions | DWN-SDK Documentation - v0.5.1

Type Alias CreateFromOptions

CreateFromOptions: {
    attestationSigners?: Signer[];
    data?: Uint8Array;
    dataFormat?: string;
    datePublished?: string;
    delegatedGrant?: DataEncodedRecordsWriteMessage;
    encryptionInput?: EncryptionInput;
    messageTimestamp?: string;
    protocolRole?: string;
    published?: boolean;
    recordsWriteMessage: RecordsWriteMessage;
    signer?: Signer;
    tags?: RecordsWriteTags;
}

Type declaration

  • OptionalattestationSigners?: Signer[]
  • Optionaldata?: Uint8Array
  • OptionaldataFormat?: string

    The data format of the new data. If not given, the data format from the existing message will be used.

    +
  • OptionaldatePublished?: string
  • OptionaldelegatedGrant?: DataEncodedRecordsWriteMessage

    The delegated grant to sign on behalf of the logical author, which is the grantor (grantedBy) of the delegated grant.

    +
  • OptionalencryptionInput?: EncryptionInput
  • OptionalmessageTimestamp?: string
  • OptionalprotocolRole?: string
  • Optionalpublished?: boolean
  • recordsWriteMessage: RecordsWriteMessage
  • Optionalsigner?: Signer

    The signer of the message, which is commonly the author, but can also be a delegate.

    +
  • Optionaltags?: RecordsWriteTags
diff --git a/types/DataEncodedRecordsWriteMessage.html b/types/DataEncodedRecordsWriteMessage.html new file mode 100644 index 000000000..eae58b199 --- /dev/null +++ b/types/DataEncodedRecordsWriteMessage.html @@ -0,0 +1,3 @@ +DataEncodedRecordsWriteMessage | DWN-SDK Documentation - v0.5.1

Type Alias DataEncodedRecordsWriteMessage

DataEncodedRecordsWriteMessage: RecordsWriteMessage & {
    encodedData: string;
}

Represents a RecordsWrite message with encoded data attached.

+

Type declaration

  • encodedData: string

    The encoded data of the record if the data associated with the record is equal or smaller than DwnConstant.maxDataSizeAllowedToBeEncoded.

    +
diff --git a/types/DataStoreGetResult.html b/types/DataStoreGetResult.html new file mode 100644 index 000000000..d352786a4 --- /dev/null +++ b/types/DataStoreGetResult.html @@ -0,0 +1,3 @@ +DataStoreGetResult | DWN-SDK Documentation - v0.5.1

Type Alias DataStoreGetResult

DataStoreGetResult: {
    dataSize: number;
    dataStream: Readable;
}

Result of a data store get() method call if the data exists.

+

Type declaration

  • dataSize: number

    The number of bytes of the data stored.

    +
  • dataStream: Readable
diff --git a/types/DataStorePutResult.html b/types/DataStorePutResult.html new file mode 100644 index 000000000..b2ed23285 --- /dev/null +++ b/types/DataStorePutResult.html @@ -0,0 +1,3 @@ +DataStorePutResult | DWN-SDK Documentation - v0.5.1

Type Alias DataStorePutResult

DataStorePutResult: {
    dataSize: number;
}

Result of a data store put() method call.

+

Type declaration

  • dataSize: number

    The number of bytes of the data stored.

    +
diff --git a/types/DerivedPrivateJwk.html b/types/DerivedPrivateJwk.html new file mode 100644 index 000000000..c55ee0cb0 --- /dev/null +++ b/types/DerivedPrivateJwk.html @@ -0,0 +1 @@ +DerivedPrivateJwk | DWN-SDK Documentation - v0.5.1

Type Alias DerivedPrivateJwk

DerivedPrivateJwk: {
    derivationPath?: string[];
    derivationScheme: KeyDerivationScheme;
    derivedPrivateKey: PrivateJwk;
    rootKeyId: string;
}
diff --git a/types/DwnConfig.html b/types/DwnConfig.html new file mode 100644 index 000000000..a24741dd3 --- /dev/null +++ b/types/DwnConfig.html @@ -0,0 +1,2 @@ +DwnConfig | DWN-SDK Documentation - v0.5.1

Type Alias DwnConfig

DwnConfig: {
    dataStore: DataStore;
    didResolver?: DidResolver;
    eventLog: EventLog;
    eventStream?: EventStream;
    messageStore: MessageStore;
    resumableTaskStore: ResumableTaskStore;
    tenantGate?: TenantGate;
}

DWN configuration.

+
diff --git a/types/EncryptedKey.html b/types/EncryptedKey.html new file mode 100644 index 000000000..9725c7bef --- /dev/null +++ b/types/EncryptedKey.html @@ -0,0 +1,3 @@ +EncryptedKey | DWN-SDK Documentation - v0.5.1

Type Alias EncryptedKey

EncryptedKey: {
    algorithm: EncryptionAlgorithm;
    derivationScheme: KeyDerivationScheme;
    derivedPublicKey?: PublicJwk;
    encryptedKey: string;
    ephemeralPublicKey: PublicJwk;
    initializationVector: string;
    messageAuthenticationCode: string;
    rootKeyId: string;
}

Type declaration

  • algorithm: EncryptionAlgorithm
  • derivationScheme: KeyDerivationScheme
  • OptionalderivedPublicKey?: PublicJwk

    The actual derived public key.

    +
  • encryptedKey: string
  • ephemeralPublicKey: PublicJwk
  • initializationVector: string
  • messageAuthenticationCode: string
  • rootKeyId: string

    The fully qualified key ID (e.g. did:example:abc#encryption-key-id) of the root public key used to encrypt the symmetric encryption key.

    +
diff --git a/types/EncryptionInput.html b/types/EncryptionInput.html new file mode 100644 index 000000000..ed45c4c49 --- /dev/null +++ b/types/EncryptionInput.html @@ -0,0 +1,7 @@ +EncryptionInput | DWN-SDK Documentation - v0.5.1

Type Alias EncryptionInput

EncryptionInput: {
    algorithm?: EncryptionAlgorithm;
    initializationVector: Uint8Array;
    key: Uint8Array;
    keyEncryptionInputs: KeyEncryptionInput[];
}

Input that describes how data is encrypted as spec-ed in TP18 (https://github.com/TBD54566975/technical-proposals/pull/6).

+

Type declaration

  • Optionalalgorithm?: EncryptionAlgorithm

    Algorithm used for encrypting the Data. Uses {EncryptionAlgorithm.Aes256Ctr} if not given.

    +
  • initializationVector: Uint8Array

    Initialization vector used for encrypting the data.

    +
  • key: Uint8Array

    Symmetric key used to encrypt the data.

    +
  • keyEncryptionInputs: KeyEncryptionInput[]

    Array of input that specifies how the symmetric key is encrypted. +Each entry in the array will result in a unique ciphertext of the symmetric key.

    +
diff --git a/types/EncryptionProperty.html b/types/EncryptionProperty.html new file mode 100644 index 000000000..226de4441 --- /dev/null +++ b/types/EncryptionProperty.html @@ -0,0 +1 @@ +EncryptionProperty | DWN-SDK Documentation - v0.5.1

Type Alias EncryptionProperty

EncryptionProperty: {
    algorithm: EncryptionAlgorithm;
    initializationVector: string;
    keyEncryption: EncryptedKey[];
}
diff --git a/types/EqualFilter.html b/types/EqualFilter.html new file mode 100644 index 000000000..01fabab06 --- /dev/null +++ b/types/EqualFilter.html @@ -0,0 +1 @@ +EqualFilter | DWN-SDK Documentation - v0.5.1

Type Alias EqualFilter

EqualFilter: string | number | boolean
diff --git a/types/EventListener.html b/types/EventListener.html new file mode 100644 index 000000000..3a33d1a6b --- /dev/null +++ b/types/EventListener.html @@ -0,0 +1 @@ +EventListener | DWN-SDK Documentation - v0.5.1

Type Alias EventListener

EventListener: ((tenant: string, event: MessageEvent, indexes: KeyValues) => void)
diff --git a/types/Filter.html b/types/Filter.html new file mode 100644 index 000000000..4e3e2e27e --- /dev/null +++ b/types/Filter.html @@ -0,0 +1 @@ +Filter | DWN-SDK Documentation - v0.5.1
Filter: {
    [property: string]: FilterValue;
}
diff --git a/types/GenericMessage.html b/types/GenericMessage.html new file mode 100644 index 000000000..ed0b8e0b0 --- /dev/null +++ b/types/GenericMessage.html @@ -0,0 +1,2 @@ +GenericMessage | DWN-SDK Documentation - v0.5.1

Type Alias GenericMessage

GenericMessage: {
    authorization?: AuthorizationModel;
    descriptor: Descriptor;
}

Intersection type for all concrete message types.

+
diff --git a/types/GenericMessageReply.html b/types/GenericMessageReply.html new file mode 100644 index 000000000..519d541ac --- /dev/null +++ b/types/GenericMessageReply.html @@ -0,0 +1 @@ +GenericMessageReply | DWN-SDK Documentation - v0.5.1

Type Alias GenericMessageReply

GenericMessageReply: {
    status: Status;
}
diff --git a/types/InternalRecordsWriteMessage.html b/types/InternalRecordsWriteMessage.html new file mode 100644 index 000000000..df915615a --- /dev/null +++ b/types/InternalRecordsWriteMessage.html @@ -0,0 +1,2 @@ +InternalRecordsWriteMessage | DWN-SDK Documentation - v0.5.1

Type Alias InternalRecordsWriteMessage

InternalRecordsWriteMessage: GenericMessage & {
    attestation?: GeneralJws;
    contextId?: string;
    descriptor: RecordsWriteDescriptor;
    encryption?: EncryptionProperty;
    recordId?: string;
}

Internal RecordsWrite message representation that can be in an incomplete state.

+
diff --git a/types/KeyEncryptionInput.html b/types/KeyEncryptionInput.html new file mode 100644 index 000000000..cd8e4280c --- /dev/null +++ b/types/KeyEncryptionInput.html @@ -0,0 +1,7 @@ +KeyEncryptionInput | DWN-SDK Documentation - v0.5.1

Type Alias KeyEncryptionInput

KeyEncryptionInput: {
    algorithm?: EncryptionAlgorithm;
    derivationScheme: KeyDerivationScheme;
    publicKey: PublicJwk;
    publicKeyId: string;
}

Input that specifies how a symmetric key is encrypted.

+

Type declaration

  • Optionalalgorithm?: EncryptionAlgorithm

    Algorithm used for encrypting the symmetric key. Uses {EncryptionAlgorithm.EciesSecp256k1} if not given.

    +
  • derivationScheme: KeyDerivationScheme

    Key derivation scheme used to derive the public key to encrypt the symmetric key.

    +
  • publicKey: PublicJwk

    Public key to be used to encrypt the symmetric key.

    +
  • publicKeyId: string

    Fully qualified ID of root public key used derive the public key to be used to to encrypt the symmetric key. +(e.g. did:example:abc#encryption-key-id)

    +
diff --git a/types/KeyMaterial.html b/types/KeyMaterial.html new file mode 100644 index 000000000..f2b14a3ec --- /dev/null +++ b/types/KeyMaterial.html @@ -0,0 +1,2 @@ +KeyMaterial | DWN-SDK Documentation - v0.5.1

Type Alias KeyMaterial

KeyMaterial: {
    keyId: string;
    keyPair: {
        privateJwk: PrivateJwk;
        publicJwk: PublicJwk;
    };
}

Contains a public-private key pair and the associated key ID.

+
diff --git a/types/ManagedResumableTask.html b/types/ManagedResumableTask.html new file mode 100644 index 000000000..613405d2b --- /dev/null +++ b/types/ManagedResumableTask.html @@ -0,0 +1,6 @@ +ManagedResumableTask | DWN-SDK Documentation - v0.5.1

Type Alias ManagedResumableTask

ManagedResumableTask: {
    id: string;
    retryCount: number;
    task: any;
    timeout: number;
}

An managed resumable task model.

+

Type declaration

  • id: string

    Globally unique ID. Used to extend or delete the task.

    +
  • retryCount: number

    Number of retries

    +
  • task: any

    Task specific data. This is deliberately of type any because this store should not have to be ware of its type.

    +
  • timeout: number

    Task timeout in Epoch Time.

    +
diff --git a/types/MessageEvent.html b/types/MessageEvent.html new file mode 100644 index 000000000..d8c98ec90 --- /dev/null +++ b/types/MessageEvent.html @@ -0,0 +1,3 @@ +MessageEvent | DWN-SDK Documentation - v0.5.1

Type Alias MessageEvent

MessageEvent: {
    initialWrite?: RecordsWriteMessage;
    message: GenericMessage;
}

MessageEvent contains the message being emitted and an optional initial write message.

+

Type declaration

diff --git a/types/MessageSort.html b/types/MessageSort.html new file mode 100644 index 000000000..8f2360969 --- /dev/null +++ b/types/MessageSort.html @@ -0,0 +1 @@ +MessageSort | DWN-SDK Documentation - v0.5.1

Type Alias MessageSort

MessageSort: {
    dateCreated?: SortDirection;
    datePublished?: SortDirection;
    messageTimestamp?: SortDirection;
}
diff --git a/types/MessageSubscriptionHandler.html b/types/MessageSubscriptionHandler.html new file mode 100644 index 000000000..087994d0f --- /dev/null +++ b/types/MessageSubscriptionHandler.html @@ -0,0 +1 @@ +MessageSubscriptionHandler | DWN-SDK Documentation - v0.5.1

Type Alias MessageSubscriptionHandler

MessageSubscriptionHandler: ((event: MessageEvent) => void)
diff --git a/types/MessagesFilter.html b/types/MessagesFilter.html new file mode 100644 index 000000000..4b4e9b8a4 --- /dev/null +++ b/types/MessagesFilter.html @@ -0,0 +1,2 @@ +MessagesFilter | DWN-SDK Documentation - v0.5.1

Type Alias MessagesFilter

MessagesFilter: {
    interface?: string;
    messageTimestamp?: RangeCriterion;
    method?: string;
    protocol?: string;
}

filters used when filtering for any type of Message across interfaces

+
diff --git a/types/MessagesPermissionScope.html b/types/MessagesPermissionScope.html new file mode 100644 index 000000000..e018836f7 --- /dev/null +++ b/types/MessagesPermissionScope.html @@ -0,0 +1 @@ +MessagesPermissionScope | DWN-SDK Documentation - v0.5.1

Type Alias MessagesPermissionScope

MessagesPermissionScope: {
    interface: Messages;
    method: Query | Read | Subscribe;
    protocol?: string;
}
diff --git a/types/MessagesQueryMessage.html b/types/MessagesQueryMessage.html new file mode 100644 index 000000000..6fdcc99f8 --- /dev/null +++ b/types/MessagesQueryMessage.html @@ -0,0 +1 @@ +MessagesQueryMessage | DWN-SDK Documentation - v0.5.1

Type Alias MessagesQueryMessage

MessagesQueryMessage: GenericMessage & {
    authorization: AuthorizationModel;
    descriptor: MessagesQueryDescriptor;
}
diff --git a/types/MessagesQueryOptions.html b/types/MessagesQueryOptions.html new file mode 100644 index 000000000..9d6e11fab --- /dev/null +++ b/types/MessagesQueryOptions.html @@ -0,0 +1 @@ +MessagesQueryOptions | DWN-SDK Documentation - v0.5.1

Type Alias MessagesQueryOptions

MessagesQueryOptions: {
    cursor?: PaginationCursor;
    filters?: MessagesFilter[];
    messageTimestamp?: string;
    permissionGrantId?: string;
    signer: Signer;
}
diff --git a/types/MessagesQueryReply.html b/types/MessagesQueryReply.html new file mode 100644 index 000000000..f506f13a5 --- /dev/null +++ b/types/MessagesQueryReply.html @@ -0,0 +1 @@ +MessagesQueryReply | DWN-SDK Documentation - v0.5.1

Type Alias MessagesQueryReply

MessagesQueryReply: GenericMessageReply & {
    cursor?: PaginationCursor;
    entries?: string[];
}
diff --git a/types/MessagesReadMessage.html b/types/MessagesReadMessage.html new file mode 100644 index 000000000..2833095f6 --- /dev/null +++ b/types/MessagesReadMessage.html @@ -0,0 +1 @@ +MessagesReadMessage | DWN-SDK Documentation - v0.5.1

Type Alias MessagesReadMessage

MessagesReadMessage: GenericMessage & {
    authorization: AuthorizationModel;
    descriptor: MessagesReadDescriptor;
}
diff --git a/types/MessagesReadOptions.html b/types/MessagesReadOptions.html new file mode 100644 index 000000000..25261617e --- /dev/null +++ b/types/MessagesReadOptions.html @@ -0,0 +1 @@ +MessagesReadOptions | DWN-SDK Documentation - v0.5.1

Type Alias MessagesReadOptions

MessagesReadOptions: {
    messageCid: string;
    messageTimestamp?: string;
    permissionGrantId?: string;
    signer: Signer;
}
diff --git a/types/MessagesReadReply.html b/types/MessagesReadReply.html new file mode 100644 index 000000000..cd8fd83fa --- /dev/null +++ b/types/MessagesReadReply.html @@ -0,0 +1 @@ +MessagesReadReply | DWN-SDK Documentation - v0.5.1

Type Alias MessagesReadReply

MessagesReadReply: GenericMessageReply & {
    entry?: MessagesReadReplyEntry;
}
diff --git a/types/MessagesReadReplyEntry.html b/types/MessagesReadReplyEntry.html new file mode 100644 index 000000000..95646c1d1 --- /dev/null +++ b/types/MessagesReadReplyEntry.html @@ -0,0 +1 @@ +MessagesReadReplyEntry | DWN-SDK Documentation - v0.5.1

Type Alias MessagesReadReplyEntry

MessagesReadReplyEntry: {
    data?: Readable;
    message: GenericMessage;
    messageCid: string;
}
diff --git a/types/MessagesSubscribeDescriptor.html b/types/MessagesSubscribeDescriptor.html new file mode 100644 index 000000000..9c14e89e6 --- /dev/null +++ b/types/MessagesSubscribeDescriptor.html @@ -0,0 +1 @@ +MessagesSubscribeDescriptor | DWN-SDK Documentation - v0.5.1

Type Alias MessagesSubscribeDescriptor

MessagesSubscribeDescriptor: {
    filters: MessagesFilter[];
    interface: Messages;
    messageTimestamp: string;
    method: Subscribe;
}
diff --git a/types/MessagesSubscribeMessage.html b/types/MessagesSubscribeMessage.html new file mode 100644 index 000000000..39575fafa --- /dev/null +++ b/types/MessagesSubscribeMessage.html @@ -0,0 +1 @@ +MessagesSubscribeMessage | DWN-SDK Documentation - v0.5.1

Type Alias MessagesSubscribeMessage

MessagesSubscribeMessage: {
    authorization: AuthorizationModel;
    descriptor: MessagesSubscribeDescriptor;
}
diff --git a/types/MessagesSubscribeOptions.html b/types/MessagesSubscribeOptions.html new file mode 100644 index 000000000..f2ba48aeb --- /dev/null +++ b/types/MessagesSubscribeOptions.html @@ -0,0 +1 @@ +MessagesSubscribeOptions | DWN-SDK Documentation - v0.5.1

Type Alias MessagesSubscribeOptions

MessagesSubscribeOptions: {
    filters?: MessagesFilter[];
    messageTimestamp?: string;
    permissionGrantId?: string;
    signer: Signer;
}
diff --git a/types/MessagesSubscribeReply.html b/types/MessagesSubscribeReply.html new file mode 100644 index 000000000..a87eb9ce3 --- /dev/null +++ b/types/MessagesSubscribeReply.html @@ -0,0 +1 @@ +MessagesSubscribeReply | DWN-SDK Documentation - v0.5.1

Type Alias MessagesSubscribeReply

MessagesSubscribeReply: GenericMessageReply & {
    subscription?: MessageSubscription;
}
diff --git a/types/OneOfFilter.html b/types/OneOfFilter.html new file mode 100644 index 000000000..44863519c --- /dev/null +++ b/types/OneOfFilter.html @@ -0,0 +1 @@ +OneOfFilter | DWN-SDK Documentation - v0.5.1

Type Alias OneOfFilter

OneOfFilter: EqualFilter[]
diff --git a/types/Pagination.html b/types/Pagination.html new file mode 100644 index 000000000..ebd6f2198 --- /dev/null +++ b/types/Pagination.html @@ -0,0 +1,3 @@ +Pagination | DWN-SDK Documentation - v0.5.1

Type Alias Pagination

Pagination: {
    cursor?: PaginationCursor;
    limit?: number;
}

Pagination Options for querying messages.

+

The cursor is the messageCid of the message you would like to pagination from.

+
diff --git a/types/PaginationCursor.html b/types/PaginationCursor.html new file mode 100644 index 000000000..dcf03c5b9 --- /dev/null +++ b/types/PaginationCursor.html @@ -0,0 +1 @@ +PaginationCursor | DWN-SDK Documentation - v0.5.1

Type Alias PaginationCursor

PaginationCursor: {
    messageCid: string;
    value: string | number;
}
diff --git a/types/PermissionConditions.html b/types/PermissionConditions.html new file mode 100644 index 000000000..a4593e7ce --- /dev/null +++ b/types/PermissionConditions.html @@ -0,0 +1,4 @@ +PermissionConditions | DWN-SDK Documentation - v0.5.1

Type Alias PermissionConditions

PermissionConditions: {
    publication?: PermissionConditionPublication;
}

Type declaration

  • Optionalpublication?: PermissionConditionPublication

    indicates whether a message written with the invocation of a permission must, may, or must not +be marked as public. +If undefined, it is optional to make the message public.

    +
diff --git a/types/PermissionGrantData.html b/types/PermissionGrantData.html new file mode 100644 index 000000000..f68ae2f75 --- /dev/null +++ b/types/PermissionGrantData.html @@ -0,0 +1,7 @@ +PermissionGrantData | DWN-SDK Documentation - v0.5.1

Type Alias PermissionGrantData

PermissionGrantData: {
    conditions?: PermissionConditions;
    dateExpires: string;
    delegated?: boolean;
    description?: string;
    requestId?: string;
    scope: PermissionScope;
}

Type for the data payload of a permission grant message.

+

Type declaration

  • Optionalconditions?: PermissionConditions
  • dateExpires: string

    Timestamp at which this grant will no longer be active.

    +
  • Optionaldelegated?: boolean

    Whether this grant is delegated or not. If true, the grantedTo will be able to act as the grantedTo within the scope of this grant.

    +
  • Optionaldescription?: string

    Optional string that communicates what the grant would be used for

    +
  • OptionalrequestId?: string

    Optional CID of a permission request. This is optional because grants may be given without being officially requested

    +
  • scope: PermissionScope

    The scope of the allowed access.

    +
diff --git a/types/PermissionRequestData.html b/types/PermissionRequestData.html new file mode 100644 index 000000000..baec4d14e --- /dev/null +++ b/types/PermissionRequestData.html @@ -0,0 +1,5 @@ +PermissionRequestData | DWN-SDK Documentation - v0.5.1

Type Alias PermissionRequestData

PermissionRequestData: {
    conditions?: PermissionConditions;
    delegated: boolean;
    description?: string;
    scope: PermissionScope;
}

Type for the data payload of a permission request message.

+

Type declaration

  • Optionalconditions?: PermissionConditions
  • delegated: boolean

    If the grant is a delegated grant or not. If true, the grantedTo will be able to act as the grantedBy within the scope of this grant.

    +
  • Optionaldescription?: string

    Optional string that communicates what the grant would be used for.

    +
  • scope: PermissionScope

    The scope of the allowed access.

    +
diff --git a/types/PermissionRevocationData.html b/types/PermissionRevocationData.html new file mode 100644 index 000000000..d8db4bee7 --- /dev/null +++ b/types/PermissionRevocationData.html @@ -0,0 +1,3 @@ +PermissionRevocationData | DWN-SDK Documentation - v0.5.1

Type Alias PermissionRevocationData

PermissionRevocationData: {
    description?: string;
}

Type for the data payload of a permission revocation message.

+

Type declaration

  • Optionaldescription?: string

    Optional string that communicates the details of the revocation.

    +
diff --git a/types/PermissionScope.html b/types/PermissionScope.html new file mode 100644 index 000000000..b59a89fc5 --- /dev/null +++ b/types/PermissionScope.html @@ -0,0 +1,2 @@ +PermissionScope | DWN-SDK Documentation - v0.5.1

Type Alias PermissionScope

The data model for a permission scope.

+
diff --git a/types/Persona.html b/types/Persona.html new file mode 100644 index 000000000..17bbe40b4 --- /dev/null +++ b/types/Persona.html @@ -0,0 +1,2 @@ +Persona | DWN-SDK Documentation - v0.5.1
Persona: {
    did: string;
    keyId: string;
    keyPair: {
        privateJwk: PrivateJwk;
        publicJwk: PublicJwk;
    };
    signer: Signer;
}

A logical grouping of user data used to generate test messages.

+
diff --git a/types/PrivateJwk.html b/types/PrivateJwk.html new file mode 100644 index 000000000..4f51afc2d --- /dev/null +++ b/types/PrivateJwk.html @@ -0,0 +1,4 @@ +PrivateJwk | DWN-SDK Documentation - v0.5.1

Type Alias PrivateJwk

PrivateJwk: PublicJwk & {
    d: string;
}

Type declaration

  • d: string

    the Elliptic Curve private key value. +It is represented as the base64url encoding of the octet string representation of the private key value +MUST be present to represent Elliptic Curve private keys.

    +
diff --git a/types/ProtocolDefinition.html b/types/ProtocolDefinition.html new file mode 100644 index 000000000..e3b7402b0 --- /dev/null +++ b/types/ProtocolDefinition.html @@ -0,0 +1,2 @@ +ProtocolDefinition | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolDefinition

ProtocolDefinition: {
    protocol: string;
    published: boolean;
    structure: {
        [key: string]: ProtocolRuleSet;
    };
    types: ProtocolTypes;
}

Type declaration

  • protocol: string
  • published: boolean

    Denotes if this Protocol Definition can be returned by unauthenticated or unauthorized ProtocolsQuery.

    +
  • structure: {
        [key: string]: ProtocolRuleSet;
    }
  • types: ProtocolTypes
diff --git a/types/ProtocolPermissionScope.html b/types/ProtocolPermissionScope.html new file mode 100644 index 000000000..822827a8c --- /dev/null +++ b/types/ProtocolPermissionScope.html @@ -0,0 +1 @@ +ProtocolPermissionScope | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolPermissionScope

ProtocolPermissionScope: {
    interface: Protocols;
    method: Configure | Query;
    protocol?: string;
}
diff --git a/types/ProtocolRuleSet.html b/types/ProtocolRuleSet.html new file mode 100644 index 000000000..a5d3f7126 --- /dev/null +++ b/types/ProtocolRuleSet.html @@ -0,0 +1,8 @@ +ProtocolRuleSet | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolRuleSet

ProtocolRuleSet: {
    $actions?: ProtocolActionRule[];
    $encryption?: ProtocolPathEncryption;
    $role?: boolean;
    $size?: {
        max?: number;
        min?: number;
    };
    $tags?: {
        $allowUndefinedTags?: boolean;
        $requiredTags?: string[];
        [key: string]: any;
    };
    [key: string]: any;
}

Type declaration

  • [key: string]: any
  • Optional$actions?: ProtocolActionRule[]
  • Optional$encryption?: ProtocolPathEncryption

    Encryption setting for objects that are in this protocol path.

    +
  • Optional$role?: boolean

    If true, this marks a record as a role that may used within a context. +The recipient of a $role record may invoke their role by setting protocolRole property to the protocol path of the $role record.

    +
  • Optional$size?: {
        max?: number;
        min?: number;
    }

    If $size is set, the record size in bytes must be within the limits.

    +
    • Optionalmax?: number
    • Optionalmin?: number
  • Optional$tags?: {
        $allowUndefinedTags?: boolean;
        $requiredTags?: string[];
        [key: string]: any;
    }

    If $tags is set, the record must conform to the tag rules.

    +
    • [key: string]: any
    • Optional$allowUndefinedTags?: boolean

      allow properties other than those explicitly listed. defaults to false

      +
    • Optional$requiredTags?: string[]

      array of required tags

      +
diff --git a/types/ProtocolTypes.html b/types/ProtocolTypes.html new file mode 100644 index 000000000..a2223a460 --- /dev/null +++ b/types/ProtocolTypes.html @@ -0,0 +1 @@ +ProtocolTypes | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolTypes

ProtocolTypes: {
    [key: string]: ProtocolType;
}
diff --git a/types/ProtocolsConfigureDescriptor.html b/types/ProtocolsConfigureDescriptor.html new file mode 100644 index 000000000..27d0e047e --- /dev/null +++ b/types/ProtocolsConfigureDescriptor.html @@ -0,0 +1 @@ +ProtocolsConfigureDescriptor | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolsConfigureDescriptor

ProtocolsConfigureDescriptor: {
    definition: ProtocolDefinition;
    interface: Protocols;
    messageTimestamp: string;
    method: Configure;
}
diff --git a/types/ProtocolsConfigureMessage.html b/types/ProtocolsConfigureMessage.html new file mode 100644 index 000000000..6052c76bc --- /dev/null +++ b/types/ProtocolsConfigureMessage.html @@ -0,0 +1 @@ +ProtocolsConfigureMessage | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolsConfigureMessage

ProtocolsConfigureMessage: GenericMessage & {
    authorization: AuthorizationModel;
    descriptor: ProtocolsConfigureDescriptor;
}
diff --git a/types/ProtocolsConfigureOptions.html b/types/ProtocolsConfigureOptions.html new file mode 100644 index 000000000..ad9771364 --- /dev/null +++ b/types/ProtocolsConfigureOptions.html @@ -0,0 +1,2 @@ +ProtocolsConfigureOptions | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolsConfigureOptions

ProtocolsConfigureOptions: {
    definition: ProtocolDefinition;
    delegatedGrant?: DataEncodedRecordsWriteMessage;
    messageTimestamp?: string;
    permissionGrantId?: string;
    signer: Signer;
}

Type declaration

  • definition: ProtocolDefinition
  • OptionaldelegatedGrant?: DataEncodedRecordsWriteMessage

    The delegated grant invoked to sign on behalf of the logical author, which is the grantor of the delegated grant.

    +
  • OptionalmessageTimestamp?: string
  • OptionalpermissionGrantId?: string
  • signer: Signer
diff --git a/types/ProtocolsQueryFilter.html b/types/ProtocolsQueryFilter.html new file mode 100644 index 000000000..dbc21fdd3 --- /dev/null +++ b/types/ProtocolsQueryFilter.html @@ -0,0 +1 @@ +ProtocolsQueryFilter | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolsQueryFilter

ProtocolsQueryFilter: {
    protocol: string;
}
diff --git a/types/ProtocolsQueryMessage.html b/types/ProtocolsQueryMessage.html new file mode 100644 index 000000000..b41ad81f0 --- /dev/null +++ b/types/ProtocolsQueryMessage.html @@ -0,0 +1 @@ +ProtocolsQueryMessage | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolsQueryMessage

ProtocolsQueryMessage: GenericMessage & {
    descriptor: ProtocolsQueryDescriptor;
}
diff --git a/types/ProtocolsQueryOptions.html b/types/ProtocolsQueryOptions.html new file mode 100644 index 000000000..83f6e2a3e --- /dev/null +++ b/types/ProtocolsQueryOptions.html @@ -0,0 +1 @@ +ProtocolsQueryOptions | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolsQueryOptions

ProtocolsQueryOptions: {
    filter?: ProtocolsQueryFilter;
    messageTimestamp?: string;
    permissionGrantId?: string;
    signer?: Signer;
}
diff --git a/types/ProtocolsQueryReply.html b/types/ProtocolsQueryReply.html new file mode 100644 index 000000000..3072091a6 --- /dev/null +++ b/types/ProtocolsQueryReply.html @@ -0,0 +1 @@ +ProtocolsQueryReply | DWN-SDK Documentation - v0.5.1

Type Alias ProtocolsQueryReply

ProtocolsQueryReply: GenericMessageReply & {
    entries?: ProtocolsConfigureMessage[];
}
diff --git a/types/PublicJwk.html b/types/PublicJwk.html new file mode 100644 index 000000000..731929fee --- /dev/null +++ b/types/PublicJwk.html @@ -0,0 +1,8 @@ +PublicJwk | DWN-SDK Documentation - v0.5.1

Type Alias PublicJwk

PublicJwk: Jwk & {
    crv: "Ed25519" | "secp256k1" | "P-256";
    x: string;
    y?: string;
}

Type declaration

  • crv: "Ed25519" | "secp256k1" | "P-256"

    The "crv" (curve) parameter identifies the cryptographic curve used with the key. +MUST be present for all EC public keys

    +
  • x: string

    the x coordinate for the Elliptic Curve point. +Represented as the base64url encoding of the octet string representation of the coordinate. +MUST be present for all EC public keys

    +
  • Optionaly?: string

    the y coordinate for the Elliptic Curve point. +Represented as the base64url encoding of the octet string representation of the coordinate.

    +
diff --git a/types/QueryOptions.html b/types/QueryOptions.html new file mode 100644 index 000000000..b5df0edcf --- /dev/null +++ b/types/QueryOptions.html @@ -0,0 +1 @@ +QueryOptions | DWN-SDK Documentation - v0.5.1

Type Alias QueryOptions

QueryOptions: {
    cursor?: PaginationCursor;
    limit?: number;
    sortDirection?: SortDirection;
    sortProperty: string;
}
diff --git a/types/QueryResultEntry.html b/types/QueryResultEntry.html new file mode 100644 index 000000000..9b9d2cb00 --- /dev/null +++ b/types/QueryResultEntry.html @@ -0,0 +1,6 @@ +QueryResultEntry | DWN-SDK Documentation - v0.5.1

Type Alias QueryResultEntry

QueryResultEntry: GenericMessage & {
    encodedData?: string;
}

Message returned in a query result. +NOTE: the message structure is a modified version of the message received, the most notable differences are:

+
    +
  1. May include encoded data
  2. +
+
diff --git a/types/RangeCriterion.html b/types/RangeCriterion.html new file mode 100644 index 000000000..d3d646b1d --- /dev/null +++ b/types/RangeCriterion.html @@ -0,0 +1,3 @@ +RangeCriterion | DWN-SDK Documentation - v0.5.1

Type Alias RangeCriterion

RangeCriterion: {
    from?: string;
    to?: string;
}

Type declaration

  • Optionalfrom?: string

    Inclusive starting date-time.

    +
  • Optionalto?: string

    Inclusive end date-time.

    +
diff --git a/types/RangeFilter.html b/types/RangeFilter.html new file mode 100644 index 000000000..5fb271160 --- /dev/null +++ b/types/RangeFilter.html @@ -0,0 +1,2 @@ +RangeFilter | DWN-SDK Documentation - v0.5.1

Type Alias RangeFilter

RangeFilter: (GT | LT) & Partial<GT> & Partial<LT>

Ranger filter. 1 condition is required.

+
diff --git a/types/RecordEvent.html b/types/RecordEvent.html new file mode 100644 index 000000000..84bb9330d --- /dev/null +++ b/types/RecordEvent.html @@ -0,0 +1 @@ +RecordEvent | DWN-SDK Documentation - v0.5.1

Type Alias RecordEvent

RecordEvent: {
    initialWrite?: RecordsWriteMessage;
    message: RecordsWriteMessage | RecordsDeleteMessage;
}
diff --git a/types/RecordSubscriptionHandler.html b/types/RecordSubscriptionHandler.html new file mode 100644 index 000000000..08fa78ba9 --- /dev/null +++ b/types/RecordSubscriptionHandler.html @@ -0,0 +1 @@ +RecordSubscriptionHandler | DWN-SDK Documentation - v0.5.1

Type Alias RecordSubscriptionHandler

RecordSubscriptionHandler: ((event: RecordEvent) => void)
diff --git a/types/RecordsDeleteDescriptor.html b/types/RecordsDeleteDescriptor.html new file mode 100644 index 000000000..6e1a81949 --- /dev/null +++ b/types/RecordsDeleteDescriptor.html @@ -0,0 +1,2 @@ +RecordsDeleteDescriptor | DWN-SDK Documentation - v0.5.1

Type Alias RecordsDeleteDescriptor

RecordsDeleteDescriptor: {
    interface: Records;
    messageTimestamp: string;
    method: Delete;
    prune: boolean;
    recordId: string;
}

Type declaration

  • interface: Records
  • messageTimestamp: string
  • method: Delete
  • prune: boolean

    Denotes if all the descendent records should be purged.

    +
  • recordId: string
diff --git a/types/RecordsDeleteMessage.html b/types/RecordsDeleteMessage.html new file mode 100644 index 000000000..6ad28f034 --- /dev/null +++ b/types/RecordsDeleteMessage.html @@ -0,0 +1 @@ +RecordsDeleteMessage | DWN-SDK Documentation - v0.5.1

Type Alias RecordsDeleteMessage

RecordsDeleteMessage: GenericMessage & {
    authorization: AuthorizationModel;
    descriptor: RecordsDeleteDescriptor;
}
diff --git a/types/RecordsDeleteOptions.html b/types/RecordsDeleteOptions.html new file mode 100644 index 000000000..39508a6da --- /dev/null +++ b/types/RecordsDeleteOptions.html @@ -0,0 +1,3 @@ +RecordsDeleteOptions | DWN-SDK Documentation - v0.5.1

Type Alias RecordsDeleteOptions

RecordsDeleteOptions: {
    delegatedGrant?: DataEncodedRecordsWriteMessage;
    messageTimestamp?: string;
    protocolRole?: string;
    prune?: boolean;
    recordId: string;
    signer: Signer;
}

Type declaration

  • OptionaldelegatedGrant?: DataEncodedRecordsWriteMessage

    The delegated grant to sign on behalf of the logical author, which is the grantor (grantedBy) of the delegated grant.

    +
  • OptionalmessageTimestamp?: string
  • OptionalprotocolRole?: string
  • Optionalprune?: boolean

    Denotes if all the descendent records should be purged. Defaults to false.

    +
  • recordId: string
  • signer: Signer
diff --git a/types/RecordsFilter.html b/types/RecordsFilter.html new file mode 100644 index 000000000..60ed8792d --- /dev/null +++ b/types/RecordsFilter.html @@ -0,0 +1,3 @@ +RecordsFilter | DWN-SDK Documentation - v0.5.1

Type Alias RecordsFilter

RecordsFilter: {
    attester?: string;
    author?: string | string[];
    contextId?: string;
    dataCid?: string;
    dataFormat?: string;
    dataSize?: RangeFilter;
    dateCreated?: RangeCriterion;
    datePublished?: RangeCriterion;
    dateUpdated?: RangeCriterion;
    parentId?: string;
    protocol?: string;
    protocolPath?: string;
    published?: boolean;
    recipient?: string | string[];
    recordId?: string;
    schema?: string;
    tags?: {
        [property: string]: RecordsWriteTagsFilter;
    };
}

Type declaration

  • Optionalattester?: string
  • Optionalauthor?: string | string[]

    The logical author of the record

    +
  • OptionalcontextId?: string

    When given all Records message under the context of the given contextId will be returned.

    +
  • OptionaldataCid?: string
  • OptionaldataFormat?: string
  • OptionaldataSize?: RangeFilter
  • OptionaldateCreated?: RangeCriterion
  • OptionaldatePublished?: RangeCriterion
  • OptionaldateUpdated?: RangeCriterion
  • OptionalparentId?: string
  • Optionalprotocol?: string
  • OptionalprotocolPath?: string
  • Optionalpublished?: boolean
  • Optionalrecipient?: string | string[]
  • OptionalrecordId?: string
  • Optionalschema?: string
  • Optionaltags?: {
        [property: string]: RecordsWriteTagsFilter;
    }
diff --git a/types/RecordsPermissionScope.html b/types/RecordsPermissionScope.html new file mode 100644 index 000000000..ae6600c9d --- /dev/null +++ b/types/RecordsPermissionScope.html @@ -0,0 +1,4 @@ +RecordsPermissionScope | DWN-SDK Documentation - v0.5.1

Type Alias RecordsPermissionScope

RecordsPermissionScope: {
    contextId?: string;
    interface: Records;
    method:
        | Read
        | Write
        | Query
        | Subscribe
        | Delete;
    protocol: string;
    protocolPath?: string;
}

The data model for a permission scope that is specific to the Records interface.

+

Type declaration

  • OptionalcontextId?: string

    May only be present when protocol is defined and protocolPath is undefined

    +
  • interface: Records
  • method:
        | Read
        | Write
        | Query
        | Subscribe
        | Delete
  • protocol: string
  • OptionalprotocolPath?: string

    May only be present when protocol is defined and contextId is undefined

    +
diff --git a/types/RecordsQueryDescriptor.html b/types/RecordsQueryDescriptor.html new file mode 100644 index 000000000..67a1c50df --- /dev/null +++ b/types/RecordsQueryDescriptor.html @@ -0,0 +1 @@ +RecordsQueryDescriptor | DWN-SDK Documentation - v0.5.1

Type Alias RecordsQueryDescriptor

RecordsQueryDescriptor: {
    dateSort?: DateSort;
    filter: RecordsFilter;
    interface: Records;
    messageTimestamp: string;
    method: Query;
    pagination?: Pagination;
}
diff --git a/types/RecordsQueryMessage.html b/types/RecordsQueryMessage.html new file mode 100644 index 000000000..c67db4593 --- /dev/null +++ b/types/RecordsQueryMessage.html @@ -0,0 +1 @@ +RecordsQueryMessage | DWN-SDK Documentation - v0.5.1

Type Alias RecordsQueryMessage

RecordsQueryMessage: GenericMessage & {
    descriptor: RecordsQueryDescriptor;
}
diff --git a/types/RecordsQueryOptions.html b/types/RecordsQueryOptions.html new file mode 100644 index 000000000..bbef4b193 --- /dev/null +++ b/types/RecordsQueryOptions.html @@ -0,0 +1,2 @@ +RecordsQueryOptions | DWN-SDK Documentation - v0.5.1

Type Alias RecordsQueryOptions

RecordsQueryOptions: {
    dateSort?: DateSort;
    delegatedGrant?: DataEncodedRecordsWriteMessage;
    filter: RecordsFilter;
    messageTimestamp?: string;
    pagination?: Pagination;
    protocolRole?: string;
    signer?: Signer;
}

Type declaration

  • OptionaldateSort?: DateSort
  • OptionaldelegatedGrant?: DataEncodedRecordsWriteMessage

    The delegated grant to sign on behalf of the logical author, which is the grantor (grantedBy) of the delegated grant.

    +
  • filter: RecordsFilter
  • OptionalmessageTimestamp?: string
  • Optionalpagination?: Pagination
  • OptionalprotocolRole?: string
  • Optionalsigner?: Signer
diff --git a/types/RecordsQueryReply.html b/types/RecordsQueryReply.html new file mode 100644 index 000000000..e9cf4a76c --- /dev/null +++ b/types/RecordsQueryReply.html @@ -0,0 +1 @@ +RecordsQueryReply | DWN-SDK Documentation - v0.5.1

Type Alias RecordsQueryReply

RecordsQueryReply: GenericMessageReply & {
    cursor?: PaginationCursor;
    entries?: RecordsQueryReplyEntry[];
}
diff --git a/types/RecordsQueryReplyEntry.html b/types/RecordsQueryReplyEntry.html new file mode 100644 index 000000000..eed5e328f --- /dev/null +++ b/types/RecordsQueryReplyEntry.html @@ -0,0 +1,9 @@ +RecordsQueryReplyEntry | DWN-SDK Documentation - v0.5.1

Type Alias RecordsQueryReplyEntry

RecordsQueryReplyEntry: RecordsWriteMessage & {
    encodedData?: string;
    initialWrite?: RecordsWriteMessage;
}

Data structure returned in a RecordsQuery reply entry. +NOTE: the message structure is a modified version of the message received, the most notable differences are:

+
    +
  1. May include an initial RecordsWrite message
  2. +
  3. May include encoded data
  4. +
+

Type declaration

  • OptionalencodedData?: string

    The encoded data of the record if the data associated with the record is equal or smaller than DwnConstant.maxDataSizeAllowedToBeEncoded.

    +
  • OptionalinitialWrite?: RecordsWriteMessage

    The initial write of the record if the returned RecordsWrite message itself is not the initial write.

    +
diff --git a/types/RecordsReadDescriptor.html b/types/RecordsReadDescriptor.html new file mode 100644 index 000000000..56ee7d686 --- /dev/null +++ b/types/RecordsReadDescriptor.html @@ -0,0 +1 @@ +RecordsReadDescriptor | DWN-SDK Documentation - v0.5.1

Type Alias RecordsReadDescriptor

RecordsReadDescriptor: {
    filter: RecordsFilter;
    interface: Records;
    messageTimestamp: string;
    method: Read;
}
diff --git a/types/RecordsReadMessage.html b/types/RecordsReadMessage.html new file mode 100644 index 000000000..bfcf4a966 --- /dev/null +++ b/types/RecordsReadMessage.html @@ -0,0 +1 @@ +RecordsReadMessage | DWN-SDK Documentation - v0.5.1

Type Alias RecordsReadMessage

RecordsReadMessage: {
    authorization?: AuthorizationModel;
    descriptor: RecordsReadDescriptor;
}
diff --git a/types/RecordsReadOptions.html b/types/RecordsReadOptions.html new file mode 100644 index 000000000..beec8805d --- /dev/null +++ b/types/RecordsReadOptions.html @@ -0,0 +1,4 @@ +RecordsReadOptions | DWN-SDK Documentation - v0.5.1

Type Alias RecordsReadOptions

RecordsReadOptions: {
    delegatedGrant?: DataEncodedRecordsWriteMessage;
    filter: RecordsFilter;
    messageTimestamp?: string;
    permissionGrantId?: string;
    protocolRole?: string;
    signer?: Signer;
}

Type declaration

  • OptionaldelegatedGrant?: DataEncodedRecordsWriteMessage

    The delegated grant to sign on behalf of the logical author, which is the grantor (grantedBy) of the delegated grant.

    +
  • filter: RecordsFilter
  • OptionalmessageTimestamp?: string
  • OptionalpermissionGrantId?: string
  • OptionalprotocolRole?: string

    Used when authorizing protocol records. +The protocol path to the role record type whose recipient is the author of this RecordsRead

    +
  • Optionalsigner?: Signer
diff --git a/types/RecordsReadReply.html b/types/RecordsReadReply.html new file mode 100644 index 000000000..8ea96c35f --- /dev/null +++ b/types/RecordsReadReply.html @@ -0,0 +1,4 @@ +RecordsReadReply | DWN-SDK Documentation - v0.5.1

Type Alias RecordsReadReply

RecordsReadReply: GenericMessageReply & {
    entry?: RecordsReadReplyEntry;
}

The reply to a RecordsRead message.

+

Type declaration

  • Optionalentry?: RecordsReadReplyEntry

    A container for the data returned from a RecordsRead. +undefined if no data needs to be returned.

    +
diff --git a/types/RecordsReadReplyEntry.html b/types/RecordsReadReplyEntry.html new file mode 100644 index 000000000..37cd9ebb8 --- /dev/null +++ b/types/RecordsReadReplyEntry.html @@ -0,0 +1,6 @@ +RecordsReadReplyEntry | DWN-SDK Documentation - v0.5.1

Type Alias RecordsReadReplyEntry

RecordsReadReplyEntry: {
    data?: Readable;
    initialWrite?: RecordsWriteMessage;
    recordsDelete?: RecordsDeleteMessage;
    recordsWrite?: RecordsWriteMessage;
}

The structure of the entry container property in RecordsReadReplyEntry.

+

Type declaration

  • Optionaldata?: Readable

    The data stream associated with the record if the records exists (not deleted).

    +
  • OptionalinitialWrite?: RecordsWriteMessage

    The initial write of the record if the returned RecordsWrite message itself is not the initial write or if a RecordsDelete is returned.

    +
  • OptionalrecordsDelete?: RecordsDeleteMessage

    The RecordsDelete if the record is deleted.

    +
  • OptionalrecordsWrite?: RecordsWriteMessage

    The latest RecordsWrite message of the record if record exists (not deleted).

    +
diff --git a/types/RecordsSubscribeDescriptor.html b/types/RecordsSubscribeDescriptor.html new file mode 100644 index 000000000..8c12878d3 --- /dev/null +++ b/types/RecordsSubscribeDescriptor.html @@ -0,0 +1 @@ +RecordsSubscribeDescriptor | DWN-SDK Documentation - v0.5.1

Type Alias RecordsSubscribeDescriptor

RecordsSubscribeDescriptor: {
    filter: RecordsFilter;
    interface: Records;
    messageTimestamp: string;
    method: Subscribe;
}
diff --git a/types/RecordsSubscribeMessage.html b/types/RecordsSubscribeMessage.html new file mode 100644 index 000000000..dd632d6fe --- /dev/null +++ b/types/RecordsSubscribeMessage.html @@ -0,0 +1 @@ +RecordsSubscribeMessage | DWN-SDK Documentation - v0.5.1

Type Alias RecordsSubscribeMessage

RecordsSubscribeMessage: GenericMessage & {
    descriptor: RecordsSubscribeDescriptor;
}
diff --git a/types/RecordsSubscribeMessageOptions.html b/types/RecordsSubscribeMessageOptions.html new file mode 100644 index 000000000..bc4e107fd --- /dev/null +++ b/types/RecordsSubscribeMessageOptions.html @@ -0,0 +1 @@ +RecordsSubscribeMessageOptions | DWN-SDK Documentation - v0.5.1

Type Alias RecordsSubscribeMessageOptions

RecordsSubscribeMessageOptions: {
    subscriptionHandler: RecordSubscriptionHandler;
}
diff --git a/types/RecordsSubscribeOptions.html b/types/RecordsSubscribeOptions.html new file mode 100644 index 000000000..5f69bfc2d --- /dev/null +++ b/types/RecordsSubscribeOptions.html @@ -0,0 +1,2 @@ +RecordsSubscribeOptions | DWN-SDK Documentation - v0.5.1

Type Alias RecordsSubscribeOptions

RecordsSubscribeOptions: {
    delegatedGrant?: DataEncodedRecordsWriteMessage;
    filter: RecordsFilter;
    messageTimestamp?: string;
    protocolRole?: string;
    signer?: Signer;
}

Type declaration

  • OptionaldelegatedGrant?: DataEncodedRecordsWriteMessage

    The delegated grant to sign on behalf of the logical author, which is the grantor (grantedBy) of the delegated grant.

    +
  • filter: RecordsFilter
  • OptionalmessageTimestamp?: string
  • OptionalprotocolRole?: string
  • Optionalsigner?: Signer
diff --git a/types/RecordsSubscribeReply.html b/types/RecordsSubscribeReply.html new file mode 100644 index 000000000..bf5b7b857 --- /dev/null +++ b/types/RecordsSubscribeReply.html @@ -0,0 +1 @@ +RecordsSubscribeReply | DWN-SDK Documentation - v0.5.1

Type Alias RecordsSubscribeReply

RecordsSubscribeReply: GenericMessageReply & {
    subscription?: MessageSubscription;
}
diff --git a/types/RecordsWriteAttestationPayload.html b/types/RecordsWriteAttestationPayload.html new file mode 100644 index 000000000..d6a69537e --- /dev/null +++ b/types/RecordsWriteAttestationPayload.html @@ -0,0 +1 @@ +RecordsWriteAttestationPayload | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteAttestationPayload

RecordsWriteAttestationPayload: {
    descriptorCid: string;
}
diff --git a/types/RecordsWriteDescriptor.html b/types/RecordsWriteDescriptor.html new file mode 100644 index 000000000..fc1dd13d9 --- /dev/null +++ b/types/RecordsWriteDescriptor.html @@ -0,0 +1 @@ +RecordsWriteDescriptor | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteDescriptor

RecordsWriteDescriptor: {
    dataCid: string;
    dataFormat: string;
    dataSize: number;
    dateCreated: string;
    datePublished?: string;
    interface: Records;
    messageTimestamp: string;
    method: Write;
    parentId?: string;
    protocol?: string;
    protocolPath?: string;
    published?: boolean;
    recipient?: string;
    schema?: string;
    tags?: RecordsWriteTags;
}
diff --git a/types/RecordsWriteMessage.html b/types/RecordsWriteMessage.html new file mode 100644 index 000000000..5285a4822 --- /dev/null +++ b/types/RecordsWriteMessage.html @@ -0,0 +1 @@ +RecordsWriteMessage | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteMessage

RecordsWriteMessage: {
    attestation?: GeneralJws;
    authorization: AuthorizationModel;
    contextId?: string;
    descriptor: RecordsWriteDescriptor;
    encryption?: EncryptionProperty;
    recordId: string;
}
diff --git a/types/RecordsWriteMessageOptions.html b/types/RecordsWriteMessageOptions.html new file mode 100644 index 000000000..89ac17088 --- /dev/null +++ b/types/RecordsWriteMessageOptions.html @@ -0,0 +1 @@ +RecordsWriteMessageOptions | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteMessageOptions

RecordsWriteMessageOptions: {
    dataStream?: Readable;
}
diff --git a/types/RecordsWriteOptions.html b/types/RecordsWriteOptions.html new file mode 100644 index 000000000..13f5f831e --- /dev/null +++ b/types/RecordsWriteOptions.html @@ -0,0 +1,5 @@ +RecordsWriteOptions | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteOptions

RecordsWriteOptions: {
    attestationSigners?: Signer[];
    data?: Uint8Array;
    dataCid?: string;
    dataFormat: string;
    dataSize?: number;
    dateCreated?: string;
    datePublished?: string;
    delegatedGrant?: DataEncodedRecordsWriteMessage;
    encryptionInput?: EncryptionInput;
    messageTimestamp?: string;
    parentContextId?: string;
    permissionGrantId?: string;
    protocol?: string;
    protocolPath?: string;
    protocolRole?: string;
    published?: boolean;
    recipient?: string;
    recordId?: string;
    schema?: string;
    signer?: Signer;
    tags?: RecordsWriteTags;
}

Type declaration

  • OptionalattestationSigners?: Signer[]
  • Optionaldata?: Uint8Array
  • OptionaldataCid?: string
  • dataFormat: string
  • OptionaldataSize?: number
  • OptionaldateCreated?: string
  • OptionaldatePublished?: string
  • OptionaldelegatedGrant?: DataEncodedRecordsWriteMessage

    The delegated grant invoked to sign on behalf of the logical author, which is the grantor of the delegated grant.

    +
  • OptionalencryptionInput?: EncryptionInput
  • OptionalmessageTimestamp?: string
  • OptionalparentContextId?: string

    Must be given if this message is for a non-root protocol record. +If not given, it either means this write is for a root protocol record or a flat-space record.

    +
  • OptionalpermissionGrantId?: string
  • Optionalprotocol?: string
  • OptionalprotocolPath?: string
  • OptionalprotocolRole?: string
  • Optionalpublished?: boolean
  • Optionalrecipient?: string
  • OptionalrecordId?: string
  • Optionalschema?: string
  • Optionalsigner?: Signer

    The signer of the message, which is commonly the author, but can also be a delegate.

    +
  • Optionaltags?: RecordsWriteTags
diff --git a/types/RecordsWriteSignaturePayload.html b/types/RecordsWriteSignaturePayload.html new file mode 100644 index 000000000..b2099507e --- /dev/null +++ b/types/RecordsWriteSignaturePayload.html @@ -0,0 +1 @@ +RecordsWriteSignaturePayload | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteSignaturePayload

RecordsWriteSignaturePayload: GenericSignaturePayload & {
    attestationCid?: string;
    contextId?: string;
    encryptionCid?: string;
    recordId: string;
}
diff --git a/types/RecordsWriteTagValue.html b/types/RecordsWriteTagValue.html new file mode 100644 index 000000000..bd6fc6960 --- /dev/null +++ b/types/RecordsWriteTagValue.html @@ -0,0 +1 @@ +RecordsWriteTagValue | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteTagValue

RecordsWriteTagValue:
    | string
    | number
    | boolean
    | string[]
    | number[]
diff --git a/types/RecordsWriteTags.html b/types/RecordsWriteTags.html new file mode 100644 index 000000000..16eecfc08 --- /dev/null +++ b/types/RecordsWriteTags.html @@ -0,0 +1 @@ +RecordsWriteTags | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteTags

RecordsWriteTags: {
    [property: string]: RecordsWriteTagValue;
}
diff --git a/types/RecordsWriteTagsFilter.html b/types/RecordsWriteTagsFilter.html new file mode 100644 index 000000000..ef3f91c8a --- /dev/null +++ b/types/RecordsWriteTagsFilter.html @@ -0,0 +1 @@ +RecordsWriteTagsFilter | DWN-SDK Documentation - v0.5.1

Type Alias RecordsWriteTagsFilter

RecordsWriteTagsFilter:
    | StartsWithFilter
    | RangeFilter
    | string
    | number
    | boolean
diff --git a/types/SubscriptionReply.html b/types/SubscriptionReply.html new file mode 100644 index 000000000..76bf6ec00 --- /dev/null +++ b/types/SubscriptionReply.html @@ -0,0 +1 @@ +SubscriptionReply | DWN-SDK Documentation - v0.5.1

Type Alias SubscriptionReply

SubscriptionReply: GenericMessageReply & {
    subscription?: MessageSubscription;
}
diff --git a/types/UnionMessageReply.html b/types/UnionMessageReply.html new file mode 100644 index 000000000..e186f5a1d --- /dev/null +++ b/types/UnionMessageReply.html @@ -0,0 +1,10 @@ +UnionMessageReply | DWN-SDK Documentation - v0.5.1

Type Alias UnionMessageReply

UnionMessageReply: GenericMessageReply & {
    cursor?: PaginationCursor;
    entries?: QueryResultEntry[] | ProtocolsConfigureMessage[] | string[];
    entry?: MessagesReadReplyEntry & RecordsReadReplyEntry;
    subscription?: MessageSubscription;
}

Catch-all message reply type. It is recommended to use GenericMessageReply or a message-specific reply type wherever possible.

+

Type declaration

  • Optionalcursor?: PaginationCursor

    A cursor for pagination if applicable (e.g. RecordsQuery). +Mutually exclusive with record.

    +
  • Optionalentries?: QueryResultEntry[] | ProtocolsConfigureMessage[] | string[]

    Resulting message entries or events returned from the invocation of the corresponding message. +e.g. the resulting messages from a RecordsQuery, or array of messageCid strings for MessagesQuery +Mutually exclusive with record.

    +
  • Optionalentry?: MessagesReadReplyEntry & RecordsReadReplyEntry

    A container for the data returned from a RecordsRead or MessagesRead. +Mutually exclusive with (entries + cursor) and subscription.

    +
  • Optionalsubscription?: MessageSubscription

    A subscription object if a subscription was requested.

    +