From 5927dc7c2b7ee18c7fc98283432b1f49393c1a10 Mon Sep 17 00:00:00 2001 From: adzialocha Date: Wed, 17 Jan 2024 21:36:19 +0000 Subject: [PATCH] deploy: fa818f53f19706907395b3ae63c828f0e8b37fa9 --- lib/p2panda-js/.nojekyll | 1 + lib/p2panda-js/assets/highlight.css | 120 ++ lib/p2panda-js/assets/main.js | 58 + lib/p2panda-js/assets/search.js | 1 + lib/p2panda-js/assets/style.css | 1280 +++++++++++++++++ lib/p2panda-js/classes/KeyPair.html | 156 ++ lib/p2panda-js/classes/OperationFields.html | 177 +++ lib/p2panda-js/functions/bytesToHex.html | 85 ++ lib/p2panda-js/functions/decodeEntry.html | 85 ++ lib/p2panda-js/functions/decodeOperation.html | 86 ++ lib/p2panda-js/functions/encodeOperation.html | 85 ++ lib/p2panda-js/functions/generateHash.html | 85 ++ lib/p2panda-js/functions/hexToBytes.html | 85 ++ lib/p2panda-js/functions/initWebAssembly.html | 94 ++ .../functions/signAndEncodeEntry.html | 89 ++ lib/p2panda-js/functions/verifySignature.html | 93 ++ lib/p2panda-js/index.html | 228 +++ lib/p2panda-js/modules.html | 94 ++ lib/p2panda-js/types/EasyValues.html | 77 + lib/p2panda-js/types/Entry.html | 104 ++ lib/p2panda-js/types/EntryArgs.html | 92 ++ lib/p2panda-js/types/FieldType.html | 70 + lib/p2panda-js/types/OperationAction.html | 69 + lib/p2panda-js/types/OperationArgs.html | 89 ++ lib/p2panda-js/types/OperationMeta.html | 81 ++ lib/p2panda-js/types/OperationValue.html | 69 + lib/p2panda-js/types/OperationValueArg.html | 69 + lib/p2panda-js/types/PlainOperation.html | 70 + 28 files changed, 3692 insertions(+) create mode 100644 lib/p2panda-js/.nojekyll create mode 100644 lib/p2panda-js/assets/highlight.css create mode 100644 lib/p2panda-js/assets/main.js create mode 100644 lib/p2panda-js/assets/search.js create mode 100644 lib/p2panda-js/assets/style.css create mode 100644 lib/p2panda-js/classes/KeyPair.html create mode 100644 lib/p2panda-js/classes/OperationFields.html create mode 100644 lib/p2panda-js/functions/bytesToHex.html create mode 100644 lib/p2panda-js/functions/decodeEntry.html create mode 100644 lib/p2panda-js/functions/decodeOperation.html create mode 100644 lib/p2panda-js/functions/encodeOperation.html create mode 100644 lib/p2panda-js/functions/generateHash.html create mode 100644 lib/p2panda-js/functions/hexToBytes.html create mode 100644 lib/p2panda-js/functions/initWebAssembly.html create mode 100644 lib/p2panda-js/functions/signAndEncodeEntry.html create mode 100644 lib/p2panda-js/functions/verifySignature.html create mode 100644 lib/p2panda-js/index.html create mode 100644 lib/p2panda-js/modules.html create mode 100644 lib/p2panda-js/types/EasyValues.html create mode 100644 lib/p2panda-js/types/Entry.html create mode 100644 lib/p2panda-js/types/EntryArgs.html create mode 100644 lib/p2panda-js/types/FieldType.html create mode 100644 lib/p2panda-js/types/OperationAction.html create mode 100644 lib/p2panda-js/types/OperationArgs.html create mode 100644 lib/p2panda-js/types/OperationMeta.html create mode 100644 lib/p2panda-js/types/OperationValue.html create mode 100644 lib/p2panda-js/types/OperationValueArg.html create mode 100644 lib/p2panda-js/types/PlainOperation.html diff --git a/lib/p2panda-js/.nojekyll b/lib/p2panda-js/.nojekyll new file mode 100644 index 000000000..e2ac6616a --- /dev/null +++ b/lib/p2panda-js/.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/lib/p2panda-js/assets/highlight.css b/lib/p2panda-js/assets/highlight.css new file mode 100644 index 000000000..a4b119ea6 --- /dev/null +++ b/lib/p2panda-js/assets/highlight.css @@ -0,0 +1,120 @@ +:root { + --light-hl-0: #001080; + --dark-hl-0: #9CDCFE; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #AF00DB; + --dark-hl-2: #C586C0; + --light-hl-3: #A31515; + --dark-hl-3: #CE9178; + --light-hl-4: #008000; + --dark-hl-4: #6A9955; + --light-hl-5: #0000FF; + --dark-hl-5: #569CD6; + --light-hl-6: #0070C1; + --dark-hl-6: #4FC1FF; + --light-hl-7: #795E26; + --dark-hl-7: #DCDCAA; + --light-hl-8: #800000; + --dark-hl-8: #808080; + --light-hl-9: #800000; + --dark-hl-9: #569CD6; + --light-hl-10: #000000FF; + --dark-hl-10: #D4D4D4; + --light-hl-11: #E50000; + --dark-hl-11: #9CDCFE; + --light-hl-12: #0000FF; + --dark-hl-12: #CE9178; + --light-hl-13: #098658; + --dark-hl-13: #B5CEA8; + --light-code-background: #FFFFFF; + --dark-code-background: #1E1E1E; +} + +@media (prefers-color-scheme: light) { :root { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --code-background: var(--light-code-background); +} } + +@media (prefers-color-scheme: dark) { :root { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --code-background: var(--dark-code-background); +} } + +:root[data-theme='light'] { + --hl-0: var(--light-hl-0); + --hl-1: var(--light-hl-1); + --hl-2: var(--light-hl-2); + --hl-3: var(--light-hl-3); + --hl-4: var(--light-hl-4); + --hl-5: var(--light-hl-5); + --hl-6: var(--light-hl-6); + --hl-7: var(--light-hl-7); + --hl-8: var(--light-hl-8); + --hl-9: var(--light-hl-9); + --hl-10: var(--light-hl-10); + --hl-11: var(--light-hl-11); + --hl-12: var(--light-hl-12); + --hl-13: var(--light-hl-13); + --code-background: var(--light-code-background); +} + +:root[data-theme='dark'] { + --hl-0: var(--dark-hl-0); + --hl-1: var(--dark-hl-1); + --hl-2: var(--dark-hl-2); + --hl-3: var(--dark-hl-3); + --hl-4: var(--dark-hl-4); + --hl-5: var(--dark-hl-5); + --hl-6: var(--dark-hl-6); + --hl-7: var(--dark-hl-7); + --hl-8: var(--dark-hl-8); + --hl-9: var(--dark-hl-9); + --hl-10: var(--dark-hl-10); + --hl-11: var(--dark-hl-11); + --hl-12: var(--dark-hl-12); + --hl-13: var(--dark-hl-13); + --code-background: var(--dark-code-background); +} + +.hl-0 { color: var(--hl-0); } +.hl-1 { color: var(--hl-1); } +.hl-2 { color: var(--hl-2); } +.hl-3 { color: var(--hl-3); } +.hl-4 { color: var(--hl-4); } +.hl-5 { color: var(--hl-5); } +.hl-6 { color: var(--hl-6); } +.hl-7 { color: var(--hl-7); } +.hl-8 { color: var(--hl-8); } +.hl-9 { color: var(--hl-9); } +.hl-10 { color: var(--hl-10); } +.hl-11 { color: var(--hl-11); } +.hl-12 { color: var(--hl-12); } +.hl-13 { color: var(--hl-13); } +pre, code { background: var(--code-background); } diff --git a/lib/p2panda-js/assets/main.js b/lib/p2panda-js/assets/main.js new file mode 100644 index 000000000..d55df0323 --- /dev/null +++ b/lib/p2panda-js/assets/main.js @@ -0,0 +1,58 @@ +"use strict"; +"use strict";(()=>{var Qe=Object.create;var ae=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Ce=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var _e=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Me=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ce(e))!Re.call(t,i)&&i!==n&&ae(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Qe(Oe(t)):{},Me(e||!t||!t.__esModule?ae(n,"default",{value:t,enumerable:!0}):n,t));var de=_e((ce,he)=>{(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 h=t.utils.clone(n)||{};h.position=[a,l],h.index=s.length,s.push(new t.Token(r.slice(a,o),h))}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(ou?h+=2:a==u&&(n+=r[l+1]*i[h+1],l+=2,h+=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 u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var h=s.str.charAt(0),m=s.str.charAt(1),v;m in s.node.edges?v=s.node.edges[m]:(v=new t.TokenSet,s.node.edges[m]=v),s.str.length==1&&(v.final=!0),i.push({node:v,editsRemaining:s.editsRemaining-1,str:h+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),u=0;u1?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 ce=="object"?he.exports=n():e.lunr=n()}(this,function(){return t})})()});var le=[];function B(t,e){le.push({selector:e,constructor:t})}var Y=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){le.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()}ensureFocusedElementVisible(){this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null);let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n.tagName!=="SECTION";)n=n.parentElement;if(n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}};var I=class{constructor(e){this.el=e.el,this.app=e.app}};var J=class{constructor(){this.listeners={}}addEventListener(e,n){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push(n)}removeEventListener(e,n){if(!(e in this.listeners))return;let r=this.listeners[e];for(let i=0,s=r.length;i{let n=Date.now();return(...r)=>{n+e-Date.now()<0&&(t(...r),n=Date.now())}};var re=class extends J{constructor(){super();this.scrollTop=0;this.lastY=0;this.width=0;this.height=0;this.showToolbar=!0;this.toolbar=document.querySelector(".tsd-page-toolbar"),this.navigation=document.querySelector(".col-menu"),window.addEventListener("scroll",ne(()=>this.onScroll(),10)),window.addEventListener("resize",ne(()=>this.onResize(),10)),this.searchInput=document.querySelector("#tsd-search input"),this.searchInput&&this.searchInput.addEventListener("focus",()=>{this.hideShowToolbar()}),this.onResize(),this.onScroll()}triggerResize(){let n=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(n)}onResize(){this.width=window.innerWidth||0,this.height=window.innerHeight||0;let n=new CustomEvent("resize",{detail:{width:this.width,height:this.height}});this.dispatchEvent(n)}onScroll(){this.scrollTop=window.scrollY||0;let n=new CustomEvent("scroll",{detail:{scrollTop:this.scrollTop}});this.dispatchEvent(n),this.hideShowToolbar()}hideShowToolbar(){let n=this.showToolbar;this.showToolbar=this.lastY>=this.scrollTop||this.scrollTop<=0||!!this.searchInput&&this.searchInput===document.activeElement,n!==this.showToolbar&&(this.toolbar.classList.toggle("tsd-page-toolbar--hide"),this.navigation?.classList.toggle("col-menu--hide")),this.lastY=this.scrollTop}},R=re;R.instance=new re;var X=class extends I{constructor(n){super(n);this.anchors=[];this.index=-1;R.instance.addEventListener("resize",()=>this.onResize()),R.instance.addEventListener("scroll",r=>this.onScroll(r)),this.createAnchors()}createAnchors(){let n=window.location.href;n.indexOf("#")!=-1&&(n=n.substring(0,n.indexOf("#"))),this.el.querySelectorAll("a").forEach(r=>{let i=r.href;if(i.indexOf("#")==-1||i.substring(0,n.length)!=n)return;let s=i.substring(i.indexOf("#")+1),o=document.querySelector("a.tsd-anchor[name="+s+"]"),a=r.parentNode;!o||!a||this.anchors.push({link:a,anchor:o,position:0})}),this.onResize()}onResize(){let n;for(let i=0,s=this.anchors.length;ii.position-s.position);let r=new CustomEvent("scroll",{detail:{scrollTop:R.instance.scrollTop}});this.onScroll(r)}onScroll(n){let r=n.detail.scrollTop+5,i=this.anchors,s=i.length-1,o=this.index;for(;o>-1&&i[o].position>r;)o-=1;for(;o-1&&this.anchors[this.index].link.classList.remove("focus"),this.index=o,this.index>-1&&this.anchors[this.index].link.classList.add("focus"))}};var ue=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var me=De(de());function ve(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let n=document.querySelector("#tsd-search input"),r=document.querySelector("#tsd-search .results");if(!n||!r)throw new Error("The input field or the result list wrapper was not found");let i=!1;r.addEventListener("mousedown",()=>i=!0),r.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),n.addEventListener("focus",()=>t.classList.add("has-focus")),n.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Fe(t,r,n,s)}function Fe(t,e,n,r){n.addEventListener("input",ue(()=>{He(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?pe(e,-1):s.key==="ArrowDown"?pe(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ae(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=me.Index.load(window.searchData.index))}function He(t,e,n,r){if(Ae(r,t),!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s=i?r.index.search(`*${i}*`):[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o${fe(u.parent,i)}.${l}`);let h=document.createElement("li");h.classList.value=u.classes??"";let m=document.createElement("a");m.href=r.base+u.url,m.innerHTML=l,h.append(m),e.appendChild(h)}}function pe(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function fe(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(ie(t.substring(s,o)),`${ie(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(ie(t.substring(s))),i.join("")}var Ne={"&":"&","<":"<",">":">","'":"'",'"':"""};function ie(t){return t.replace(/[&<>"'"]/g,e=>Ne[e])}var F="mousedown",ye="mousemove",j="mouseup",Z={x:0,y:0},ge=!1,se=!1,Be=!1,A=!1,xe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(xe?"is-mobile":"not-mobile");xe&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",ye="touchmove",j="touchend");document.addEventListener(F,t=>{se=!0,A=!1;let e=F=="touchstart"?t.targetTouches[0]:t;Z.y=e.pageY||0,Z.x=e.pageX||0});document.addEventListener(ye,t=>{if(se&&!A){let e=F=="touchstart"?t.targetTouches[0]:t,n=Z.x-(e.pageX||0),r=Z.y-(e.pageY||0);A=Math.sqrt(n*n+r*r)>10}});document.addEventListener(j,()=>{se=!1});document.addEventListener("click",t=>{ge&&(t.preventDefault(),t.stopImmediatePropagation(),ge=!1)});var K=class extends I{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(j,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(j,r=>this.onDocumentPointerUp(r))}setActive(n){if(this.active==n)return;this.active=n,document.documentElement.classList.toggle("has-"+this.className,n),this.el.classList.toggle("active",n);let r=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(r),setTimeout(()=>document.documentElement.classList.remove(r),500)}onPointerUp(n){A||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-menu, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!A&&this.active&&n.target.closest(".col-menu")){let r=n.target.closest("a");if(r){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),r.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var oe;try{oe=localStorage}catch{oe={getItem(){return null},setItem(){}}}var Q=oe;var Le=document.head.appendChild(document.createElement("style"));Le.dataset.for="filters";var ee=class extends I{constructor(n){super(n);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),Le.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.checked}setLocalStorage(n){Q.setItem(this.key,n.toString()),this.value=n,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(n=>{n.style.display="block";let r=Array.from(n.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);n.style.display=r?"none":"block"})}};var te=class extends I{constructor(n){super(n);this.calculateHeights(),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.textContent.replace(/\s+/g,"-").toLowerCase()}`,this.setLocalStorage(this.fromLocalStorage(),!0),this.summary.addEventListener("click",r=>this.toggleVisibility(r)),this.icon.style.transform=this.getIconRotation()}getIconRotation(n=this.el.open){return`rotate(${n?0:-90}deg)`}calculateHeights(){let n=this.el.open,{position:r,left:i}=this.el.style;this.el.style.position="fixed",this.el.style.left="-9999px",this.el.open=!0,this.expandedHeight=this.el.offsetHeight+"px",this.el.open=!1,this.collapsedHeight=this.el.offsetHeight+"px",this.el.open=n,this.el.style.height=n?this.expandedHeight:this.collapsedHeight,this.el.style.position=r,this.el.style.left=i}toggleVisibility(n){n.preventDefault(),this.el.style.overflow="hidden",this.el.open?this.collapse():this.expand()}expand(n=!0){this.el.open=!0,this.animate(this.collapsedHeight,this.expandedHeight,{opening:!0,duration:n?300:0})}collapse(n=!0){this.animate(this.expandedHeight,this.collapsedHeight,{opening:!1,duration:n?300:0})}animate(n,r,{opening:i,duration:s=300}){if(this.animation)return;let o={duration:s,easing:"ease"};this.animation=this.el.animate({height:[n,r]},o),this.icon.animate({transform:[this.icon.style.transform||this.getIconRotation(!i),this.getIconRotation(i)]},o).addEventListener("finish",()=>{this.icon.style.transform=this.getIconRotation(i)}),this.animation.addEventListener("finish",()=>this.animationEnd(i))}animationEnd(n){this.el.open=n,this.animation=void 0,this.el.style.height="auto",this.el.style.overflow="visible",this.setLocalStorage(n)}fromLocalStorage(){let n=Q.getItem(this.key);return n?n==="true":this.el.open}setLocalStorage(n,r=!1){this.fromLocalStorage()===n&&!r||(Q.setItem(this.key,n.toString()),this.el.open=n,this.handleValueChange(r))}handleValueChange(n=!1){this.fromLocalStorage()===this.el.open&&!n||(this.fromLocalStorage()?this.expand(!1):this.collapse(!1))}};function be(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,Ee(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),Ee(t.value)})}function Ee(t){document.documentElement.dataset.theme=t}ve();B(X,".menu-highlight");B(K,"a[data-toggle]");B(te,".tsd-index-accordion");B(ee,".tsd-filter-item input[type=checkbox]");var we=document.getElementById("theme");we&&be(we);var je=new Y;Object.defineProperty(window,"app",{value:je});})(); +/*! 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/lib/p2panda-js/assets/search.js b/lib/p2panda-js/assets/search.js new file mode 100644 index 000000000..c3b77b1a3 --- /dev/null +++ b/lib/p2panda-js/assets/search.js @@ -0,0 +1 @@ +window.searchData = JSON.parse("{\"kinds\":{\"64\":\"Function\",\"128\":\"Class\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"4194304\":\"Type alias\"},\"rows\":[{\"kind\":64,\"name\":\"initWebAssembly\",\"url\":\"functions/initWebAssembly.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"KeyPair\",\"url\":\"classes/KeyPair.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/KeyPair.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"kind\":2048,\"name\":\"publicKey\",\"url\":\"classes/KeyPair.html#publicKey\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"kind\":2048,\"name\":\"privateKey\",\"url\":\"classes/KeyPair.html#privateKey\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"kind\":2048,\"name\":\"sign\",\"url\":\"classes/KeyPair.html#sign\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"KeyPair\"},{\"kind\":64,\"name\":\"verifySignature\",\"url\":\"functions/verifySignature.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":128,\"name\":\"OperationFields\",\"url\":\"classes/OperationFields.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/OperationFields.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"OperationFields\"},{\"kind\":2048,\"name\":\"insert\",\"url\":\"classes/OperationFields.html#insert\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"OperationFields\"},{\"kind\":2048,\"name\":\"get\",\"url\":\"classes/OperationFields.html#get\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"OperationFields\"},{\"kind\":2048,\"name\":\"length\",\"url\":\"classes/OperationFields.html#length\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"OperationFields\"},{\"kind\":2048,\"name\":\"isEmpty\",\"url\":\"classes/OperationFields.html#isEmpty\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"OperationFields\"},{\"kind\":64,\"name\":\"encodeOperation\",\"url\":\"functions/encodeOperation.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":64,\"name\":\"decodeOperation\",\"url\":\"functions/decodeOperation.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":64,\"name\":\"generateHash\",\"url\":\"functions/generateHash.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":64,\"name\":\"hexToBytes\",\"url\":\"functions/hexToBytes.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":64,\"name\":\"bytesToHex\",\"url\":\"functions/bytesToHex.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":64,\"name\":\"signAndEncodeEntry\",\"url\":\"functions/signAndEncodeEntry.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":64,\"name\":\"decodeEntry\",\"url\":\"functions/decodeEntry.html\",\"classes\":\"tsd-kind-function\"},{\"kind\":4194304,\"name\":\"Entry\",\"url\":\"types/Entry.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/Entry.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"Entry\"},{\"kind\":1024,\"name\":\"publicKey\",\"url\":\"types/Entry.html#__type.publicKey\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":1024,\"name\":\"logId\",\"url\":\"types/Entry.html#__type.logId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":1024,\"name\":\"seqNum\",\"url\":\"types/Entry.html#__type.seqNum\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":1024,\"name\":\"skiplink\",\"url\":\"types/Entry.html#__type.skiplink\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":1024,\"name\":\"backlink\",\"url\":\"types/Entry.html#__type.backlink\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":1024,\"name\":\"payloadSize\",\"url\":\"types/Entry.html#__type.payloadSize\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":1024,\"name\":\"payloadHash\",\"url\":\"types/Entry.html#__type.payloadHash\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":1024,\"name\":\"signature\",\"url\":\"types/Entry.html#__type.signature\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"Entry.__type\"},{\"kind\":4194304,\"name\":\"EntryArgs\",\"url\":\"types/EntryArgs.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/EntryArgs.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"EntryArgs\"},{\"kind\":1024,\"name\":\"logId\",\"url\":\"types/EntryArgs.html#__type.logId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"EntryArgs.__type\"},{\"kind\":1024,\"name\":\"seqNum\",\"url\":\"types/EntryArgs.html#__type.seqNum\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"EntryArgs.__type\"},{\"kind\":1024,\"name\":\"skiplink\",\"url\":\"types/EntryArgs.html#__type.skiplink\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"EntryArgs.__type\"},{\"kind\":1024,\"name\":\"backlink\",\"url\":\"types/EntryArgs.html#__type.backlink\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"EntryArgs.__type\"},{\"kind\":1024,\"name\":\"operation\",\"url\":\"types/EntryArgs.html#__type.operation\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"EntryArgs.__type\"},{\"kind\":4194304,\"name\":\"OperationArgs\",\"url\":\"types/OperationArgs.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/OperationArgs.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"OperationArgs\"},{\"kind\":1024,\"name\":\"schemaId\",\"url\":\"types/OperationArgs.html#__type.schemaId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"OperationArgs.__type\"},{\"kind\":1024,\"name\":\"previous\",\"url\":\"types/OperationArgs.html#__type.previous\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"OperationArgs.__type\"},{\"kind\":1024,\"name\":\"action\",\"url\":\"types/OperationArgs.html#__type.action\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"OperationArgs.__type\"},{\"kind\":1024,\"name\":\"fields\",\"url\":\"types/OperationArgs.html#__type.fields\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"OperationArgs.__type\"},{\"kind\":4194304,\"name\":\"EasyValues\",\"url\":\"types/EasyValues.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/EasyValues.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"EasyValues\"},{\"kind\":4194304,\"name\":\"OperationAction\",\"url\":\"types/OperationAction.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"OperationMeta\",\"url\":\"types/OperationMeta.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"types/OperationMeta.html#__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-type-alias\",\"parent\":\"OperationMeta\"},{\"kind\":1024,\"name\":\"schemaId\",\"url\":\"types/OperationMeta.html#__type.schemaId\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"OperationMeta.__type\"},{\"kind\":1024,\"name\":\"previous\",\"url\":\"types/OperationMeta.html#__type.previous\",\"classes\":\"tsd-kind-property tsd-parent-kind-type-literal\",\"parent\":\"OperationMeta.__type\"},{\"kind\":4194304,\"name\":\"OperationValue\",\"url\":\"types/OperationValue.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"PlainOperation\",\"url\":\"types/PlainOperation.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"FieldType\",\"url\":\"types/FieldType.html\",\"classes\":\"tsd-kind-type-alias\"},{\"kind\":4194304,\"name\":\"OperationValueArg\",\"url\":\"types/OperationValueArg.html\",\"classes\":\"tsd-kind-type-alias\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,36.019]],[\"comment/0\",[]],[\"name/1\",[1,36.019]],[\"comment/1\",[]],[\"name/2\",[2,30.91]],[\"comment/2\",[]],[\"name/3\",[3,30.91]],[\"comment/3\",[]],[\"name/4\",[4,36.019]],[\"comment/4\",[]],[\"name/5\",[5,36.019]],[\"comment/5\",[]],[\"name/6\",[6,36.019]],[\"comment/6\",[]],[\"name/7\",[7,36.019]],[\"comment/7\",[]],[\"name/8\",[2,30.91]],[\"comment/8\",[]],[\"name/9\",[8,36.019]],[\"comment/9\",[]],[\"name/10\",[9,36.019]],[\"comment/10\",[]],[\"name/11\",[10,36.019]],[\"comment/11\",[]],[\"name/12\",[11,36.019]],[\"comment/12\",[]],[\"name/13\",[12,36.019]],[\"comment/13\",[]],[\"name/14\",[13,36.019]],[\"comment/14\",[]],[\"name/15\",[14,36.019]],[\"comment/15\",[]],[\"name/16\",[15,36.019]],[\"comment/16\",[]],[\"name/17\",[16,36.019]],[\"comment/17\",[]],[\"name/18\",[17,36.019]],[\"comment/18\",[]],[\"name/19\",[18,36.019]],[\"comment/19\",[]],[\"name/20\",[19,36.019]],[\"comment/20\",[]],[\"name/21\",[20,23.026]],[\"comment/21\",[]],[\"name/22\",[3,30.91]],[\"comment/22\",[]],[\"name/23\",[21,30.91]],[\"comment/23\",[]],[\"name/24\",[22,30.91]],[\"comment/24\",[]],[\"name/25\",[23,30.91]],[\"comment/25\",[]],[\"name/26\",[24,30.91]],[\"comment/26\",[]],[\"name/27\",[25,36.019]],[\"comment/27\",[]],[\"name/28\",[26,36.019]],[\"comment/28\",[]],[\"name/29\",[27,36.019]],[\"comment/29\",[]],[\"name/30\",[28,36.019]],[\"comment/30\",[]],[\"name/31\",[20,23.026]],[\"comment/31\",[]],[\"name/32\",[21,30.91]],[\"comment/32\",[]],[\"name/33\",[22,30.91]],[\"comment/33\",[]],[\"name/34\",[23,30.91]],[\"comment/34\",[]],[\"name/35\",[24,30.91]],[\"comment/35\",[]],[\"name/36\",[29,36.019]],[\"comment/36\",[]],[\"name/37\",[30,36.019]],[\"comment/37\",[]],[\"name/38\",[20,23.026]],[\"comment/38\",[]],[\"name/39\",[31,30.91]],[\"comment/39\",[]],[\"name/40\",[32,30.91]],[\"comment/40\",[]],[\"name/41\",[33,36.019]],[\"comment/41\",[]],[\"name/42\",[34,36.019]],[\"comment/42\",[]],[\"name/43\",[35,36.019]],[\"comment/43\",[]],[\"name/44\",[20,23.026]],[\"comment/44\",[]],[\"name/45\",[36,36.019]],[\"comment/45\",[]],[\"name/46\",[37,36.019]],[\"comment/46\",[]],[\"name/47\",[20,23.026]],[\"comment/47\",[]],[\"name/48\",[31,30.91]],[\"comment/48\",[]],[\"name/49\",[32,30.91]],[\"comment/49\",[]],[\"name/50\",[38,36.019]],[\"comment/50\",[]],[\"name/51\",[39,36.019]],[\"comment/51\",[]],[\"name/52\",[40,36.019]],[\"comment/52\",[]],[\"name/53\",[41,36.019]],[\"comment/53\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":20,\"name\":{\"21\":{},\"31\":{},\"38\":{},\"44\":{},\"47\":{}},\"comment\":{}}],[\"action\",{\"_index\":33,\"name\":{\"41\":{}},\"comment\":{}}],[\"backlink\",{\"_index\":24,\"name\":{\"26\":{},\"35\":{}},\"comment\":{}}],[\"bytestohex\",{\"_index\":16,\"name\":{\"17\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":2,\"name\":{\"2\":{},\"8\":{}},\"comment\":{}}],[\"decodeentry\",{\"_index\":18,\"name\":{\"19\":{}},\"comment\":{}}],[\"decodeoperation\",{\"_index\":13,\"name\":{\"14\":{}},\"comment\":{}}],[\"easyvalues\",{\"_index\":35,\"name\":{\"43\":{}},\"comment\":{}}],[\"encodeoperation\",{\"_index\":12,\"name\":{\"13\":{}},\"comment\":{}}],[\"entry\",{\"_index\":19,\"name\":{\"20\":{}},\"comment\":{}}],[\"entryargs\",{\"_index\":28,\"name\":{\"30\":{}},\"comment\":{}}],[\"fields\",{\"_index\":34,\"name\":{\"42\":{}},\"comment\":{}}],[\"fieldtype\",{\"_index\":40,\"name\":{\"52\":{}},\"comment\":{}}],[\"generatehash\",{\"_index\":14,\"name\":{\"15\":{}},\"comment\":{}}],[\"get\",{\"_index\":9,\"name\":{\"10\":{}},\"comment\":{}}],[\"hextobytes\",{\"_index\":15,\"name\":{\"16\":{}},\"comment\":{}}],[\"initwebassembly\",{\"_index\":0,\"name\":{\"0\":{}},\"comment\":{}}],[\"insert\",{\"_index\":8,\"name\":{\"9\":{}},\"comment\":{}}],[\"isempty\",{\"_index\":11,\"name\":{\"12\":{}},\"comment\":{}}],[\"keypair\",{\"_index\":1,\"name\":{\"1\":{}},\"comment\":{}}],[\"length\",{\"_index\":10,\"name\":{\"11\":{}},\"comment\":{}}],[\"logid\",{\"_index\":21,\"name\":{\"23\":{},\"32\":{}},\"comment\":{}}],[\"operation\",{\"_index\":29,\"name\":{\"36\":{}},\"comment\":{}}],[\"operationaction\",{\"_index\":36,\"name\":{\"45\":{}},\"comment\":{}}],[\"operationargs\",{\"_index\":30,\"name\":{\"37\":{}},\"comment\":{}}],[\"operationfields\",{\"_index\":7,\"name\":{\"7\":{}},\"comment\":{}}],[\"operationmeta\",{\"_index\":37,\"name\":{\"46\":{}},\"comment\":{}}],[\"operationvalue\",{\"_index\":38,\"name\":{\"50\":{}},\"comment\":{}}],[\"operationvaluearg\",{\"_index\":41,\"name\":{\"53\":{}},\"comment\":{}}],[\"payloadhash\",{\"_index\":26,\"name\":{\"28\":{}},\"comment\":{}}],[\"payloadsize\",{\"_index\":25,\"name\":{\"27\":{}},\"comment\":{}}],[\"plainoperation\",{\"_index\":39,\"name\":{\"51\":{}},\"comment\":{}}],[\"previous\",{\"_index\":32,\"name\":{\"40\":{},\"49\":{}},\"comment\":{}}],[\"privatekey\",{\"_index\":4,\"name\":{\"4\":{}},\"comment\":{}}],[\"publickey\",{\"_index\":3,\"name\":{\"3\":{},\"22\":{}},\"comment\":{}}],[\"schemaid\",{\"_index\":31,\"name\":{\"39\":{},\"48\":{}},\"comment\":{}}],[\"seqnum\",{\"_index\":22,\"name\":{\"24\":{},\"33\":{}},\"comment\":{}}],[\"sign\",{\"_index\":5,\"name\":{\"5\":{}},\"comment\":{}}],[\"signandencodeentry\",{\"_index\":17,\"name\":{\"18\":{}},\"comment\":{}}],[\"signature\",{\"_index\":27,\"name\":{\"29\":{}},\"comment\":{}}],[\"skiplink\",{\"_index\":23,\"name\":{\"25\":{},\"34\":{}},\"comment\":{}}],[\"verifysignature\",{\"_index\":6,\"name\":{\"6\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/lib/p2panda-js/assets/style.css b/lib/p2panda-js/assets/style.css new file mode 100644 index 000000000..2d02570d0 --- /dev/null +++ b/lib/p2panda-js/assets/style.css @@ -0,0 +1,1280 @@ +: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-text: #222; + --light-color-text-aside: #707070; + --light-color-link: #4da6ff; + --light-color-ts: #db1373; + --light-color-ts-interface: #139d2c; + --light-color-ts-enum: #9c891a; + --light-color-ts-class: #2484e5; + --light-color-ts-function: #572be7; + --light-color-ts-namespace: #b111c9; + --light-color-ts-private: #707070; + --light-color-ts-variable: #4d68ff; + --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-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + --dark-color-ts: #ff6492; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-class: #61b0ff; + --dark-color-ts-function: #9772ff; + --dark-color-ts-namespace: #e14dff; + --dark-color-ts-private: #e2e2e2; + --dark-color-ts-variable: #4d68ff; + --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-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-ts: var(--light-color-ts); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-class: var(--light-color-ts-class); + --color-ts-function: var(--light-color-ts-function); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-private: var(--light-color-ts-private); + --color-ts-variable: var(--light-color-ts-variable); + --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-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-ts: var(--dark-color-ts); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-private: var(--dark-color-ts-private); + --color-ts-variable: var(--dark-color-ts-variable); + --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-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + --color-ts: var(--light-color-ts); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-class: var(--light-color-ts-class); + --color-ts-function: var(--light-color-ts-function); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-private: var(--light-color-ts-private); + --color-ts-variable: var(--light-color-ts-variable); + --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-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + --color-ts: var(--dark-color-ts); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-private: var(--dark-color-ts-private); + --color-ts-variable: var(--dark-color-ts-variable); + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1600px; + padding: 0 2rem; +} + +@media (min-width: 640px) { + .container { + padding: 0 4rem; + } +} +@media (min-width: 1200px) { + .container { + padding: 0 8rem; + } +} +@media (min-width: 1600px) { + .container { + padding: 0 12rem; + } +} + +/* Footer */ +.tsd-generator { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} + +.tsd-generator > p { + margin-top: 0; + margin-bottom: 0; + padding: 0 1rem; +} + +.container-main { + display: flex; + justify-content: space-between; + position: relative; + margin: 0 auto; +} + +.col-4, +.col-8 { + box-sizing: border-box; + float: left; + padding: 2rem 1rem; +} + +.col-4 { + flex: 0 0 25%; +} +.col-8 { + flex: 1 0; + flex-wrap: wrap; + padding-left: 0; +} + +@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 shift-to-left { + from { + transform: translate(0, 0); + } + to { + transform: translate(-25%, 0); + } +} +@keyframes unshift-to-left { + from { + transform: translate(-25%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: "Segoe UI", sans-serif; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + padding: 10px; + border: 0.1em solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} + +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 h4, +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; + margin: 0; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} + +@media (max-width: 1024px) { + html .col-content { + float: none; + max-width: 100%; + width: 100%; + padding-top: 3rem; + } + html .col-menu { + 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; + max-width: 25rem; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-menu > *: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 :is(header, footer, .col-content) { + animation: shift-to-left 0.4s; + } + + .to-has-menu .col-menu { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu :is(header, footer, .col-content) { + animation: unshift-to-left 0.4s; + } + + .from-has-menu .col-menu { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu :is(header, footer, .col-content) { + transform: translate(-25%, 0); + } + .has-menu .col-menu { + visibility: visible; + transform: translate(0, 0); + display: grid; + align-items: center; + grid-template-rows: auto 1fr; + grid-gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-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-index-panel a, +.tsd-index-panel a.tsd-parent-kind-module { + color: var(--color-ts); +} +.tsd-index-panel a.tsd-parent-kind-interface { + color: var(--color-ts-interface); +} +.tsd-index-panel a.tsd-parent-kind-enum { + color: var(--color-ts-enum); +} +.tsd-index-panel a.tsd-parent-kind-class { + color: var(--color-ts-class); +} +.tsd-index-panel a.tsd-kind-module { + color: var(--color-ts-namespace); +} +.tsd-index-panel a.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-index-panel a.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-index-panel a.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-index-panel a.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-index-panel a.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-index-panel a.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-index-panel a.tsd-is-private { + color: var(--color-ts-private); +} + +.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: absolute; + 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-member [data-tsd-kind] { + color: var(--color-ts); +} +.tsd-member [data-tsd-kind="Interface"] { + color: var(--color-ts-interface); +} +.tsd-member [data-tsd-kind="Enum"] { + color: var(--color-ts-enum); +} +.tsd-member [data-tsd-kind="Class"] { + color: var(--color-ts-class); +} +.tsd-member [data-tsd-kind="Private"] { + color: var(--color-ts-private); +} + +.tsd-navigation a { + display: block; + margin: 0.4rem 0; + border-left: 2px solid transparent; + color: var(--color-text); + text-decoration: none; + transition: border-left-color 0.1s; +} +.tsd-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul { + margin: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li { + padding: 0; +} + +.tsd-navigation.primary .tsd-accordion-details > ul { + margin-top: 0.75rem; +} +.tsd-navigation.primary a { + padding: 0.75rem 0.5rem; + margin: 0; +} +.tsd-navigation.primary ul li a { + margin-left: 0.5rem; +} +.tsd-navigation.primary ul li li a { + margin-left: 1.5rem; +} +.tsd-navigation.primary ul li li li a { + margin-left: 2.5rem; +} +.tsd-navigation.primary ul li li li li a { + margin-left: 3.5rem; +} +.tsd-navigation.primary ul li li li li li a { + margin-left: 4.5rem; +} +.tsd-navigation.primary ul li li li li li li a { + margin-left: 5.5rem; +} +.tsd-navigation.primary li.current > a { + border-left: 0.15rem var(--color-text) solid; +} +.tsd-navigation.primary li.selected > a { + font-weight: bold; + border-left: 0.2rem var(--color-text) solid; +} +.tsd-navigation.primary ul li a:hover { + border-left: 0.2rem var(--color-text-aside) solid; +} +.tsd-navigation.primary li.globals + li > span, +.tsd-navigation.primary li.globals + li > a { + padding-top: 20px; +} + +.tsd-navigation.secondary.tsd-navigation--toolbar-hide { + max-height: calc(100vh - 1rem); + top: 0.5rem; +} +.tsd-navigation.secondary > ul { + display: inline; + padding-right: 0.5rem; + transition: opacity 0.2s; +} +.tsd-navigation.secondary ul li a { + padding-left: 0; +} +.tsd-navigation.secondary ul li li a { + padding-left: 1.1rem; +} +.tsd-navigation.secondary ul li li li a { + padding-left: 2.2rem; +} +.tsd-navigation.secondary ul li li li li a { + padding-left: 3.3rem; +} +.tsd-navigation.secondary ul li li li li li a { + padding-left: 4.4rem; +} +.tsd-navigation.secondary ul li li li li li li a { + padding-left: 5.5rem; +} + +#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 { + margin: 0.25rem 0; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; +} +.tsd-accordion-summary > h1, +.tsd-accordion-summary > h2, +.tsd-accordion-summary > h3, +.tsd-accordion-summary > h4, +.tsd-accordion-summary > h5 { + display: inline-flex; + align-items: center; + vertical-align: middle; + margin-bottom: 0; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; +} +.tsd-accordion-summary { + display: block; + cursor: pointer; +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; +} +.tsd-index-accordion .tsd-accordion-summary svg { + margin-right: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +@media (min-width: 1024px) { + .col-content { + margin: 2rem auto; + } + + .menu-sticky-wrap { + position: sticky; + height: calc(100vh - 2rem); + top: 4rem; + right: 0; + padding: 0 1.5rem; + padding-top: 1rem; + margin-top: 3rem; + transition: 0.3s ease-in-out; + transition-property: top, padding-top, padding, height; + overflow-y: auto; + } + .col-menu { + border-left: 1px solid var(--color-accent); + } + .col-menu--hide { + top: 1rem; + } + .col-menu .tsd-navigation:not(:last-child) { + padding-bottom: 1.75rem; + } +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + padding: 0 10px; + background-color: var(--color-background); +} +#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, +#tsd-search .results li:hover { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: block; +} +#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-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: fixed; + 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-page-toolbar--hide { + transform: translateY(-100%); +} + +.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; +} +@media (max-width: 1024px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } +} +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; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +* { + 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); +} diff --git a/lib/p2panda-js/classes/KeyPair.html b/lib/p2panda-js/classes/KeyPair.html new file mode 100644 index 000000000..76bcff5a5 --- /dev/null +++ b/lib/p2panda-js/classes/KeyPair.html @@ -0,0 +1,156 @@ +KeyPair | p2panda-js
+
+ +
+
+
+
+ +

Class KeyPair

+
+

Ed25519 key pair to sign Bamboo entries with.

+ +

Example

import { KeyPair } from 'p2panda-js';

const keyPair = new KeyPair();
console.log(keyPair.publicKey()); +
+
+
+

Hierarchy

+
    +
  • KeyPair
+
+
+
+ +
+
+

Constructors

+
+
+

Methods

+
+
+

Constructors

+
+ +
    + +
  • +

    Creates a new instance of KeyPair.

    +

    When no privateKey value is passed, the constructor generates a new +Ed25519 key pair using the systems random number generator (CSPRNG) as a +seed.

    +

    Warning: Depending on the context this does not guarantee the random +number generator to be cryptographically secure (eg. broken / hijacked +browser or system implementations), so make sure to only run this in +trusted environments.

    + +

    Returns

    KeyPair instance

    + +

    Example

    import { KeyPair } from 'p2panda-js';

    const keyPair = new KeyPair('1f9e81007da0c007314a151be11be392de4cdc76888fbc5a8c62aa03c6730c6a'); +
    +
    +
    +

    Parameters

    +
      +
    • +
      Optional privateKey: string
      +

      Hexadecimal encoded private key. Warning: +Absolutely no validation is done on the key. If you give this function +bytes which do not represent a valid point, or which do not represent +corresponding parts of the key, then your KeyPair will be broken and it +will be your fault.

      +
    +

    Returns KeyPair

+
+

Methods

+
+ +
    + +
  • +

    Returns public key as a hexadecimal string.

    + +

    Returns

    Hexadecimal encoded public key

    +
    +

    Returns string

+
+ +
    + +
  • +

    Returns private key as a hexadecimal string.

    + +

    Returns

    Hexadecimal encoded private key.

    +
    +

    Returns string

+
+ +
    + +
  • +

    Signs any data using this key pair and returns signature.

    + +

    Returns

    Hexadecimal encoded signature

    +
    +
    +

    Parameters

    +
      +
    • +
      bytes: string
      +

      Any byte sequence encoded as a hexadecimal string

      +
    +

    Returns string

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/classes/OperationFields.html b/lib/p2panda-js/classes/OperationFields.html new file mode 100644 index 000000000..652ceaeb2 --- /dev/null +++ b/lib/p2panda-js/classes/OperationFields.html @@ -0,0 +1,177 @@ +OperationFields | p2panda-js
+
+ +
+
+
+
+ +

Class OperationFields

+
+

Operation fields containing application data.

+ +

Example

import { OperationFields, encodeOperation } from 'p2panda-js';

const fields = new OperationFields({
name: 'Panda Party!',
});

fields.insert(
'venue',
'relation',
'002078619bd4beff4bec4d4ccf75a7a5c25bf5d3c37fbd051a45debf1f17a1f75230'
);

const operation = encodeOperation({
schemaId: 'events_00203ebb383f195f2923d51ac9929a8dbf7fba65dcddff874dfbe5ef131362696636',
fields,
}); +
+
+
+

Hierarchy

+
    +
  • OperationFields
+
+
+
+ +
+
+

Constructors

+
+
+

Methods

+
+
+

Constructors

+
+ +
    + +
  • +

    Creates a new instance of OperationFields.

    + +

    Returns

    OperationFields instance

    + +

    Example

    import { OperationFields } from 'p2panda-js';

    const fields = new OperationFields({
    hasDate: true,
    latestYear: 2002,
    }); +
    +
    +
    +

    Parameters

    +
      +
    • +
      Optional fields: EasyValues
      +

      "Easy field values" to populate the +operation with basic data types. This can be used to easily create +operation fields, even when there is no schema at hand. Please note that +only unambigious field types like "str", "int", "float" and "bool" can be +used here

      +
    +

    Returns OperationFields

+
+

Methods

+
+ +
    + +
  • +

    Inserts a new field.

    + +

    Example

    import { OperationFields } from 'p2panda-js';

    const fields = new OperationFields();
    fields.insert('venue', 'relation', '002078619bd4beff4bec4d4ccf75a7a5c25bf5d3c37fbd051a45debf1f17a1f75230'); +
    +
    +
    +

    Parameters

    +
      +
    • +
      fieldName: string
      +

      Name of the field, needs to match schema

      +
    • +
    • +
      fieldType: FieldType
      +

      Operation field type

      +
    • +
    • +
      value: OperationValueArg
      +

      Actual user data

      +
    +

    Returns void

+
+ +
+
+ +
+
+ +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/bytesToHex.html b/lib/p2panda-js/functions/bytesToHex.html new file mode 100644 index 000000000..0fd50561f --- /dev/null +++ b/lib/p2panda-js/functions/bytesToHex.html @@ -0,0 +1,85 @@ +bytesToHex | p2panda-js
+
+ +
+
+
+
+ +

Function bytesToHex

+
+
    + +
  • +

    Converts byte sequence to hexadecimal string.

    + +

    Returns

    Hexadecimal encoded string

    + +

    Example

    import { bytesToHex } from 'p2panda-js';

    const hex = bytesToHex(new Uint8Array([1, 2, 3])); +
    +
    +
    +

    Parameters

    +
      +
    • +
      bytes: Uint8Array
      +

      Any byte sequence

      +
    +

    Returns string

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/decodeEntry.html b/lib/p2panda-js/functions/decodeEntry.html new file mode 100644 index 000000000..060f4f120 --- /dev/null +++ b/lib/p2panda-js/functions/decodeEntry.html @@ -0,0 +1,85 @@ +decodeEntry | p2panda-js
+
+ +
+
+
+
+ +

Function decodeEntry

+
+
    + +
  • +

    Decodes an signed Bamboo entry.

    + +

    Returns

    Bamboo Entry

    + +

    Example

    import { decodeEntry } from 'p2panda-js';

    const encodedEntry =
    '00' +
    'b443811e711fdbfcbeccaf655e0ebe7a1c83490cc28d1516c5920178bef416c5' +
    '0f' +
    '08' +
    '002034441bd15ac6c01ba5bb9f22b9a6d51d56e280cb3abcdb65216d45ddff74ae4b' +
    '0020d5c17b82ad475e2c9ec2d77b08737f7db967cd5f7d481bb4e15443a7d03b5327' +
    '03' +
    '00203ec19c37eaa225b9b811d0c30aa3f6994b05c78f630249d574c8824f191001d6' +
    '36ea3d6f735e388e4c257a3689030a28f60958c8bdb29e4039ed0bb0a3ede4c0' +
    'd3aed2095b1eb9a37ef065f20a2df90af0583da6081339a2689bc734dff0da04';

    const result = decodeEntry(encodedEntry);
    console.log(result.publicKey); // "b443811e..." +
    +
    +
    +

    Parameters

    +
      +
    • +
      encodedEntry: string
      +

      Hexadecimal string of an encoded entry

      +
    +

    Returns Entry

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/decodeOperation.html b/lib/p2panda-js/functions/decodeOperation.html new file mode 100644 index 000000000..db7893ac3 --- /dev/null +++ b/lib/p2panda-js/functions/decodeOperation.html @@ -0,0 +1,86 @@ +decodeOperation | p2panda-js
+
+ +
+
+
+
+ +

Function decodeOperation

+
+
    + +
  • +

    Decodes an p2panda operation.

    + +

    Returns

    Plain operation which has not been checked against +a schema yet

    + +

    Example

    import { decodeOperation } from 'p2panda-js';

    const encodedOperation =
    '840100781a736368656d615f6669656c645f646566696e697469' +
    '6f6e5f7631a2646e616d656576656e7565647479706563737472';

    const result = decodeOperation(encodedOperation);
    console.log(result.action); // "create" +
    +
    +
    +

    Parameters

    +
      +
    • +
      encodedOperation: string
      +

      Hexadecimal string of an encoded operation

      +
    +

    Returns PlainOperation

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/encodeOperation.html b/lib/p2panda-js/functions/encodeOperation.html new file mode 100644 index 000000000..fdcec78f4 --- /dev/null +++ b/lib/p2panda-js/functions/encodeOperation.html @@ -0,0 +1,85 @@ +encodeOperation | p2panda-js
+
+ +
+
+
+
+ +

Function encodeOperation

+
+
    + +
  • +

    Creates and encodes an p2panda operation.

    + +

    Returns

    Hexadecimal encoded operation

    + +

    Example

    import { encodeOperation } from 'p2panda-js';

    const result = encodeOperation({
    action: 'update',
    schemaId: 'venues_0020c9db3376fa753b041e199ebfe1c0e6dfb50ca7924c7eedfdd35f141ac8d1207c',
    previous: '00205f00bd1174909d6f7060800f3b9969e433dd564f9b75772d202f6ea48e5415e0',
    fields: {
    name: 'Untergruen',
    },
    }); +
    +
    +
    +

    Parameters

    +
      +
    • +
      operation: OperationArgs
      +

      Arguments to create the operation

      +
    +

    Returns string

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/generateHash.html b/lib/p2panda-js/functions/generateHash.html new file mode 100644 index 000000000..adb14e3d5 --- /dev/null +++ b/lib/p2panda-js/functions/generateHash.html @@ -0,0 +1,85 @@ +generateHash | p2panda-js
+
+ +
+
+
+
+ +

Function generateHash

+
+
    + +
  • +

    Generates a hash (BLAKE3 wrapped in YASMF container) from any value.

    + +

    Returns

    Generated hash, encoded as hexadecimal string

    + +

    Example

    import { generateHash } from 'p2panda-js';

    const result = generateHash('aabbcc');
    console.log(result); // "0020d5f1c831db4153ae65d0bd3edf6b88eb8f5c9985e35d5192e371f5b469eeb4c4" +
    +
    +
    +

    Parameters

    +
      +
    • +
      value: string
      +

      Data encoded as hexadecimal string

      +
    +

    Returns string

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/hexToBytes.html b/lib/p2panda-js/functions/hexToBytes.html new file mode 100644 index 000000000..52e3fe49b --- /dev/null +++ b/lib/p2panda-js/functions/hexToBytes.html @@ -0,0 +1,85 @@ +hexToBytes | p2panda-js
+
+ +
+
+
+
+ +

Function hexToBytes

+
+
    + +
  • +

    Converts any hexadecimal string to byte sequence.

    + +

    Returns

    Byte sequence

    + +

    Example

    import { hexToBytes } from 'p2panda-js';

    const bytes = hexToBytes('112233'); +
    +
    +
    +

    Parameters

    +
      +
    • +
      hex: string
      +

      Hexadecimal encoded string

      +
    +

    Returns Uint8Array

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/initWebAssembly.html b/lib/p2panda-js/functions/initWebAssembly.html new file mode 100644 index 000000000..92ca554a2 --- /dev/null +++ b/lib/p2panda-js/functions/initWebAssembly.html @@ -0,0 +1,94 @@ +initWebAssembly | p2panda-js
+
+ +
+
+
+
+ +

Function initWebAssembly

+
+
    + +
  • +

    Depending on which p2panda-js build you chose to import into your project, +the WebAssembly code needs to be initialised in different ways:

    +
      +
    1. NodeJS: No initialisation needed. You can optionally activate debug tools +for better error messages in WebAssembly code by calling initWebAssembly.

      +
    2. +
    3. UMD, CJS and ESM builds with inlined WebAssembly code running in the +browser: WebAssembly needs to be decoded and initialised by calling +initWebAssembly once before all other methods. This will also implicitly +activate debug tools for better error messages in WebAssembly code.

      +
    4. +
    5. CJS and ESM "slim" builds running in browser: WebAssembly needs to be +initialised by providing external "p2panda.wasm" file path as an input +when calling initWebAssembly methods. This will also implicitly activate +debug tools for better error messages in WebAssembly code.

      +
    6. +
    +
    +
    +

    Parameters

    +
      +
    • +
      Optional input: URL | Module
    +

    Returns Promise<void>

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/signAndEncodeEntry.html b/lib/p2panda-js/functions/signAndEncodeEntry.html new file mode 100644 index 000000000..fd3e92acc --- /dev/null +++ b/lib/p2panda-js/functions/signAndEncodeEntry.html @@ -0,0 +1,89 @@ +signAndEncodeEntry | p2panda-js
+
+ +
+
+
+
+ +

Function signAndEncodeEntry

+
+
    + +
  • +

    Signs and encodes an Bamboo entry for the given payload and key pair.

    + +

    Returns

    Hexadecimal encoded entry

    + +

    Example

    import { KeyPair, signAndEncodeEntry, encodeOperation } from 'p2panda-js';

    const keyPair = new KeyPair();

    const operation = encodeOperation({
    schemaId: 'venues_0020c9db3376fa753b041e199ebfe1c0e6dfb50ca7924c7eedfdd35f141ac8d1207c',
    fields: {
    name: 'Klangkeller',
    },
    });

    const entry = signAndEncodeEntry({
    logId: 2,
    operation,
    }, keyPair); +
    +
    +
    +

    Parameters

    +
      +
    • +
      entry: EntryArgs
      +

      Arguments to create the entry

      +
    • +
    • +
      keyPair: KeyPair
      +

      Key pair to sign the entry with

      +
    +

    Returns string

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/functions/verifySignature.html b/lib/p2panda-js/functions/verifySignature.html new file mode 100644 index 000000000..492305747 --- /dev/null +++ b/lib/p2panda-js/functions/verifySignature.html @@ -0,0 +1,93 @@ +verifySignature | p2panda-js
+
+ +
+
+
+
+ +

Function verifySignature

+
+
    + +
  • +

    Returns true if signed data could be verified against a public key.

    + +

    Returns

    True if claimed signature is correct

    + +

    Example

    import { KeyPair, verifySignature } from 'p2panda-js';

    const keyPair = new KeyPair();
    const signature = keyPair.sign('aabbcc');
    verifySignature(keyPair.publicKey(), 'aabbcc', signature); // true +
    +
    +
    +

    Parameters

    +
      +
    • +
      publicKey: string
      +

      Ed25519 public key string

      +
    • +
    • +
      bytes: string
      +

      Any byte sequence encoded as a hexadecimal string

      +
    • +
    • +
      signature: string
      +

      Ed25519 signature string

      +
    +

    Returns boolean

+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/index.html b/lib/p2panda-js/index.html new file mode 100644 index 000000000..15e8d0921 --- /dev/null +++ b/lib/p2panda-js/index.html @@ -0,0 +1,228 @@ +p2panda-js
+
+ +
+
+
+
+

p2panda-js

+

p2panda-js

+ +
+ All the things a panda needs (for JavaScript) +
+ +
+ +
+ + + CI Status + + + + Crates.io version + + + + NPM version + +
+ + + +
+ +

This library provides all tools required to write a client, node or even your +own protocol implementation for the p2panda network. It is shipped both as +a Rust crate p2panda-rs with WebAssembly bindings and a NPM package +p2panda-js with TypeScript definitions running in NodeJS or any modern web +browser.

+
+

In the future p2panda-js will have full feature parity with p2panda-rs to +be able to write high-level client frameworks or node implementations in +TypeScript. Until now p2panda-js provides basic methods to create, sign and +encode data.

+
+
+

The core p2panda specification is fully functional but still under review +so please be prepared for breaking API changes until we reach v1.0. +Currently no p2panda implementation has recieved a security audit.

+
+ + +

Installation

+
+

To install p2panda-js run:

+
npm i p2panda-js
+
+ + +

Example

+
+
import { KeyPair, signAndEncodeEntry, encodeOperation } from 'p2panda-js';

// Id of the schema which describes the data we want to publish. This should
// already be known to the node we are publishing to.
const SCHEMA_ID =
'profile_0020c65567ae37efea293e34a9c7d13f8f2bf23dbdc3b5c7b9ab46293111c48fc78b';

// Generate new Ed25519 key pair.
const keyPair = new KeyPair();

// Add field data to "create" operation and encode it.
const operation = encodeOperation({
schemaId: SCHEMA_ID,
fields: {
username: 'Panda',
},
});

// Create Bamboo entry (append-only log data type) with operation as payload
// and encode it.
const entry = signAndEncodeEntry({ operation }, keyPair);

console.log(entry, operation); +
+ + +

Usage

+
+

p2panda-js runs both in NodeJS and web browsers and comes as a ES, CommonJS +or UMD module. It can easily be integrated into Webpack, Rollup or other tools.

+

Since p2panda-js contains WebAssembly code, it is necessary to initialise it +before using the methods in the Browser. This initialisation step is not +required in NodeJS contexts.

+

To make this step a little bit easier p2panda-js inlines the WebAssembly code +as a base64 string which gets decoded automatically during initialisation. For +manual initialisation the package also comes with "slim" versions where you +need to provide a path to the ".wasm" file yourself, you can read about this +approach further below.

+ + +

NodeJS

+
+
import { KeyPair } from 'p2panda-js';
const keyPair = new KeyPair();
console.log(keyPair.publicKey()); +
+ + +

Browser

+
+

To quickly get started you can run p2panda-js in any modern browser as an ES module like that:

+
<script type="module">
import { initWebAssembly, KeyPair } from 'https://cdn.jsdelivr.net/npm/p2panda-js@0.8.1/lib/esm/index.min.js';

// This only needs to be done once before using all `p2panda-js` methods.
initWebAssembly().then(() => {
const keyPair = new KeyPair();
console.log(keyPair.publicKey());
});
</script> +
+

Or use the "slim" version if you want to provide the ".wasm" file manually:

+
<script type="module">
import { initWebAssembly, KeyPair } from 'https://cdn.jsdelivr.net/npm/p2panda-js@0.8.1/lib/esm-slim/index.min.js';

// Pass external .wasm file manually for smaller file sizes
const wasmFile = 'https://cdn.jsdelivr.net/npm/p2panda-js@0.8.1/lib/p2panda.wasm';
initWebAssembly(wasmFile).then(() => {
const keyPair = new KeyPair();
console.log(keyPair.publicKey());
});
</script> +
+ + +

Bundlers

+
+
import { initWebAssembly, KeyPair } from 'p2panda-js';

// This only needs to be done once before using all `p2panda-js` methods.
await initWebAssembly();

const keyPair = new KeyPair();
console.log(keyPair.publicKey()); +
+ + +

Manually load .wasm

+
+

Running p2panda-js in the browser automatically inlines the WebAssembly +inside the JavaScript file, encoded as a base64 string. While this works for +most developers, it also doubles the size of the imported file. To avoid larger +payloads and decoding times you can load the .wasm file manually by using a +"slim" version. For this you need to initialise the module by passing the path +to the file into initWebAssembly:

+
// Import from `slim` module to manually initialise WebAssembly code
import { initWebAssembly, KeyPair } from 'p2panda-js/slim';
import wasm from 'p2panda-js/p2panda.wasm';

// When running p2panda in the browser, this method needs to run once
// before using all other `p2panda-js` methods
await initWebAssembly(wasm);

const keyPair = new KeyPair();
console.log(keyPair.publicKey()); +
+ + +

Development

+
+ + +

Dependencies

+
+ +

In order to develop with the current code base p2panda-js needs to be +compiled from the p2panda-rs code using wasm-bindgen. This requires a +working Rust environment to be setup and wasm-bindgen to be installed. +wasm-opt is only required to optimize the WebAssembly builds for production +via npm run build. You can then run the following commands, the compilation +occurs during the testing and build phases:

+
# Install dependencies
npm install

# Check code formatting
npm run lint

# Run tests, requires `wasm-bindgen`
npm test

# Compile wasm and bundle js package, requires `wasm-bindgen` and `wasm-opt`
npm run build +
+ + +

Documentation

+
+
# Generate documentation
npm run docs

# Show documentation in browser
npx serve ./docs +
+ + +

License

+
+

GNU Affero General Public License v3.0 AGPL-3.0-or-later

+ + +

Supported by

+
+


+
+

+

This project has received funding from the European Union’s Horizon 2020 +research and innovation programme within the framework of the NGI-POINTER +Project funded under grant agreement No 871528 and NGI-ASSURE No 957073

+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/modules.html b/lib/p2panda-js/modules.html new file mode 100644 index 000000000..761c077bd --- /dev/null +++ b/lib/p2panda-js/modules.html @@ -0,0 +1,94 @@ +p2panda-js
+
+ +
+ +
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/EasyValues.html b/lib/p2panda-js/types/EasyValues.html new file mode 100644 index 000000000..6c4b92465 --- /dev/null +++ b/lib/p2panda-js/types/EasyValues.html @@ -0,0 +1,77 @@ +EasyValues | p2panda-js
+
+ +
+
+
+
+ +

Type alias EasyValues

+
EasyValues: {
    [fieldName: string]: string | Uint8Array | number | bigint | boolean;
}
+

"Easy operation values" to populate the operation with basic data types.

+

This can be used to easily create operation fields, even when there is no +schema at hand. Please note that only unambigious field types like "str", +"int", "float" and "bool" can be used here

+
+
+

Type declaration

+
    +
  • +
    [fieldName: string]: string | Uint8Array | number | bigint | boolean
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/Entry.html b/lib/p2panda-js/types/Entry.html new file mode 100644 index 000000000..f5d6b53c9 --- /dev/null +++ b/lib/p2panda-js/types/Entry.html @@ -0,0 +1,104 @@ +Entry | p2panda-js
+
+ +
+
+
+
+ +

Type alias Entry

+
Entry: {
    publicKey: string;
    logId: bigint;
    seqNum: bigint;
    skiplink?: string;
    backlink?: string;
    payloadSize: bigint;
    payloadHash: string;
    signature: string;
}
+

Signed Bamboo entry.

+
+
+

Type declaration

+
    +
  • +
    publicKey: string
    +

    Public key of the entry author

    +
  • +
  • +
    logId: bigint
    +

    Log id of entry, starting at 0

    +
  • +
  • +
    seqNum: bigint
    +

    Sequence number of entry, starting at 1

    +
  • +
  • +
    Optional skiplink?: string
    +

    Skiplink hash

    +
  • +
  • +
    Optional backlink?: string
    +

    Backlink hash, omitted when first entry in log

    +
  • +
  • +
    payloadSize: bigint
    +

    Size of the payload in bytes

    +
  • +
  • +
    payloadHash: string
    +

    Hash of the payload

    +
  • +
  • +
    signature: string
    +

    Ed25519 signature

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/EntryArgs.html b/lib/p2panda-js/types/EntryArgs.html new file mode 100644 index 000000000..b673be5c4 --- /dev/null +++ b/lib/p2panda-js/types/EntryArgs.html @@ -0,0 +1,92 @@ +EntryArgs | p2panda-js
+
+ +
+
+
+
+ +

Type alias EntryArgs

+
EntryArgs: {
    logId?: bigint | number | string;
    seqNum?: bigint | number | string;
    skiplink?: string;
    backlink?: string;
    operation: string;
}
+

Arguments to create an Bamboo entry.

+
+
+

Type declaration

+
    +
  • +
    Optional logId?: bigint | number | string
    +

    Log id of entry, starting at 0

    +
  • +
  • +
    Optional seqNum?: bigint | number | string
    +

    Sequence number of entry, starting at 1

    +
  • +
  • +
    Optional skiplink?: string
    +

    Skiplink hash

    +
  • +
  • +
    Optional backlink?: string
    +

    Backlink hash, omitted when first entry in log

    +
  • +
  • +
    operation: string
    +

    Operation payload this entry points at

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/FieldType.html b/lib/p2panda-js/types/FieldType.html new file mode 100644 index 000000000..55ec7cd7b --- /dev/null +++ b/lib/p2panda-js/types/FieldType.html @@ -0,0 +1,70 @@ +FieldType | p2panda-js
+
+ +
+
+
+
+ +

Type alias FieldType

+
FieldType: "str" | "int" | "float" | "bool" | "bytes" | "relation" | "pinned_relation" | "relation_list" | "pinned_relation_list"
+

Field type string as defined by the p2panda specification indicating +the operation value type.

+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/OperationAction.html b/lib/p2panda-js/types/OperationAction.html new file mode 100644 index 000000000..65502eff7 --- /dev/null +++ b/lib/p2panda-js/types/OperationAction.html @@ -0,0 +1,69 @@ +OperationAction | p2panda-js
+
+ +
+
+
+
+ +

Type alias OperationAction

+
OperationAction: "create" | "update" | "delete"
+

Operation actions, represented as strings.

+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/OperationArgs.html b/lib/p2panda-js/types/OperationArgs.html new file mode 100644 index 000000000..cb0537467 --- /dev/null +++ b/lib/p2panda-js/types/OperationArgs.html @@ -0,0 +1,89 @@ +OperationArgs | p2panda-js
+
+ +
+
+
+
+ +

Type alias OperationArgs

+
OperationArgs: {
    schemaId: string;
    previous?: string[] | string;
    action?: OperationAction;
    fields?: OperationFields | EasyValues;
}
+

Arguments to create an operation.

+
+
+

Type declaration

+
    +
  • +
    schemaId: string
    +

    Id of schema this operation matches

    +
  • +
  • +
    Optional previous?: string[] | string
    +

    Document view id pointing at previous operations, needs to be set +for UPDATE and DELETE operations

    +
  • +
  • +
    Optional action?: OperationAction
    +

    Operation action, default is CREATE

    +
  • +
  • +
    Optional fields?: OperationFields | EasyValues
    +

    Fields with user data, needs to be set for CREATE and UPDATE operations

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/OperationMeta.html b/lib/p2panda-js/types/OperationMeta.html new file mode 100644 index 000000000..5039a06ab --- /dev/null +++ b/lib/p2panda-js/types/OperationMeta.html @@ -0,0 +1,81 @@ +OperationMeta | p2panda-js
+
+ +
+
+
+
+ +

Type alias OperationMeta

+
OperationMeta: {
    schemaId: string;
    previous?: string[];
}
+

Meta fields which are given next to action and version.

+
+
+

Type declaration

+
    +
  • +
    schemaId: string
    +

    Id of schema this operation matches

    +
  • +
  • +
    Optional previous?: string[]
    +

    Document view id pointing at previous operations, needs to be set +for UPDATE and DELETE operations

    +
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/OperationValue.html b/lib/p2panda-js/types/OperationValue.html new file mode 100644 index 000000000..95d509569 --- /dev/null +++ b/lib/p2panda-js/types/OperationValue.html @@ -0,0 +1,69 @@ +OperationValue | p2panda-js
+
+ +
+
+
+
+ +

Type alias OperationValue

+
OperationValue: string | bigint | boolean | Uint8Array | string[] | string[][]
+

Possible operation values.

+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/OperationValueArg.html b/lib/p2panda-js/types/OperationValueArg.html new file mode 100644 index 000000000..aad1f4eae --- /dev/null +++ b/lib/p2panda-js/types/OperationValueArg.html @@ -0,0 +1,69 @@ +OperationValueArg | p2panda-js
+
+ +
+
+
+
+ +

Type alias OperationValueArg

+
OperationValueArg: OperationValue | number
+

Allow 'number' when inserting new operation values.

+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file diff --git a/lib/p2panda-js/types/PlainOperation.html b/lib/p2panda-js/types/PlainOperation.html new file mode 100644 index 000000000..e8ab02548 --- /dev/null +++ b/lib/p2panda-js/types/PlainOperation.html @@ -0,0 +1,70 @@ +PlainOperation | p2panda-js
+
+ +
+
+
+
+ +

Type alias PlainOperation

+
PlainOperation: OperationMeta & {
    version: number;
    action: OperationAction;
    fields?: Map<string, OperationValue>;
}
+

Plain operation with fields which have not been checked against a schema +yet.

+
+
+
+

Generated using TypeDoc

+
\ No newline at end of file