diff --git a/docs/_app/immutable/chunks/Icon.050ff215.js b/docs/_app/immutable/chunks/Icon.050ff215.js new file mode 100644 index 0000000..72e23bc --- /dev/null +++ b/docs/_app/immutable/chunks/Icon.050ff215.js @@ -0,0 +1 @@ +import{s as h,G as l,H as V,h as o,d as n,j as s,k as A,i as v,u as M,v as d}from"./scheduler.d7e45cc8.js";import{S as m,i as c}from"./index.77720afb.js";var g="M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z",p="M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z",_="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z",Z="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z",S="M20.94,14C20.66,15.41 18.5,16.96 15.97,17.26C14.66,17.41 13.37,17.56 12,17.5C9.75,17.39 8,16.96 8,16.96V17.58C8.32,19.8 10.22,19.93 12.03,20C13.85,20.05 15.47,19.54 15.47,19.54L15.55,21.19C15.55,21.19 14.27,21.87 12,22C10.75,22.07 9.19,21.97 7.38,21.5C3.46,20.45 2.78,16.26 2.68,12L2.67,8.57C2.67,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.37,11.78 20.94,14M18,8.91C18,7.83 17.7,7 17.15,6.35C16.59,5.72 15.85,5.39 14.92,5.39C13.86,5.39 13.05,5.8 12.5,6.62L12,7.5L11.5,6.62C10.94,5.8 10.14,5.39 9.07,5.39C8.15,5.39 7.41,5.72 6.84,6.35C6.29,7 6,7.83 6,8.91V14.17H8.1V9.06C8.1,8 8.55,7.44 9.46,7.44C10.46,7.44 10.96,8.09 10.96,9.37V12.16H13.03V9.37C13.03,8.09 13.53,7.44 14.54,7.44C15.44,7.44 15.89,8 15.89,9.06V14.17H18V8.91Z",x="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z",y="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z",w="M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12.75,13.5C15.5,13.5 16.24,11.47 16.43,10.4C17.34,10.11 18,9.26 18,8.25C18,7 17,6 15.75,6C14.5,6 13.5,7 13.5,8.25C13.5,9.19 14.07,10 14.89,10.33C14.67,11 14,12 12,12C10.62,12 9.66,12.35 9,12.84V8.87C9.87,8.56 10.5,7.73 10.5,6.75C10.5,5.5 9.5,4.5 8.25,4.5C7,4.5 6,5.5 6,6.75C6,7.73 6.63,8.56 7.5,8.87V15.13C6.63,15.44 6,16.27 6,17.25C6,18.5 7,19.5 8.25,19.5C9.5,19.5 10.5,18.5 10.5,17.25C10.5,16.32 9.94,15.5 9.13,15.18C9.41,14.5 10.23,13.5 12.75,13.5M8.25,16.5A0.75,0.75 0 0,1 9,17.25A0.75,0.75 0 0,1 8.25,18A0.75,0.75 0 0,1 7.5,17.25A0.75,0.75 0 0,1 8.25,16.5M8.25,6A0.75,0.75 0 0,1 9,6.75A0.75,0.75 0 0,1 8.25,7.5A0.75,0.75 0 0,1 7.5,6.75A0.75,0.75 0 0,1 8.25,6M15.75,7.5A0.75,0.75 0 0,1 16.5,8.25A0.75,0.75 0 0,1 15.75,9A0.75,0.75 0 0,1 15,8.25A0.75,0.75 0 0,1 15.75,7.5Z",E="M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z";function H(i){let C,e;return{c(){C=l("svg"),e=l("path"),this.h()},l(a){C=V(a,"svg",{style:!0,viewBox:!0});var t=o(C);e=V(t,"path",{fill:!0,d:!0}),o(e).forEach(n),t.forEach(n),this.h()},h(){s(e,"fill","currentColor"),s(e,"d",i[0]),A(C,"width","24px"),A(C,"height","24px"),A(C,"vertical-align",i[1]),s(C,"viewBox","0 0 24 24")},m(a,t){v(a,C,t),M(C,e)},p(a,[t]){t&1&&s(e,"d",a[0]),t&2&&A(C,"vertical-align",a[1])},i:d,o:d,d(a){a&&n(C)}}}function u(i,C,e){let{path:a}=C,{verticalAlign:t="middle"}=C;return i.$$set=r=>{"path"in r&&e(0,a=r.path),"verticalAlign"in r&&e(1,t=r.verticalAlign)},[a,t]}class b extends m{constructor(C){super(),c(this,C,u,H,h,{path:0,verticalAlign:1})}}export{b as I,_ as a,g as b,Z as c,x as d,E as e,w as f,p as g,y as h,S as m}; diff --git a/docs/_app/immutable/chunks/Icon.b8c1070a.js b/docs/_app/immutable/chunks/Icon.b8c1070a.js deleted file mode 100644 index 2a50d8b..0000000 --- a/docs/_app/immutable/chunks/Icon.b8c1070a.js +++ /dev/null @@ -1 +0,0 @@ -import{S as d,i as M,s as v,P as l,Q as V,m as h,h as n,n as s,p as A,b as m,C as c,D as o}from"./index.d7cc8d8b.js";var f="M20,8L12,13L4,8V6L12,11L20,6M20,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6C22,4.89 21.1,4 20,4Z",g="M17,12V3A1,1 0 0,0 16,2H3A1,1 0 0,0 2,3V17L6,13H16A1,1 0 0,0 17,12M21,6H19V15H6V17A1,1 0 0,0 7,18H18L22,22V7A1,1 0 0,0 21,6Z",p="M12,2A10,10 0 0,0 2,12C2,16.42 4.87,20.17 8.84,21.5C9.34,21.58 9.5,21.27 9.5,21C9.5,20.77 9.5,20.14 9.5,19.31C6.73,19.91 6.14,17.97 6.14,17.97C5.68,16.81 5.03,16.5 5.03,16.5C4.12,15.88 5.1,15.9 5.1,15.9C6.1,15.97 6.63,16.93 6.63,16.93C7.5,18.45 8.97,18 9.54,17.76C9.63,17.11 9.89,16.67 10.17,16.42C7.95,16.17 5.62,15.31 5.62,11.5C5.62,10.39 6,9.5 6.65,8.79C6.55,8.54 6.2,7.5 6.75,6.15C6.75,6.15 7.59,5.88 9.5,7.17C10.29,6.95 11.15,6.84 12,6.84C12.85,6.84 13.71,6.95 14.5,7.17C16.41,5.88 17.25,6.15 17.25,6.15C17.8,7.5 17.45,8.54 17.35,8.79C18,9.5 18.38,10.39 18.38,11.5C18.38,15.32 16.04,16.16 13.81,16.41C14.17,16.72 14.5,17.33 14.5,18.26C14.5,19.6 14.5,20.68 14.5,21C14.5,21.27 14.66,21.59 15.17,21.5C19.14,20.16 22,16.42 22,12A10,10 0 0,0 12,2Z",_="M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z",Z="M20.94,14C20.66,15.41 18.5,16.96 15.97,17.26C14.66,17.41 13.37,17.56 12,17.5C9.75,17.39 8,16.96 8,16.96V17.58C8.32,19.8 10.22,19.93 12.03,20C13.85,20.05 15.47,19.54 15.47,19.54L15.55,21.19C15.55,21.19 14.27,21.87 12,22C10.75,22.07 9.19,21.97 7.38,21.5C3.46,20.45 2.78,16.26 2.68,12L2.67,8.57C2.67,4.23 5.5,2.96 5.5,2.96C6.95,2.3 9.41,2 11.97,2H12.03C14.59,2 17.05,2.3 18.5,2.96C18.5,2.96 21.33,4.23 21.33,8.57C21.33,8.57 21.37,11.78 20.94,14M18,8.91C18,7.83 17.7,7 17.15,6.35C16.59,5.72 15.85,5.39 14.92,5.39C13.86,5.39 13.05,5.8 12.5,6.62L12,7.5L11.5,6.62C10.94,5.8 10.14,5.39 9.07,5.39C8.15,5.39 7.41,5.72 6.84,6.35C6.29,7 6,7.83 6,8.91V14.17H8.1V9.06C8.1,8 8.55,7.44 9.46,7.44C10.46,7.44 10.96,8.09 10.96,9.37V12.16H13.03V9.37C13.03,8.09 13.53,7.44 14.54,7.44C15.44,7.44 15.89,8 15.89,9.06V14.17H18V8.91Z",S="M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z",x="M12,1L3,5V11C3,16.55 6.84,21.74 12,23C17.16,21.74 21,16.55 21,11V5L12,1Z",y="M6,2H18A2,2 0 0,1 20,4V20A2,2 0 0,1 18,22H6A2,2 0 0,1 4,20V4A2,2 0 0,1 6,2M12.75,13.5C15.5,13.5 16.24,11.47 16.43,10.4C17.34,10.11 18,9.26 18,8.25C18,7 17,6 15.75,6C14.5,6 13.5,7 13.5,8.25C13.5,9.19 14.07,10 14.89,10.33C14.67,11 14,12 12,12C10.62,12 9.66,12.35 9,12.84V8.87C9.87,8.56 10.5,7.73 10.5,6.75C10.5,5.5 9.5,4.5 8.25,4.5C7,4.5 6,5.5 6,6.75C6,7.73 6.63,8.56 7.5,8.87V15.13C6.63,15.44 6,16.27 6,17.25C6,18.5 7,19.5 8.25,19.5C9.5,19.5 10.5,18.5 10.5,17.25C10.5,16.32 9.94,15.5 9.13,15.18C9.41,14.5 10.23,13.5 12.75,13.5M8.25,16.5A0.75,0.75 0 0,1 9,17.25A0.75,0.75 0 0,1 8.25,18A0.75,0.75 0 0,1 7.5,17.25A0.75,0.75 0 0,1 8.25,16.5M8.25,6A0.75,0.75 0 0,1 9,6.75A0.75,0.75 0 0,1 8.25,7.5A0.75,0.75 0 0,1 7.5,6.75A0.75,0.75 0 0,1 8.25,6M15.75,7.5A0.75,0.75 0 0,1 16.5,8.25A0.75,0.75 0 0,1 15.75,9A0.75,0.75 0 0,1 15,8.25A0.75,0.75 0 0,1 15.75,7.5Z",b="M12,16A3,3 0 0,1 9,13C9,11.88 9.61,10.9 10.5,10.39L20.21,4.77L14.68,14.35C14.18,15.33 13.17,16 12,16M12,3C13.81,3 15.5,3.5 16.97,4.32L14.87,5.53C14,5.19 13,5 12,5A8,8 0 0,0 4,13C4,15.21 4.89,17.21 6.34,18.65H6.35C6.74,19.04 6.74,19.67 6.35,20.06C5.96,20.45 5.32,20.45 4.93,20.07V20.07C3.12,18.26 2,15.76 2,13A10,10 0 0,1 12,3M22,13C22,15.76 20.88,18.26 19.07,20.07V20.07C18.68,20.45 18.05,20.45 17.66,20.06C17.27,19.67 17.27,19.04 17.66,18.65V18.65C19.11,17.2 20,15.21 20,13C20,12 19.81,11 19.46,10.1L20.67,8C21.5,9.5 22,11.18 22,13Z";function H(i){let C,e;return{c(){C=l("svg"),e=l("path"),this.h()},l(a){C=V(a,"svg",{style:!0,viewBox:!0});var t=h(C);e=V(t,"path",{fill:!0,d:!0}),h(e).forEach(n),t.forEach(n),this.h()},h(){s(e,"fill","currentColor"),s(e,"d",i[0]),A(C,"width","24px"),A(C,"height","24px"),A(C,"vertical-align",i[1]),s(C,"viewBox","0 0 24 24")},m(a,t){m(a,C,t),c(C,e)},p(a,[t]){t&1&&s(e,"d",a[0]),t&2&&A(C,"vertical-align",a[1])},i:o,o,d(a){a&&n(C)}}}function u(i,C,e){let{path:a}=C,{verticalAlign:t="middle"}=C;return i.$$set=r=>{"path"in r&&e(0,a=r.path),"verticalAlign"in r&&e(1,t=r.verticalAlign)},[a,t]}class w extends d{constructor(C){super(),M(this,C,u,H,v,{path:0,verticalAlign:1})}}export{w as I,p as a,f as b,_ as c,S as d,b as e,y as f,g,x as h,Z as m}; diff --git a/docs/_app/immutable/chunks/bash.2b754df6.js b/docs/_app/immutable/chunks/bash.2b754df6.js deleted file mode 100644 index 834af2f..0000000 --- a/docs/_app/immutable/chunks/bash.2b754df6.js +++ /dev/null @@ -1 +0,0 @@ -function S(e){const a=e.regex,s={},c={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:a.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},c]});const t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);const i={className:"",begin:/\\"/},r={className:"string",begin:/'/,end:/'/},m={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},p=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],d=e.SHEBANG({binary:`(${p.join("|")})`,relevance:10}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},u=["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"],h=["true","false"],b={match:/(\/[a-z._-]+)+/},g=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],f=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],_=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],E=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:u,literal:h,built_in:[...g,...f,"set","shopt",..._,...E]},contains:[d,e.SHEBANG(),l,m,e.HASH_COMMENT_MODE,o,b,n,i,r,s]}}const N={name:"bash",register:S},w=N;export{w as b}; diff --git a/docs/_app/immutable/chunks/bash.7e4226ac.js b/docs/_app/immutable/chunks/bash.7e4226ac.js new file mode 100644 index 0000000..7ad32a2 --- /dev/null +++ b/docs/_app/immutable/chunks/bash.7e4226ac.js @@ -0,0 +1 @@ +function S(e){const a=e.regex,s={},c={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[s]}]};Object.assign(s,{className:"variable",variants:[{begin:a.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},c]});const t={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},n={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,t]};t.contains.push(n);const i={className:"",begin:/\\"/},r={className:"string",begin:/'/,end:/'/},l={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,s]},m=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],p=e.SHEBANG({binary:`(${m.join("|")})`,relevance:10}),d={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},u=["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"],h=["true","false"],b={match:/(\/[a-z._-]+)+/},g=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],f=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias"],_=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],E=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:u,literal:h,built_in:[...g,...f,"set","shopt",..._,...E]},contains:[p,e.SHEBANG(),d,l,e.HASH_COMMENT_MODE,o,b,n,i,r,s]}}const N={name:"bash",register:S},w=N;export{w as b}; diff --git a/docs/_app/immutable/chunks/github.64534d2c.js b/docs/_app/immutable/chunks/github.64534d2c.js new file mode 100644 index 0000000..0c118b9 --- /dev/null +++ b/docs/_app/immutable/chunks/github.64534d2c.js @@ -0,0 +1,11 @@ +import{s as ve,K as H,f as Ee,g as Me,h as ye,d as G,z as U,L as we,i as re,u as bt,v as Oe,M as q,N as De,l as Et,m as Mt,n as yt,I as wt,e as Re,J as Ot,w as Rt,B as St,C as xt,D as Nt,O as kt,b as jt}from"./scheduler.d7e45cc8.js";import{S as Le,i as Ce,a as Be,t as He,b as At,d as Tt,m as mt,e as It}from"./index.77720afb.js";function Pe(e,t){const n={},a={},u={$$scope:1};let l=e.length;for(;l--;){const i=e[l],s=t[l];if(s){for(const o in i)o in s||(a[o]=1);for(const o in s)u[o]||(n[o]=s[o],u[o]=1);e[l]=s}else for(const o in i)u[o]=1}for(const i in a)i in n||(n[i]=void 0);return n}function vt(e){return typeof e=="object"&&e!==null?e:{}}function Dt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Ue(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],a=typeof n;(a==="object"||a==="function")&&!Object.isFrozen(n)&&Ue(n)}),e}class Se{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Ge(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function v(e,...t){const n=Object.create(null);for(const a in e)n[a]=e[a];return t.forEach(function(a){for(const u in a)n[u]=a[u]}),n}const Lt="",xe=e=>!!e.scope,Ct=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((a,u)=>`${a}${"_".repeat(u+1)}`)].join(" ")}return`${t}${e}`};class Bt{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ge(t)}openNode(t){if(!xe(t))return;const n=Ct(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){xe(t)&&(this.buffer+=Lt)}value(){return this.buffer}span(t){this.buffer+=``}}const Ne=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class oe{constructor(){this.rootNode=Ne(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=Ne({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(a=>this._walk(t,a)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{oe._collapse(n)}))}}class Ht extends oe{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const a=t.root;n&&(a.scope=`language:${n}`),this.add(a)}toHTML(){return new Bt(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function W(e){return e?typeof e=="string"?e:e.source:null}function We(e){return C("(?=",e,")")}function Pt(e){return C("(?:",e,")*")}function Ut(e){return C("(?:",e,")?")}function C(...e){return e.map(n=>W(n)).join("")}function Gt(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function le(...e){return"("+(Gt(e).capture?"":"?:")+e.map(a=>W(a)).join("|")+")"}function Ke(e){return new RegExp(e.toString()+"|").exec("").length-1}function Wt(e,t){const n=e&&e.exec(t);return n&&n.index===0}const Kt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ae(e,{joinWith:t}){let n=0;return e.map(a=>{n+=1;const u=n;let l=W(a),i="";for(;l.length>0;){const s=Kt.exec(l);if(!s){i+=l;break}i+=l.substring(0,s.index),l=l.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?i+="\\"+String(Number(s[1])+u):(i+=s[0],s[0]==="("&&n++)}return i}).map(a=>`(${a})`).join(t)}const zt=/\b\B/,ze="[a-zA-Z]\\w*",ce="[a-zA-Z_]\\w*",Fe="\\b\\d+(\\.\\d+)?",Xe="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ye="\\b(0b[01]+)",Ft="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",Xt=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=C(t,/.*\b/,e.binary,/\b.*/)),v({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,a)=>{n.index!==0&&a.ignoreMatch()}},e)},K={begin:"\\\\[\\s\\S]",relevance:0},Yt={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[K]},Zt={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[K]},Jt={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Q=function(e,t,n={}){const a=v({scope:"comment",begin:e,end:t,contains:[]},n);a.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const u=le("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return a.contains.push({begin:C(/[ ]+/,"(",u,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),a},qt=Q("//","$"),Vt=Q("/\\*","\\*/"),Qt=Q("#","$"),$t={scope:"number",begin:Fe,relevance:0},en={scope:"number",begin:Xe,relevance:0},tn={scope:"number",begin:Ye,relevance:0},nn={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[K,{begin:/\[/,end:/\]/,relevance:0,contains:[K]}]}]},sn={scope:"title",begin:ze,relevance:0},rn={scope:"title",begin:ce,relevance:0},on={begin:"\\.\\s*"+ce,relevance:0},ln=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var J=Object.freeze({__proto__:null,MATCH_NOTHING_RE:zt,IDENT_RE:ze,UNDERSCORE_IDENT_RE:ce,NUMBER_RE:Fe,C_NUMBER_RE:Xe,BINARY_NUMBER_RE:Ye,RE_STARTERS_RE:Ft,SHEBANG:Xt,BACKSLASH_ESCAPE:K,APOS_STRING_MODE:Yt,QUOTE_STRING_MODE:Zt,PHRASAL_WORDS_MODE:Jt,COMMENT:Q,C_LINE_COMMENT_MODE:qt,C_BLOCK_COMMENT_MODE:Vt,HASH_COMMENT_MODE:Qt,NUMBER_MODE:$t,C_NUMBER_MODE:en,BINARY_NUMBER_MODE:tn,REGEXP_MODE:nn,TITLE_MODE:sn,UNDERSCORE_TITLE_MODE:rn,METHOD_GUARD:on,END_SAME_AS_BEGIN:ln});function an(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function cn(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function un(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=an,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function gn(e,t){Array.isArray(e.illegal)&&(e.illegal=le(...e.illegal))}function fn(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function hn(e,t){e.relevance===void 0&&(e.relevance=1)}const dn=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(a=>{delete e[a]}),e.keywords=n.keywords,e.begin=C(n.beforeMatch,We(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},pn=["of","and","for","in","not","or","if","then","parent","list","value"],_n="keyword";function Ze(e,t,n=_n){const a=Object.create(null);return typeof e=="string"?u(n,e.split(" ")):Array.isArray(e)?u(n,e):Object.keys(e).forEach(function(l){Object.assign(a,Ze(e[l],t,l))}),a;function u(l,i){t&&(i=i.map(s=>s.toLowerCase())),i.forEach(function(s){const o=s.split("|");a[o[0]]=[l,bn(o[0],o[1])]})}}function bn(e,t){return t?Number(t):En(e)?0:1}function En(e){return pn.includes(e.toLowerCase())}const ke={},L=e=>{console.error(e)},je=(e,...t)=>{console.log(`WARN: ${e}`,...t)},B=(e,t)=>{ke[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),ke[`${e}/${t}`]=!0)},V=new Error;function Je(e,t,{key:n}){let a=0;const u=e[n],l={},i={};for(let s=1;s<=t.length;s++)i[s+a]=u[s],l[s+a]=!0,a+=Ke(t[s-1]);e[n]=i,e[n]._emit=l,e[n]._multi=!0}function Mn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw L("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),V;if(typeof e.beginScope!="object"||e.beginScope===null)throw L("beginScope must be object"),V;Je(e,e.begin,{key:"beginScope"}),e.begin=ae(e.begin,{joinWith:""})}}function yn(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw L("skip, excludeEnd, returnEnd not compatible with endScope: {}"),V;if(typeof e.endScope!="object"||e.endScope===null)throw L("endScope must be object"),V;Je(e,e.end,{key:"endScope"}),e.end=ae(e.end,{joinWith:""})}}function wn(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function On(e){wn(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),Mn(e),yn(e)}function Rn(e){function t(i,s){return new RegExp(W(i),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,o){o.position=this.position++,this.matchIndexes[this.matchAt]=o,this.regexes.push([o,s]),this.matchAt+=Ke(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(o=>o[1]);this.matcherRe=t(ae(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const o=this.matcherRe.exec(s);if(!o)return null;const d=o.findIndex((k,S)=>S>0&&k!==void 0),M=this.matchIndexes[d];return o.splice(0,d),Object.assign(o,M)}}class a{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const o=new n;return this.rules.slice(s).forEach(([d,M])=>o.addRule(d,M)),o.compile(),this.multiRegexes[s]=o,o}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,o){this.rules.push([s,o]),o.type==="begin"&&this.count++}exec(s){const o=this.getMatcher(this.regexIndex);o.lastIndex=this.lastIndex;let d=o.exec(s);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){const M=this.getMatcher(0);M.lastIndex=this.lastIndex+1,d=M.exec(s)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function u(i){const s=new a;return i.contains.forEach(o=>s.addRule(o.begin,{rule:o,type:"begin"})),i.terminatorEnd&&s.addRule(i.terminatorEnd,{type:"end"}),i.illegal&&s.addRule(i.illegal,{type:"illegal"}),s}function l(i,s){const o=i;if(i.isCompiled)return o;[cn,fn,On,dn].forEach(M=>M(i,s)),e.compilerExtensions.forEach(M=>M(i,s)),i.__beforeBegin=null,[un,gn,hn].forEach(M=>M(i,s)),i.isCompiled=!0;let d=null;return typeof i.keywords=="object"&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),d=i.keywords.$pattern,delete i.keywords.$pattern),d=d||/\w+/,i.keywords&&(i.keywords=Ze(i.keywords,e.case_insensitive)),o.keywordPatternRe=t(d,!0),s&&(i.begin||(i.begin=/\B|\b/),o.beginRe=t(o.begin),!i.end&&!i.endsWithParent&&(i.end=/\B|\b/),i.end&&(o.endRe=t(o.end)),o.terminatorEnd=W(o.end)||"",i.endsWithParent&&s.terminatorEnd&&(o.terminatorEnd+=(i.end?"|":"")+s.terminatorEnd)),i.illegal&&(o.illegalRe=t(i.illegal)),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map(function(M){return Sn(M==="self"?i:M)})),i.contains.forEach(function(M){l(M,o)}),i.starts&&l(i.starts,s),o.matcher=u(o),o}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=v(e.classNameAliases||{}),l(e)}function qe(e){return e?e.endsWithParent||qe(e.starts):!1}function Sn(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return v(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:qe(e)?v(e,{starts:e.starts?v(e.starts):null}):Object.isFrozen(e)?v(e):e}var xn="11.8.0";class Nn extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const se=Ge,Ae=v,Te=Symbol("nomatch"),kn=7,Ve=function(e){const t=Object.create(null),n=Object.create(null),a=[];let u=!0;const l="Could not find the language '{}', did you forget to load/include a language module?",i={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Ht};function o(r){return s.noHighlightRe.test(r)}function d(r){let f=r.className+" ";f+=r.parentNode?r.parentNode.className:"";const _=s.languageDetectRe.exec(f);if(_){const E=m(_[1]);return E||(je(l.replace("{}",_[1])),je("Falling back to no-highlight mode for this block.",r)),E?_[1]:"no-highlight"}return f.split(/\s+/).find(E=>o(E)||m(E))}function M(r,f,_){let E="",w="";typeof f=="object"?(E=r,_=f.ignoreIllegals,w=f.language):(B("10.7.0","highlight(lang, code, ...args) has been deprecated."),B("10.7.0",`Please use highlight(code, options) instead. +https://github.com/highlightjs/highlight.js/issues/2277`),w=r,E=f),_===void 0&&(_=!0);const N={code:E,language:w};F("before:highlight",N);const I=N.result?N.result:k(N.language,N.code,_);return I.code=N.code,F("after:highlight",I),I}function k(r,f,_,E){const w=Object.create(null);function N(c,g){return c.keywords[g]}function I(){if(!h.keywords){O.addText(y);return}let c=0;h.keywordPatternRe.lastIndex=0;let g=h.keywordPatternRe.exec(y),p="";for(;g;){p+=y.substring(c,g.index);const b=A.case_insensitive?g[0].toLowerCase():g[0],R=N(h,b);if(R){const[T,pt]=R;if(O.addText(p),p="",w[b]=(w[b]||0)+1,w[b]<=kn&&(Z+=pt),T.startsWith("_"))p+=g[0];else{const _t=A.classNameAliases[T]||T;j(g[0],_t)}}else p+=g[0];c=h.keywordPatternRe.lastIndex,g=h.keywordPatternRe.exec(y)}p+=y.substring(c),O.addText(p)}function X(){if(y==="")return;let c=null;if(typeof h.subLanguage=="string"){if(!t[h.subLanguage]){O.addText(y);return}c=k(h.subLanguage,y,!0,be[h.subLanguage]),be[h.subLanguage]=c._top}else c=$(y,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(Z+=c.relevance),O.__addSublanguage(c._emitter,c.language)}function x(){h.subLanguage!=null?X():I(),y=""}function j(c,g){c!==""&&(O.startScope(g),O.addText(c),O.endScope())}function he(c,g){let p=1;const b=g.length-1;for(;p<=b;){if(!c._emit[p]){p++;continue}const R=A.classNameAliases[c[p]]||c[p],T=g[p];R?j(T,R):(y=T,I(),y=""),p++}}function de(c,g){return c.scope&&typeof c.scope=="string"&&O.openNode(A.classNameAliases[c.scope]||c.scope),c.beginScope&&(c.beginScope._wrap?(j(y,A.classNameAliases[c.beginScope._wrap]||c.beginScope._wrap),y=""):c.beginScope._multi&&(he(c.beginScope,g),y="")),h=Object.create(c,{parent:{value:h}}),h}function pe(c,g,p){let b=Wt(c.endRe,p);if(b){if(c["on:end"]){const R=new Se(c);c["on:end"](g,R),R.isMatchIgnored&&(b=!1)}if(b){for(;c.endsParent&&c.parent;)c=c.parent;return c}}if(c.endsWithParent)return pe(c.parent,g,p)}function ut(c){return h.matcher.regexIndex===0?(y+=c[0],1):(ie=!0,0)}function gt(c){const g=c[0],p=c.rule,b=new Se(p),R=[p.__beforeBegin,p["on:begin"]];for(const T of R)if(T&&(T(c,b),b.isMatchIgnored))return ut(g);return p.skip?y+=g:(p.excludeBegin&&(y+=g),x(),!p.returnBegin&&!p.excludeBegin&&(y=g)),de(p,c),p.returnBegin?0:g.length}function ft(c){const g=c[0],p=f.substring(c.index),b=pe(h,c,p);if(!b)return Te;const R=h;h.endScope&&h.endScope._wrap?(x(),j(g,h.endScope._wrap)):h.endScope&&h.endScope._multi?(x(),he(h.endScope,c)):R.skip?y+=g:(R.returnEnd||R.excludeEnd||(y+=g),x(),R.excludeEnd&&(y=g));do h.scope&&O.closeNode(),!h.skip&&!h.subLanguage&&(Z+=h.relevance),h=h.parent;while(h!==b.parent);return b.starts&&de(b.starts,c),R.returnEnd?0:g.length}function ht(){const c=[];for(let g=h;g!==A;g=g.parent)g.scope&&c.unshift(g.scope);c.forEach(g=>O.openNode(g))}let Y={};function _e(c,g){const p=g&&g[0];if(y+=c,p==null)return x(),0;if(Y.type==="begin"&&g.type==="end"&&Y.index===g.index&&p===""){if(y+=f.slice(g.index,g.index+1),!u){const b=new Error(`0 width match regex (${r})`);throw b.languageName=r,b.badRule=Y.rule,b}return 1}if(Y=g,g.type==="begin")return gt(g);if(g.type==="illegal"&&!_){const b=new Error('Illegal lexeme "'+p+'" for mode "'+(h.scope||"")+'"');throw b.mode=h,b}else if(g.type==="end"){const b=ft(g);if(b!==Te)return b}if(g.type==="illegal"&&p==="")return 1;if(ne>1e5&&ne>g.index*3)throw new Error("potential infinite loop, way more iterations than matches");return y+=p,p.length}const A=m(r);if(!A)throw L(l.replace("{}",r)),new Error('Unknown language: "'+r+'"');const dt=Rn(A);let te="",h=E||dt;const be={},O=new s.__emitter(s);ht();let y="",Z=0,D=0,ne=0,ie=!1;try{if(A.__emitTokens)A.__emitTokens(f,O);else{for(h.matcher.considerAll();;){ne++,ie?ie=!1:h.matcher.considerAll(),h.matcher.lastIndex=D;const c=h.matcher.exec(f);if(!c)break;const g=f.substring(D,c.index),p=_e(g,c);D=c.index+p}_e(f.substring(D))}return O.finalize(),te=O.toHTML(),{language:r,value:te,relevance:Z,illegal:!1,_emitter:O,_top:h}}catch(c){if(c.message&&c.message.includes("Illegal"))return{language:r,value:se(f),illegal:!0,relevance:0,_illegalBy:{message:c.message,index:D,context:f.slice(D-100,D+100),mode:c.mode,resultSoFar:te},_emitter:O};if(u)return{language:r,value:se(f),illegal:!1,relevance:0,errorRaised:c,_emitter:O,_top:h};throw c}}function S(r){const f={value:se(r),illegal:!1,relevance:0,_top:i,_emitter:new s.__emitter(s)};return f._emitter.addText(r),f}function $(r,f){f=f||s.languages||Object.keys(t);const _=S(r),E=f.filter(m).filter(fe).map(x=>k(x,r,!1));E.unshift(_);const w=E.sort((x,j)=>{if(x.relevance!==j.relevance)return j.relevance-x.relevance;if(x.language&&j.language){if(m(x.language).supersetOf===j.language)return 1;if(m(j.language).supersetOf===x.language)return-1}return 0}),[N,I]=w,X=N;return X.secondBest=I,X}function Qe(r,f,_){const E=f&&n[f]||_;r.classList.add("hljs"),r.classList.add(`language-${E}`)}function ee(r){let f=null;const _=d(r);if(o(_))return;if(F("before:highlightElement",{el:r,language:_}),r.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(r)),s.throwUnescapedHTML))throw new Nn("One of your code blocks includes unescaped HTML.",r.innerHTML);f=r;const E=f.textContent,w=_?M(E,{language:_,ignoreIllegals:!0}):$(E);r.innerHTML=w.value,Qe(r,_,w.language),r.result={language:w.language,re:w.relevance,relevance:w.relevance},w.secondBest&&(r.secondBest={language:w.secondBest.language,relevance:w.secondBest.relevance}),F("after:highlightElement",{el:r,result:w,text:E})}function $e(r){s=Ae(s,r)}const et=()=>{z(),B("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function tt(){z(),B("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let ue=!1;function z(){if(document.readyState==="loading"){ue=!0;return}document.querySelectorAll(s.cssSelector).forEach(ee)}function nt(){ue&&z()}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",nt,!1);function it(r,f){let _=null;try{_=f(e)}catch(E){if(L("Language definition for '{}' could not be registered.".replace("{}",r)),u)L(E);else throw E;_=i}_.name||(_.name=r),t[r]=_,_.rawDefinition=f.bind(null,e),_.aliases&&ge(_.aliases,{languageName:r})}function st(r){delete t[r];for(const f of Object.keys(n))n[f]===r&&delete n[f]}function rt(){return Object.keys(t)}function m(r){return r=(r||"").toLowerCase(),t[r]||t[n[r]]}function ge(r,{languageName:f}){typeof r=="string"&&(r=[r]),r.forEach(_=>{n[_.toLowerCase()]=f})}function fe(r){const f=m(r);return f&&!f.disableAutodetect}function ot(r){r["before:highlightBlock"]&&!r["before:highlightElement"]&&(r["before:highlightElement"]=f=>{r["before:highlightBlock"](Object.assign({block:f.el},f))}),r["after:highlightBlock"]&&!r["after:highlightElement"]&&(r["after:highlightElement"]=f=>{r["after:highlightBlock"](Object.assign({block:f.el},f))})}function lt(r){ot(r),a.push(r)}function at(r){const f=a.indexOf(r);f!==-1&&a.splice(f,1)}function F(r,f){const _=r;a.forEach(function(E){E[_]&&E[_](f)})}function ct(r){return B("10.7.0","highlightBlock will be removed entirely in v12.0"),B("10.7.0","Please use highlightElement now."),ee(r)}Object.assign(e,{highlight:M,highlightAuto:$,highlightAll:z,highlightElement:ee,highlightBlock:ct,configure:$e,initHighlighting:et,initHighlightingOnLoad:tt,registerLanguage:it,unregisterLanguage:st,listLanguages:rt,getLanguage:m,registerAliases:ge,autoDetection:fe,inherit:Ae,addPlugin:lt,removePlugin:at}),e.debugMode=function(){u=!1},e.safeMode=function(){u=!0},e.versionString=xn,e.regex={concat:C,lookahead:We,either:le,optional:Ut,anyNumberOfTimes:Pt};for(const r in J)typeof J[r]=="object"&&Ue(J[r]);return Object.assign(e,J),e},P=Ve({});P.newInstance=()=>Ve({});var jn=P;P.HighlightJS=P;P.default=P;const me=Dt(jn);function An(e){let t;return{c(){t=Et(e[2])},l(n){t=Mt(n,e[2])},m(n,a){re(n,t,a)},p(n,a){a&4&&yt(t,n[2])},d(n){n&&G(t)}}}function Tn(e){let t,n;return{c(){t=new wt(!1),n=Re(),this.h()},l(a){t=Ot(a,!1),n=Re(),this.h()},h(){t.a=n},m(a,u){t.m(e[1],a,u),re(a,n,u)},p(a,u){u&2&&t.p(a[1])},d(a){a&&(G(n),t.d())}}}function mn(e){let t,n;function a(o,d){return o[1]?Tn:An}let u=a(e),l=u(e),i=[{"data-language":e[3]},e[4]],s={};for(let o=0;o{t=H(H({},t),De(d)),n(4,u=q(t,a)),"langtag"in d&&n(0,l=d.langtag),"highlighted"in d&&n(1,i=d.highlighted),"code"in d&&n(2,s=d.code),"languageName"in d&&n(3,o=d.languageName)},[l,i,s,o,u]}class vn extends Le{constructor(t){super(),Ce(this,t,In,mn,ve,{langtag:0,highlighted:1,code:2,languageName:3})}}const Dn=vn,Ln=e=>({highlighted:e&8}),Ie=e=>({highlighted:e[3]});function Cn(e){let t,n;const a=[e[4],{languageName:e[0].name},{langtag:e[2]},{highlighted:e[3]},{code:e[1]}];let u={};for(let l=0;l{k&&M("highlight",{highlighted:k})}),e.$$set=S=>{t=H(H({},t),De(S)),n(4,u=q(t,a)),"language"in S&&n(0,s=S.language),"code"in S&&n(1,o=S.code),"langtag"in S&&n(2,d=S.langtag),"$$scope"in S&&n(5,i=S.$$scope)},e.$$.update=()=>{e.$$.dirty&3&&(me.registerLanguage(s.name,s.register),n(3,k=me.highlight(o,{language:s.name}).value))},[s,o,d,k,u,i,l]}class Pn extends Le{constructor(t){super(),Ce(this,t,Hn,Bn,ve,{language:0,code:1,langtag:2})}}const Kn=Pn,Un=``,zn=Un;export{Kn as H,zn as g}; diff --git a/docs/_app/immutable/chunks/github.df9008b1.js b/docs/_app/immutable/chunks/github.df9008b1.js deleted file mode 100644 index 6503439..0000000 --- a/docs/_app/immutable/chunks/github.df9008b1.js +++ /dev/null @@ -1,11 +0,0 @@ -import{S as De,i as Le,s as Ce,U as H,k as Me,l as ye,m as we,h as U,H as P,V as Oe,b as re,C as pt,W as Be,D as Re,X as q,Y as He,q as _t,r as bt,u as Et,R as Mt,e as xe,T as yt,E as wt,J as Ot,K as Rt,L as xt,g as Pe,d as Ue,Z as Nt,j as St,y as jt,z as kt,A as At,_ as Tt,B as mt}from"./index.d7cc8d8b.js";function vt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ae={exports:{}};function le(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(function(t){var n=e[t];typeof n=="object"&&!Object.isFrozen(n)&&le(n)}),e}ae.exports=le;ae.exports.default=le;class Ne{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function Ge(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function I(e,...t){const n=Object.create(null);for(const l in e)n[l]=e[l];return t.forEach(function(l){for(const u in l)n[u]=l[u]}),n}const It="",Se=e=>!!e.scope||e.sublanguage&&e.language,Dt=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((l,u)=>`${l}${"_".repeat(u+1)}`)].join(" ")}return`${t}${e}`};class Lt{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=Ge(t)}openNode(t){if(!Se(t))return;let n="";t.sublanguage?n=`language-${t.language}`:n=Dt(t.scope,{prefix:this.classPrefix}),this.span(n)}closeNode(t){Se(t)&&(this.buffer+=It)}value(){return this.buffer}span(t){this.buffer+=``}}const je=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class oe{constructor(){this.rootNode=je(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=je({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(l=>this._walk(t,l)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{oe._collapse(n)}))}}class Ct extends oe{constructor(t){super(),this.options=t}addKeyword(t,n){t!==""&&(this.openNode(n),this.addText(t),this.closeNode())}addText(t){t!==""&&this.add(t)}addSublanguage(t,n){const l=t.root;l.sublanguage=!0,l.language=n,this.add(l)}toHTML(){return new Lt(this,this.options).value()}finalize(){return!0}}function G(e){return e?typeof e=="string"?e:e.source:null}function Ke(e){return C("(?=",e,")")}function Bt(e){return C("(?:",e,")*")}function Ht(e){return C("(?:",e,")?")}function C(...e){return e.map(n=>G(n)).join("")}function Pt(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function ce(...e){return"("+(Pt(e).capture?"":"?:")+e.map(l=>G(l)).join("|")+")"}function We(e){return new RegExp(e.toString()+"|").exec("").length-1}function Ut(e,t){const n=e&&e.exec(t);return n&&n.index===0}const Gt=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function ue(e,{joinWith:t}){let n=0;return e.map(l=>{n+=1;const u=n;let a=G(l),s="";for(;a.length>0;){const i=Gt.exec(a);if(!i){s+=a;break}s+=a.substring(0,i.index),a=a.substring(i.index+i[0].length),i[0][0]==="\\"&&i[1]?s+="\\"+String(Number(i[1])+u):(s+=i[0],i[0]==="("&&n++)}return s}).map(l=>`(${l})`).join(t)}const Kt=/\b\B/,ze="[a-zA-Z]\\w*",ge="[a-zA-Z_]\\w*",Fe="\\b\\d+(\\.\\d+)?",Xe="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Ye="\\b(0b[01]+)",Wt="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",zt=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=C(t,/.*\b/,e.binary,/\b.*/)),I({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,l)=>{n.index!==0&&l.ignoreMatch()}},e)},K={begin:"\\\\[\\s\\S]",relevance:0},Ft={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[K]},Xt={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[K]},Yt={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Q=function(e,t,n={}){const l=I({scope:"comment",begin:e,end:t,contains:[]},n);l.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const u=ce("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return l.contains.push({begin:C(/[ ]+/,"(",u,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),l},Zt=Q("//","$"),Jt=Q("/\\*","\\*/"),qt=Q("#","$"),Vt={scope:"number",begin:Fe,relevance:0},Qt={scope:"number",begin:Xe,relevance:0},$t={scope:"number",begin:Ye,relevance:0},en={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[K,{begin:/\[/,end:/\]/,relevance:0,contains:[K]}]}]},tn={scope:"title",begin:ze,relevance:0},nn={scope:"title",begin:ge,relevance:0},sn={begin:"\\.\\s*"+ge,relevance:0},rn=function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})};var J=Object.freeze({__proto__:null,MATCH_NOTHING_RE:Kt,IDENT_RE:ze,UNDERSCORE_IDENT_RE:ge,NUMBER_RE:Fe,C_NUMBER_RE:Xe,BINARY_NUMBER_RE:Ye,RE_STARTERS_RE:Wt,SHEBANG:zt,BACKSLASH_ESCAPE:K,APOS_STRING_MODE:Ft,QUOTE_STRING_MODE:Xt,PHRASAL_WORDS_MODE:Yt,COMMENT:Q,C_LINE_COMMENT_MODE:Zt,C_BLOCK_COMMENT_MODE:Jt,HASH_COMMENT_MODE:qt,NUMBER_MODE:Vt,C_NUMBER_MODE:Qt,BINARY_NUMBER_MODE:$t,REGEXP_MODE:en,TITLE_MODE:tn,UNDERSCORE_TITLE_MODE:nn,METHOD_GUARD:sn,END_SAME_AS_BEGIN:rn});function an(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function ln(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function on(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=an,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function cn(e,t){Array.isArray(e.illegal)&&(e.illegal=ce(...e.illegal))}function un(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function gn(e,t){e.relevance===void 0&&(e.relevance=1)}const fn=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(l=>{delete e[l]}),e.keywords=n.keywords,e.begin=C(n.beforeMatch,Ke(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},hn=["of","and","for","in","not","or","if","then","parent","list","value"],dn="keyword";function Ze(e,t,n=dn){const l=Object.create(null);return typeof e=="string"?u(n,e.split(" ")):Array.isArray(e)?u(n,e):Object.keys(e).forEach(function(a){Object.assign(l,Ze(e[a],t,a))}),l;function u(a,s){t&&(s=s.map(i=>i.toLowerCase())),s.forEach(function(i){const o=i.split("|");l[o[0]]=[a,pn(o[0],o[1])]})}}function pn(e,t){return t?Number(t):_n(e)?0:1}function _n(e){return hn.includes(e.toLowerCase())}const ke={},L=e=>{console.error(e)},Ae=(e,...t)=>{console.log(`WARN: ${e}`,...t)},B=(e,t)=>{ke[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),ke[`${e}/${t}`]=!0)},V=new Error;function Je(e,t,{key:n}){let l=0;const u=e[n],a={},s={};for(let i=1;i<=t.length;i++)s[i+l]=u[i],a[i+l]=!0,l+=We(t[i-1]);e[n]=s,e[n]._emit=a,e[n]._multi=!0}function bn(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw L("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),V;if(typeof e.beginScope!="object"||e.beginScope===null)throw L("beginScope must be object"),V;Je(e,e.begin,{key:"beginScope"}),e.begin=ue(e.begin,{joinWith:""})}}function En(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw L("skip, excludeEnd, returnEnd not compatible with endScope: {}"),V;if(typeof e.endScope!="object"||e.endScope===null)throw L("endScope must be object"),V;Je(e,e.end,{key:"endScope"}),e.end=ue(e.end,{joinWith:""})}}function Mn(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function yn(e){Mn(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),bn(e),En(e)}function wn(e){function t(s,i){return new RegExp(G(s),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(i?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(i,o){o.position=this.position++,this.matchIndexes[this.matchAt]=o,this.regexes.push([o,i]),this.matchAt+=We(i)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const i=this.regexes.map(o=>o[1]);this.matcherRe=t(ue(i,{joinWith:"|"}),!0),this.lastIndex=0}exec(i){this.matcherRe.lastIndex=this.lastIndex;const o=this.matcherRe.exec(i);if(!o)return null;const d=o.findIndex((j,x)=>x>0&&j!==void 0),M=this.matchIndexes[d];return o.splice(0,d),Object.assign(o,M)}}class l{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(i){if(this.multiRegexes[i])return this.multiRegexes[i];const o=new n;return this.rules.slice(i).forEach(([d,M])=>o.addRule(d,M)),o.compile(),this.multiRegexes[i]=o,o}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(i,o){this.rules.push([i,o]),o.type==="begin"&&this.count++}exec(i){const o=this.getMatcher(this.regexIndex);o.lastIndex=this.lastIndex;let d=o.exec(i);if(this.resumingScanAtSamePosition()&&!(d&&d.index===this.lastIndex)){const M=this.getMatcher(0);M.lastIndex=this.lastIndex+1,d=M.exec(i)}return d&&(this.regexIndex+=d.position+1,this.regexIndex===this.count&&this.considerAll()),d}}function u(s){const i=new l;return s.contains.forEach(o=>i.addRule(o.begin,{rule:o,type:"begin"})),s.terminatorEnd&&i.addRule(s.terminatorEnd,{type:"end"}),s.illegal&&i.addRule(s.illegal,{type:"illegal"}),i}function a(s,i){const o=s;if(s.isCompiled)return o;[ln,un,yn,fn].forEach(M=>M(s,i)),e.compilerExtensions.forEach(M=>M(s,i)),s.__beforeBegin=null,[on,cn,gn].forEach(M=>M(s,i)),s.isCompiled=!0;let d=null;return typeof s.keywords=="object"&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),d=s.keywords.$pattern,delete s.keywords.$pattern),d=d||/\w+/,s.keywords&&(s.keywords=Ze(s.keywords,e.case_insensitive)),o.keywordPatternRe=t(d,!0),i&&(s.begin||(s.begin=/\B|\b/),o.beginRe=t(o.begin),!s.end&&!s.endsWithParent&&(s.end=/\B|\b/),s.end&&(o.endRe=t(o.end)),o.terminatorEnd=G(o.end)||"",s.endsWithParent&&i.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+i.terminatorEnd)),s.illegal&&(o.illegalRe=t(s.illegal)),s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map(function(M){return On(M==="self"?s:M)})),s.contains.forEach(function(M){a(M,o)}),s.starts&&a(s.starts,i),o.matcher=u(o),o}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=I(e.classNameAliases||{}),a(e)}function qe(e){return e?e.endsWithParent||qe(e.starts):!1}function On(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return I(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:qe(e)?I(e,{starts:e.starts?I(e.starts):null}):Object.isFrozen(e)?I(e):e}var Rn="11.7.0";class xn extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const ie=Ge,Te=I,me=Symbol("nomatch"),Nn=7,Sn=function(e){const t=Object.create(null),n=Object.create(null),l=[];let u=!0;const a="Could not find the language '{}', did you forget to load/include a language module?",s={disableAutodetect:!0,name:"Plain text",contains:[]};let i={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:Ct};function o(r){return i.noHighlightRe.test(r)}function d(r){let f=r.className+" ";f+=r.parentNode?r.parentNode.className:"";const _=i.languageDetectRe.exec(f);if(_){const E=A(_[1]);return E||(Ae(a.replace("{}",_[1])),Ae("Falling back to no-highlight mode for this block.",r)),E?_[1]:"no-highlight"}return f.split(/\s+/).find(E=>o(E)||A(E))}function M(r,f,_){let E="",w="";typeof f=="object"?(E=r,_=f.ignoreIllegals,w=f.language):(B("10.7.0","highlight(lang, code, ...args) has been deprecated."),B("10.7.0",`Please use highlight(code, options) instead. -https://github.com/highlightjs/highlight.js/issues/2277`),w=r,E=f),_===void 0&&(_=!0);const S={code:E,language:w};F("before:highlight",S);const T=S.result?S.result:j(S.language,S.code,_);return T.code=S.code,F("after:highlight",T),T}function j(r,f,_,E){const w=Object.create(null);function S(c,g){return c.keywords[g]}function T(){if(!h.keywords){O.addText(y);return}let c=0;h.keywordPatternRe.lastIndex=0;let g=h.keywordPatternRe.exec(y),p="";for(;g;){p+=y.substring(c,g.index);const b=v.case_insensitive?g[0].toLowerCase():g[0],R=S(h,b);if(R){const[k,ht]=R;if(O.addText(p),p="",w[b]=(w[b]||0)+1,w[b]<=Nn&&(Z+=ht),k.startsWith("_"))p+=g[0];else{const dt=v.classNameAliases[k]||k;O.addKeyword(g[0],dt)}}else p+=g[0];c=h.keywordPatternRe.lastIndex,g=h.keywordPatternRe.exec(y)}p+=y.substring(c),O.addText(p)}function X(){if(y==="")return;let c=null;if(typeof h.subLanguage=="string"){if(!t[h.subLanguage]){O.addText(y);return}c=j(h.subLanguage,y,!0,Ee[h.subLanguage]),Ee[h.subLanguage]=c._top}else c=$(y,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(Z+=c.relevance),O.addSublanguage(c._emitter,c.language)}function N(){h.subLanguage!=null?X():T(),y=""}function m(c,g){let p=1;const b=g.length-1;for(;p<=b;){if(!c._emit[p]){p++;continue}const R=v.classNameAliases[c[p]]||c[p],k=g[p];R?O.addKeyword(k,R):(y=k,T(),y=""),p++}}function pe(c,g){return c.scope&&typeof c.scope=="string"&&O.openNode(v.classNameAliases[c.scope]||c.scope),c.beginScope&&(c.beginScope._wrap?(O.addKeyword(y,v.classNameAliases[c.beginScope._wrap]||c.beginScope._wrap),y=""):c.beginScope._multi&&(m(c.beginScope,g),y="")),h=Object.create(c,{parent:{value:h}}),h}function _e(c,g,p){let b=Ut(c.endRe,p);if(b){if(c["on:end"]){const R=new Ne(c);c["on:end"](g,R),R.isMatchIgnored&&(b=!1)}if(b){for(;c.endsParent&&c.parent;)c=c.parent;return c}}if(c.endsWithParent)return _e(c.parent,g,p)}function ot(c){return h.matcher.regexIndex===0?(y+=c[0],1):(se=!0,0)}function ct(c){const g=c[0],p=c.rule,b=new Ne(p),R=[p.__beforeBegin,p["on:begin"]];for(const k of R)if(k&&(k(c,b),b.isMatchIgnored))return ot(g);return p.skip?y+=g:(p.excludeBegin&&(y+=g),N(),!p.returnBegin&&!p.excludeBegin&&(y=g)),pe(p,c),p.returnBegin?0:g.length}function ut(c){const g=c[0],p=f.substring(c.index),b=_e(h,c,p);if(!b)return me;const R=h;h.endScope&&h.endScope._wrap?(N(),O.addKeyword(g,h.endScope._wrap)):h.endScope&&h.endScope._multi?(N(),m(h.endScope,c)):R.skip?y+=g:(R.returnEnd||R.excludeEnd||(y+=g),N(),R.excludeEnd&&(y=g));do h.scope&&O.closeNode(),!h.skip&&!h.subLanguage&&(Z+=h.relevance),h=h.parent;while(h!==b.parent);return b.starts&&pe(b.starts,c),R.returnEnd?0:g.length}function gt(){const c=[];for(let g=h;g!==v;g=g.parent)g.scope&&c.unshift(g.scope);c.forEach(g=>O.openNode(g))}let Y={};function be(c,g){const p=g&&g[0];if(y+=c,p==null)return N(),0;if(Y.type==="begin"&&g.type==="end"&&Y.index===g.index&&p===""){if(y+=f.slice(g.index,g.index+1),!u){const b=new Error(`0 width match regex (${r})`);throw b.languageName=r,b.badRule=Y.rule,b}return 1}if(Y=g,g.type==="begin")return ct(g);if(g.type==="illegal"&&!_){const b=new Error('Illegal lexeme "'+p+'" for mode "'+(h.scope||"")+'"');throw b.mode=h,b}else if(g.type==="end"){const b=ut(g);if(b!==me)return b}if(g.type==="illegal"&&p==="")return 1;if(ne>1e5&&ne>g.index*3)throw new Error("potential infinite loop, way more iterations than matches");return y+=p,p.length}const v=A(r);if(!v)throw L(a.replace("{}",r)),new Error('Unknown language: "'+r+'"');const ft=wn(v);let te="",h=E||ft;const Ee={},O=new i.__emitter(i);gt();let y="",Z=0,D=0,ne=0,se=!1;try{for(h.matcher.considerAll();;){ne++,se?se=!1:h.matcher.considerAll(),h.matcher.lastIndex=D;const c=h.matcher.exec(f);if(!c)break;const g=f.substring(D,c.index),p=be(g,c);D=c.index+p}return be(f.substring(D)),O.closeAllNodes(),O.finalize(),te=O.toHTML(),{language:r,value:te,relevance:Z,illegal:!1,_emitter:O,_top:h}}catch(c){if(c.message&&c.message.includes("Illegal"))return{language:r,value:ie(f),illegal:!0,relevance:0,_illegalBy:{message:c.message,index:D,context:f.slice(D-100,D+100),mode:c.mode,resultSoFar:te},_emitter:O};if(u)return{language:r,value:ie(f),illegal:!1,relevance:0,errorRaised:c,_emitter:O,_top:h};throw c}}function x(r){const f={value:ie(r),illegal:!1,relevance:0,_top:s,_emitter:new i.__emitter(i)};return f._emitter.addText(r),f}function $(r,f){f=f||i.languages||Object.keys(t);const _=x(r),E=f.filter(A).filter(de).map(N=>j(N,r,!1));E.unshift(_);const w=E.sort((N,m)=>{if(N.relevance!==m.relevance)return m.relevance-N.relevance;if(N.language&&m.language){if(A(N.language).supersetOf===m.language)return 1;if(A(m.language).supersetOf===N.language)return-1}return 0}),[S,T]=w,X=S;return X.secondBest=T,X}function Ve(r,f,_){const E=f&&n[f]||_;r.classList.add("hljs"),r.classList.add(`language-${E}`)}function ee(r){let f=null;const _=d(r);if(o(_))return;if(F("before:highlightElement",{el:r,language:_}),r.children.length>0&&(i.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(r)),i.throwUnescapedHTML))throw new xn("One of your code blocks includes unescaped HTML.",r.innerHTML);f=r;const E=f.textContent,w=_?M(E,{language:_,ignoreIllegals:!0}):$(E);r.innerHTML=w.value,Ve(r,_,w.language),r.result={language:w.language,re:w.relevance,relevance:w.relevance},w.secondBest&&(r.secondBest={language:w.secondBest.language,relevance:w.secondBest.relevance}),F("after:highlightElement",{el:r,result:w,text:E})}function Qe(r){i=Te(i,r)}const $e=()=>{z(),B("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function et(){z(),B("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let fe=!1;function z(){if(document.readyState==="loading"){fe=!0;return}document.querySelectorAll(i.cssSelector).forEach(ee)}function tt(){fe&&z()}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",tt,!1);function nt(r,f){let _=null;try{_=f(e)}catch(E){if(L("Language definition for '{}' could not be registered.".replace("{}",r)),u)L(E);else throw E;_=s}_.name||(_.name=r),t[r]=_,_.rawDefinition=f.bind(null,e),_.aliases&&he(_.aliases,{languageName:r})}function st(r){delete t[r];for(const f of Object.keys(n))n[f]===r&&delete n[f]}function it(){return Object.keys(t)}function A(r){return r=(r||"").toLowerCase(),t[r]||t[n[r]]}function he(r,{languageName:f}){typeof r=="string"&&(r=[r]),r.forEach(_=>{n[_.toLowerCase()]=f})}function de(r){const f=A(r);return f&&!f.disableAutodetect}function rt(r){r["before:highlightBlock"]&&!r["before:highlightElement"]&&(r["before:highlightElement"]=f=>{r["before:highlightBlock"](Object.assign({block:f.el},f))}),r["after:highlightBlock"]&&!r["after:highlightElement"]&&(r["after:highlightElement"]=f=>{r["after:highlightBlock"](Object.assign({block:f.el},f))})}function at(r){rt(r),l.push(r)}function F(r,f){const _=r;l.forEach(function(E){E[_]&&E[_](f)})}function lt(r){return B("10.7.0","highlightBlock will be removed entirely in v12.0"),B("10.7.0","Please use highlightElement now."),ee(r)}Object.assign(e,{highlight:M,highlightAuto:$,highlightAll:z,highlightElement:ee,highlightBlock:lt,configure:Qe,initHighlighting:$e,initHighlightingOnLoad:et,registerLanguage:nt,unregisterLanguage:st,listLanguages:it,getLanguage:A,registerAliases:he,autoDetection:de,inherit:Te,addPlugin:at}),e.debugMode=function(){u=!1},e.safeMode=function(){u=!0},e.versionString=Rn,e.regex={concat:C,lookahead:Ke,either:ce,optional:Ht,anyNumberOfTimes:Bt};for(const r in J)typeof J[r]=="object"&&ae.exports(J[r]);return Object.assign(e,J),e};var W=Sn({}),jn=W;W.HighlightJS=W;W.default=W;const ve=vt(jn);function kn(e){let t;return{c(){t=_t(e[2])},l(n){t=bt(n,e[2])},m(n,l){re(n,t,l)},p(n,l){l&4&&Et(t,n[2])},d(n){n&&U(t)}}}function An(e){let t,n;return{c(){t=new Mt(!1),n=xe(),this.h()},l(l){t=yt(l,!1),n=xe(),this.h()},h(){t.a=n},m(l,u){t.m(e[1],l,u),re(l,n,u)},p(l,u){u&2&&t.p(l[1])},d(l){l&&U(n),l&&t.d()}}}function Tn(e){let t,n;function l(o,d){return o[1]?An:kn}let u=l(e),a=u(e),s=[{"data-language":e[3]},e[4]],i={};for(let o=0;o{t=H(H({},t),He(d)),n(4,u=q(t,l)),"langtag"in d&&n(0,a=d.langtag),"highlighted"in d&&n(1,s=d.highlighted),"code"in d&&n(2,i=d.code),"languageName"in d&&n(3,o=d.languageName)},[a,s,i,o,u]}class vn extends De{constructor(t){super(),Le(this,t,mn,Tn,Ce,{langtag:0,highlighted:1,code:2,languageName:3})}}const In=vn,Dn=e=>({highlighted:e&8}),Ie=e=>({highlighted:e[3]});function Ln(e){let t,n;const l=[e[4],{languageName:e[0].name},{langtag:e[2]},{highlighted:e[3]},{code:e[1]}];let u={};for(let a=0;a{j&&M("highlight",{highlighted:j})}),e.$$set=x=>{t=H(H({},t),He(x)),n(4,u=q(t,l)),"language"in x&&n(0,i=x.language),"code"in x&&n(1,o=x.code),"langtag"in x&&n(2,d=x.langtag),"$$scope"in x&&n(5,s=x.$$scope)},e.$$.update=()=>{e.$$.dirty&3&&(ve.registerLanguage(i.name,i.register),n(3,j=ve.highlight(o,{language:i.name}).value))},[i,o,d,j,u,s,a]}class Hn extends De{constructor(t){super(),Le(this,t,Bn,Cn,Ce,{language:0,code:1,langtag:2})}}const Gn=Hn,Pn=``,Kn=Pn;export{Gn as H,Kn as g}; diff --git a/docs/_app/immutable/chunks/index.77720afb.js b/docs/_app/immutable/chunks/index.77720afb.js new file mode 100644 index 0000000..4ace71d --- /dev/null +++ b/docs/_app/immutable/chunks/index.77720afb.js @@ -0,0 +1 @@ +var E=Object.defineProperty;var b=(t,e,n)=>e in t?E(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var _=(t,e,n)=>(b(t,typeof e!="symbol"?e+"":e,n),n);import{E as $,v as c,P as p,h as C,d as I,Q as O,R as v,S as P,T as x,U as R,V as U,W as w,X as V,Y as j,Z as B,_ as L,$ as M}from"./scheduler.d7e45cc8.js";const u=new Set;let d;function z(){d={r:0,c:[],p:d}}function A(){d.r||$(d.c),d=d.p}function N(t,e){t&&t.i&&(u.delete(t),t.i(e))}function D(t,e,n,a){if(t&&t.o){if(u.has(t))return;u.add(t),d.c.push(()=>{u.delete(t),a&&(n&&t.d(1),a())}),t.o(e)}else a&&a()}function F(t){t&&t.c()}function G(t,e){t&&t.l(e)}function Q(t,e,n){const{fragment:a,after_update:i}=t.$$;a&&a.m(e,n),x(()=>{const f=t.$$.on_mount.map(V).filter(v);t.$$.on_destroy?t.$$.on_destroy.push(...f):$(f),t.$$.on_mount=[]}),i.forEach(x)}function T(t,e){const n=t.$$;n.fragment!==null&&(R(n.after_update),$(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function W(t,e){t.$$.dirty[0]===-1&&(j.push(t),B(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const y=m.length?m[0]:g;return s.ctx&&i(s.ctx[r],s.ctx[r]=y)&&(!s.skip_bound&&s.bound[r]&&s.bound[r](y),l&&W(t,r)),g}):[],s.update(),l=!0,$(s.before_update),s.fragment=a?a(s.ctx):!1,e.target){if(e.hydrate){L();const r=C(e.target);s.fragment&&s.fragment.l(r),r.forEach(I)}else s.fragment&&s.fragment.c();e.intro&&N(t.$$.fragment),Q(t,e.target,e.anchor),M(),O()}w(o)}class J{constructor(){_(this,"$$");_(this,"$$set")}$destroy(){T(this,1),this.$destroy=c}$on(e,n){if(!v(n))return c;const a=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return a.push(n),()=>{const i=a.indexOf(n);i!==-1&&a.splice(i,1)}}$set(e){this.$$set&&!P(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const X="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(X);export{J as S,N as a,F as b,A as c,G as d,T as e,z as g,H as i,Q as m,D as t}; diff --git a/docs/_app/immutable/chunks/index.d7cc8d8b.js b/docs/_app/immutable/chunks/index.d7cc8d8b.js deleted file mode 100644 index a47f9b5..0000000 --- a/docs/_app/immutable/chunks/index.d7cc8d8b.js +++ /dev/null @@ -1 +0,0 @@ -function E(){}function Q(t,e){for(const n in e)t[n]=e[n];return t}function O(t){return t()}function L(){return Object.create(null)}function g(t){t.forEach(O)}function q(t){return typeof t=="function"}function gt(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let b;function xt(t,e){return b||(b=document.createElement("a")),b.href=e,t===b.href}function U(t){return Object.keys(t).length===0}function V(t,...e){if(t==null)return E;const n=t.subscribe(...e);return n.unsubscribe?()=>n.unsubscribe():n}function bt(t,e,n){t.$$.on_destroy.push(V(e,n))}function wt(t,e,n,i){if(t){const r=B(t,e,n,i);return t[0](r)}}function B(t,e,n,i){return t[1]&&i?Q(n.ctx.slice(),t[1](i(e))):n.ctx}function Et(t,e,n,i){if(t[2]&&i){const r=t[2](i(n));if(e.dirty===void 0)return r;if(typeof r=="object"){const l=[],s=Math.max(e.dirty.length,r.length);for(let o=0;o32){const e=[],n=t.ctx.length/32;for(let i=0;i>1);n(r)<=i?t=r+1:e=r}return t}function et(t){if(t.hydrate_init)return;t.hydrate_init=!0;let e=t.childNodes;if(t.nodeName==="HEAD"){const c=[];for(let u=0;u0&&e[n[r]].claim_order<=u?r+1:tt(1,r,x=>e[n[x]].claim_order,u))-1;i[c]=n[f]+1;const a=f+1;n[a]=c,r=Math.max(a,r)}const l=[],s=[];let o=e.length-1;for(let c=n[r]+1;c!=0;c=i[c-1]){for(l.push(e[c-1]);o>=c;o--)s.push(e[o]);o--}for(;o>=0;o--)s.push(e[o]);l.reverse(),s.sort((c,u)=>c.claim_order-u.claim_order);for(let c=0,u=0;c=l[u].claim_order;)u++;const f=ut.removeEventListener(e,n,i)}function st(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}const ct=["width","height"];function St(t,e){const n=Object.getOwnPropertyDescriptors(t.__proto__);for(const i in e)e[i]==null?t.removeAttribute(i):i==="style"?t.style.cssText=e[i]:i==="__value"?t.value=t[i]=e[i]:n[i]&&n[i].set&&ct.indexOf(i)===-1?t[i]=e[i]:st(t,i,e[i])}function lt(t){return Array.from(t.childNodes)}function R(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function z(t,e,n,i,r=!1){R(t);const l=(()=>{for(let s=t.claim_info.last_index;s=0;s--){const o=t[s];if(e(o)){const c=n(o);return c===void 0?t.splice(s,1):t[s]=c,r?c===void 0&&t.claim_info.last_index--:t.claim_info.last_index=s,o}}return i()})();return l.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,l}function F(t,e,n,i){return z(t,r=>r.nodeName===e,r=>{const l=[];for(let s=0;sr.removeAttribute(s))},()=>i(e))}function jt(t,e,n){return F(t,e,n,W)}function Lt(t,e,n){return F(t,e,n,G)}function ot(t,e){return z(t,n=>n.nodeType===3,n=>{const i=""+e;if(n.data.startsWith(i)){if(n.data.length!==i.length)return n.splitText(i.length)}else n.data=i},()=>k(e),!0)}function Ct(t){return ot(t," ")}function C(t,e,n){for(let i=n;i0&&n.push(r);return n}class at{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,n,i=null){this.e||(this.is_svg?this.e=G(n.nodeName):this.e=W(n.nodeType===11?"TEMPLATE":n.nodeName),this.t=n.tagName!=="TEMPLATE"?n:n.content,this.c(e)),this.i(i)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let n=0;n{const r=t.$$.callbacks[e];if(r){const l=ut(e,n,{cancelable:i});return r.slice().forEach(s=>{s.call(t,l)}),!l.defaultPrevented}return!0}}const h=[],P=[];let m=[];const D=[],I=Promise.resolve();let N=!1;function J(){N||(N=!0,I.then(K))}function zt(){return J(),I}function A(t){m.push(t)}const T=new Set;let _=0;function K(){if(_!==0)return;const t=y;do{try{for(;_t.indexOf(i)===-1?e.push(i):n.push(i)),n.forEach(i=>i()),m=e}const w=new Set;let d;function Ft(){d={r:0,c:[],p:d}}function It(){d.r||g(d.c),d=d.p}function _t(t,e){t&&t.i&&(w.delete(t),t.i(e))}function Jt(t,e,n,i){if(t&&t.o){if(w.has(t))return;w.add(t),d.c.push(()=>{w.delete(t),i&&(n&&t.d(1),i())}),t.o(e)}else i&&i()}function Kt(t,e){const n={},i={},r={$$scope:1};let l=t.length;for(;l--;){const s=t[l],o=e[l];if(o){for(const c in s)c in o||(i[c]=1);for(const c in o)r[c]||(n[c]=o[c],r[c]=1);t[l]=o}else for(const c in s)r[c]=1}for(const s in i)s in n||(n[s]=void 0);return n}function Qt(t){return typeof t=="object"&&t!==null?t:{}}const ht=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"];[...ht];function Ut(t){t&&t.c()}function Vt(t,e){t&&t.l(e)}function mt(t,e,n,i){const{fragment:r,after_update:l}=t.$$;r&&r.m(e,n),i||A(()=>{const s=t.$$.on_mount.map(O).filter(q);t.$$.on_destroy?t.$$.on_destroy.push(...s):g(s),t.$$.on_mount=[]}),l.forEach(A)}function pt(t,e){const n=t.$$;n.fragment!==null&&(dt(n.after_update),g(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function yt(t,e){t.$$.dirty[0]===-1&&(h.push(t),J(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const j=S.length?S[0]:x;return u.ctx&&r(u.ctx[a],u.ctx[a]=j)&&(!u.skip_bound&&u.bound[a]&&u.bound[a](j),f&&yt(t,a)),x}):[],u.update(),f=!0,g(u.before_update),u.fragment=i?i(u.ctx):!1,e.target){if(e.hydrate){Y();const a=lt(e.target);u.fragment&&u.fragment.l(a),a.forEach($)}else u.fragment&&u.fragment.c();e.intro&&_t(t.$$.fragment),mt(t,e.target,e.anchor,e.customElement),Z(),K()}p(c)}class Yt{$destroy(){pt(this,1),this.$destroy=E}$on(e,n){if(!q(n))return E;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(n),()=>{const r=i.indexOf(n);r!==-1&&i.splice(r,1)}}$set(e){this.$$set&&!U(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}export{mt as A,pt as B,nt as C,E as D,wt as E,qt as F,xt as G,Ot as H,Mt as I,$t as J,vt as K,Et as L,g as M,X as N,bt as O,G as P,Lt as Q,H as R,Yt as S,Ht as T,Q as U,St as V,Kt as W,Nt as X,Tt as Y,Rt as Z,Qt as _,At as a,rt as b,Ct as c,Jt as d,kt as e,It as f,_t as g,$ as h,Xt as i,Gt as j,W as k,jt as l,lt as m,st as n,Wt as o,Dt as p,k as q,ot as r,gt as s,zt as t,Pt as u,Ft as v,P as w,Bt as x,Ut as y,Vt as z}; diff --git a/docs/_app/immutable/chunks/paths.d307dac8.js b/docs/_app/immutable/chunks/paths.d307dac8.js deleted file mode 100644 index 5e8a04d..0000000 --- a/docs/_app/immutable/chunks/paths.d307dac8.js +++ /dev/null @@ -1 +0,0 @@ -var s;const a=((s=globalThis.__sveltekit_oyblue)==null?void 0:s.base)??"";var e;const t=((e=globalThis.__sveltekit_oyblue)==null?void 0:e.assets)??a;export{t as a,a as b}; diff --git a/docs/_app/immutable/chunks/paths.d4a6803e.js b/docs/_app/immutable/chunks/paths.d4a6803e.js new file mode 100644 index 0000000..fc60d23 --- /dev/null +++ b/docs/_app/immutable/chunks/paths.d4a6803e.js @@ -0,0 +1 @@ +var s;const a=((s=globalThis.__sveltekit_tjogb7)==null?void 0:s.base)??"";var t;const e=((t=globalThis.__sveltekit_tjogb7)==null?void 0:t.assets)??a;export{e as a,a as b}; diff --git a/docs/_app/immutable/chunks/scheduler.d7e45cc8.js b/docs/_app/immutable/chunks/scheduler.d7e45cc8.js new file mode 100644 index 0000000..51c17d2 --- /dev/null +++ b/docs/_app/immutable/chunks/scheduler.d7e45cc8.js @@ -0,0 +1 @@ +var q=Object.defineProperty;var B=(t,e,n)=>e in t?q(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var f=(t,e,n)=>(B(t,typeof e!="symbol"?e+"":e,n),n);function G(){}function R(t,e){for(const n in e)t[n]=e[n];return t}function z(t){return t()}function lt(){return Object.create(null)}function F(t){t.forEach(z)}function rt(t){return typeof t=="function"}function ct(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let m;function ot(t,e){return t===e?!0:(m||(m=document.createElement("a")),m.href=e,t===m.href)}function ut(t){return Object.keys(t).length===0}function W(t,...e){if(t==null){for(const i of e)i(void 0);return G}const n=t.subscribe(...e);return n.unsubscribe?()=>n.unsubscribe():n}function at(t,e,n){t.$$.on_destroy.push(W(e,n))}function ft(t,e,n,i){if(t){const s=L(t,e,n,i);return t[0](s)}}function L(t,e,n,i){return t[1]&&i?R(n.ctx.slice(),t[1](i(e))):n.ctx}function _t(t,e,n,i){if(t[2]&&i){const s=t[2](i(n));if(e.dirty===void 0)return s;if(typeof s=="object"){const c=[],l=Math.max(e.dirty.length,s.length);for(let o=0;o32){const e=[],n=t.ctx.length/32;for(let i=0;i>1);n(s)<=i?t=s+1:e=s}return t}function J(t){if(t.hydrate_init)return;t.hydrate_init=!0;let e=t.childNodes;if(t.nodeName==="HEAD"){const r=[];for(let u=0;u0&&e[n[s]].claim_order<=u?s+1:I(1,s,O=>e[n[O]].claim_order,u))-1;i[r]=n[a]+1;const w=a+1;n[w]=r,s=Math.max(w,s)}const c=[],l=[];let o=e.length-1;for(let r=n[s]+1;r!=0;r=i[r-1]){for(c.push(e[r-1]);o>=r;o--)l.push(e[o]);o--}for(;o>=0;o--)l.push(e[o]);c.reverse(),l.sort((r,u)=>r.claim_order-u.claim_order);for(let r=0,u=0;r=c[u].claim_order;)u++;const a=ut.removeEventListener(e,n,i)}function V(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}const X=["width","height"];function vt(t,e){const n=Object.getOwnPropertyDescriptors(t.__proto__);for(const i in e)e[i]==null?t.removeAttribute(i):i==="style"?t.style.cssText=e[i]:i==="__value"?t.value=t[i]=e[i]:n[i]&&n[i].set&&X.indexOf(i)===-1?t[i]=e[i]:V(t,i,e[i])}function Tt(t){return t.dataset.svelteH}function wt(t){return Array.from(t.childNodes)}function j(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function P(t,e,n,i,s=!1){j(t);const c=(()=>{for(let l=t.claim_info.last_index;l=0;l--){const o=t[l];if(e(o)){const r=n(o);return r===void 0?t.splice(l,1):t[l]=r,s?r===void 0&&t.claim_info.last_index--:t.claim_info.last_index=l,o}}return i()})();return c.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,c}function C(t,e,n,i){return P(t,s=>s.nodeName===e,s=>{const c=[];for(let l=0;ls.removeAttribute(l))},()=>i(e))}function Nt(t,e,n){return C(t,e,n,M)}function At(t,e,n){return C(t,e,n,S)}function Y(t,e){return P(t,n=>n.nodeType===3,n=>{const i=""+e;if(n.data.startsWith(i)){if(n.data.length!==i.length)return n.splitText(i.length)}else n.data=i},()=>v(e),!0)}function kt(t){return Y(t," ")}function N(t,e,n){for(let i=n;i0&&n.push(s);return n}class ${constructor(e=!1){f(this,"is_svg",!1);f(this,"e");f(this,"n");f(this,"t");f(this,"a");this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,n,i=null){this.e||(this.is_svg?this.e=S(n.nodeName):this.e=M(n.nodeType===11?"TEMPLATE":n.nodeName),this.t=n.tagName!=="TEMPLATE"?n:n.content,this.c(e)),this.i(i)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let n=0;n{const s=t.$$.callbacks[e];if(s){const c=Z(e,n,{cancelable:i});return s.slice().forEach(l=>{l.call(t,c)}),!c.defaultPrevented}return!0}}const d=[],k=[];let h=[];const H=[],D=Promise.resolve();let E=!1;function tt(){E||(E=!0,D.then(nt))}function qt(){return tt(),D}function et(t){h.push(t)}const b=new Set;let _=0;function nt(){if(_!==0)return;const t=p;do{try{for(;_t.indexOf(i)===-1?e.push(i):n.push(i)),n.forEach(i=>i()),h=e}export{gt as $,Et as A,ht as B,dt as C,_t as D,F as E,at as F,S as G,At as H,A as I,Ht as J,R as K,vt as L,pt as M,mt as N,Ot as O,lt as P,nt as Q,rt as R,ut as S,et as T,Bt as U,p as V,g as W,z as X,d as Y,tt as Z,yt as _,bt as a,Dt as b,kt as c,x as d,xt as e,M as f,Nt as g,wt as h,U as i,V as j,Mt as k,v as l,Y as m,Lt as n,Ct as o,k as p,Pt as q,Tt as r,ct as s,qt as t,K as u,G as v,ft as w,jt as x,ot as y,St as z}; diff --git a/docs/_app/immutable/chunks/singletons.77faaafc.js b/docs/_app/immutable/chunks/singletons.77faaafc.js deleted file mode 100644 index 1c44989..0000000 --- a/docs/_app/immutable/chunks/singletons.77faaafc.js +++ /dev/null @@ -1 +0,0 @@ -import{D as d,s as k}from"./index.d7cc8d8b.js";import{a as m}from"./paths.d307dac8.js";const c=[];function p(e,t=d){let n;const s=new Set;function a(o){if(k(e,o)&&(e=o,n)){const u=!c.length;for(const i of s)i[1](),c.push(i,e);if(u){for(let i=0;i{s.delete(i),s.size===0&&n&&(n(),n=null)}}return{set:a,update:l,subscribe:r}}const E="1718486797719",R="sveltekit:snapshot",y="sveltekit:scroll",I="sveltekit:index",b={tap:1,hover:2,viewport:3,eager:4,off:-1};function T(e){let t=e.baseURI;if(!t){const n=e.getElementsByTagName("base");t=n.length?n[0].href:e.URL}return t}function x(){return{x:pageXOffset,y:pageYOffset}}function f(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const _={...b,"":b.hover};function h(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function O(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=h(e)}}function U(e,t){let n;try{n=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI)}catch{}const s=e instanceof SVGAElement?e.target.baseVal:e.target,a=!n||!!s||v(n,t)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),l=(n==null?void 0:n.origin)===location.origin&&e.hasAttribute("download");return{url:n,external:a,target:s,download:l}}function L(e){let t=null,n=null,s=null,a=null,l=null,r=null,o=e;for(;o&&o!==document.documentElement;)s===null&&(s=f(o,"preload-code")),a===null&&(a=f(o,"preload-data")),t===null&&(t=f(o,"keepfocus")),n===null&&(n=f(o,"noscroll")),l===null&&(l=f(o,"reload")),r===null&&(r=f(o,"replacestate")),o=h(o);return{preload_code:_[s??"off"],preload_data:_[a??"off"],keep_focus:t==="off"?!1:t===""?!0:null,noscroll:n==="off"?!1:n===""?!0:null,reload:l==="off"?!1:l===""?!0:null,replace_state:r==="off"?!1:r===""?!0:null}}function g(e){const t=p(e);let n=!0;function s(){n=!0,t.update(r=>r)}function a(r){n=!1,t.set(r)}function l(r){let o;return t.subscribe(u=>{(o===void 0||n&&u!==o)&&r(o=u)})}return{notify:s,set:a,subscribe:l}}function S(){const{set:e,subscribe:t}=p(!1);let n;async function s(){clearTimeout(n);try{const a=await fetch(`${m}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const r=(await a.json()).version!==E;return r&&(e(!0),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:s}}function v(e,t){return e.origin!==location.origin||!e.pathname.startsWith(t)}function N(e){e.client}const P={url:g({}),page:g({}),navigating:p(null),updated:S()};export{I,b as P,y as S,R as a,U as b,L as c,x as d,N as e,O as f,T as g,v as i,P as s}; diff --git a/docs/_app/immutable/chunks/singletons.faf0a52c.js b/docs/_app/immutable/chunks/singletons.faf0a52c.js new file mode 100644 index 0000000..50e3667 --- /dev/null +++ b/docs/_app/immutable/chunks/singletons.faf0a52c.js @@ -0,0 +1 @@ +import{v as d,s as m}from"./scheduler.d7e45cc8.js";import{a as k}from"./paths.d4a6803e.js";const u=[];function p(e,t=d){let n;const o=new Set;function r(s){if(m(e,s)&&(e=s,n)){const c=!u.length;for(const i of o)i[1](),u.push(i,e);if(c){for(let i=0;i{o.delete(i),o.size===0&&n&&(n(),n=null)}}return{set:r,update:l,subscribe:a}}const v="1727506483559",S="sveltekit:snapshot",y="sveltekit:scroll",I="sveltekit:index",_={tap:1,hover:2,viewport:3,eager:4,off:-1};function T(e){let t=e.baseURI;if(!t){const n=e.getElementsByTagName("base");t=n.length?n[0].href:e.URL}return t}function x(){return{x:pageXOffset,y:pageYOffset}}function f(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const b={..._,"":_.hover};function h(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function O(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=h(e)}}function U(e,t){let n;try{n=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI)}catch{}const o=e instanceof SVGAElement?e.target.baseVal:e.target,r=!n||!!o||w(n,t)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),l=(n==null?void 0:n.origin)===location.origin&&e.hasAttribute("download");return{url:n,external:r,target:o,download:l}}function L(e){let t=null,n=null,o=null,r=null,l=null,a=null,s=e;for(;s&&s!==document.documentElement;)o===null&&(o=f(s,"preload-code")),r===null&&(r=f(s,"preload-data")),t===null&&(t=f(s,"keepfocus")),n===null&&(n=f(s,"noscroll")),l===null&&(l=f(s,"reload")),a===null&&(a=f(s,"replacestate")),s=h(s);function c(i){switch(i){case"":case"true":return!0;case"off":case"false":return!1;default:return null}}return{preload_code:b[o??"off"],preload_data:b[r??"off"],keep_focus:c(t),noscroll:c(n),reload:c(l),replace_state:c(a)}}function g(e){const t=p(e);let n=!0;function o(){n=!0,t.update(a=>a)}function r(a){n=!1,t.set(a)}function l(a){let s;return t.subscribe(c=>{(s===void 0||n&&c!==s)&&a(s=c)})}return{notify:o,set:r,subscribe:l}}function E(){const{set:e,subscribe:t}=p(!1);let n;async function o(){clearTimeout(n);try{const r=await fetch(`${k}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const a=(await r.json()).version!==v;return a&&(e(!0),clearTimeout(n)),a}catch{return!1}}return{subscribe:t,check:o}}function w(e,t){return e.origin!==location.origin||!e.pathname.startsWith(t)}function N(e){e.client}const P={url:g({}),page:g({}),navigating:p(null),updated:E()};export{I,_ as P,y as S,S as a,U as b,L as c,P as d,N as e,O as f,T as g,w as i,x as s}; diff --git a/docs/_app/immutable/chunks/typescript.09c48802.js b/docs/_app/immutable/chunks/typescript.09c48802.js new file mode 100644 index 0000000..461644b --- /dev/null +++ b/docs/_app/immutable/chunks/typescript.09c48802.js @@ -0,0 +1 @@ +const T="[A-Za-z$_][0-9A-Za-z$_]*",L=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],x=["true","false","null","undefined","NaN","Infinity"],D=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],k=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],B=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],h=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],U=[].concat(B,D,k);function W(e){const n=e.regex,f=(s,{after:i})=>{const b="",end:""},y=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(s,i)=>{const b=s[0].length+s.index,m=s.input[b];if(m==="<"||m===","){i.ignoreMatch();return}m===">"&&(f(s,{after:b})||i.ignoreMatch());let I;const w=s.input.substring(b);if(I=w.match(/^\s*=/)){i.ignoreMatch();return}if((I=w.match(/^\s+extends\s+/))&&I.index===0){i.ignoreMatch();return}}},c={$pattern:T,keyword:L,literal:x,built_in:U,"variable.language":h},g="[0-9](_?[0-9])*",o=`\\.(${g})`,l="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",A={className:"number",variants:[{begin:`(\\b(${l})((${o})|\\.)?|(${o}))[eE][+-]?(${g})\\b`},{begin:`\\b(${l})\\b((${o})\\b|\\.)?|(${o})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},_={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"xml"}},S={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"css"}},E={begin:"gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,a],subLanguage:"graphql"}},N={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,a]},R={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},C=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,S,E,N,{match:/\$\d+/},A];a.contains=C.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(C)});const O=[].concat(R,a.contains),p=O.concat([{begin:/\(/,end:/\)/,keywords:c,contains:["self"].concat(O)}]),d={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:p},P={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,n.concat(t,"(",n.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},M={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...D,...k]}},$={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},F={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[d],illegal:/%/},Z={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function z(s){return n.concat("(?!",s.join("|"),")")}const G={match:n.concat(/\b/,z([...B,"super","import"]),t,n.lookahead(/\(/)),className:"title.function",relevance:0},K={begin:n.concat(/\./,n.lookahead(n.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},H={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},d]},v="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",Y={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(v)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[d]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:p,CLASS_REFERENCE:M},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),$,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,_,S,E,N,R,{match:/\$\d+/},A,M,{className:"attr",begin:t+n.lookahead(":"),relevance:0},Y,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[R,e.REGEXP_MODE,{className:"function",begin:v,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:u.begin,end:u.end},{match:y},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},F,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[d,e.inherit(e.TITLE_MODE,{begin:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},K,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[d]},G,Z,P,H,{match:/\$[(.]/}]}}function J(e){const n=W(e),f=T,t=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],u={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[n.exports.CLASS_REFERENCE]},y={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:t},contains:[n.exports.CLASS_REFERENCE]},r={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},c=["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"],g={$pattern:T,keyword:L.concat(c),literal:x,built_in:U.concat(t),"variable.language":h},o={className:"meta",begin:"@"+f},l=(a,_,S)=>{const E=a.contains.findIndex(N=>N.label===_);if(E===-1)throw new Error("can not find mode to replace");a.contains.splice(E,1,S)};Object.assign(n.keywords,g),n.exports.PARAMS_CONTAINS.push(o),n.contains=n.contains.concat([o,u,y]),l(n,"shebang",e.SHEBANG()),l(n,"use_strict",r);const A=n.contains.find(a=>a.label==="func.def");return A.relevance=0,Object.assign(n,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),n}const X={name:"typescript",register:J},Q=X;export{Q as t}; diff --git a/docs/_app/immutable/chunks/typescript.7dd1ec19.js b/docs/_app/immutable/chunks/typescript.7dd1ec19.js deleted file mode 100644 index 1e400b2..0000000 --- a/docs/_app/immutable/chunks/typescript.7dd1ec19.js +++ /dev/null @@ -1 +0,0 @@ -const m="[A-Za-z$_][0-9A-Za-z$_]*",x=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],L=["true","false","null","undefined","NaN","Infinity"],D=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],k=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],h=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],B=["arguments","this","super","console","window","document","localStorage","module","global"],U=[].concat(h,D,k);function H(n){const e=n.regex,T=(s,{after:i})=>{const b="",end:""},y=/<[A-Za-z0-9\\._:-]+\s*\/>/,r={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(s,i)=>{const b=s[0].length+s.index,S=s.input[b];if(S==="<"||S===","){i.ignoreMatch();return}S===">"&&(T(s,{after:b})||i.ignoreMatch());let p;const w=s.input.substring(b);if(p=w.match(/^\s*=/)){i.ignoreMatch();return}if((p=w.match(/^\s+extends\s+/))&&p.index===0){i.ignoreMatch();return}}},c={$pattern:m,keyword:x,literal:L,built_in:U,"variable.language":B},g="[0-9](_?[0-9])*",o=`\\.(${g})`,l="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",_={className:"number",variants:[{begin:`(\\b(${l})((${o})|\\.)?|(${o}))[eE][+-]?(${g})\\b`},{begin:`\\b(${l})\\b((${o})\\b|\\.)?|(${o})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},a={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},A={begin:"html`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,a],subLanguage:"xml"}},N={begin:"css`",end:"",starts:{end:"`",returnEnd:!1,contains:[n.BACKSLASH_ESCAPE,a],subLanguage:"css"}},E={className:"string",begin:"`",end:"`",contains:[n.BACKSLASH_ESCAPE,a]},f={className:"comment",variants:[n.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:t+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),n.C_BLOCK_COMMENT_MODE,n.C_LINE_COMMENT_MODE]},O=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,A,N,E,{match:/\$\d+/},_];a.contains=O.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(O)});const C=[].concat(f,a.contains),R=C.concat([{begin:/\(/,end:/\)/,keywords:c,contains:["self"].concat(C)}]),d={className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:R},$={variants:[{match:[/class/,/\s+/,t,/\s+/,/extends/,/\s+/,e.concat(t,"(",e.concat(/\./,t),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,t],scope:{1:"keyword",3:"title.class"}}]},v={relevance:0,match:e.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...D,...k]}},P={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},F={variants:[{match:[/function/,/\s+/,t,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[d],illegal:/%/},Z={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function z(s){return e.concat("(?!",s.join("|"),")")}const G={match:e.concat(/\b/,z([...h,"super","import"]),t,e.lookahead(/\(/)),className:"title.function",relevance:0},K={begin:e.concat(/\./,e.lookahead(e.concat(t,/(?![0-9A-Za-z$_(])/))),end:t,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},Y={match:[/get|set/,/\s+/,t,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},d]},M="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+n.UNDERSCORE_IDENT_RE+")\\s*=>",W={match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,e.lookahead(M)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[d]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:R,CLASS_REFERENCE:v},illegal:/#(?![$_A-z])/,contains:[n.SHEBANG({label:"shebang",binary:"node",relevance:5}),P,n.APOS_STRING_MODE,n.QUOTE_STRING_MODE,A,N,E,f,{match:/\$\d+/},_,v,{className:"attr",begin:t+e.lookahead(":"),relevance:0},W,{begin:"("+n.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[f,n.REGEXP_MODE,{className:"function",begin:M,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:n.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:R}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:u.begin,end:u.end},{match:y},{begin:r.begin,"on:begin":r.isTrulyOpeningTag,end:r.end}],subLanguage:"xml",contains:[{begin:r.begin,end:r.end,skip:!0,contains:["self"]}]}]},F,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+n.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[d,n.inherit(n.TITLE_MODE,{begin:t,className:"title.function"})]},{match:/\.\.\./,relevance:0},K,{match:"\\$"+t,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[d]},G,Z,$,Y,{match:/\$[(.]/}]}}function J(n){const e=H(n),T=m,t=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],u={beginKeywords:"namespace",end:/\{/,excludeEnd:!0,contains:[e.exports.CLASS_REFERENCE]},y={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:t},contains:[e.exports.CLASS_REFERENCE]},r={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},c=["type","namespace","interface","public","private","protected","implements","declare","abstract","readonly","enum","override"],g={$pattern:m,keyword:x.concat(c),literal:L,built_in:U.concat(t),"variable.language":B},o={className:"meta",begin:"@"+T},l=(a,A,N)=>{const E=a.contains.findIndex(I=>I.label===A);if(E===-1)throw new Error("can not find mode to replace");a.contains.splice(E,1,N)};Object.assign(e.keywords,g),e.exports.PARAMS_CONTAINS.push(o),e.contains=e.contains.concat([o,u,y]),l(e,"shebang",n.SHEBANG()),l(e,"use_strict",r);const _=e.contains.find(a=>a.label==="func.def");return _.relevance=0,Object.assign(e,{name:"TypeScript",aliases:["ts","tsx"]}),e}const X={name:"typescript",register:J},V=X;export{V as t}; diff --git a/docs/_app/immutable/entry/app.86733a28.js b/docs/_app/immutable/entry/app.86733a28.js deleted file mode 100644 index 15d4d2c..0000000 --- a/docs/_app/immutable/entry/app.86733a28.js +++ /dev/null @@ -1 +0,0 @@ -import{S as B,i as C,s as U,a as j,e as d,c as z,b as v,d as g,f as b,g as E,h,j as W,o as F,k as G,l as H,m as J,n as D,p,q as K,r as M,u as Q,v as A,w as I,x as R,y as w,z as O,A as L,B as P}from"../chunks/index.d7cc8d8b.js";const X="modulepreload",Y=function(_,e){return new URL(_,e).href},T={},l=function(e,i,r){if(!i||i.length===0)return e();const n=document.getElementsByTagName("link");return Promise.all(i.map(u=>{if(u=Y(u,r),u in T)return;T[u]=!0;const t=u.endsWith(".css"),o=t?'[rel="stylesheet"]':"";if(!!r)for(let a=n.length-1;a>=0;a--){const f=n[a];if(f.href===u&&(!t||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${o}`))return;const s=document.createElement("link");if(s.rel=t?"stylesheet":X,t||(s.as="script",s.crossOrigin=""),s.href=u,document.head.appendChild(s),t)return new Promise((a,f)=>{s.addEventListener("load",a),s.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${u}`)))})})).then(()=>e())},re={};function Z(_){let e,i,r;var n=_[1][0];function u(t){return{props:{data:t[3],form:t[2]}}}return n&&(e=R(n,u(_)),_[12](e)),{c(){e&&w(e.$$.fragment),i=d()},l(t){e&&O(e.$$.fragment,t),i=d()},m(t,o){e&&L(e,t,o),v(t,i,o),r=!0},p(t,o){const m={};if(o&8&&(m.data=t[3]),o&4&&(m.form=t[2]),o&2&&n!==(n=t[1][0])){if(e){A();const s=e;g(s.$$.fragment,1,0,()=>{P(s,1)}),b()}n?(e=R(n,u(t)),t[12](e),w(e.$$.fragment),E(e.$$.fragment,1),L(e,i.parentNode,i)):e=null}else n&&e.$set(m)},i(t){r||(e&&E(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){_[12](null),t&&h(i),e&&P(e,t)}}}function $(_){let e,i,r;var n=_[1][0];function u(t){return{props:{data:t[3],$$slots:{default:[x]},$$scope:{ctx:t}}}}return n&&(e=R(n,u(_)),_[11](e)),{c(){e&&w(e.$$.fragment),i=d()},l(t){e&&O(e.$$.fragment,t),i=d()},m(t,o){e&&L(e,t,o),v(t,i,o),r=!0},p(t,o){const m={};if(o&8&&(m.data=t[3]),o&8215&&(m.$$scope={dirty:o,ctx:t}),o&2&&n!==(n=t[1][0])){if(e){A();const s=e;g(s.$$.fragment,1,0,()=>{P(s,1)}),b()}n?(e=R(n,u(t)),t[11](e),w(e.$$.fragment),E(e.$$.fragment,1),L(e,i.parentNode,i)):e=null}else n&&e.$set(m)},i(t){r||(e&&E(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){_[11](null),t&&h(i),e&&P(e,t)}}}function x(_){let e,i,r;var n=_[1][1];function u(t){return{props:{data:t[4],form:t[2]}}}return n&&(e=R(n,u(_)),_[10](e)),{c(){e&&w(e.$$.fragment),i=d()},l(t){e&&O(e.$$.fragment,t),i=d()},m(t,o){e&&L(e,t,o),v(t,i,o),r=!0},p(t,o){const m={};if(o&16&&(m.data=t[4]),o&4&&(m.form=t[2]),o&2&&n!==(n=t[1][1])){if(e){A();const s=e;g(s.$$.fragment,1,0,()=>{P(s,1)}),b()}n?(e=R(n,u(t)),t[10](e),w(e.$$.fragment),E(e.$$.fragment,1),L(e,i.parentNode,i)):e=null}else n&&e.$set(m)},i(t){r||(e&&E(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){_[10](null),t&&h(i),e&&P(e,t)}}}function V(_){let e,i=_[6]&&y(_);return{c(){e=G("div"),i&&i.c(),this.h()},l(r){e=H(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var n=J(e);i&&i.l(n),n.forEach(h),this.h()},h(){D(e,"id","svelte-announcer"),D(e,"aria-live","assertive"),D(e,"aria-atomic","true"),p(e,"position","absolute"),p(e,"left","0"),p(e,"top","0"),p(e,"clip","rect(0 0 0 0)"),p(e,"clip-path","inset(50%)"),p(e,"overflow","hidden"),p(e,"white-space","nowrap"),p(e,"width","1px"),p(e,"height","1px")},m(r,n){v(r,e,n),i&&i.m(e,null)},p(r,n){r[6]?i?i.p(r,n):(i=y(r),i.c(),i.m(e,null)):i&&(i.d(1),i=null)},d(r){r&&h(e),i&&i.d()}}}function y(_){let e;return{c(){e=K(_[7])},l(i){e=M(i,_[7])},m(i,r){v(i,e,r)},p(i,r){r&128&&Q(e,i[7])},d(i){i&&h(e)}}}function ee(_){let e,i,r,n,u;const t=[$,Z],o=[];function m(a,f){return a[1][1]?0:1}e=m(_),i=o[e]=t[e](_);let s=_[5]&&V(_);return{c(){i.c(),r=j(),s&&s.c(),n=d()},l(a){i.l(a),r=z(a),s&&s.l(a),n=d()},m(a,f){o[e].m(a,f),v(a,r,f),s&&s.m(a,f),v(a,n,f),u=!0},p(a,[f]){let k=e;e=m(a),e===k?o[e].p(a,f):(A(),g(o[k],1,1,()=>{o[k]=null}),b(),i=o[e],i?i.p(a,f):(i=o[e]=t[e](a),i.c()),E(i,1),i.m(r.parentNode,r)),a[5]?s?s.p(a,f):(s=V(a),s.c(),s.m(n.parentNode,n)):s&&(s.d(1),s=null)},i(a){u||(E(i),u=!0)},o(a){g(i),u=!1},d(a){o[e].d(a),a&&h(r),s&&s.d(a),a&&h(n)}}}function te(_,e,i){let{stores:r}=e,{page:n}=e,{constructors:u}=e,{components:t=[]}=e,{form:o}=e,{data_0:m=null}=e,{data_1:s=null}=e;W(r.page.notify);let a=!1,f=!1,k=null;F(()=>{const c=r.page.subscribe(()=>{a&&(i(6,f=!0),i(7,k=document.title||"untitled page"))});return i(5,a=!0),c});function q(c){I[c?"unshift":"push"](()=>{t[1]=c,i(0,t)})}function N(c){I[c?"unshift":"push"](()=>{t[0]=c,i(0,t)})}function S(c){I[c?"unshift":"push"](()=>{t[0]=c,i(0,t)})}return _.$$set=c=>{"stores"in c&&i(8,r=c.stores),"page"in c&&i(9,n=c.page),"constructors"in c&&i(1,u=c.constructors),"components"in c&&i(0,t=c.components),"form"in c&&i(2,o=c.form),"data_0"in c&&i(3,m=c.data_0),"data_1"in c&&i(4,s=c.data_1)},_.$$.update=()=>{_.$$.dirty&768&&r.page.set(n)},[t,u,o,m,s,a,f,k,r,n,q,N,S]}class ne extends B{constructor(e){super(),C(this,e,te,ee,U,{stores:8,page:9,constructors:1,components:0,form:2,data_0:3,data_1:4})}}const oe=[()=>l(()=>import("../nodes/0.79bba96c.js"),["../nodes/0.79bba96c.js","../chunks/index.d7cc8d8b.js","../chunks/Icon.b8c1070a.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/1.54985b8e.js"),["../nodes/1.54985b8e.js","../chunks/index.d7cc8d8b.js","../chunks/singletons.77faaafc.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/2.60fef664.js"),["../nodes/2.60fef664.js","../chunks/index.d7cc8d8b.js","../chunks/Icon.b8c1070a.js"],import.meta.url),()=>l(()=>import("../nodes/3.40567583.js"),["../nodes/3.40567583.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/4.a6408b4a.js"),["../nodes/4.a6408b4a.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/5.1b2c12d8.js"),["../nodes/5.1b2c12d8.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/6.f5c121f7.js"),["../nodes/6.f5c121f7.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/7.c51626ed.js"),["../nodes/7.c51626ed.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/8.9957d705.js"),["../nodes/8.9957d705.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/9.b2d1d902.js"),["../nodes/9.b2d1d902.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/10.c52e4994.js"),["../nodes/10.c52e4994.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/11.223541f1.js"),["../nodes/11.223541f1.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/12.5662eea9.js"),["../nodes/12.5662eea9.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/13.fda82904.js"),["../nodes/13.fda82904.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/14.cf29e398.js"),["../nodes/14.cf29e398.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/15.4cc074e7.js"),["../nodes/15.4cc074e7.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/16.d3ee0c7c.js"),["../nodes/16.d3ee0c7c.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js"],import.meta.url),()=>l(()=>import("../nodes/17.83da61bb.js"),["../nodes/17.83da61bb.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/bash.2b754df6.js","../chunks/typescript.7dd1ec19.js"],import.meta.url),()=>l(()=>import("../nodes/18.c2536513.js"),["../nodes/18.c2536513.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/19.fefd0bc2.js"),["../nodes/19.fefd0bc2.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/20.5b87b0c3.js"),["../nodes/20.5b87b0c3.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/21.2ea02312.js"),["../nodes/21.2ea02312.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/22.49022b90.js"),["../nodes/22.49022b90.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/23.d5661c6c.js"),["../nodes/23.d5661c6c.js","../chunks/index.d7cc8d8b.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/24.c4d2b8e8.js"),["../nodes/24.c4d2b8e8.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/25.73bae614.js"),["../nodes/25.73bae614.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url),()=>l(()=>import("../nodes/26.5aa95251.js"),["../nodes/26.5aa95251.js","../chunks/index.d7cc8d8b.js","../chunks/github.df9008b1.js","../assets/github.c47a857b.css","../chunks/typescript.7dd1ec19.js","../chunks/paths.d307dac8.js"],import.meta.url)],se=[],_e={"/":[2],"/packages/client-node":[4],"/packages/client":[3],"/packages/driver-mysql":[5],"/packages/driver-postgresql":[6],"/packages/driver-sqlite3":[7],"/packages/guid":[8],"/packages/nymph":[9],"/packages/pubsub":[10],"/packages/query-parser":[11],"/packages/server":[12],"/packages/sorter":[13],"/packages/tilmeld-client":[15],"/packages/tilmeld-components":[16],"/packages/tilmeld-setup":[17],"/packages/tilmeld":[14],"/user-guide/creating-entities":[18],"/user-guide/defining-entities":[19],"/user-guide/entity-class":[20],"/user-guide/entity-querying":[21],"/user-guide/export-and-import":[22],"/user-guide/introduction":[23],"/user-guide/subscribing-to-queries":[24],"/user-guide/transactions":[25],"/user-guide/uids":[26]},ae={handleError:({error:_})=>{console.error(_)}};export{_e as dictionary,ae as hooks,re as matchers,oe as nodes,ne as root,se as server_loads}; diff --git a/docs/_app/immutable/entry/app.8aae91ec.js b/docs/_app/immutable/entry/app.8aae91ec.js new file mode 100644 index 0000000..3399531 --- /dev/null +++ b/docs/_app/immutable/entry/app.8aae91ec.js @@ -0,0 +1 @@ +import{s as C,a as B,e as p,c as U,i as v,d as g,b as j,o as W,f as z,g as F,h as G,j as I,k as d,l as H,m as J,n as K,t as M,p as O,q as w}from"../chunks/scheduler.d7e45cc8.js";import{S as Q,i as X,t as h,c as L,a as E,g as D,b as R,d as T,m as P,e as b}from"../chunks/index.77720afb.js";const Y="modulepreload",Z=function(_){return"/"+_},V={},l=function(e,i,r){if(!i||i.length===0)return e();const n=document.getElementsByTagName("link");return Promise.all(i.map(c=>{if(c=Z(c),c in V)return;V[c]=!0;const t=c.endsWith(".css"),s=t?'[rel="stylesheet"]':"";if(!!r)for(let a=n.length-1;a>=0;a--){const m=n[a];if(m.href===c&&(!t||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${s}`))return;const o=document.createElement("link");if(o.rel=t?"stylesheet":Y,t||(o.as="script",o.crossOrigin=""),o.href=c,document.head.appendChild(o),t)return new Promise((a,m)=>{o.addEventListener("load",a),o.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${c}`)))})})).then(()=>e()).catch(c=>{const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=c,window.dispatchEvent(t),!t.defaultPrevented)throw c})},se={};function $(_){let e,i,r;var n=_[1][0];function c(t){return{props:{data:t[3],form:t[2]}}}return n&&(e=w(n,c(_)),_[12](e)),{c(){e&&R(e.$$.fragment),i=p()},l(t){e&&T(e.$$.fragment,t),i=p()},m(t,s){e&&P(e,t,s),v(t,i,s),r=!0},p(t,s){const f={};if(s&8&&(f.data=t[3]),s&4&&(f.form=t[2]),s&2&&n!==(n=t[1][0])){if(e){D();const o=e;h(o.$$.fragment,1,0,()=>{b(o,1)}),L()}n?(e=w(n,c(t)),t[12](e),R(e.$$.fragment),E(e.$$.fragment,1),P(e,i.parentNode,i)):e=null}else n&&e.$set(f)},i(t){r||(e&&E(e.$$.fragment,t),r=!0)},o(t){e&&h(e.$$.fragment,t),r=!1},d(t){t&&g(i),_[12](null),e&&b(e,t)}}}function x(_){let e,i,r;var n=_[1][0];function c(t){return{props:{data:t[3],$$slots:{default:[ee]},$$scope:{ctx:t}}}}return n&&(e=w(n,c(_)),_[11](e)),{c(){e&&R(e.$$.fragment),i=p()},l(t){e&&T(e.$$.fragment,t),i=p()},m(t,s){e&&P(e,t,s),v(t,i,s),r=!0},p(t,s){const f={};if(s&8&&(f.data=t[3]),s&8215&&(f.$$scope={dirty:s,ctx:t}),s&2&&n!==(n=t[1][0])){if(e){D();const o=e;h(o.$$.fragment,1,0,()=>{b(o,1)}),L()}n?(e=w(n,c(t)),t[11](e),R(e.$$.fragment),E(e.$$.fragment,1),P(e,i.parentNode,i)):e=null}else n&&e.$set(f)},i(t){r||(e&&E(e.$$.fragment,t),r=!0)},o(t){e&&h(e.$$.fragment,t),r=!1},d(t){t&&g(i),_[11](null),e&&b(e,t)}}}function ee(_){let e,i,r;var n=_[1][1];function c(t){return{props:{data:t[4],form:t[2]}}}return n&&(e=w(n,c(_)),_[10](e)),{c(){e&&R(e.$$.fragment),i=p()},l(t){e&&T(e.$$.fragment,t),i=p()},m(t,s){e&&P(e,t,s),v(t,i,s),r=!0},p(t,s){const f={};if(s&16&&(f.data=t[4]),s&4&&(f.form=t[2]),s&2&&n!==(n=t[1][1])){if(e){D();const o=e;h(o.$$.fragment,1,0,()=>{b(o,1)}),L()}n?(e=w(n,c(t)),t[10](e),R(e.$$.fragment),E(e.$$.fragment,1),P(e,i.parentNode,i)):e=null}else n&&e.$set(f)},i(t){r||(e&&E(e.$$.fragment,t),r=!0)},o(t){e&&h(e.$$.fragment,t),r=!1},d(t){t&&g(i),_[10](null),e&&b(e,t)}}}function A(_){let e,i=_[6]&&y(_);return{c(){e=z("div"),i&&i.c(),this.h()},l(r){e=F(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var n=G(e);i&&i.l(n),n.forEach(g),this.h()},h(){I(e,"id","svelte-announcer"),I(e,"aria-live","assertive"),I(e,"aria-atomic","true"),d(e,"position","absolute"),d(e,"left","0"),d(e,"top","0"),d(e,"clip","rect(0 0 0 0)"),d(e,"clip-path","inset(50%)"),d(e,"overflow","hidden"),d(e,"white-space","nowrap"),d(e,"width","1px"),d(e,"height","1px")},m(r,n){v(r,e,n),i&&i.m(e,null)},p(r,n){r[6]?i?i.p(r,n):(i=y(r),i.c(),i.m(e,null)):i&&(i.d(1),i=null)},d(r){r&&g(e),i&&i.d()}}}function y(_){let e;return{c(){e=H(_[7])},l(i){e=J(i,_[7])},m(i,r){v(i,e,r)},p(i,r){r&128&&K(e,i[7])},d(i){i&&g(e)}}}function te(_){let e,i,r,n,c;const t=[x,$],s=[];function f(a,m){return a[1][1]?0:1}e=f(_),i=s[e]=t[e](_);let o=_[5]&&A(_);return{c(){i.c(),r=B(),o&&o.c(),n=p()},l(a){i.l(a),r=U(a),o&&o.l(a),n=p()},m(a,m){s[e].m(a,m),v(a,r,m),o&&o.m(a,m),v(a,n,m),c=!0},p(a,[m]){let k=e;e=f(a),e===k?s[e].p(a,m):(D(),h(s[k],1,1,()=>{s[k]=null}),L(),i=s[e],i?i.p(a,m):(i=s[e]=t[e](a),i.c()),E(i,1),i.m(r.parentNode,r)),a[5]?o?o.p(a,m):(o=A(a),o.c(),o.m(n.parentNode,n)):o&&(o.d(1),o=null)},i(a){c||(E(i),c=!0)},o(a){h(i),c=!1},d(a){a&&(g(r),g(n)),s[e].d(a),o&&o.d(a)}}}function ie(_,e,i){let{stores:r}=e,{page:n}=e,{constructors:c}=e,{components:t=[]}=e,{form:s}=e,{data_0:f=null}=e,{data_1:o=null}=e;j(r.page.notify);let a=!1,m=!1,k=null;W(()=>{const u=r.page.subscribe(()=>{a&&(i(6,m=!0),M().then(()=>{i(7,k=document.title||"untitled page")}))});return i(5,a=!0),u});function q(u){O[u?"unshift":"push"](()=>{t[1]=u,i(0,t)})}function N(u){O[u?"unshift":"push"](()=>{t[0]=u,i(0,t)})}function S(u){O[u?"unshift":"push"](()=>{t[0]=u,i(0,t)})}return _.$$set=u=>{"stores"in u&&i(8,r=u.stores),"page"in u&&i(9,n=u.page),"constructors"in u&&i(1,c=u.constructors),"components"in u&&i(0,t=u.components),"form"in u&&i(2,s=u.form),"data_0"in u&&i(3,f=u.data_0),"data_1"in u&&i(4,o=u.data_1)},_.$$.update=()=>{_.$$.dirty&768&&r.page.set(n)},[t,c,s,f,o,a,m,k,r,n,q,N,S]}class oe extends Q{constructor(e){super(),X(this,e,ie,te,C,{stores:8,page:9,constructors:1,components:0,form:2,data_0:3,data_1:4})}}const _e=[()=>l(()=>import("../nodes/0.eb587972.js"),["_app/immutable/nodes/0.eb587972.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/Icon.050ff215.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/1.3e67dd50.js"),["_app/immutable/nodes/1.3e67dd50.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/singletons.faf0a52c.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/2.adc99557.js"),["_app/immutable/nodes/2.adc99557.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/Icon.050ff215.js"]),()=>l(()=>import("../nodes/3.1d509ff4.js"),["_app/immutable/nodes/3.1d509ff4.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/4.3360583b.js"),["_app/immutable/nodes/4.3360583b.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/5.0b26b696.js"),["_app/immutable/nodes/5.0b26b696.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/6.e58e9779.js"),["_app/immutable/nodes/6.e58e9779.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/7.ba2eca6e.js"),["_app/immutable/nodes/7.ba2eca6e.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/8.5d0fa90b.js"),["_app/immutable/nodes/8.5d0fa90b.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/9.dd3d7b3a.js"),["_app/immutable/nodes/9.dd3d7b3a.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/10.74e9b544.js"),["_app/immutable/nodes/10.74e9b544.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/11.255d0ca1.js"),["_app/immutable/nodes/11.255d0ca1.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/12.b900fcff.js"),["_app/immutable/nodes/12.b900fcff.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/13.f8c5ad83.js"),["_app/immutable/nodes/13.f8c5ad83.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/14.0448e6e5.js"),["_app/immutable/nodes/14.0448e6e5.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/15.d517831e.js"),["_app/immutable/nodes/15.d517831e.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/16.de906698.js"),["_app/immutable/nodes/16.de906698.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js"]),()=>l(()=>import("../nodes/17.61cc7221.js"),["_app/immutable/nodes/17.61cc7221.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/bash.7e4226ac.js","_app/immutable/chunks/typescript.09c48802.js"]),()=>l(()=>import("../nodes/18.cae0e6d0.js"),["_app/immutable/nodes/18.cae0e6d0.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/19.bdc12e86.js"),["_app/immutable/nodes/19.bdc12e86.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/20.9069807c.js"),["_app/immutable/nodes/20.9069807c.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/21.f0d11c05.js"),["_app/immutable/nodes/21.f0d11c05.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/22.e80f4bca.js"),["_app/immutable/nodes/22.e80f4bca.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/23.e56d922d.js"),["_app/immutable/nodes/23.e56d922d.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/24.82606410.js"),["_app/immutable/nodes/24.82606410.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/25.0a00f3be.js"),["_app/immutable/nodes/25.0a00f3be.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"]),()=>l(()=>import("../nodes/26.8d2d7854.js"),["_app/immutable/nodes/26.8d2d7854.js","_app/immutable/chunks/scheduler.d7e45cc8.js","_app/immutable/chunks/index.77720afb.js","_app/immutable/chunks/github.64534d2c.js","_app/immutable/assets/github.c47a857b.css","_app/immutable/chunks/typescript.09c48802.js","_app/immutable/chunks/paths.d4a6803e.js"])],ae=[],ce={"/":[2],"/packages/client-node":[4],"/packages/client":[3],"/packages/driver-mysql":[5],"/packages/driver-postgresql":[6],"/packages/driver-sqlite3":[7],"/packages/guid":[8],"/packages/nymph":[9],"/packages/pubsub":[10],"/packages/query-parser":[11],"/packages/server":[12],"/packages/sorter":[13],"/packages/tilmeld-client":[15],"/packages/tilmeld-components":[16],"/packages/tilmeld-setup":[17],"/packages/tilmeld":[14],"/user-guide/creating-entities":[18],"/user-guide/defining-entities":[19],"/user-guide/entity-class":[20],"/user-guide/entity-querying":[21],"/user-guide/export-and-import":[22],"/user-guide/introduction":[23],"/user-guide/subscribing-to-queries":[24],"/user-guide/transactions":[25],"/user-guide/uids":[26]},le={handleError:({error:_})=>{console.error(_)}};export{ce as dictionary,le as hooks,se as matchers,_e as nodes,oe as root,ae as server_loads}; diff --git a/docs/_app/immutable/entry/start.0714bafe.js b/docs/_app/immutable/entry/start.0714bafe.js new file mode 100644 index 0000000..b3654d1 --- /dev/null +++ b/docs/_app/immutable/entry/start.0714bafe.js @@ -0,0 +1,3 @@ +import{o as De,t as ye}from"../chunks/scheduler.d7e45cc8.js";import{S as He,a as Je,I as V,g as Ce,f as Ve,b as we,c as le,s as ee,i as _e,d as M,P as qe,e as We}from"../chunks/singletons.faf0a52c.js";import{b as K}from"../chunks/paths.d4a6803e.js";function Xe(n,o){return n==="/"||o==="ignore"?n:o==="never"?n.endsWith("/")?n.slice(0,-1):n:o==="always"&&!n.endsWith("/")?n+"/":n}function Ze(n){return n.split("%25").map(decodeURI).join("%25")}function Qe(n){for(const o in n)n[o]=decodeURIComponent(n[o]);return n}const et=["href","pathname","search","searchParams","toString","toJSON"];function tt(n,o){const u=new URL(n);for(const s of et)Object.defineProperty(u,s,{get(){return o(),n[s]},enumerable:!0,configurable:!0});return nt(u),u}function nt(n){Object.defineProperty(n,"hash",{get(){throw new Error("Cannot access event.url.hash. Consider using `$page.url.hash` inside a component instead")}})}const at="/__data.json";function rt(n){return n.replace(/\/$/,"")+at}function ot(...n){let o=5381;for(const u of n)if(typeof u=="string"){let s=u.length;for(;s;)o=o*33^u.charCodeAt(--s)}else if(ArrayBuffer.isView(u)){const s=new Uint8Array(u.buffer,u.byteOffset,u.byteLength);let d=s.length;for(;d;)o=o*33^s[--d]}else throw new TypeError("value must be a string or TypedArray");return(o>>>0).toString(36)}const fe=window.fetch;window.fetch=(n,o)=>((n instanceof Request?n.method:(o==null?void 0:o.method)||"GET")!=="GET"&&ne.delete(Se(n)),fe(n,o));const ne=new Map;function it(n,o){const u=Se(n,o),s=document.querySelector(u);if(s!=null&&s.textContent){const{body:d,...f}=JSON.parse(s.textContent),S=s.getAttribute("data-ttl");return S&&ne.set(u,{body:d,init:f,ttl:1e3*Number(S)}),Promise.resolve(new Response(d,f))}return fe(n,o)}function st(n,o,u){if(ne.size>0){const s=Se(n,u),d=ne.get(s);if(d){if(performance.now(){const d=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(s);if(d)return o.push({name:d[1],matcher:d[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const f=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(s);if(f)return o.push({name:f[1],matcher:f[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!s)return;const S=s.split(/\[(.+?)\](?!\])/);return"/"+S.map((y,w)=>{if(w%2){if(y.startsWith("x+"))return be(String.fromCharCode(parseInt(y.slice(2),16)));if(y.startsWith("u+"))return be(String.fromCharCode(...y.slice(2).split("-").map(U=>parseInt(U,16))));const h=ct.exec(y);if(!h)throw new Error(`Invalid param: ${y}. Params and matcher names can only have underscores and alphanumeric characters.`);const[,D,x,k,N]=h;return o.push({name:k,matcher:N,optional:!!D,rest:!!x,chained:x?w===1&&S[0]==="":!1}),x?"(.*?)":D?"([^/]*)?":"([^/]+?)"}return be(y)}).join("")}).join("")}/?$`),params:o}}function ft(n){return!/^\([^)]+\)$/.test(n)}function ut(n){return n.slice(1).split("/").filter(ft)}function dt(n,o,u){const s={},d=n.slice(1);let f=0;for(let S=0;Sw).join("/"),f=0),y===void 0){l.rest&&(s[l.name]="");continue}if(!l.matcher||u[l.matcher](y)){s[l.name]=y;const w=o[S+1],h=d[S+1];w&&!w.rest&&w.optional&&h&&l.chained&&(f=0);continue}if(l.optional&&l.chained){f++;continue}return}if(!f)return s}function be(n){return n.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function pt({nodes:n,server_loads:o,dictionary:u,matchers:s}){const d=new Set(o);return Object.entries(u).map(([l,[y,w,h]])=>{const{pattern:D,params:x}=lt(l),k={id:l,exec:N=>{const U=D.exec(N);if(U)return dt(U,x,s)},errors:[1,...h||[]].map(N=>n[N]),layouts:[0,...w||[]].map(S),leaf:f(y)};return k.errors.length=k.layouts.length=Math.max(k.errors.length,k.layouts.length),k});function f(l){const y=l<0;return y&&(l=~l),[y,n[l]]}function S(l){return l===void 0?l:[d.has(l),n[l]]}}function Ke(n){try{return JSON.parse(sessionStorage[n])}catch{}}function Fe(n,o){const u=JSON.stringify(o);try{sessionStorage[n]=u}catch{}}const ht=-1,gt=-2,mt=-3,yt=-4,wt=-5,_t=-6;function bt(n,o){if(typeof n=="number")return d(n,!0);if(!Array.isArray(n)||n.length===0)throw new Error("Invalid input");const u=n,s=Array(u.length);function d(f,S=!1){if(f===ht)return;if(f===mt)return NaN;if(f===yt)return 1/0;if(f===wt)return-1/0;if(f===_t)return-0;if(S)throw new Error("Invalid input");if(f in s)return s[f];const l=u[f];if(!l||typeof l!="object")s[f]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const y=l[0],w=o==null?void 0:o[y];if(w)return s[f]=w(d(l[1]));switch(y){case"Date":s[f]=new Date(l[1]);break;case"Set":const h=new Set;s[f]=h;for(let k=1;ko!=null)}const ze=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...ze];const Et=new Set([...ze]);[...Et];async function St(n){var o;for(const u in n)if(typeof((o=n[u])==null?void 0:o.then)=="function")return Object.fromEntries(await Promise.all(Object.entries(n).map(async([s,d])=>[s,await d])));return n}class te{constructor(o,u){this.status=o,typeof u=="string"?this.body={message:u}:u?this.body=u:this.body={message:`Error: ${o}`}}toString(){return JSON.stringify(this.body)}}class Me{constructor(o,u){this.status=o,this.location=u}}const kt="x-sveltekit-invalidated",z=Ke(He)??{},Q=Ke(Je)??{};function ve(n){z[n]=ee()}function Rt(n,o){var $e;const u=pt(n),s=n.nodes[0],d=n.nodes[1];s(),d();const f=document.documentElement,S=[],l=[];let y=null;const w={before_navigate:[],after_navigate:[]};let h={branch:[],error:null,url:null},D=!1,x=!1,k=!0,N=!1,U=!1,B=!1,H=!1,q,j=($e=history.state)==null?void 0:$e[V];j||(j=Date.now(),history.replaceState({...history.state,[V]:j},"",location.href));const ue=z[j];ue&&(history.scrollRestoration="manual",scrollTo(ue.x,ue.y));let F,ae,Y;async function ke(){if(Y=Y||Promise.resolve(),await Y,!Y)return;Y=null;const e=new URL(location.href),i=X(e,!0);y=null;const t=ae={},r=i&&await he(i);if(t===ae&&r){if(r.type==="redirect")return re(new URL(r.location,e).href,{},[e.pathname],t);r.props.page!==void 0&&(F=r.props.page),q.$set(r.props)}}function Re(e){l.some(i=>i==null?void 0:i.snapshot)&&(Q[e]=l.map(i=>{var t;return(t=i==null?void 0:i.snapshot)==null?void 0:t.capture()}))}function Ae(e){var i;(i=Q[e])==null||i.forEach((t,r)=>{var a,c;(c=(a=l[r])==null?void 0:a.snapshot)==null||c.restore(t)})}function Ie(){ve(j),Fe(He,z),Re(j),Fe(Je,Q)}async function re(e,{noScroll:i=!1,replaceState:t=!1,keepFocus:r=!1,state:a={},invalidateAll:c=!1},p,v){return typeof e=="string"&&(e=new URL(e,Ce(document))),ce({url:e,scroll:i?ee():null,keepfocus:r,redirect_chain:p,details:{state:a,replaceState:t},nav_token:v,accepted:()=>{c&&(H=!0)},blocked:()=>{},type:"goto"})}async function Le(e){return y={id:e.id,promise:he(e).then(i=>(i.type==="loaded"&&i.state.error&&(y=null),i))},y.promise}async function oe(...e){const t=u.filter(r=>e.some(a=>r.exec(a))).map(r=>Promise.all([...r.layouts,r.leaf].map(a=>a==null?void 0:a[1]())));await Promise.all(t)}function Oe(e){var r;h=e.state;const i=document.querySelector("style[data-sveltekit]");i&&i.remove(),F=e.props.page,q=new n.root({target:o,props:{...e.props,stores:M,components:l},hydrate:!0}),Ae(j);const t={from:null,to:{params:h.params,route:{id:((r=h.route)==null?void 0:r.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter"};w.after_navigate.forEach(a=>a(t)),x=!0}async function W({url:e,params:i,branch:t,status:r,error:a,route:c,form:p}){let v="never";for(const g of t)(g==null?void 0:g.slash)!==void 0&&(v=g.slash);e.pathname=Xe(e.pathname,v),e.search=e.search;const b={type:"loaded",state:{url:e,params:i,branch:t,error:a,route:c},props:{constructors:vt(t).map(g=>g.node.component)}};p!==void 0&&(b.props.form=p);let _={},R=!F,A=0;for(let g=0;g(v.params.add(P),m[P])}),data:(c==null?void 0:c.data)??null,url:tt(t,()=>{v.url=!0}),async fetch(m,P){let $;m instanceof Request?($=m.url,P={body:m.method==="GET"||m.method==="HEAD"?void 0:await m.blob(),cache:m.cache,credentials:m.credentials,headers:m.headers,integrity:m.integrity,keepalive:m.keepalive,method:m.method,mode:m.mode,redirect:m.redirect,referrer:m.referrer,referrerPolicy:m.referrerPolicy,signal:m.signal,...P}):$=m;const C=new URL($,t);return I(C.href),C.origin===t.origin&&($=C.href.slice(t.origin.length)),x?st($,C.href,P):it($,P)},setHeaders:()=>{},depends:I,parent(){return v.parent=!0,i()}};p=await b.universal.load.call(null,g)??null,p=p?await St(p):null}return{node:b,loader:e,server:c,universal:(R=b.universal)!=null&&R.load?{type:"data",data:p,uses:v}:null,data:p??(c==null?void 0:c.data)??null,slash:((A=b.universal)==null?void 0:A.trailingSlash)??(c==null?void 0:c.slash)}}function Ue(e,i,t,r,a){if(H)return!0;if(!r)return!1;if(r.parent&&e||r.route&&i||r.url&&t)return!0;for(const c of r.params)if(a[c]!==h.params[c])return!0;for(const c of r.dependencies)if(S.some(p=>p(new URL(c))))return!0;return!1}function pe(e,i){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?i??null:null}async function he({id:e,invalidating:i,url:t,params:r,route:a}){if((y==null?void 0:y.id)===e)return y.promise;const{errors:c,layouts:p,leaf:v}=a,b=[...p,v];c.forEach(E=>E==null?void 0:E().catch(()=>{})),b.forEach(E=>E==null?void 0:E[1]().catch(()=>{}));let _=null;const R=h.url?e!==h.url.pathname+h.url.search:!1,A=h.route?a.id!==h.route.id:!1;let I=!1;const g=b.map((E,O)=>{var J;const L=h.branch[O],T=!!(E!=null&&E[0])&&((L==null?void 0:L.loader)!==E[1]||Ue(I,A,R,(J=L.server)==null?void 0:J.uses,r));return T&&(I=!0),T});if(g.some(Boolean)){try{_=await Be(t,g)}catch(E){return ie({status:E instanceof te?E.status:500,error:await Z(E,{url:t,params:r,route:{id:a.id}}),url:t,route:a})}if(_.type==="redirect")return _}const m=_==null?void 0:_.nodes;let P=!1;const $=b.map(async(E,O)=>{var ge;if(!E)return;const L=h.branch[O],T=m==null?void 0:m[O];if((!T||T.type==="skip")&&E[1]===(L==null?void 0:L.loader)&&!Ue(P,A,R,(ge=L.universal)==null?void 0:ge.uses,r))return L;if(P=!0,(T==null?void 0:T.type)==="error")throw T;return de({loader:E[1],url:t,params:r,route:a,parent:async()=>{var Te;const je={};for(let me=0;me{});const C=[];for(let E=0;EPromise.resolve({}),server_data_node:pe(c)}),b={node:await d(),loader:d,universal:null,server:null,data:null};return await W({url:t,params:a,branch:[v,b],status:e,error:i,route:null})}function X(e,i){if(_e(e,K))return;const t=se(e);for(const r of u){const a=r.exec(t);if(a)return{id:e.pathname+e.search,invalidating:i,route:r,params:Qe(a),url:e}}}function se(e){return Ze(e.pathname.slice(K.length)||"/")}function xe({url:e,type:i,intent:t,delta:r}){var v,b;let a=!1;const c={from:{params:h.params,route:{id:((v=h.route)==null?void 0:v.id)??null},url:h.url},to:{params:(t==null?void 0:t.params)??null,route:{id:((b=t==null?void 0:t.route)==null?void 0:b.id)??null},url:e},willUnload:!t,type:i};r!==void 0&&(c.delta=r);const p={...c,cancel:()=>{a=!0}};return U||w.before_navigate.forEach(_=>_(p)),a?null:c}async function ce({url:e,scroll:i,keepfocus:t,redirect_chain:r,details:a,type:c,delta:p,nav_token:v={},accepted:b,blocked:_}){var $,C,E;const R=X(e,!1),A=xe({url:e,type:c,delta:p,intent:R});if(!A){_();return}const I=j;b(),U=!0,x&&M.navigating.set(A),ae=v;let g=R&&await he(R);if(!g){if(_e(e,K))return await G(e);g=await Ne(e,{id:null},await Z(new Error(`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404)}if(e=(R==null?void 0:R.url)||e,ae!==v)return!1;if(g.type==="redirect")if(r.length>10||r.includes(e.pathname))g=await ie({status:500,error:await Z(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}});else return re(new URL(g.location,e).href,{},[...r,e.pathname],v),!1;else(($=g.props.page)==null?void 0:$.status)>=400&&await M.updated.check()&&await G(e);if(S.length=0,H=!1,N=!0,ve(I),Re(I),(C=g.props.page)!=null&&C.url&&g.props.page.url.pathname!==e.pathname&&(e.pathname=(E=g.props.page)==null?void 0:E.url.pathname),a){const O=a.replaceState?0:1;if(a.state[V]=j+=O,history[a.replaceState?"replaceState":"pushState"](a.state,"",e),!a.replaceState){let L=j+1;for(;Q[L]||z[L];)delete Q[L],delete z[L],L+=1}}y=null,x?(h=g.state,g.props.page&&(g.props.page.url=e),q.$set(g.props)):Oe(g);const{activeElement:m}=document;if(await ye(),k){const O=e.hash&&document.getElementById(decodeURIComponent(e.hash.slice(1)));i?scrollTo(i.x,i.y):O?O.scrollIntoView():scrollTo(0,0)}const P=document.activeElement!==m&&document.activeElement!==document.body;!t&&!P&&Ee(),k=!0,g.props.page&&(F=g.props.page),U=!1,c==="popstate"&&Ae(j),w.after_navigate.forEach(O=>O(A)),M.navigating.set(null),N=!1}async function Ne(e,i,t,r){return e.origin===location.origin&&e.pathname===location.pathname&&!D?await ie({status:r,error:t,url:e,route:i}):await G(e)}function G(e){return location.href=e.href,new Promise(()=>{})}function Ye(){let e;f.addEventListener("mousemove",c=>{const p=c.target;clearTimeout(e),e=setTimeout(()=>{r(p,2)},20)});function i(c){r(c.composedPath()[0],1)}f.addEventListener("mousedown",i),f.addEventListener("touchstart",i,{passive:!0});const t=new IntersectionObserver(c=>{for(const p of c)p.isIntersecting&&(oe(se(new URL(p.target.href))),t.unobserve(p.target))},{threshold:0});function r(c,p){const v=Ve(c,f);if(!v)return;const{url:b,external:_,download:R}=we(v,K);if(_||R)return;const A=le(v);if(!A.reload)if(p<=A.preload_data){const I=X(b,!1);I&&Le(I)}else p<=A.preload_code&&oe(se(b))}function a(){t.disconnect();for(const c of f.querySelectorAll("a")){const{url:p,external:v,download:b}=we(c,K);if(v||b)continue;const _=le(c);_.reload||(_.preload_code===qe.viewport&&t.observe(c),_.preload_code===qe.eager&&oe(se(p)))}}w.after_navigate.push(a),a()}function Z(e,i){return e instanceof te?e.body:n.hooks.handleError({error:e,event:i})??{message:i.route.id!=null?"Internal Error":"Not Found"}}return{after_navigate:e=>{De(()=>(w.after_navigate.push(e),()=>{const i=w.after_navigate.indexOf(e);w.after_navigate.splice(i,1)}))},before_navigate:e=>{De(()=>(w.before_navigate.push(e),()=>{const i=w.before_navigate.indexOf(e);w.before_navigate.splice(i,1)}))},disable_scroll_handling:()=>{(N||!x)&&(k=!1)},goto:(e,i={})=>re(e,i,[]),invalidate:e=>{if(typeof e=="function")S.push(e);else{const{href:i}=new URL(e,location.href);S.push(t=>t.href===i)}return ke()},invalidate_all:()=>(H=!0,ke()),preload_data:async e=>{const i=new URL(e,Ce(document)),t=X(i,!1);if(!t)throw new Error(`Attempted to preload a URL that does not belong to this app: ${i}`);await Le(t)},preload_code:oe,apply_action:async e=>{if(e.type==="error"){const i=new URL(location.href),{branch:t,route:r}=h;if(!r)return;const a=await Pe(h.branch.length,t,r.errors);if(a){const c=await W({url:i,params:h.params,branch:t.slice(0,a.idx).concat(a.node),status:e.status??500,error:e.error,route:r});h=c.state,q.$set(c.props),ye().then(Ee)}}else e.type==="redirect"?re(e.location,{invalidateAll:!0},[]):(q.$set({form:null,page:{...F,form:e.data,status:e.status}}),await ye(),q.$set({form:e.data}),e.type==="success"&&Ee())},_start_router:()=>{var i;history.scrollRestoration="manual",addEventListener("beforeunload",t=>{var a;let r=!1;if(Ie(),!U){const c={from:{params:h.params,route:{id:((a=h.route)==null?void 0:a.id)??null},url:h.url},to:null,willUnload:!0,type:"leave",cancel:()=>r=!0};w.before_navigate.forEach(p=>p(c))}r?(t.preventDefault(),t.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ie()}),(i=navigator.connection)!=null&&i.saveData||Ye(),f.addEventListener("click",t=>{var I;if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;const r=Ve(t.composedPath()[0],f);if(!r)return;const{url:a,external:c,target:p,download:v}=we(r,K);if(!a)return;if(p==="_parent"||p==="_top"){if(window.parent!==window)return}else if(p&&p!=="_self")return;const b=le(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||v)return;if(c||b.reload){xe({url:a,type:"link"})?U=!0:t.preventDefault();return}const[R,A]=a.href.split("#");if(A!==void 0&&R===location.href.split("#")[0]){if(h.url.hash===a.hash){t.preventDefault(),(I=r.ownerDocument.getElementById(A))==null||I.scrollIntoView();return}if(B=!0,ve(j),e(a),!b.replace_state)return;B=!1,t.preventDefault()}ce({url:a,scroll:b.noscroll?ee():null,keepfocus:b.keep_focus??!1,redirect_chain:[],details:{state:{},replaceState:b.replace_state??a.href===location.href},accepted:()=>t.preventDefault(),blocked:()=>t.preventDefault(),type:"link"})}),f.addEventListener("submit",t=>{if(t.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(t.target),a=t.submitter;if(((a==null?void 0:a.formMethod)||r.method)!=="get")return;const p=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(_e(p,K))return;const v=t.target,{keep_focus:b,noscroll:_,reload:R,replace_state:A}=le(v);if(R)return;t.preventDefault(),t.stopPropagation();const I=new FormData(v),g=a==null?void 0:a.getAttribute("name");g&&I.append(g,(a==null?void 0:a.getAttribute("value"))??""),p.search=new URLSearchParams(I).toString(),ce({url:p,scroll:_?ee():null,keepfocus:b??!1,redirect_chain:[],details:{state:{},replaceState:A??p.href===location.href},nav_token:{},accepted:()=>{},blocked:()=>{},type:"form"})}),addEventListener("popstate",async t=>{var r;if((r=t.state)!=null&&r[V]){if(t.state[V]===j)return;const a=z[t.state[V]];if(h.url.href.split("#")[0]===location.href.split("#")[0]){z[j]=ee(),j=t.state[V],scrollTo(a.x,a.y);return}const c=t.state[V]-j;await ce({url:new URL(location.href),scroll:a,keepfocus:!1,redirect_chain:[],details:null,accepted:()=>{j=t.state[V]},blocked:()=>{history.go(-c)},type:"popstate",delta:c})}else if(!B){const a=new URL(location.href);e(a)}}),addEventListener("hashchange",()=>{B&&(B=!1,history.replaceState({...history.state,[V]:++j},"",location.href))});for(const t of document.querySelectorAll("link"))t.rel==="icon"&&(t.href=t.href);addEventListener("pageshow",t=>{t.persisted&&M.navigating.set(null)});function e(t){h.url=t,M.page.set({...F,url:t}),M.page.notify()}},_hydrate:async({status:e=200,error:i,node_ids:t,params:r,route:a,data:c,form:p})=>{D=!0;const v=new URL(location.href);({params:r={},route:a={id:null}}=X(v,!1)||{});let b;try{const _=t.map(async(I,g)=>{const m=c[g];return m!=null&&m.uses&&(m.uses=Ge(m.uses)),de({loader:n.nodes[I],url:v,params:r,route:a,parent:async()=>{const P={};for(let $=0;$I===a.id);if(A){const I=A.layouts;for(let g=0;gd?"1":"0").join(""));const s=await fe(u.href);if(!s.ok)throw new te(s.status,await s.json());return new Promise(async d=>{var h;const f=new Map,S=s.body.getReader(),l=new TextDecoder;function y(D){return bt(D,{Promise:x=>new Promise((k,N)=>{f.set(x,{fulfil:k,reject:N})})})}let w="";for(;;){const{done:D,value:x}=await S.read();if(D&&!w)break;for(w+=!x&&w?` +`:l.decode(x);;){const k=w.indexOf(` +`);if(k===-1)break;const N=JSON.parse(w.slice(0,k));if(w=w.slice(k+1),N.type==="redirect")return d(N);if(N.type==="data")(h=N.nodes)==null||h.forEach(U=>{(U==null?void 0:U.type)==="data"&&(U.uses=Ge(U.uses),U.data=y(U.data))}),d(N);else if(N.type==="chunk"){const{id:U,data:B,error:H}=N,q=f.get(U);f.delete(U),H?q.reject(y(H)):q.fulfil(y(B))}}}})}function Ge(n){return{dependencies:new Set((n==null?void 0:n.dependencies)??[]),params:new Set((n==null?void 0:n.params)??[]),parent:!!(n!=null&&n.parent),route:!!(n!=null&&n.route),url:!!(n!=null&&n.url)}}function Ee(){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const o=document.body,u=o.getAttribute("tabindex");o.tabIndex=-1,o.focus({preventScroll:!0,focusVisible:!1}),u!==null?o.setAttribute("tabindex",u):o.removeAttribute("tabindex");const s=getSelection();if(s&&s.type!=="None"){const d=[];for(let f=0;f{if(s.rangeCount===d.length){for(let f=0;f>>0).toString(36)}const fe=window.fetch;window.fetch=(t,o)=>((t instanceof Request?t.method:(o==null?void 0:o.method)||"GET")!=="GET"&&te.delete(Se(t)),fe(t,o));const te=new Map;function it(t,o){const u=Se(t,o),i=document.querySelector(u);if(i!=null&&i.textContent){const{body:d,...f}=JSON.parse(i.textContent),S=i.getAttribute("data-ttl");return S&&te.set(u,{body:d,init:f,ttl:1e3*Number(S)}),Promise.resolve(new Response(d,f))}return fe(t,o)}function st(t,o,u){if(te.size>0){const i=Se(t,u),d=te.get(i);if(d){if(performance.now(){const d=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(i);if(d)return o.push({name:d[1],matcher:d[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const f=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(i);if(f)return o.push({name:f[1],matcher:f[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!i)return;const S=i.split(/\[(.+?)\](?!\])/);return"/"+S.map((b,w)=>{if(w%2){if(b.startsWith("x+"))return be(String.fromCharCode(parseInt(b.slice(2),16)));if(b.startsWith("u+"))return be(String.fromCharCode(...b.slice(2).split("-").map(P=>parseInt(P,16))));const p=ct.exec(b);if(!p)throw new Error(`Invalid param: ${b}. Params and matcher names can only have underscores and alphanumeric characters.`);const[,C,N,k,T]=p;return o.push({name:k,matcher:T,optional:!!C,rest:!!N,chained:N?w===1&&S[0]==="":!1}),N?"(.*?)":C?"([^/]*)?":"([^/]+?)"}return be(b)}).join("")}).join("")}/?$`),params:o}}function ft(t){return!/^\([^)]+\)$/.test(t)}function ut(t){return t.slice(1).split("/").filter(ft)}function dt(t,o,u){const i={},d=t.slice(1);let f=0;for(let S=0;Sw).join("/"),f=0;continue}if(b===void 0){l.rest&&(i[l.name]="");continue}if(!l.matcher||u[l.matcher](b)){i[l.name]=b;const w=o[S+1],p=d[S+1];w&&!w.rest&&w.optional&&p&&(f=0);continue}if(l.optional&&l.chained){f++;continue}return}if(!f)return i}function be(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function pt({nodes:t,server_loads:o,dictionary:u,matchers:i}){const d=new Set(o);return Object.entries(u).map(([l,[b,w,p]])=>{const{pattern:C,params:N}=lt(l),k={id:l,exec:T=>{const P=C.exec(T);if(P)return dt(P,N,i)},errors:[1,...p||[]].map(T=>t[T]),layouts:[0,...w||[]].map(S),leaf:f(b)};return k.errors.length=k.layouts.length=Math.max(k.errors.length,k.layouts.length),k});function f(l){const b=l<0;return b&&(l=~l),[b,t[l]]}function S(l){return l===void 0?l:[d.has(l),t[l]]}}let ee=class{constructor(o,u){this.status=o,typeof u=="string"?this.body={message:u}:u?this.body=u:this.body={message:`Error: ${o}`}}toString(){return JSON.stringify(this.body)}},Ve=class{constructor(o,u){this.status=o,this.location=u}};async function ht(t){var o;for(const u in t)if(typeof((o=t[u])==null?void 0:o.then)=="function")return Object.fromEntries(await Promise.all(Object.entries(t).map(async([i,d])=>[i,await d])));return t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");const gt=-1,mt=-2,yt=-3,wt=-4,_t=-5,bt=-6;function vt(t,o){if(typeof t=="number")return d(t,!0);if(!Array.isArray(t)||t.length===0)throw new Error("Invalid input");const u=t,i=Array(u.length);function d(f,S=!1){if(f===gt)return;if(f===yt)return NaN;if(f===wt)return 1/0;if(f===_t)return-1/0;if(f===bt)return-0;if(S)throw new Error("Invalid input");if(f in i)return i[f];const l=u[f];if(!l||typeof l!="object")i[f]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const b=l[0],w=o==null?void 0:o[b];if(w)return i[f]=w(d(l[1]));switch(b){case"Date":i[f]=new Date(l[1]);break;case"Set":const p=new Set;i[f]=p;for(let k=1;ko!=null)}const kt="x-sveltekit-invalidated",K=Ke(Ge)??{},Z=Ke(Je)??{};function ve(t){K[t]=Q()}function Rt(t,o){var xe;const u=pt(t),i=t.nodes[0],d=t.nodes[1];i(),d();const f=document.documentElement,S=[],l=[];let b=null;const w={before_navigate:[],after_navigate:[]};let p={branch:[],error:null,url:null},C=!1,N=!1,k=!0,T=!1,P=!1,z=!1,H=!1,F,j=(xe=history.state)==null?void 0:xe[q];j||(j=Date.now(),history.replaceState({...history.state,[q]:j},"",location.href));const ue=K[j];ue&&(history.scrollRestoration="manual",scrollTo(ue.x,ue.y));let M,ne,ae;async function ke(){ae=ae||Promise.resolve(),await ae,ae=null;const e=new URL(location.href),n=W(e,!0);b=null;const r=ne={},a=n&&await he(n);if(r===ne&&a){if(a.type==="redirect")return re(new URL(a.location,e).href,{},[e.pathname],r);a.props.page!==void 0&&(M=a.props.page),F.$set(a.props)}}function Re(e){l.some(n=>n==null?void 0:n.snapshot)&&(Z[e]=l.map(n=>{var r;return(r=n==null?void 0:n.snapshot)==null?void 0:r.capture()}))}function Ae(e){var n;(n=Z[e])==null||n.forEach((r,a)=>{var s,c;(c=(s=l[a])==null?void 0:s.snapshot)==null||c.restore(r)})}function Le(){ve(j),Me(Ge,K),Re(j),Me(Je,Z)}async function re(e,{noScroll:n=!1,replaceState:r=!1,keepFocus:a=!1,state:s={},invalidateAll:c=!1},g,m){return typeof e=="string"&&(e=new URL(e,De(document))),ce({url:e,scroll:n?Q():null,keepfocus:a,redirect_chain:g,details:{state:s,replaceState:r},nav_token:m,accepted:()=>{c&&(H=!0)},blocked:()=>{},type:"goto"})}async function Oe(e){return b={id:e.id,promise:he(e).then(n=>(n.type==="loaded"&&n.state.error&&(b=null),n))},b.promise}async function oe(...e){const r=u.filter(a=>e.some(s=>a.exec(s))).map(a=>Promise.all([...a.layouts,a.leaf].map(s=>s==null?void 0:s[1]())));await Promise.all(r)}function Ie(e){var a;p=e.state;const n=document.querySelector("style[data-sveltekit]");n&&n.remove(),M=e.props.page,F=new t.root({target:o,props:{...e.props,stores:V,components:l},hydrate:!0}),Ae(j);const r={from:null,to:{params:p.params,route:{id:((a=p.route)==null?void 0:a.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter"};w.after_navigate.forEach(s=>s(r)),N=!0}async function Y({url:e,params:n,branch:r,status:a,error:s,route:c,form:g}){let m="never";for(const _ of r)(_==null?void 0:_.slash)!==void 0&&(m=_.slash);e.pathname=Xe(e.pathname,m),e.search=e.search;const v={type:"loaded",state:{url:e,params:n,branch:r,error:s,route:c},props:{constructors:St(r).map(_=>_.node.component)}};g!==void 0&&(v.props.form=g);let y={},R=!M,L=0;for(let _=0;_(m.params.add(U),h[U])}),data:(c==null?void 0:c.data)??null,url:tt(r,()=>{m.url=!0}),async fetch(h,U){let x;h instanceof Request?(x=h.url,U={body:h.method==="GET"||h.method==="HEAD"?void 0:await h.blob(),cache:h.cache,credentials:h.credentials,headers:h.headers,integrity:h.integrity,keepalive:h.keepalive,method:h.method,mode:h.mode,redirect:h.redirect,referrer:h.referrer,referrerPolicy:h.referrerPolicy,signal:h.signal,...U}):x=h;const D=new URL(x,r);return I(D.href),D.origin===r.origin&&(x=D.href.slice(r.origin.length)),N?st(x,D.href,U):it(x,U)},setHeaders:()=>{},depends:I,parent(){return m.parent=!0,n()}};g=await v.universal.load.call(null,_)??null,g=g?await ht(g):null}return{node:v,loader:e,server:c,universal:(R=v.universal)!=null&&R.load?{type:"data",data:g,uses:m}:null,data:g??(c==null?void 0:c.data)??null,slash:((L=v.universal)==null?void 0:L.trailingSlash)??(c==null?void 0:c.slash)}}function Pe(e,n,r,a,s){if(H)return!0;if(!a)return!1;if(a.parent&&e||a.route&&n||a.url&&r)return!0;for(const c of a.params)if(s[c]!==p.params[c])return!0;for(const c of a.dependencies)if(S.some(g=>g(new URL(c))))return!0;return!1}function pe(e,n){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?n??null:null}async function he({id:e,invalidating:n,url:r,params:a,route:s}){if((b==null?void 0:b.id)===e)return b.promise;const{errors:c,layouts:g,leaf:m}=s,v=[...g,m];c.forEach(E=>E==null?void 0:E().catch(()=>{})),v.forEach(E=>E==null?void 0:E[1]().catch(()=>{}));let y=null;const R=p.url?e!==p.url.pathname+p.url.search:!1,L=p.route?s.id!==p.route.id:!1;let I=!1;const _=v.map((E,O)=>{var G;const A=p.branch[O],$=!!(E!=null&&E[0])&&((A==null?void 0:A.loader)!==E[1]||Pe(I,L,R,(G=A.server)==null?void 0:G.uses,a));return $&&(I=!0),$});if(_.some(Boolean)){try{y=await He(r,_)}catch(E){return ie({status:E instanceof ee?E.status:500,error:await X(E,{url:r,params:a,route:{id:s.id}}),url:r,route:s})}if(y.type==="redirect")return y}const h=y==null?void 0:y.nodes;let U=!1;const x=v.map(async(E,O)=>{var ge;if(!E)return;const A=p.branch[O],$=h==null?void 0:h[O];if((!$||$.type==="skip")&&E[1]===(A==null?void 0:A.loader)&&!Pe(U,L,R,(ge=A.universal)==null?void 0:ge.uses,a))return A;if(U=!0,($==null?void 0:$.type)==="error")throw $;return de({loader:E[1],url:r,params:a,route:s,parent:async()=>{var $e;const je={};for(let me=0;me{});const D=[];for(let E=0;EPromise.resolve({}),server_data_node:pe(c)}),v={node:await d(),loader:d,universal:null,server:null,data:null};return await Y({url:r,params:s,branch:[m,v],status:e,error:n,route:null})}function W(e,n){if(_e(e,J))return;const r=se(e);for(const a of u){const s=a.exec(r);if(s)return{id:e.pathname+e.search,invalidating:n,route:a,params:Qe(s),url:e}}}function se(e){return Ze(e.pathname.slice(J.length)||"/")}function Ne({url:e,type:n,intent:r,delta:a}){var m,v;let s=!1;const c={from:{params:p.params,route:{id:((m=p.route)==null?void 0:m.id)??null},url:p.url},to:{params:(r==null?void 0:r.params)??null,route:{id:((v=r==null?void 0:r.route)==null?void 0:v.id)??null},url:e},willUnload:!r,type:n};a!==void 0&&(c.delta=a);const g={...c,cancel:()=>{s=!0}};return P||w.before_navigate.forEach(y=>y(g)),s?null:c}async function ce({url:e,scroll:n,keepfocus:r,redirect_chain:a,details:s,type:c,delta:g,nav_token:m={},accepted:v,blocked:y}){var x,D,E;const R=W(e,!1),L=Ne({url:e,type:c,delta:g,intent:R});if(!L){y();return}const I=j;v(),P=!0,N&&V.navigating.set(L),ne=m;let _=R&&await he(R);if(!_){if(_e(e,J))return await B(e);_=await Te(e,{id:null},await X(new Error(`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404)}if(e=(R==null?void 0:R.url)||e,ne!==m)return!1;if(_.type==="redirect")if(a.length>10||a.includes(e.pathname))_=await ie({status:500,error:await X(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}});else return re(new URL(_.location,e).href,{},[...a,e.pathname],m),!1;else((x=_.props.page)==null?void 0:x.status)>=400&&await V.updated.check()&&await B(e);if(S.length=0,H=!1,T=!0,ve(I),Re(I),(D=_.props.page)!=null&&D.url&&_.props.page.url.pathname!==e.pathname&&(e.pathname=(E=_.props.page)==null?void 0:E.url.pathname),s){const O=s.replaceState?0:1;if(s.state[q]=j+=O,history[s.replaceState?"replaceState":"pushState"](s.state,"",e),!s.replaceState){let A=j+1;for(;Z[A]||K[A];)delete Z[A],delete K[A],A+=1}}b=null,N?(p=_.state,_.props.page&&(_.props.page.url=e),F.$set(_.props)):Ie(_);const{activeElement:h}=document;if(await ye(),k){const O=e.hash&&document.getElementById(decodeURIComponent(e.hash.slice(1)));n?scrollTo(n.x,n.y):O?O.scrollIntoView():scrollTo(0,0)}const U=document.activeElement!==h&&document.activeElement!==document.body;!r&&!U&&Ee(),k=!0,_.props.page&&(M=_.props.page),P=!1,c==="popstate"&&Ae(j),w.after_navigate.forEach(O=>O(L)),V.navigating.set(null),T=!1}async function Te(e,n,r,a){return e.origin===location.origin&&e.pathname===location.pathname&&!C?await ie({status:a,error:r,url:e,route:n}):await B(e)}function B(e){return location.href=e.href,new Promise(()=>{})}function Ye(){let e;f.addEventListener("mousemove",c=>{const g=c.target;clearTimeout(e),e=setTimeout(()=>{a(g,2)},20)});function n(c){a(c.composedPath()[0],1)}f.addEventListener("mousedown",n),f.addEventListener("touchstart",n,{passive:!0});const r=new IntersectionObserver(c=>{for(const g of c)g.isIntersecting&&(oe(se(new URL(g.target.href))),r.unobserve(g.target))},{threshold:0});function a(c,g){const m=qe(c,f);if(!m)return;const{url:v,external:y,download:R}=we(m,J);if(y||R)return;const L=le(m);if(!L.reload)if(g<=L.preload_data){const I=W(v,!1);I&&Oe(I)}else g<=L.preload_code&&oe(se(v))}function s(){r.disconnect();for(const c of f.querySelectorAll("a")){const{url:g,external:m,download:v}=we(c,J);if(m||v)continue;const y=le(c);y.reload||(y.preload_code===Fe.viewport&&r.observe(c),y.preload_code===Fe.eager&&oe(se(g)))}}w.after_navigate.push(s),s()}function X(e,n){return e instanceof ee?e.body:t.hooks.handleError({error:e,event:n})??{message:n.route.id!=null?"Internal Error":"Not Found"}}return{after_navigate:e=>{Ce(()=>(w.after_navigate.push(e),()=>{const n=w.after_navigate.indexOf(e);w.after_navigate.splice(n,1)}))},before_navigate:e=>{Ce(()=>(w.before_navigate.push(e),()=>{const n=w.before_navigate.indexOf(e);w.before_navigate.splice(n,1)}))},disable_scroll_handling:()=>{(T||!N)&&(k=!1)},goto:(e,n={})=>re(e,n,[]),invalidate:e=>{if(typeof e=="function")S.push(e);else{const{href:n}=new URL(e,location.href);S.push(r=>r.href===n)}return ke()},invalidate_all:()=>(H=!0,ke()),preload_data:async e=>{const n=new URL(e,De(document)),r=W(n,!1);if(!r)throw new Error(`Attempted to preload a URL that does not belong to this app: ${n}`);await Oe(r)},preload_code:oe,apply_action:async e=>{if(e.type==="error"){const n=new URL(location.href),{branch:r,route:a}=p;if(!a)return;const s=await Ue(p.branch.length,r,a.errors);if(s){const c=await Y({url:n,params:p.params,branch:r.slice(0,s.idx).concat(s.node),status:e.status??500,error:e.error,route:a});p=c.state,F.$set(c.props),ye().then(Ee)}}else e.type==="redirect"?re(e.location,{invalidateAll:!0},[]):(F.$set({form:null,page:{...M,form:e.data,status:e.status}}),await ye(),F.$set({form:e.data}),e.type==="success"&&Ee())},_start_router:()=>{var e;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{var a;let r=!1;if(Le(),!P){const s={from:{params:p.params,route:{id:((a=p.route)==null?void 0:a.id)??null},url:p.url},to:null,willUnload:!0,type:"leave",cancel:()=>r=!0};w.before_navigate.forEach(c=>c(s))}r?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Le()}),(e=navigator.connection)!=null&&e.saveData||Ye(),f.addEventListener("click",n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const r=qe(n.composedPath()[0],f);if(!r)return;const{url:a,external:s,target:c,download:g}=we(r,J);if(!a)return;if(c==="_parent"||c==="_top"){if(window.parent!==window)return}else if(c&&c!=="_self")return;const m=le(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||g)return;if(s||m.reload){Ne({url:a,type:"link"})?P=!0:n.preventDefault();return}const[y,R]=a.href.split("#");if(R!==void 0&&y===location.href.split("#")[0]){if(z=!0,ve(j),p.url=a,V.page.set({...M,url:a}),V.page.notify(),!m.replace_state)return;z=!1,n.preventDefault()}ce({url:a,scroll:m.noscroll?Q():null,keepfocus:m.keep_focus??!1,redirect_chain:[],details:{state:{},replaceState:m.replace_state??a.href===location.href},accepted:()=>n.preventDefault(),blocked:()=>n.preventDefault(),type:"link"})}),f.addEventListener("submit",n=>{if(n.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formMethod)||r.method)!=="get")return;const c=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(_e(c,J))return;const g=n.target,{keep_focus:m,noscroll:v,reload:y,replace_state:R}=le(g);if(y)return;n.preventDefault(),n.stopPropagation();const L=new FormData(g),I=a==null?void 0:a.getAttribute("name");I&&L.append(I,(a==null?void 0:a.getAttribute("value"))??""),c.search=new URLSearchParams(L).toString(),ce({url:c,scroll:v?Q():null,keepfocus:m??!1,redirect_chain:[],details:{state:{},replaceState:R??c.href===location.href},nav_token:{},accepted:()=>{},blocked:()=>{},type:"form"})}),addEventListener("popstate",async n=>{var r;if((r=n.state)!=null&&r[q]){if(n.state[q]===j)return;const a=K[n.state[q]];if(p.url.href.split("#")[0]===location.href.split("#")[0]){K[j]=Q(),j=n.state[q],scrollTo(a.x,a.y);return}const s=n.state[q]-j;await ce({url:new URL(location.href),scroll:a,keepfocus:!1,redirect_chain:[],details:null,accepted:()=>{j=n.state[q]},blocked:()=>{history.go(-s)},type:"popstate",delta:s})}}),addEventListener("hashchange",()=>{z&&(z=!1,history.replaceState({...history.state,[q]:++j},"",location.href))});for(const n of document.querySelectorAll("link"))n.rel==="icon"&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&V.navigating.set(null)})},_hydrate:async({status:e=200,error:n,node_ids:r,params:a,route:s,data:c,form:g})=>{C=!0;const m=new URL(location.href);({params:a={},route:s={id:null}}=W(m,!1)||{});let v;try{const y=r.map(async(I,_)=>{const h=c[_];return h!=null&&h.uses&&(h.uses=Be(h.uses)),de({loader:t.nodes[I],url:m,params:a,route:s,parent:async()=>{const U={};for(let x=0;x<_;x+=1)Object.assign(U,(await y[x]).data);return U},server_data_node:pe(h)})}),R=await Promise.all(y),L=u.find(({id:I})=>I===s.id);if(L){const I=L.layouts;for(let _=0;_d?"1":"0").join(""));const i=await fe(u.href);if(!i.ok)throw new ee(i.status,await i.json());return new Promise(async d=>{var p;const f=new Map,S=i.body.getReader(),l=new TextDecoder;function b(C){return vt(C,{Promise:N=>new Promise((k,T)=>{f.set(N,{fulfil:k,reject:T})})})}let w="";for(;;){const{done:C,value:N}=await S.read();if(C&&!w)break;for(w+=!N&&w?` -`:l.decode(N);;){const k=w.indexOf(` -`);if(k===-1)break;const T=JSON.parse(w.slice(0,k));if(w=w.slice(k+1),T.type==="redirect")return d(T);if(T.type==="data")(p=T.nodes)==null||p.forEach(P=>{(P==null?void 0:P.type)==="data"&&(P.uses=Be(P.uses),P.data=b(P.data))}),d(T);else if(T.type==="chunk"){const{id:P,data:z,error:H}=T,F=f.get(P);f.delete(P),H?F.reject(b(H)):F.fulfil(b(z))}}}})}function Be(t){return{dependencies:new Set((t==null?void 0:t.dependencies)??[]),params:new Set((t==null?void 0:t.params)??[]),parent:!!(t!=null&&t.parent),route:!!(t!=null&&t.route),url:!!(t!=null&&t.url)}}function Ee(){const t=document.querySelector("[autofocus]");if(t)t.focus();else{const o=document.body,u=o.getAttribute("tabindex");o.tabIndex=-1,o.focus({preventScroll:!0,focusVisible:!1}),u!==null?o.setAttribute("tabindex",u):o.removeAttribute("tabindex");const i=getSelection();if(i&&i.type!=="None"){const d=[];for(let f=0;f{if(i.rangeCount===d.length){for(let f=0;f{k=null}),Dl()),(!ie||g&2)&&gl(U,"inactive",f[1])},i(f){ie||(z(P.$$.fragment,f),z(j,f),z(le.$$.fragment,f),z(oe.$$.fragment,f),z(ne.$$.fragment,f),z(k),ie=!0)},o(f){V(P.$$.fragment,f),V(j,f),V(le.$$.fragment,f),V(oe.$$.fragment,f),V(ne.$$.fragment,f),V(k),ie=!1},d(f){t(u),t(m),t(I),t(T),t(A),t(_),t(E),t(D),t(S),t(b),t(q),t(N),t(M),f&&t(C),f&&t(d),he(P),j&&j.d(f),f&&t(wt),f&&t(U),he(le),he(oe),$[9](null),he(ne),k&&k.d(),oa=!1,Nl(ia)}}}function Wl($,u,m){let{$$slots:I={},$$scope:T}=u,A,_=!1,E=!1;Cl(()=>{const d=["sciactive.com","hperrin"].reverse().join("@");m(0,A.href="mailto:"+d,A),m(0,A.textContent=d,A),document.body.classList.remove("is-preload"),b()});let D;function S(){b(),document.body&&(document.body.classList.add("is-resizing"),clearTimeout(D),D=setTimeout(function(){document.body.classList.remove("is-resizing")},100))}function b(){m(2,E=window.innerWidth<=1280),m(1,_=E)}function q(d){"href"in d.target&&b()}const N=d=>d.key==="Enter"||b();function M(d){Gl[d?"unshift":"push"](()=>{A=d,m(0,A)})}const C=d=>{d.preventDefault(),d.stopPropagation(),m(1,_=!_)};return $.$$set=d=>{"$$scope"in d&&m(6,T=d.$$scope)},[A,_,E,S,b,q,T,I,N,M,C]}class Zl extends yl{constructor(u){super(),Il(this,u,Wl,Kl,Al,{})}}export{Zl as component,Xl as universal}; diff --git a/docs/_app/immutable/nodes/0.eb587972.js b/docs/_app/immutable/nodes/0.eb587972.js new file mode 100644 index 0000000..a2fd46a --- /dev/null +++ b/docs/_app/immutable/nodes/0.eb587972.js @@ -0,0 +1,11 @@ +import{s as nl,f as t,a as s,g as r,h as n,r as F,d as a,c as o,j as l,i as Ze,u as e,v as sl,w as fl,l as p,x as ul,m,y as dl,z as al,A as Xe,B as hl,C as pl,D as ml,E as vl,o as gl,p as _l}from"../chunks/scheduler.d7e45cc8.js";import{S as ol,i as il,b as he,d as pe,m as me,a as H,t as G,e as ve,c as El,g as yl}from"../chunks/index.77720afb.js";import{I as et,m as cl,a as bl,b as Il,c as Al,d as Ll}from"../chunks/Icon.050ff215.js";import{b as v,a as Je}from"../chunks/paths.d4a6803e.js";const $l=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global,Cl=!0,Sl="always",ql=Object.freeze(Object.defineProperty({__proto__:null,prerender:Cl,trailingSlash:Sl},Symbol.toStringTag,{value:"Module"}));function kl(L){let i,h,b,$,C="Nymph.js",g,E,x,S,I,R,D,T,N,u;return I=new et({props:{path:cl}}),N=new et({props:{path:bl}}),{c(){i=t("header"),h=t("div"),b=t("a"),$=t("strong"),$.textContent=C,g=s(),E=t("ul"),x=t("li"),S=t("a"),he(I.$$.fragment),R=s(),D=t("li"),T=t("a"),he(N.$$.fragment),this.h()},l(y){i=r(y,"HEADER",{id:!0});var P=n(i);h=r(P,"DIV",{class:!0});var ge=n(h);b=r(ge,"A",{href:!0,class:!0});var _e=n(b);$=r(_e,"STRONG",{"data-svelte-h":!0}),F($)!=="svelte-ygq1qh"&&($.textContent=C),_e.forEach(a),ge.forEach(a),g=o(P),E=r(P,"UL",{class:!0});var z=n(E);x=r(z,"LI",{});var tt=n(x);S=r(tt,"A",{href:!0,target:!0,rel:!0,class:!0,title:!0});var ee=n(S);pe(I.$$.fragment,ee),ee.forEach(a),tt.forEach(a),R=o(z),D=r(z,"LI",{});var M=n(D);T=r(M,"A",{href:!0,target:!0,rel:!0,class:!0,title:!0});var q=n(T);pe(N.$$.fragment,q),q.forEach(a),M.forEach(a),z.forEach(a),P.forEach(a),this.h()},h(){l(b,"href",v+"/"),l(b,"class","logo"),l(h,"class","logo"),l(S,"href","https://port87.social/@hperrin"),l(S,"target","_blank"),l(S,"rel","noreferrer"),l(S,"class","icon brands"),l(S,"title","Mastodon"),l(T,"href","https://github.com/sciactive/nymphjs"),l(T,"target","_blank"),l(T,"rel","noreferrer"),l(T,"class","icon brands"),l(T,"title","GitHub"),l(E,"class","icons"),l(i,"id","header")},m(y,P){Ze(y,i,P),e(i,h),e(h,b),e(b,$),e(i,g),e(i,E),e(E,x),e(x,S),me(I,S,null),e(E,R),e(E,D),e(D,T),me(N,T,null),u=!0},p:sl,i(y){u||(H(I.$$.fragment,y),H(N.$$.fragment,y),u=!0)},o(y){G(I.$$.fragment,y),G(N.$$.fragment,y),u=!1},d(y){y&&a(i),ve(I),ve(N)}}}class Tl extends ol{constructor(i){super(),il(this,i,null,kl,nl,{})}}const{document:j,window:wl}=$l;function ll(L){let i,h,b,$,C;return h=new et({props:{path:Ll}}),{c(){i=t("a"),he(h.$$.fragment),this.h()},l(g){i=r(g,"A",{href:!0,class:!0,title:!0});var E=n(i);pe(h.$$.fragment,E),E.forEach(a),this.h()},h(){l(i,"href","#sidebar"),l(i,"class","toggle"),l(i,"title","Toggle Sidebar")},m(g,E){Ze(g,i,E),me(h,i,null),b=!0,$||(C=Xe(i,"click",L[10]),$=!0)},p:sl,i(g){b||(H(h.$$.fragment,g),b=!0)},o(g){G(h.$$.fragment,g),b=!1},d(g){g&&a(i),ve(h),$=!1,C()}}}function Ml(L){let i,h,b,$,C,g,E,x,S,I,R,D,T,N,u,y,P,ge,_e,z,tt=``,ee,M,q,te,Y,re,Fr,Dt,ae,Yr="SciActive",Nt,Ee,V,rt,ye,Pt,jt,le,ne,Jr="User Guide",qt,A,at,be,Ut,Qt,lt,Ie,Rt,zt,nt,Ae,Ht,Ot,st,Le,Gt,Vt,ot,$e,Bt,Kt,it,Ce,Wt,Ft,ct,Se,Yt,Jt,ft,ke,Xt,Zt,ut,Te,er,tr,se,oe,Xr="Packages",rr,c,dt,we,ar,lr,ht,Me,nr,sr,pt,xe,or,ir,mt,De,cr,fr,vt,Ne,ur,dr,gt,Pe,hr,pr,_t,je,mr,vr,Et,qe,gr,_r,yt,Ue,Er,yr,bt,Qe,br,Ir,It,Re,Ar,Lr,At,ze,$r,Cr,Lt,He,Sr,kr,$t,Oe,Tr,wr,Ct,Ge,Mr,xr,B,ie,Zr="

Get in touch

",Dr,Ve,ea=`Nymph is a product of SciActive Inc. You can contact SciActive by email + or post, or follow on Mastodon.`,Nr,O,J,ce,Pr,K,ta="@hperrin@port87.social on Mastodon",jr,X,fe,qr,Z,ra="(loading...)",Ur,U,ue,Qr,Rr,zr,Hr,Or,Gr,Vr,Br,de,Kr,aa;P=new Tl({});const Wr=L[7].default,Q=fl(Wr,L,L[6],null);ce=new et({props:{path:cl}}),fe=new et({props:{path:Il}}),ue=new et({props:{path:Al}});let k=L[2]&&ll(L);return{c(){i=t("meta"),h=t("meta"),b=t("meta"),$=t("meta"),C=t("meta"),g=t("meta"),E=t("meta"),x=t("meta"),S=t("link"),I=t("link"),R=t("link"),D=t("meta"),T=t("link"),N=s(),u=t("div"),y=t("div"),he(P.$$.fragment),ge=s(),Q&&Q.c(),_e=s(),z=t("footer"),z.innerHTML=tt,ee=s(),M=t("div"),q=t("div"),te=t("section"),Y=t("div"),re=t("img"),Dt=s(),ae=t("span"),ae.textContent=Yr,Nt=s(),Ee=t("nav"),V=t("ul"),rt=t("li"),ye=t("a"),Pt=p("Homepage"),jt=s(),le=t("li"),ne=t("span"),ne.textContent=Jr,qt=s(),A=t("ul"),at=t("li"),be=t("a"),Ut=p("Introduction"),Qt=s(),lt=t("li"),Ie=t("a"),Rt=p("Creating Entities"),zt=s(),nt=t("li"),Ae=t("a"),Ht=p("Entity Querying"),Ot=s(),st=t("li"),Le=t("a"),Gt=p("Subscribing to Queries"),Vt=s(),ot=t("li"),$e=t("a"),Bt=p("Entity Class"),Kt=s(),it=t("li"),Ce=t("a"),Wt=p("Defining Entities"),Ft=s(),ct=t("li"),Se=t("a"),Yt=p("UIDs"),Jt=s(),ft=t("li"),ke=t("a"),Xt=p("Transactions"),Zt=s(),ut=t("li"),Te=t("a"),er=p("Export and Import"),tr=s(),se=t("li"),oe=t("span"),oe.textContent=Xr,rr=s(),c=t("ul"),dt=t("li"),we=t("a"),ar=p("Nymph Core"),lr=s(),ht=t("li"),Me=t("a"),nr=p("MySQL Driver"),sr=s(),pt=t("li"),xe=t("a"),or=p("PostgreSQL Driver"),ir=s(),mt=t("li"),De=t("a"),cr=p("SQLite3 Driver"),fr=s(),vt=t("li"),Ne=t("a"),ur=p("REST Server"),dr=s(),gt=t("li"),Pe=t("a"),hr=p("PubSub Server"),pr=s(),_t=t("li"),je=t("a"),mr=p("Client"),vr=s(),Et=t("li"),qe=t("a"),gr=p("Node Client"),_r=s(),yt=t("li"),Ue=t("a"),Er=p("Tilmeld"),yr=s(),bt=t("li"),Qe=t("a"),br=p("Tilmeld Client"),Ir=s(),It=t("li"),Re=t("a"),Ar=p("Tilmeld Components"),Lr=s(),At=t("li"),ze=t("a"),$r=p("Tilmeld Setup"),Cr=s(),Lt=t("li"),He=t("a"),Sr=p("Entity Sorter"),kr=s(),$t=t("li"),Oe=t("a"),Tr=p("Query Parser"),wr=s(),Ct=t("li"),Ge=t("a"),Mr=p("GUID / Unique Code Generator"),xr=s(),B=t("section"),ie=t("header"),ie.innerHTML=Zr,Dr=s(),Ve=t("p"),Ve.textContent=ea,Nr=s(),O=t("ul"),J=t("li"),he(ce.$$.fragment),Pr=s(),K=t("a"),K.textContent=ta,jr=s(),X=t("li"),he(fe.$$.fragment),qr=s(),Z=t("a"),Z.textContent=ra,Ur=s(),U=t("li"),he(ue.$$.fragment),Qr=p(` + SciActive Inc`),Rr=t("br"),zr=p(` + 310 S Twin Oaks Valley Rd #107`),Hr=t("br"),Or=p(` + PMB 422`),Gr=t("br"),Vr=p(` + San Marcos, CA 92078`),Br=s(),k&&k.c(),this.h()},l(f){const _=ul("svelte-6i6yy0",j.head);i=r(_,"META",{name:!0,content:!0}),h=r(_,"META",{property:!0,content:!0}),b=r(_,"META",{property:!0,content:!0}),$=r(_,"META",{property:!0,content:!0}),C=r(_,"META",{property:!0,content:!0}),g=r(_,"META",{property:!0,content:!0}),E=r(_,"META",{property:!0,content:!0}),x=r(_,"META",{property:!0,content:!0}),S=r(_,"LINK",{rel:!0,href:!0,sizes:!0}),I=r(_,"LINK",{rel:!0,href:!0,sizes:!0}),R=r(_,"LINK",{rel:!0,href:!0}),D=r(_,"META",{name:!0,content:!0}),T=r(_,"LINK",{rel:!0,href:!0}),_.forEach(a),N=o(f),u=r(f,"DIV",{id:!0});var la=n(u);y=r(la,"DIV",{class:!0});var Be=n(y);pe(P.$$.fragment,Be),ge=o(Be),Q&&Q.l(Be),_e=o(Be),z=r(Be,"FOOTER",{id:!0,"data-svelte-h":!0}),F(z)!=="svelte-12j9vpf"&&(z.innerHTML=tt),Be.forEach(a),la.forEach(a),ee=o(f),M=r(f,"DIV",{id:!0});var St=n(M);q=r(St,"DIV",{class:!0});var Ke=n(q);te=r(Ke,"SECTION",{id:!0,class:!0});var na=n(te);Y=r(na,"DIV",{class:!0});var kt=n(Y);re=r(kt,"IMG",{class:!0,src:!0,alt:!0}),Dt=o(kt),ae=r(kt,"SPAN",{class:!0,"data-svelte-h":!0}),F(ae)!=="svelte-1ym2tgr"&&(ae.textContent=Yr),kt.forEach(a),na.forEach(a),Nt=o(Ke),Ee=r(Ke,"NAV",{id:!0});var sa=n(Ee);V=r(sa,"UL",{});var We=n(V);rt=r(We,"LI",{});var oa=n(rt);ye=r(oa,"A",{href:!0});var ia=n(ye);Pt=m(ia,"Homepage"),ia.forEach(a),oa.forEach(a),jt=o(We),le=r(We,"LI",{});var Tt=n(le);ne=r(Tt,"SPAN",{class:!0,"data-svelte-h":!0}),F(ne)!=="svelte-60cxqh"&&(ne.textContent=Jr),qt=o(Tt),A=r(Tt,"UL",{});var w=n(A);at=r(w,"LI",{});var ca=n(at);be=r(ca,"A",{href:!0});var fa=n(be);Ut=m(fa,"Introduction"),fa.forEach(a),ca.forEach(a),Qt=o(w),lt=r(w,"LI",{});var ua=n(lt);Ie=r(ua,"A",{href:!0});var da=n(Ie);Rt=m(da,"Creating Entities"),da.forEach(a),ua.forEach(a),zt=o(w),nt=r(w,"LI",{});var ha=n(nt);Ae=r(ha,"A",{href:!0});var pa=n(Ae);Ht=m(pa,"Entity Querying"),pa.forEach(a),ha.forEach(a),Ot=o(w),st=r(w,"LI",{});var ma=n(st);Le=r(ma,"A",{href:!0});var va=n(Le);Gt=m(va,"Subscribing to Queries"),va.forEach(a),ma.forEach(a),Vt=o(w),ot=r(w,"LI",{});var ga=n(ot);$e=r(ga,"A",{href:!0});var _a=n($e);Bt=m(_a,"Entity Class"),_a.forEach(a),ga.forEach(a),Kt=o(w),it=r(w,"LI",{});var Ea=n(it);Ce=r(Ea,"A",{href:!0});var ya=n(Ce);Wt=m(ya,"Defining Entities"),ya.forEach(a),Ea.forEach(a),Ft=o(w),ct=r(w,"LI",{});var ba=n(ct);Se=r(ba,"A",{href:!0});var Ia=n(Se);Yt=m(Ia,"UIDs"),Ia.forEach(a),ba.forEach(a),Jt=o(w),ft=r(w,"LI",{});var Aa=n(ft);ke=r(Aa,"A",{href:!0});var La=n(ke);Xt=m(La,"Transactions"),La.forEach(a),Aa.forEach(a),Zt=o(w),ut=r(w,"LI",{});var $a=n(ut);Te=r($a,"A",{href:!0});var Ca=n(Te);er=m(Ca,"Export and Import"),Ca.forEach(a),$a.forEach(a),w.forEach(a),Tt.forEach(a),tr=o(We),se=r(We,"LI",{});var wt=n(se);oe=r(wt,"SPAN",{class:!0,"data-svelte-h":!0}),F(oe)!=="svelte-5ppnrj"&&(oe.textContent=Xr),rr=o(wt),c=r(wt,"UL",{});var d=n(c);dt=r(d,"LI",{});var Sa=n(dt);we=r(Sa,"A",{href:!0});var ka=n(we);ar=m(ka,"Nymph Core"),ka.forEach(a),Sa.forEach(a),lr=o(d),ht=r(d,"LI",{});var Ta=n(ht);Me=r(Ta,"A",{href:!0});var wa=n(Me);nr=m(wa,"MySQL Driver"),wa.forEach(a),Ta.forEach(a),sr=o(d),pt=r(d,"LI",{});var Ma=n(pt);xe=r(Ma,"A",{href:!0});var xa=n(xe);or=m(xa,"PostgreSQL Driver"),xa.forEach(a),Ma.forEach(a),ir=o(d),mt=r(d,"LI",{});var Da=n(mt);De=r(Da,"A",{href:!0});var Na=n(De);cr=m(Na,"SQLite3 Driver"),Na.forEach(a),Da.forEach(a),fr=o(d),vt=r(d,"LI",{});var Pa=n(vt);Ne=r(Pa,"A",{href:!0});var ja=n(Ne);ur=m(ja,"REST Server"),ja.forEach(a),Pa.forEach(a),dr=o(d),gt=r(d,"LI",{});var qa=n(gt);Pe=r(qa,"A",{href:!0});var Ua=n(Pe);hr=m(Ua,"PubSub Server"),Ua.forEach(a),qa.forEach(a),pr=o(d),_t=r(d,"LI",{});var Qa=n(_t);je=r(Qa,"A",{href:!0});var Ra=n(je);mr=m(Ra,"Client"),Ra.forEach(a),Qa.forEach(a),vr=o(d),Et=r(d,"LI",{});var za=n(Et);qe=r(za,"A",{href:!0});var Ha=n(qe);gr=m(Ha,"Node Client"),Ha.forEach(a),za.forEach(a),_r=o(d),yt=r(d,"LI",{});var Oa=n(yt);Ue=r(Oa,"A",{href:!0});var Ga=n(Ue);Er=m(Ga,"Tilmeld"),Ga.forEach(a),Oa.forEach(a),yr=o(d),bt=r(d,"LI",{});var Va=n(bt);Qe=r(Va,"A",{href:!0});var Ba=n(Qe);br=m(Ba,"Tilmeld Client"),Ba.forEach(a),Va.forEach(a),Ir=o(d),It=r(d,"LI",{});var Ka=n(It);Re=r(Ka,"A",{href:!0});var Wa=n(Re);Ar=m(Wa,"Tilmeld Components"),Wa.forEach(a),Ka.forEach(a),Lr=o(d),At=r(d,"LI",{});var Fa=n(At);ze=r(Fa,"A",{href:!0});var Ya=n(ze);$r=m(Ya,"Tilmeld Setup"),Ya.forEach(a),Fa.forEach(a),Cr=o(d),Lt=r(d,"LI",{});var Ja=n(Lt);He=r(Ja,"A",{href:!0});var Xa=n(He);Sr=m(Xa,"Entity Sorter"),Xa.forEach(a),Ja.forEach(a),kr=o(d),$t=r(d,"LI",{});var Za=n($t);Oe=r(Za,"A",{href:!0});var el=n(Oe);Tr=m(el,"Query Parser"),el.forEach(a),Za.forEach(a),wr=o(d),Ct=r(d,"LI",{});var tl=n(Ct);Ge=r(tl,"A",{href:!0});var rl=n(Ge);Mr=m(rl,"GUID / Unique Code Generator"),rl.forEach(a),tl.forEach(a),d.forEach(a),wt.forEach(a),We.forEach(a),sa.forEach(a),xr=o(Ke),B=r(Ke,"SECTION",{});var Fe=n(B);ie=r(Fe,"HEADER",{class:!0,"data-svelte-h":!0}),F(ie)!=="svelte-grs083"&&(ie.innerHTML=Zr),Dr=o(Fe),Ve=r(Fe,"P",{"data-svelte-h":!0}),F(Ve)!=="svelte-1l9tx70"&&(Ve.textContent=ea),Nr=o(Fe),O=r(Fe,"UL",{class:!0});var Ye=n(O);J=r(Ye,"LI",{class:!0});var Mt=n(J);pe(ce.$$.fragment,Mt),Pr=o(Mt),K=r(Mt,"A",{href:!0,target:!0,rel:!0,"data-svelte-h":!0}),F(K)!=="svelte-2tjg6n"&&(K.textContent=ta),Mt.forEach(a),jr=o(Ye),X=r(Ye,"LI",{class:!0});var xt=n(X);pe(fe.$$.fragment,xt),qr=o(xt),Z=r(xt,"A",{href:!0,"data-svelte-h":!0}),F(Z)!=="svelte-1duywns"&&(Z.textContent=ra),xt.forEach(a),Ur=o(Ye),U=r(Ye,"LI",{class:!0});var W=n(U);pe(ue.$$.fragment,W),Qr=m(W,` + SciActive Inc`),Rr=r(W,"BR",{}),zr=m(W,` + 310 S Twin Oaks Valley Rd #107`),Hr=r(W,"BR",{}),Or=m(W,` + PMB 422`),Gr=r(W,"BR",{}),Vr=m(W,` + San Marcos, CA 92078`),W.forEach(a),Ye.forEach(a),Fe.forEach(a),Ke.forEach(a),Br=o(St),k&&k.l(St),St.forEach(a),this.h()},h(){l(i,"name","description"),l(i,"content","Object relational mapper for Node.js and the browser"),l(h,"property","og:title"),l(h,"content","Nymph"),l(b,"property","og:type"),l(b,"content","website"),l($,"property","og:url"),l($,"content","http://nymph.io/"),l(C,"property","og:image"),l(C,"content","https://raw.githubusercontent.com/sciactive/nymph/master/assets/nymph-logo-500.png"),l(g,"property","og:site_name"),l(g,"content","Nymph"),l(E,"property","fb:admins"),l(E,"content","508999194"),l(x,"property","og:description"),l(x,"content","Object relational mapper for Node.js and the browser"),l(S,"rel","icon"),l(S,"href",Je+"/images/cropped-logo-32x32.png"),l(S,"sizes","32x32"),l(I,"rel","icon"),l(I,"href",Je+"/images/cropped-logo-192x192.png"),l(I,"sizes","192x192"),l(R,"rel","apple-touch-icon"),l(R,"href",Je+"/images/cropped-logo-180x180.png"),l(D,"name","msapplication-TileImage"),l(D,"content",Je+"/images/cropped-logo-270x270.png"),l(T,"rel","stylesheet"),l(T,"href",Je+"/css/main.css"),l(z,"id","footer"),l(y,"class","inner"),l(u,"id","main"),l(re,"class","logo"),dl(re.src,Fr=Je+"/images/web-logo.png")||l(re,"src",Fr),l(re,"alt","SciActive"),l(ae,"class","name"),l(Y,"class","title"),l(te,"id","top-panel"),l(te,"class","alt"),l(ye,"href",v+"/"),l(ne,"class","opener static"),l(be,"href",v+"/user-guide/introduction"),l(Ie,"href",v+"/user-guide/creating-entities"),l(Ae,"href",v+"/user-guide/entity-querying"),l(Le,"href",v+"/user-guide/subscribing-to-queries"),l($e,"href",v+"/user-guide/entity-class"),l(Ce,"href",v+"/user-guide/defining-entities"),l(Se,"href",v+"/user-guide/uids"),l(ke,"href",v+"/user-guide/transactions"),l(Te,"href",v+"/user-guide/export-and-import"),l(oe,"class","opener static"),l(we,"href",v+"/packages/nymph"),l(Me,"href",v+"/packages/driver-mysql"),l(xe,"href",v+"/packages/driver-postgresql"),l(De,"href",v+"/packages/driver-sqlite3"),l(Ne,"href",v+"/packages/server"),l(Pe,"href",v+"/packages/pubsub"),l(je,"href",v+"/packages/client"),l(qe,"href",v+"/packages/client-node"),l(Ue,"href",v+"/packages/tilmeld"),l(Qe,"href",v+"/packages/tilmeld-client"),l(Re,"href",v+"/packages/tilmeld-components"),l(ze,"href",v+"/packages/tilmeld-setup"),l(He,"href",v+"/packages/sorter"),l(Oe,"href",v+"/packages/query-parser"),l(Ge,"href",v+"/packages/guid"),l(Ee,"id","menu"),l(ie,"class","major"),l(K,"href","https://port87.social/@hperrin"),l(K,"target","_blank"),l(K,"rel","noreferrer"),l(J,"class","icon"),l(Z,"href","mailto:someone@example.com"),l(X,"class","icon"),l(U,"class","icon"),l(O,"class","contact"),l(q,"class","inner"),l(M,"id","sidebar"),al(M,"inactive",L[1])},m(f,_){e(j.head,i),e(j.head,h),e(j.head,b),e(j.head,$),e(j.head,C),e(j.head,g),e(j.head,E),e(j.head,x),e(j.head,S),e(j.head,I),e(j.head,R),e(j.head,D),e(j.head,T),Ze(f,N,_),Ze(f,u,_),e(u,y),me(P,y,null),e(y,ge),Q&&Q.m(y,null),e(y,_e),e(y,z),Ze(f,ee,_),Ze(f,M,_),e(M,q),e(q,te),e(te,Y),e(Y,re),e(Y,Dt),e(Y,ae),e(q,Nt),e(q,Ee),e(Ee,V),e(V,rt),e(rt,ye),e(ye,Pt),e(V,jt),e(V,le),e(le,ne),e(le,qt),e(le,A),e(A,at),e(at,be),e(be,Ut),e(A,Qt),e(A,lt),e(lt,Ie),e(Ie,Rt),e(A,zt),e(A,nt),e(nt,Ae),e(Ae,Ht),e(A,Ot),e(A,st),e(st,Le),e(Le,Gt),e(A,Vt),e(A,ot),e(ot,$e),e($e,Bt),e(A,Kt),e(A,it),e(it,Ce),e(Ce,Wt),e(A,Ft),e(A,ct),e(ct,Se),e(Se,Yt),e(A,Jt),e(A,ft),e(ft,ke),e(ke,Xt),e(A,Zt),e(A,ut),e(ut,Te),e(Te,er),e(V,tr),e(V,se),e(se,oe),e(se,rr),e(se,c),e(c,dt),e(dt,we),e(we,ar),e(c,lr),e(c,ht),e(ht,Me),e(Me,nr),e(c,sr),e(c,pt),e(pt,xe),e(xe,or),e(c,ir),e(c,mt),e(mt,De),e(De,cr),e(c,fr),e(c,vt),e(vt,Ne),e(Ne,ur),e(c,dr),e(c,gt),e(gt,Pe),e(Pe,hr),e(c,pr),e(c,_t),e(_t,je),e(je,mr),e(c,vr),e(c,Et),e(Et,qe),e(qe,gr),e(c,_r),e(c,yt),e(yt,Ue),e(Ue,Er),e(c,yr),e(c,bt),e(bt,Qe),e(Qe,br),e(c,Ir),e(c,It),e(It,Re),e(Re,Ar),e(c,Lr),e(c,At),e(At,ze),e(ze,$r),e(c,Cr),e(c,Lt),e(Lt,He),e(He,Sr),e(c,kr),e(c,$t),e($t,Oe),e(Oe,Tr),e(c,wr),e(c,Ct),e(Ct,Ge),e(Ge,Mr),e(q,xr),e(q,B),e(B,ie),e(B,Dr),e(B,Ve),e(B,Nr),e(B,O),e(O,J),me(ce,J,null),e(J,Pr),e(J,K),e(O,jr),e(O,X),me(fe,X,null),e(X,qr),e(X,Z),L[9](Z),e(O,Ur),e(O,U),me(ue,U,null),e(U,Qr),e(U,Rr),e(U,zr),e(U,Hr),e(U,Or),e(U,Gr),e(U,Vr),e(M,Br),k&&k.m(M,null),de=!0,Kr||(aa=[Xe(wl,"resize",L[3]),Xe(u,"click",L[4]),Xe(u,"keypress",L[8]),Xe(M,"click",L[5]),Xe(M,"keypress",L[5])],Kr=!0)},p(f,[_]){Q&&Q.p&&(!de||_&64)&&hl(Q,Wr,f,f[6],de?ml(Wr,f[6],_,null):pl(f[6]),null),f[2]?k?(k.p(f,_),_&4&&H(k,1)):(k=ll(f),k.c(),H(k,1),k.m(M,null)):k&&(yl(),G(k,1,1,()=>{k=null}),El()),(!de||_&2)&&al(M,"inactive",f[1])},i(f){de||(H(P.$$.fragment,f),H(Q,f),H(ce.$$.fragment,f),H(fe.$$.fragment,f),H(ue.$$.fragment,f),H(k),de=!0)},o(f){G(P.$$.fragment,f),G(Q,f),G(ce.$$.fragment,f),G(fe.$$.fragment,f),G(ue.$$.fragment,f),G(k),de=!1},d(f){f&&(a(N),a(u),a(ee),a(M)),a(i),a(h),a(b),a($),a(C),a(g),a(E),a(x),a(S),a(I),a(R),a(D),a(T),ve(P),Q&&Q.d(f),ve(ce),ve(fe),L[9](null),ve(ue),k&&k.d(),Kr=!1,vl(aa)}}}function xl(L,i,h){let{$$slots:b={},$$scope:$}=i,C,g=!1,E=!1;gl(()=>{const u=["sciactive.com","hperrin"].reverse().join("@");h(0,C.href="mailto:"+u,C),h(0,C.textContent=u,C),document.body.classList.remove("is-preload"),I()});let x;function S(){I(),document.body&&(document.body.classList.add("is-resizing"),clearTimeout(x),x=setTimeout(function(){document.body.classList.remove("is-resizing")},100))}function I(){h(2,E=window.innerWidth<=1280),h(1,g=E)}function R(u){"href"in u.target&&I()}const D=u=>u.key==="Enter"||I();function T(u){_l[u?"unshift":"push"](()=>{C=u,h(0,C)})}const N=u=>{u.preventDefault(),u.stopPropagation(),h(1,g=!g)};return L.$$set=u=>{"$$scope"in u&&h(6,$=u.$$scope)},[C,g,E,S,I,R,$,b,D,T,N]}class Ul extends ol{constructor(i){super(),il(this,i,xl,Ml,nl,{})}}export{Ul as component,ql as universal}; diff --git a/docs/_app/immutable/nodes/1.3e67dd50.js b/docs/_app/immutable/nodes/1.3e67dd50.js new file mode 100644 index 0000000..f31309b --- /dev/null +++ b/docs/_app/immutable/nodes/1.3e67dd50.js @@ -0,0 +1 @@ +import{s as S,f as _,l as d,a as x,g as f,h as g,m as h,d as u,c as q,i as m,u as v,n as $,v as E,F as y}from"../chunks/scheduler.d7e45cc8.js";import{S as C,i as F}from"../chunks/index.77720afb.js";import{d as H}from"../chunks/singletons.faf0a52c.js";const P=()=>{const s=H;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},j={subscribe(s){return P().page.subscribe(s)}};function k(s){var b;let t,r=s[0].status+"",o,n,i,c=((b=s[0].error)==null?void 0:b.message)+"",l;return{c(){t=_("h1"),o=d(r),n=x(),i=_("p"),l=d(c)},l(e){t=f(e,"H1",{});var a=g(t);o=h(a,r),a.forEach(u),n=q(e),i=f(e,"P",{});var p=g(i);l=h(p,c),p.forEach(u)},m(e,a){m(e,t,a),v(t,o),m(e,n,a),m(e,i,a),v(i,l)},p(e,[a]){var p;a&1&&r!==(r=e[0].status+"")&&$(o,r),a&1&&c!==(c=((p=e[0].error)==null?void 0:p.message)+"")&&$(l,c)},i:E,o:E,d(e){e&&(u(t),u(n),u(i))}}}function w(s,t,r){let o;return y(s,j,n=>r(0,o=n)),[o]}let D=class extends C{constructor(t){super(),F(this,t,w,k,S,{})}};export{D as component}; diff --git a/docs/_app/immutable/nodes/1.54985b8e.js b/docs/_app/immutable/nodes/1.54985b8e.js deleted file mode 100644 index a6f5e8a..0000000 --- a/docs/_app/immutable/nodes/1.54985b8e.js +++ /dev/null @@ -1 +0,0 @@ -import{S,i as q,s as x,k as _,q as f,a as C,l as d,m as g,r as h,h as u,c as k,b as m,C as v,u as $,D as E,O as y}from"../chunks/index.d7cc8d8b.js";import{s as D}from"../chunks/singletons.77faaafc.js";const H=()=>{const s=D;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},O={subscribe(s){return H().page.subscribe(s)}};function P(s){var b;let t,r=s[0].status+"",o,n,i,c=((b=s[0].error)==null?void 0:b.message)+"",l;return{c(){t=_("h1"),o=f(r),n=C(),i=_("p"),l=f(c)},l(e){t=d(e,"H1",{});var a=g(t);o=h(a,r),a.forEach(u),n=k(e),i=d(e,"P",{});var p=g(i);l=h(p,c),p.forEach(u)},m(e,a){m(e,t,a),v(t,o),m(e,n,a),m(e,i,a),v(i,l)},p(e,[a]){var p;a&1&&r!==(r=e[0].status+"")&&$(o,r),a&1&&c!==(c=((p=e[0].error)==null?void 0:p.message)+"")&&$(l,c)},i:E,o:E,d(e){e&&u(t),e&&u(n),e&&u(i)}}}function j(s,t,r){let o;return y(s,O,n=>r(0,o=n)),[o]}let A=class extends S{constructor(t){super(),q(this,t,j,P,x,{})}};export{A as component}; diff --git a/docs/_app/immutable/nodes/10.74e9b544.js b/docs/_app/immutable/nodes/10.74e9b544.js new file mode 100644 index 0000000..8229230 --- /dev/null +++ b/docs/_app/immutable/nodes/10.74e9b544.js @@ -0,0 +1,88 @@ +import{s as ae,I as ue,e as se,a as s,f as i,x as le,J as he,d as C,c as o,g as a,h as pe,r as u,j as T,u as r,i as oe,v as me}from"../chunks/scheduler.d7e45cc8.js";import{S as ce,i as be,b as L,d as j,m as N,a as D,t as k,e as E}from"../chunks/index.77720afb.js";import{H as M,g as de}from"../chunks/github.64534d2c.js";import{b as ge}from"../chunks/bash.7e4226ac.js";import{t as F}from"../chunks/typescript.09c48802.js";function fe(ie){let l,P,x,e,h,G='

PubSub Server

',q,v,K=`The PubSub server provides a WebSocket server that allows Nymph to publish + changes and the Nymph Client to subscribe to those changes. You can + subscribe to individual entities, entity queries, or UIDs.`,A,p,V="

Installation

",I,m,Q,c,X="

Usage

",R,y,Z=`Any Nymph instance will only publish changes if you initialize PubSub + publisher before Nymph is used! This step is absolutely required to have a working PubSub system.`,Y,b,W,S,ee=`Now, on your PubSub server, you can use the createServer function to create + a new PubSub server using HTTP (without TLS). If you want, this can be done + on the same server you use as a REST server, with a different port.`,O,d,U,w,te=`If you need to provide custom handling in your server (like TLS), you can + use the PubSub class directly and provide it a WebSocket server instance.`,z,g,J,f,re="

Options

",B,$,ne='See the config declaration file.',H;return m=new M({props:{language:ge,code:"npm install --save @nymphjs/pubsub"}}),b=new M({props:{language:F,code:`import SQLite3Driver from '@nymphjs/driver-sqlite3'; +import { Nymph } from '@nymphjs/nymph'; +import { PubSub } from '@nymphjs/pubsub'; + +const pubSubConfig = { + entries: ['ws://yourpubsubserver.tld:8080/'], // This should be set to your PubSub server URL(s). +}; + +const nymph = new Nymph( + {}, + new SQLite3Driver({ + filename: ':memory:', // Put the correct driver/config here. + }), +); +PubSub.initPublisher(pubSubConfig, nymph);`}}),d=new M({props:{language:F,code:`import SQLite3Driver from '@nymphjs/driver-sqlite3'; +import { Nymph } from '@nymphjs/nymph'; +import createServer, { PubSub } from '@nymphjs/pubsub'; + +const pubSubConfig = { + originIsAllowed: (origin) => { + // Your logic to determine allowed origins goes here. + return true; + }, + entries: ['ws://yourpubsubserver.tld:8080/'], +}; + +const nymph = new Nymph( + {}, + new SQLite3Driver({ + filename: ':memory:', // Put the correct driver/config here. + }), +); +// Don't forget to do this; even here! +PubSub.initPublisher(pubSubConfig, nymph); + +const pubsub = createServer(8080, pubSubConfig, nymph);`}}),g=new M({props:{language:F,code:`import http from 'http'; +import { server as WebSocketServer } from 'websocket'; +import SQLite3Driver from '@nymphjs/driver-sqlite3'; +import { Nymph } from '@nymphjs/nymph'; +import { PubSub } from '@nymphjs/pubsub'; + +const pubSubConfig = { + originIsAllowed: (origin) => { + // Your logic to determine allowed origins goes here. + return true; + }, + entries: ['ws://yourpubsubserver.tld:8080/'], +}; + +// Set up Nymph. +const nymph = new Nymph( + {}, + new SQLite3Driver({ + filename: ':memory:', // Put the correct driver/config here. + }), +); +// Don't forget to do this; even here! +PubSub.initPublisher(pubSubConfig, nymph); + +// Set up the PubSub server. +const port = 8080; +const server = http.createServer((_request, response) => { + response.writeHead(404); + response.end(); +}); +const listener = server.listen(port, () => { + console.log( + new Date().toISOString(), + \`Nymph-PubSub server started listening on port \${port}.\`, + ); +}); +const wsServer = new WebSocketServer({ + httpServer: listener, + // You should not use autoAcceptConnections for production + // applications, as it defeats all standard cross-origin protection + // facilities built into the protocol and the browser. You should + // *always* verify the connection's origin and decide whether or not + // to accept it. + autoAcceptConnections: false, +}); + +const pubsub = new PubSub(pubSubConfig, nymph, wsServer);`}}),{c(){l=new ue(!1),P=se(),x=s(),e=i("section"),h=i("header"),h.innerHTML=G,q=s(),v=i("p"),v.textContent=K,A=s(),p=i("header"),p.innerHTML=V,I=s(),L(m.$$.fragment),Q=s(),c=i("header"),c.innerHTML=X,R=s(),y=i("p"),y.innerHTML=Z,Y=s(),L(b.$$.fragment),W=s(),S=i("p"),S.textContent=ee,O=s(),L(d.$$.fragment),U=s(),w=i("p"),w.textContent=te,z=s(),L(g.$$.fragment),J=s(),f=i("header"),f.innerHTML=re,B=s(),$=i("p"),$.innerHTML=ne,this.h()},l(n){const _=le("svelte-5j20iv",document.head);l=he(_,!1),P=se(),_.forEach(C),x=o(n),e=a(n,"SECTION",{});var t=pe(e);h=a(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(h)!=="svelte-1qdw5uk"&&(h.innerHTML=G),q=o(t),v=a(t,"P",{"data-svelte-h":!0}),u(v)!=="svelte-1xdc8lw"&&(v.textContent=K),A=o(t),p=a(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(p)!=="svelte-1hx9pnb"&&(p.innerHTML=V),I=o(t),j(m.$$.fragment,t),Q=o(t),c=a(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(c)!=="svelte-n87w0o"&&(c.innerHTML=X),R=o(t),y=a(t,"P",{"data-svelte-h":!0}),u(y)!=="svelte-23d8mg"&&(y.innerHTML=Z),Y=o(t),j(b.$$.fragment,t),W=o(t),S=a(t,"P",{"data-svelte-h":!0}),u(S)!=="svelte-u44tq3"&&(S.textContent=ee),O=o(t),j(d.$$.fragment,t),U=o(t),w=a(t,"P",{"data-svelte-h":!0}),u(w)!=="svelte-1qhjyg3"&&(w.textContent=te),z=o(t),j(g.$$.fragment,t),J=o(t),f=a(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(f)!=="svelte-1v13hnh"&&(f.innerHTML=re),B=o(t),$=a(t,"P",{"data-svelte-h":!0}),u($)!=="svelte-139likm"&&($.innerHTML=ne),t.forEach(C),this.h()},h(){document.title="PubSub Server - Packages - Nymph.js",l.a=P,T(h,"class","major"),T(p,"class","major"),T(c,"class","major"),T(f,"class","major")},m(n,_){l.m(de,document.head),r(document.head,P),oe(n,x,_),oe(n,e,_),r(e,h),r(e,q),r(e,v),r(e,A),r(e,p),r(e,I),N(m,e,null),r(e,Q),r(e,c),r(e,R),r(e,y),r(e,Y),N(b,e,null),r(e,W),r(e,S),r(e,O),N(d,e,null),r(e,U),r(e,w),r(e,z),N(g,e,null),r(e,J),r(e,f),r(e,B),r(e,$),H=!0},p:me,i(n){H||(D(m.$$.fragment,n),D(b.$$.fragment,n),D(d.$$.fragment,n),D(g.$$.fragment,n),H=!0)},o(n){k(m.$$.fragment,n),k(b.$$.fragment,n),k(d.$$.fragment,n),k(g.$$.fragment,n),H=!1},d(n){n&&(l.d(),C(x),C(e)),C(P),E(m),E(b),E(d),E(g)}}}class Pe extends ce{constructor(l){super(),be(this,l,null,fe,ae,{})}}export{Pe as component}; diff --git a/docs/_app/immutable/nodes/10.c52e4994.js b/docs/_app/immutable/nodes/10.c52e4994.js deleted file mode 100644 index 261a6ac..0000000 --- a/docs/_app/immutable/nodes/10.c52e4994.js +++ /dev/null @@ -1,94 +0,0 @@ -import{S as Ie,i as Le,s as qe,R as Re,e as Ce,a as u,k as o,q as h,y as Q,F as xe,T as Qe,h as s,c as l,l as a,m as i,r as p,z as W,p as We,n as S,C as e,b as He,A as Y,D as Ye,g as O,d as U,B as z}from"../chunks/index.d7cc8d8b.js";import{H as B,g as Oe}from"../chunks/github.df9008b1.js";import{b as Ue}from"../chunks/bash.2b754df6.js";import{t as ge}from"../chunks/typescript.7dd1ec19.js";function ze(Ae){let m,N,L,t,w,P,F,G,T,J,K,_,j,M,V,b,X,$,D,Z,ee,d,te,k,re,se,ne,f,oe,C,ae,ie,g,ue,H,he,le,y,pe,E,A,ce,me,v,be,c,de,fe,q;return b=new B({props:{language:Ue,code:"npm install --save @nymphjs/pubsub"}}),f=new B({props:{language:ge,code:`import SQLite3Driver from '@nymphjs/driver-sqlite3'; -import { Nymph } from '@nymphjs/nymph'; -import { PubSub } from '@nymphjs/pubsub'; - -const pubSubConfig = { - entries: ['ws://yourpubsubserver.tld:8080/'], // This should be set to your PubSub server URL(s). -}; - -const nymph = new Nymph( - {}, - new SQLite3Driver({ - filename: ':memory:', // Put the correct driver/config here. - }), -); -PubSub.initPublisher(pubSubConfig, nymph);`}}),g=new B({props:{language:ge,code:`import SQLite3Driver from '@nymphjs/driver-sqlite3'; -import { Nymph } from '@nymphjs/nymph'; -import createServer, { PubSub } from '@nymphjs/pubsub'; - -const pubSubConfig = { - originIsAllowed: (origin) => { - // Your logic to determine allowed origins goes here. - return true; - }, - entries: ['ws://yourpubsubserver.tld:8080/'], -}; - -const nymph = new Nymph( - {}, - new SQLite3Driver({ - filename: ':memory:', // Put the correct driver/config here. - }), -); -// Don't forget to do this; even here! -PubSub.initPublisher(pubSubConfig, nymph); - -const pubsub = createServer(8080, pubSubConfig, nymph);`}}),y=new B({props:{language:ge,code:`import http from 'http'; -import { server as WebSocketServer } from 'websocket'; -import SQLite3Driver from '@nymphjs/driver-sqlite3'; -import { Nymph } from '@nymphjs/nymph'; -import { PubSub } from '@nymphjs/pubsub'; - -const pubSubConfig = { - originIsAllowed: (origin) => { - // Your logic to determine allowed origins goes here. - return true; - }, - entries: ['ws://yourpubsubserver.tld:8080/'], -}; - -// Set up Nymph. -const nymph = new Nymph( - {}, - new SQLite3Driver({ - filename: ':memory:', // Put the correct driver/config here. - }), -); -// Don't forget to do this; even here! -PubSub.initPublisher(pubSubConfig, nymph); - -// Set up the PubSub server. -const port = 8080; -const server = http.createServer((_request, response) => { - response.writeHead(404); - response.end(); -}); -const listener = server.listen(port, () => { - console.log( - new Date().toISOString(), - \`Nymph-PubSub server started listening on port \${port}.\`, - ); -}); -const wsServer = new WebSocketServer({ - httpServer: listener, - // You should not use autoAcceptConnections for production - // applications, as it defeats all standard cross-origin protection - // facilities built into the protocol and the browser. You should - // *always* verify the connection's origin and decide whether or not - // to accept it. - autoAcceptConnections: false, -}); - -const pubsub = new PubSub(pubSubConfig, nymph, wsServer);`}}),{c(){m=new Re(!1),N=Ce(),L=u(),t=o("section"),w=o("header"),P=o("h1"),F=h("PubSub Server"),G=u(),T=o("p"),J=h(`The PubSub server provides a WebSocket server that allows Nymph to publish - changes and the Nymph Client to subscribe to those changes. You can - subscribe to individual entities, entity queries, or UIDs.`),K=u(),_=o("header"),j=o("h2"),M=h("Installation"),V=u(),Q(b.$$.fragment),X=u(),$=o("header"),D=o("h2"),Z=h("Usage"),ee=u(),d=o("p"),te=h(`Any Nymph instance will only publish changes if you initialize PubSub - publisher before Nymph is used! This step is `),k=o("strong"),re=h("absolutely required"),se=h(" to have a working PubSub system."),ne=u(),Q(f.$$.fragment),oe=u(),C=o("p"),ae=h(`Now, on your PubSub server, you can use the createServer function to create - a new PubSub server using HTTP (without TLS). If you want, this can be done - on the same server you use as a REST server, with a different port.`),ie=u(),Q(g.$$.fragment),ue=u(),H=o("p"),he=h(`If you need to provide custom handling in your server (like TLS), you can - use the PubSub class directly and provide it a WebSocket server instance.`),le=u(),Q(y.$$.fragment),pe=u(),E=o("header"),A=o("h2"),ce=h("Options"),me=u(),v=o("p"),be=h("See the "),c=o("a"),de=h("config declaration file"),fe=h("."),this.h()},l(n){const I=xe("svelte-5j20iv",document.head);m=Qe(I,!1),N=Ce(),I.forEach(s),L=l(n),t=a(n,"SECTION",{});var r=i(t);w=a(r,"HEADER",{class:!0});var ye=i(w);P=a(ye,"H1",{style:!0});var ve=i(P);F=p(ve,"PubSub Server"),ve.forEach(s),ye.forEach(s),G=l(r),T=a(r,"P",{});var Se=i(T);J=p(Se,`The PubSub server provides a WebSocket server that allows Nymph to publish - changes and the Nymph Client to subscribe to those changes. You can - subscribe to individual entities, entity queries, or UIDs.`),Se.forEach(s),K=l(r),_=a(r,"HEADER",{class:!0});var we=i(_);j=a(we,"H2",{});var Pe=i(j);M=p(Pe,"Installation"),Pe.forEach(s),we.forEach(s),V=l(r),W(b.$$.fragment,r),X=l(r),$=a(r,"HEADER",{class:!0});var _e=i($);D=a(_e,"H2",{});var $e=i(D);Z=p($e,"Usage"),$e.forEach(s),_e.forEach(s),ee=l(r),d=a(r,"P",{});var R=i(d);te=p(R,`Any Nymph instance will only publish changes if you initialize PubSub - publisher before Nymph is used! This step is `),k=a(R,"STRONG",{});var Ee=i(k);re=p(Ee,"absolutely required"),Ee.forEach(s),se=p(R," to have a working PubSub system."),R.forEach(s),ne=l(r),W(f.$$.fragment,r),oe=l(r),C=a(r,"P",{});var Ne=i(C);ae=p(Ne,`Now, on your PubSub server, you can use the createServer function to create - a new PubSub server using HTTP (without TLS). If you want, this can be done - on the same server you use as a REST server, with a different port.`),Ne.forEach(s),ie=l(r),W(g.$$.fragment,r),ue=l(r),H=a(r,"P",{});var Te=i(H);he=p(Te,`If you need to provide custom handling in your server (like TLS), you can - use the PubSub class directly and provide it a WebSocket server instance.`),Te.forEach(s),le=l(r),W(y.$$.fragment,r),pe=l(r),E=a(r,"HEADER",{class:!0});var je=i(E);A=a(je,"H2",{});var De=i(A);ce=p(De,"Options"),De.forEach(s),je.forEach(s),me=l(r),v=a(r,"P",{});var x=i(v);be=p(x,"See the "),c=a(x,"A",{href:!0,target:!0,rel:!0});var ke=i(c);de=p(ke,"config declaration file"),ke.forEach(s),fe=p(x,"."),x.forEach(s),r.forEach(s),this.h()},h(){document.title="PubSub Server - Packages - Nymph.js",m.a=N,We(P,"font-size","3em"),S(w,"class","major"),S(_,"class","major"),S($,"class","major"),S(E,"class","major"),S(c,"href","https://github.com/sciactive/nymphjs/tree/master/packages/pubsub/src/conf/d.ts"),S(c,"target","_blank"),S(c,"rel","external")},m(n,I){m.m(Oe,document.head),e(document.head,N),He(n,L,I),He(n,t,I),e(t,w),e(w,P),e(P,F),e(t,G),e(t,T),e(T,J),e(t,K),e(t,_),e(_,j),e(j,M),e(t,V),Y(b,t,null),e(t,X),e(t,$),e($,D),e(D,Z),e(t,ee),e(t,d),e(d,te),e(d,k),e(k,re),e(d,se),e(t,ne),Y(f,t,null),e(t,oe),e(t,C),e(C,ae),e(t,ie),Y(g,t,null),e(t,ue),e(t,H),e(H,he),e(t,le),Y(y,t,null),e(t,pe),e(t,E),e(E,A),e(A,ce),e(t,me),e(t,v),e(v,be),e(v,c),e(c,de),e(v,fe),q=!0},p:Ye,i(n){q||(O(b.$$.fragment,n),O(f.$$.fragment,n),O(g.$$.fragment,n),O(y.$$.fragment,n),q=!0)},o(n){U(b.$$.fragment,n),U(f.$$.fragment,n),U(g.$$.fragment,n),U(y.$$.fragment,n),q=!1},d(n){s(N),n&&m.d(),n&&s(L),n&&s(t),z(b),z(f),z(g),z(y)}}}class Ke extends Ie{constructor(m){super(),Le(this,m,null,ze,qe,{})}}export{Ke as component}; diff --git a/docs/_app/immutable/nodes/11.223541f1.js b/docs/_app/immutable/nodes/11.223541f1.js deleted file mode 100644 index 7a1b8ec..0000000 --- a/docs/_app/immutable/nodes/11.223541f1.js +++ /dev/null @@ -1,152 +0,0 @@ -import{S as yE,i as gE,s as CE,R as OE,e as cE,a as c,k as a,q as o,y as hE,F as DE,T as kE,h as t,c as h,l,m as r,r as n,z as iE,p as wE,n as M,C as e,b as fE,A as uE,D as LE,g as EE,d as vE,B as _E}from"../chunks/index.d7cc8d8b.js";import{H as pE,g as bE}from"../chunks/github.df9008b1.js";import{b as IE}from"../chunks/bash.2b754df6.js";import{t as HE}from"../chunks/typescript.7dd1ec19.js";function qE(mE){let X,Fe,sr,s,pe,me,qr,Ur,Qe,Pr,Sr,ye,Be,Ar,Nr,z,xr,ge,Ye,Rr,Jr,G,$r,Me,Tr,jr,Fr,K,Qr,Ce,Xe,Br,Yr,ze,Mr,Xr,m,Ge,Ke,zr,Gr,Ve,We,Kr,Vr,Ze,et,Wr,Zr,y,tt,eo,to,at,ao,lo,lt,ro,oo,rt,no,so,ot,co,ho,Oe,nt,io,fo,st,uo,Eo,dt,ct,vo,_o,ht,po,mo,b,V,it,yo,go,ft,Co,Oo,I,ut,Do,ko,Et,wo,Lo,vt,_t,bo,Io,H,pt,Ho,qo,mt,Uo,Po,yt,f,So,gt,Ao,No,Ct,xo,Ro,Ot,Jo,$o,Dt,ch='{"prop":"val"}',To,jo,Fo,kt,wt,Qo,Bo,Lt,Yo,Mo,bt,W,It,hh="{guid}",Xo,zo,Ht,ih="{!guid}",Go,Ko,qt,Ut,Vo,Wo,Pt,Zo,en,St,Z,At,fh="",tn,an,Nt,uh="",ln,rn,xt,Rt,on,nn,Jt,sn,dn,$t,ee,Tt,cn,hn,jt,fn,un,Ft,Qt,En,vn,Bt,_n,pn,Yt,te,Mt,Eh="name<{guid}>",mn,yn,Xt,vh="name!<{guid}>",gn,Cn,zt,Gt,On,Dn,Kt,kn,wn,Vt,q,Wt,_h="name<{refclassname inner query}>",Ln,bn,Zt,ph="name!<{refclassname inner query}>",In,Hn,ae,ea,qn,Un,ta,Pn,Sn,aa,la,An,Nn,ra,xn,Rn,le,U,oa,mh="name",Jn,$n,na,yh="name!",Tn,jn,sa,da,Fn,Qn,P,ca,gh="name",Bn,Yn,ha,Ch="name!",Mn,Xn,ia,u,zn,fa,Gn,Kn,ua,Vn,Wn,Ea,Zn,es,va,Oh='{"prop":"val"}',ts,as,ls,_a,pa,rs,os,ma,ns,ss,ya,re,ga,ds,cs,Ca,hs,is,Oa,Da,fs,us,ka,Es,vs,wa,oe,La,_s,ps,ba,ms,ys,Ia,Ha,gs,Cs,qa,Os,Ds,ne,se,Ua,ks,ws,Pa,Ls,bs,S,Sa,Is,Hs,Aa,qs,Us,Na,xa,Ps,Ss,Ra,Ja,As,Ns,$a,xs,Rs,Ta,de,ja,Js,$s,Fa,Ts,js,Qa,Ba,Fs,Qs,Ya,Bs,Ys,A,Ma,Xa,Dh="name>number",Ms,Xs,ce,za,kh="name>relative",zs,Gs,Ga,N,Ks,Ka,Vs,Ws,Va,Zs,ed,td,he,Wa,wh='name>"relative time value"',ad,ld,Za,E,rd,el,od,nd,tl,sd,dd,al,cd,hd,ll,id,fd,ud,rl,ol,Ed,vd,nl,_d,pd,x,sl,dl,Lh="name>=number",md,yd,ie,cl,bh="name>=relative",gd,Cd,hl,R,Od,il,Dd,kd,fl,wd,Ld,bd,fe,ul,Ih='name>="relative time value"',Id,Hd,El,v,qd,vl,Ud,Pd,_l,Sd,Ad,pl,Nd,xd,ml,Rd,Jd,$d,yl,gl,Td,jd,Cl,Fd,Qd,J,Ol,Dl,Hh="name) abilities<"lifeline-subscriber">) - - -Published is not truthy and cdate is not greater than 6 months ago. - -(! [published] cdate>"6 months ago")`,Bc,Yc,ke,Zl,Mc,Xc,g,zc,er,Gc,Kc,tr,Vc,Wc,ar,Zc,eh,th,we,lr,ah,lh,F,rh,rr,oh,nh,or,sh,dh,dr;return z=new pE({props:{language:IE,code:"npm install --save @nymphjs/query-parser"}}),K=new pE({props:{language:HE,code:`import queryParser from '@nymphjs/query-parser'; - -import BlogPost from './BlogPost'; -import Category from './Category'; - -async function doQuery() { - const [options, ...selectors] = queryParser({ - query: - 'limit:4 sort:mdate foobar (| [archived] mdate<"2 weeks ago") category<{cat Tech}>', - entityClass: BlogPost, - defaultFields: ['title', 'body'], - qrefMap: { - cat: { - class: Category, - defaultFields: ['name'], - }, - }, - }); - /* - Options will be - { - class: BlogPost, - limit: 4, - sort: 'mdate' - } - - And selectors will be (equivalent to) - [ - { - type: "|", - truthy: [ - "archived" - ], - lt: [ - ["mdate", null, "2 weeks ago"] - ] - }, - { - type: "&", - qref: [ - "category", - [ - { - class: Category - }, - { - type: "|", - ilike: ["name", "%Tech%"] - } - ] - ] - }, - { - type: "|", - ilike: [ - ["title", "%foobar%"], - ["body", "%foobar%"] - ] - } - ] - */ - const entities = await nymph.getEntities(options, ...selectors); -}`}}),{c(){X=new OE(!1),Fe=cE(),sr=c(),s=a("section"),pe=a("header"),me=a("h1"),qr=o("Query Parser"),Ur=c(),Qe=a("p"),Pr=o(`The Query Parser is a utility for creating complex Nymph entity queries from - a simple text input. Essentially, it turns a string into a Nymph query.`),Sr=c(),ye=a("header"),Be=a("h2"),Ar=o("Installation"),Nr=c(),hE(z.$$.fragment),xr=c(),ge=a("header"),Ye=a("h2"),Rr=o("Usage"),Jr=c(),G=a("p"),$r=o(`The query parser will turn a string into an Options and Selectors array for - the Nymph Client. It has a syntax that allows for `),Me=a("em"),Tr=o("most"),jr=o(` features of a - Nymph query to be expressed in a text input.`),Fr=c(),hE(K.$$.fragment),Qr=c(),Ce=a("header"),Xe=a("h2"),Br=o("Options"),Yr=c(),ze=a("p"),Mr=o("You can set limit, offset, sort, and reverse like this."),Xr=c(),m=a("ul"),Ge=a("li"),Ke=a("code"),zr=o("limit:number"),Gr=c(),Ve=a("li"),We=a("code"),Kr=o("offset:number"),Vr=c(),Ze=a("li"),et=a("code"),Wr=o("sort:string"),Zr=c(),y=a("li"),tt=a("code"),eo=o("reverse:true"),to=o(", "),at=a("code"),ao=o("reverse:false"),lo=o(`, - `),lt=a("code"),ro=o("reverse:1"),oo=o(", or "),rt=a("code"),no=o("reverse:0"),so=c(),ot=a("p"),co=o(`These must appear in the top level of the query (outside of any - parentheses).`),ho=c(),Oe=a("header"),nt=a("h2"),io=o("Clauses"),fo=c(),st=a("p"),uo=o("These are the available clauses, and their syntax."),Eo=c(),dt=a("header"),ct=a("h3"),vo=o("equal and !equal"),_o=c(),ht=a("p"),po=o("Check for string or JSON representation equality."),mo=c(),b=a("ul"),V=a("li"),it=a("code"),yo=o("name=string"),go=o(" or "),ft=a("code"),Co=o("name!=string"),Oo=c(),I=a("li"),ut=a("code"),Do=o('name="string value"'),ko=o(" or "),Et=a("code"),wo=o('name!="string value"'),Lo=c(),vt=a("ul"),_t=a("li"),bo=o(`(Use this if you have a space in your string, or if your string could - be interpreted as valid JSON. Escape double quotes with a leading - backslash.)`),Io=c(),H=a("li"),pt=a("code"),Ho=o("name=JSON"),qo=o(" or "),mt=a("code"),Uo=o("name!=JSON"),Po=c(),yt=a("ul"),f=a("li"),So=o("(Match a JSON encoded value (like "),gt=a("code"),Ao=o("true"),No=o(", "),Ct=a("code"),xo=o("1"),Ro=o(`, - `),Ot=a("code"),Jo=o("[1,2,3]"),$o=o(", or "),Dt=a("code"),To=o(ch),jo=o(").)"),Fo=c(),kt=a("header"),wt=a("h3"),Qo=o("guid and !guid"),Bo=c(),Lt=a("p"),Yo=o("Check for entity GUID."),Mo=c(),bt=a("ul"),W=a("li"),It=a("code"),Xo=o(hh),zo=o(" or "),Ht=a("code"),Go=o(ih),Ko=c(),qt=a("header"),Ut=a("h3"),Vo=o("tag and !tag"),Wo=c(),Pt=a("p"),Zo=o("Check for a tag."),en=c(),St=a("ul"),Z=a("li"),At=a("code"),tn=o(fh),an=o(" or "),Nt=a("code"),ln=o(uh),rn=c(),xt=a("header"),Rt=a("h3"),on=o("truthy and !truthy"),nn=c(),Jt=a("p"),sn=o("Check for truthiness."),dn=c(),$t=a("ul"),ee=a("li"),Tt=a("code"),cn=o("[name]"),hn=o(" or "),jt=a("code"),fn=o("[!name]"),un=c(),Ft=a("header"),Qt=a("h3"),En=o("ref and !ref"),vn=c(),Bt=a("p"),_n=o("Check for a reference to another entity."),pn=c(),Yt=a("ul"),te=a("li"),Mt=a("code"),mn=o(Eh),yn=o(" or "),Xt=a("code"),gn=o(vh),Cn=c(),zt=a("header"),Gt=a("h3"),On=o("qref and !qref"),Dn=c(),Kt=a("p"),kn=o("Check for a reference to another entity using a query."),wn=c(),Vt=a("ul"),q=a("li"),Wt=a("code"),Ln=o(_h),bn=o(` or - `),Zt=a("code"),In=o(ph),Hn=c(),ae=a("ul"),ea=a("li"),qn=o("(Escape curly brackets with a leading backslash.)"),Un=c(),ta=a("li"),Pn=o(`(Requires a map of refclassname to their actual class and default - fields.)`),Sn=c(),aa=a("header"),la=a("h3"),An=o("contain and !contain"),Nn=c(),ra=a("p"),xn=o(`Check for a JSON representation appearing within the JSON representation of - the named property.`),Rn=c(),le=a("ul"),U=a("li"),oa=a("code"),Jn=o(mh),$n=o(` or - `),na=a("code"),Tn=o(yh),jn=c(),sa=a("ul"),da=a("li"),Fn=o(`(Escape angle brackets with a leading backslash. If your value could - be interpreted as valid JSON, encode it as a JSON string and use the - JSON syntax instead.)`),Qn=c(),P=a("li"),ca=a("code"),Bn=o(gh),Yn=o(` or - `),ha=a("code"),Mn=o(Ch),Xn=c(),ia=a("ul"),u=a("li"),zn=o("(Search for a JSON encoded value (like "),fa=a("code"),Gn=o("true"),Kn=o(`, - `),ua=a("code"),Vn=o("1"),Wn=o(`, - `),Ea=a("code"),Zn=o("[1,2,3]"),es=o(", or "),va=a("code"),ts=o(Oh),as=o(").)"),ls=c(),_a=a("header"),pa=a("h3"),rs=o("match and !match"),os=c(),ma=a("p"),ns=o("Check for POSIX regex match."),ss=c(),ya=a("ul"),re=a("li"),ga=a("code"),ds=o("name~/pattern/"),cs=o(" or "),Ca=a("code"),hs=o("name!~/pattern/"),is=c(),Oa=a("header"),Da=a("h3"),fs=o("imatch and !imatch"),us=c(),ka=a("p"),Es=o("Check for case insensitive POSIX regex match."),vs=c(),wa=a("ul"),oe=a("li"),La=a("code"),_s=o("name~/pattern/i"),ps=o(" or "),ba=a("code"),ms=o("name!~/pattern/i"),ys=c(),Ia=a("header"),Ha=a("h3"),gs=o("like and !like"),Cs=c(),qa=a("p"),Os=o(`Check for pattern match where _ is single char wildcard and % is any length - wildcard.`),Ds=c(),ne=a("ul"),se=a("li"),Ua=a("code"),ks=o("name~pattern"),ws=o(" or "),Pa=a("code"),Ls=o("name!~pattern"),bs=c(),S=a("li"),Sa=a("code"),Is=o('name~"pattern"'),Hs=o(" or "),Aa=a("code"),qs=o('name!~"pattern"'),Us=c(),Na=a("ul"),xa=a("li"),Ps=o("(Use this if you have a space in your pattern.)"),Ss=c(),Ra=a("header"),Ja=a("h3"),As=o("ilike and !ilike"),Ns=c(),$a=a("p"),xs=o(`Check for case insensitive pattern match where _ is single char wildcard and - % is any length wildcard.`),Rs=c(),Ta=a("ul"),de=a("li"),ja=a("code"),Js=o('name~"pattern"i'),$s=o(" or "),Fa=a("code"),Ts=o('name!~"pattern"i'),js=c(),Qa=a("header"),Ba=a("h3"),Fs=o("gt"),Qs=c(),Ya=a("p"),Bs=o("Check a prop's value is greater than a given value."),Ys=c(),A=a("ul"),Ma=a("li"),Xa=a("code"),Ms=o(Dh),Xs=c(),ce=a("li"),za=a("code"),zs=o(kh),Gs=c(),Ga=a("ul"),N=a("li"),Ks=o("(A single relative time value like "),Ka=a("code"),Vs=o("now"),Ws=o(` or - `),Va=a("code"),Zs=o("yesterday"),ed=o(".)"),td=c(),he=a("li"),Wa=a("code"),ad=o(wh),ld=c(),Za=a("ul"),E=a("li"),rd=o("(Use this for a time value with a space like "),el=a("code"),od=o('"two days from now"'),nd=o(`, - `),tl=a("code"),sd=o('"last thursday"'),dd=o(", "),al=a("code"),cd=o('"+4 weeks"'),hd=o(`, or - `),ll=a("code"),id=o('"5 minutes ago"'),fd=o(".)"),ud=c(),rl=a("header"),ol=a("h3"),Ed=o("gte"),vd=c(),nl=a("p"),_d=o("Check a prop's value is greater than or equal to a given value."),pd=c(),x=a("ul"),sl=a("li"),dl=a("code"),md=o(Lh),yd=c(),ie=a("li"),cl=a("code"),gd=o(bh),Cd=c(),hl=a("ul"),R=a("li"),Od=o("(A single relative time value like "),il=a("code"),Dd=o("now"),kd=o(` or - `),fl=a("code"),wd=o("yesterday"),Ld=o(".)"),bd=c(),fe=a("li"),ul=a("code"),Id=o(Ih),Hd=c(),El=a("ul"),v=a("li"),qd=o("(Use this for a time value with a space like "),vl=a("code"),Ud=o('"two days from now"'),Pd=o(`, - `),_l=a("code"),Sd=o('"last thursday"'),Ad=o(", "),pl=a("code"),Nd=o('"+4 weeks"'),xd=o(`, or - `),ml=a("code"),Rd=o('"5 minutes ago"'),Jd=o(".)"),$d=c(),yl=a("header"),gl=a("h3"),Td=o("lt"),jd=c(),Cl=a("p"),Fd=o("Check a prop's value is less than a given value."),Qd=c(),J=a("ul"),Ol=a("li"),Dl=a("code"),Bd=o(Hh),Yd=c(),ue=a("li"),kl=a("code"),Md=o(qh),Xd=c(),wl=a("ul"),$=a("li"),zd=o("(A single relative time value like "),Ll=a("code"),Gd=o("now"),Kd=o(` or - `),bl=a("code"),Vd=o("yesterday"),Wd=o(".)"),Zd=c(),Ee=a("li"),Il=a("code"),ec=o(Uh),tc=c(),Hl=a("ul"),_=a("li"),ac=o("(Use this for a time value with a space like "),ql=a("code"),lc=o('"two days from now"'),rc=o(`, - `),Ul=a("code"),oc=o('"last thursday"'),nc=o(", "),Pl=a("code"),sc=o('"+4 weeks"'),dc=o(`, or - `),Sl=a("code"),cc=o('"5 minutes ago"'),hc=o(".)"),ic=c(),Al=a("header"),Nl=a("h3"),fc=o("lte"),uc=c(),xl=a("p"),Ec=o("Check a prop's value is less than or equal to a given value."),vc=c(),T=a("ul"),Rl=a("li"),Jl=a("code"),_c=o(Ph),pc=c(),ve=a("li"),$l=a("code"),mc=o(Sh),yc=c(),Tl=a("ul"),j=a("li"),gc=o("(A single relative time value like "),jl=a("code"),Cc=o("now"),Oc=o(` or - `),Fl=a("code"),Dc=o("yesterday"),kc=o(".)"),wc=c(),_e=a("li"),Ql=a("code"),Lc=o(Ah),bc=c(),Bl=a("ul"),p=a("li"),Ic=o("(Use this for a time value with a space like "),Yl=a("code"),Hc=o('"two days from now"'),qc=o(`, - `),Ml=a("code"),Uc=o('"last thursday"'),Pc=o(", "),Xl=a("code"),Sc=o('"+4 weeks"'),Ac=o(`, or - `),zl=a("code"),Nc=o('"5 minutes ago"'),xc=o(".)"),Rc=c(),De=a("header"),Gl=a("h2"),Jc=o("Selectors"),$c=c(),Kl=a("p"),Tc=o(`You can specify nested selectors with different types using pairs of - parentheses. The first character (or two) inside the parentheses can be a - type: "&", "!&", "|", "!|", or "!" (the same as "!&").`),jc=c(),Vl=a("p"),Fc=o("Here are some examples of nested selectors."),Qc=c(),Wl=a("pre"),Bc=o(Nh),Yc=c(),ke=a("header"),Zl=a("h2"),Mc=o("Default Fields"),Xc=c(),g=a("p"),zc=o(`Anything contained in the query (including in selector parentheses) that - doesn't match any of the options or clause syntaxes listed above (bare query - parts) will be added (at the appropriate nesting level) to a selector with - an `),er=a("code"),Gc=o('"|"'),Kc=o(" type in an "),tr=a("code"),Vc=o("ilike"),Wc=o(` clause surrounded by "%" - characters for each field passed in to the `),ar=a("code"),Zc=o("defaultFields"),eh=o(" argument."),th=c(),we=a("header"),lr=a("h2"),ah=o("Bare Query Handler"),lh=c(),F=a("p"),rh=o("You can also supply a function in the option "),rr=a("code"),oh=o("bareHandler"),nh=o(` that - will handle bare query parts instead of the "Default Fields" behavior - described above. It will receive three arguments, the query parts, the - entity class, and the default fields entry for that class. It should return - a partial selector that will replace or extend the `),or=a("code"),sh=o('"|"'),dh=o(" selector."),this.h()},l(i){const nr=DE("svelte-18iv594",document.head);X=kE(nr,!1),Fe=cE(),nr.forEach(t),sr=h(i),s=l(i,"SECTION",{});var d=r(s);pe=l(d,"HEADER",{class:!0});var xh=r(pe);me=l(xh,"H1",{style:!0});var Rh=r(me);qr=n(Rh,"Query Parser"),Rh.forEach(t),xh.forEach(t),Ur=h(d),Qe=l(d,"P",{});var Jh=r(Qe);Pr=n(Jh,`The Query Parser is a utility for creating complex Nymph entity queries from - a simple text input. Essentially, it turns a string into a Nymph query.`),Jh.forEach(t),Sr=h(d),ye=l(d,"HEADER",{class:!0});var $h=r(ye);Be=l($h,"H2",{});var Th=r(Be);Ar=n(Th,"Installation"),Th.forEach(t),$h.forEach(t),Nr=h(d),iE(z.$$.fragment,d),xr=h(d),ge=l(d,"HEADER",{class:!0});var jh=r(ge);Ye=l(jh,"H2",{});var Fh=r(Ye);Rr=n(Fh,"Usage"),Fh.forEach(t),jh.forEach(t),Jr=h(d),G=l(d,"P",{});var cr=r(G);$r=n(cr,`The query parser will turn a string into an Options and Selectors array for - the Nymph Client. It has a syntax that allows for `),Me=l(cr,"EM",{});var Qh=r(Me);Tr=n(Qh,"most"),Qh.forEach(t),jr=n(cr,` features of a - Nymph query to be expressed in a text input.`),cr.forEach(t),Fr=h(d),iE(K.$$.fragment,d),Qr=h(d),Ce=l(d,"HEADER",{class:!0});var Bh=r(Ce);Xe=l(Bh,"H2",{});var Yh=r(Xe);Br=n(Yh,"Options"),Yh.forEach(t),Bh.forEach(t),Yr=h(d),ze=l(d,"P",{});var Mh=r(ze);Mr=n(Mh,"You can set limit, offset, sort, and reverse like this."),Mh.forEach(t),Xr=h(d),m=l(d,"UL",{});var Q=r(m);Ge=l(Q,"LI",{});var Xh=r(Ge);Ke=l(Xh,"CODE",{});var zh=r(Ke);zr=n(zh,"limit:number"),zh.forEach(t),Xh.forEach(t),Gr=h(Q),Ve=l(Q,"LI",{});var Gh=r(Ve);We=l(Gh,"CODE",{});var Kh=r(We);Kr=n(Kh,"offset:number"),Kh.forEach(t),Gh.forEach(t),Vr=h(Q),Ze=l(Q,"LI",{});var Vh=r(Ze);et=l(Vh,"CODE",{});var Wh=r(et);Wr=n(Wh,"sort:string"),Wh.forEach(t),Vh.forEach(t),Zr=h(Q),y=l(Q,"LI",{});var B=r(y);tt=l(B,"CODE",{});var Zh=r(tt);eo=n(Zh,"reverse:true"),Zh.forEach(t),to=n(B,", "),at=l(B,"CODE",{});var ei=r(at);ao=n(ei,"reverse:false"),ei.forEach(t),lo=n(B,`, - `),lt=l(B,"CODE",{});var ti=r(lt);ro=n(ti,"reverse:1"),ti.forEach(t),oo=n(B,", or "),rt=l(B,"CODE",{});var ai=r(rt);no=n(ai,"reverse:0"),ai.forEach(t),B.forEach(t),Q.forEach(t),so=h(d),ot=l(d,"P",{});var li=r(ot);co=n(li,`These must appear in the top level of the query (outside of any - parentheses).`),li.forEach(t),ho=h(d),Oe=l(d,"HEADER",{class:!0});var ri=r(Oe);nt=l(ri,"H2",{});var oi=r(nt);io=n(oi,"Clauses"),oi.forEach(t),ri.forEach(t),fo=h(d),st=l(d,"P",{});var ni=r(st);uo=n(ni,"These are the available clauses, and their syntax."),ni.forEach(t),Eo=h(d),dt=l(d,"HEADER",{});var si=r(dt);ct=l(si,"H3",{});var di=r(ct);vo=n(di,"equal and !equal"),di.forEach(t),si.forEach(t),_o=h(d),ht=l(d,"P",{});var ci=r(ht);po=n(ci,"Check for string or JSON representation equality."),ci.forEach(t),mo=h(d),b=l(d,"UL",{});var Le=r(b);V=l(Le,"LI",{});var hr=r(V);it=l(hr,"CODE",{});var hi=r(it);yo=n(hi,"name=string"),hi.forEach(t),go=n(hr," or "),ft=l(hr,"CODE",{});var ii=r(ft);Co=n(ii,"name!=string"),ii.forEach(t),hr.forEach(t),Oo=h(Le),I=l(Le,"LI",{});var be=r(I);ut=l(be,"CODE",{});var fi=r(ut);Do=n(fi,'name="string value"'),fi.forEach(t),ko=n(be," or "),Et=l(be,"CODE",{});var ui=r(Et);wo=n(ui,'name!="string value"'),ui.forEach(t),Lo=h(be),vt=l(be,"UL",{});var Ei=r(vt);_t=l(Ei,"LI",{});var vi=r(_t);bo=n(vi,`(Use this if you have a space in your string, or if your string could - be interpreted as valid JSON. Escape double quotes with a leading - backslash.)`),vi.forEach(t),Ei.forEach(t),be.forEach(t),Io=h(Le),H=l(Le,"LI",{});var Ie=r(H);pt=l(Ie,"CODE",{});var _i=r(pt);Ho=n(_i,"name=JSON"),_i.forEach(t),qo=n(Ie," or "),mt=l(Ie,"CODE",{});var pi=r(mt);Uo=n(pi,"name!=JSON"),pi.forEach(t),Po=h(Ie),yt=l(Ie,"UL",{});var mi=r(yt);f=l(mi,"LI",{});var C=r(f);So=n(C,"(Match a JSON encoded value (like "),gt=l(C,"CODE",{});var yi=r(gt);Ao=n(yi,"true"),yi.forEach(t),No=n(C,", "),Ct=l(C,"CODE",{});var gi=r(Ct);xo=n(gi,"1"),gi.forEach(t),Ro=n(C,`, - `),Ot=l(C,"CODE",{});var Ci=r(Ot);Jo=n(Ci,"[1,2,3]"),Ci.forEach(t),$o=n(C,", or "),Dt=l(C,"CODE",{});var Oi=r(Dt);To=n(Oi,ch),Oi.forEach(t),jo=n(C,").)"),C.forEach(t),mi.forEach(t),Ie.forEach(t),Le.forEach(t),Fo=h(d),kt=l(d,"HEADER",{});var Di=r(kt);wt=l(Di,"H3",{});var ki=r(wt);Qo=n(ki,"guid and !guid"),ki.forEach(t),Di.forEach(t),Bo=h(d),Lt=l(d,"P",{});var wi=r(Lt);Yo=n(wi,"Check for entity GUID."),wi.forEach(t),Mo=h(d),bt=l(d,"UL",{});var Li=r(bt);W=l(Li,"LI",{});var ir=r(W);It=l(ir,"CODE",{});var bi=r(It);Xo=n(bi,hh),bi.forEach(t),zo=n(ir," or "),Ht=l(ir,"CODE",{});var Ii=r(Ht);Go=n(Ii,ih),Ii.forEach(t),ir.forEach(t),Li.forEach(t),Ko=h(d),qt=l(d,"HEADER",{});var Hi=r(qt);Ut=l(Hi,"H3",{});var qi=r(Ut);Vo=n(qi,"tag and !tag"),qi.forEach(t),Hi.forEach(t),Wo=h(d),Pt=l(d,"P",{});var Ui=r(Pt);Zo=n(Ui,"Check for a tag."),Ui.forEach(t),en=h(d),St=l(d,"UL",{});var Pi=r(St);Z=l(Pi,"LI",{});var fr=r(Z);At=l(fr,"CODE",{});var Si=r(At);tn=n(Si,fh),Si.forEach(t),an=n(fr," or "),Nt=l(fr,"CODE",{});var Ai=r(Nt);ln=n(Ai,uh),Ai.forEach(t),fr.forEach(t),Pi.forEach(t),rn=h(d),xt=l(d,"HEADER",{});var Ni=r(xt);Rt=l(Ni,"H3",{});var xi=r(Rt);on=n(xi,"truthy and !truthy"),xi.forEach(t),Ni.forEach(t),nn=h(d),Jt=l(d,"P",{});var Ri=r(Jt);sn=n(Ri,"Check for truthiness."),Ri.forEach(t),dn=h(d),$t=l(d,"UL",{});var Ji=r($t);ee=l(Ji,"LI",{});var ur=r(ee);Tt=l(ur,"CODE",{});var $i=r(Tt);cn=n($i,"[name]"),$i.forEach(t),hn=n(ur," or "),jt=l(ur,"CODE",{});var Ti=r(jt);fn=n(Ti,"[!name]"),Ti.forEach(t),ur.forEach(t),Ji.forEach(t),un=h(d),Ft=l(d,"HEADER",{});var ji=r(Ft);Qt=l(ji,"H3",{});var Fi=r(Qt);En=n(Fi,"ref and !ref"),Fi.forEach(t),ji.forEach(t),vn=h(d),Bt=l(d,"P",{});var Qi=r(Bt);_n=n(Qi,"Check for a reference to another entity."),Qi.forEach(t),pn=h(d),Yt=l(d,"UL",{});var Bi=r(Yt);te=l(Bi,"LI",{});var Er=r(te);Mt=l(Er,"CODE",{});var Yi=r(Mt);mn=n(Yi,Eh),Yi.forEach(t),yn=n(Er," or "),Xt=l(Er,"CODE",{});var Mi=r(Xt);gn=n(Mi,vh),Mi.forEach(t),Er.forEach(t),Bi.forEach(t),Cn=h(d),zt=l(d,"HEADER",{});var Xi=r(zt);Gt=l(Xi,"H3",{});var zi=r(Gt);On=n(zi,"qref and !qref"),zi.forEach(t),Xi.forEach(t),Dn=h(d),Kt=l(d,"P",{});var Gi=r(Kt);kn=n(Gi,"Check for a reference to another entity using a query."),Gi.forEach(t),wn=h(d),Vt=l(d,"UL",{});var Ki=r(Vt);q=l(Ki,"LI",{});var He=r(q);Wt=l(He,"CODE",{});var Vi=r(Wt);Ln=n(Vi,_h),Vi.forEach(t),bn=n(He,` or - `),Zt=l(He,"CODE",{});var Wi=r(Zt);In=n(Wi,ph),Wi.forEach(t),Hn=h(He),ae=l(He,"UL",{});var vr=r(ae);ea=l(vr,"LI",{});var Zi=r(ea);qn=n(Zi,"(Escape curly brackets with a leading backslash.)"),Zi.forEach(t),Un=h(vr),ta=l(vr,"LI",{});var ef=r(ta);Pn=n(ef,`(Requires a map of refclassname to their actual class and default - fields.)`),ef.forEach(t),vr.forEach(t),He.forEach(t),Ki.forEach(t),Sn=h(d),aa=l(d,"HEADER",{});var tf=r(aa);la=l(tf,"H3",{});var af=r(la);An=n(af,"contain and !contain"),af.forEach(t),tf.forEach(t),Nn=h(d),ra=l(d,"P",{});var lf=r(ra);xn=n(lf,`Check for a JSON representation appearing within the JSON representation of - the named property.`),lf.forEach(t),Rn=h(d),le=l(d,"UL",{});var _r=r(le);U=l(_r,"LI",{});var qe=r(U);oa=l(qe,"CODE",{});var rf=r(oa);Jn=n(rf,mh),rf.forEach(t),$n=n(qe,` or - `),na=l(qe,"CODE",{});var of=r(na);Tn=n(of,yh),of.forEach(t),jn=h(qe),sa=l(qe,"UL",{});var nf=r(sa);da=l(nf,"LI",{});var sf=r(da);Fn=n(sf,`(Escape angle brackets with a leading backslash. If your value could - be interpreted as valid JSON, encode it as a JSON string and use the - JSON syntax instead.)`),sf.forEach(t),nf.forEach(t),qe.forEach(t),Qn=h(_r),P=l(_r,"LI",{});var Ue=r(P);ca=l(Ue,"CODE",{});var df=r(ca);Bn=n(df,gh),df.forEach(t),Yn=n(Ue,` or - `),ha=l(Ue,"CODE",{});var cf=r(ha);Mn=n(cf,Ch),cf.forEach(t),Xn=h(Ue),ia=l(Ue,"UL",{});var hf=r(ia);u=l(hf,"LI",{});var O=r(u);zn=n(O,"(Search for a JSON encoded value (like "),fa=l(O,"CODE",{});var ff=r(fa);Gn=n(ff,"true"),ff.forEach(t),Kn=n(O,`, - `),ua=l(O,"CODE",{});var uf=r(ua);Vn=n(uf,"1"),uf.forEach(t),Wn=n(O,`, - `),Ea=l(O,"CODE",{});var Ef=r(Ea);Zn=n(Ef,"[1,2,3]"),Ef.forEach(t),es=n(O,", or "),va=l(O,"CODE",{});var vf=r(va);ts=n(vf,Oh),vf.forEach(t),as=n(O,").)"),O.forEach(t),hf.forEach(t),Ue.forEach(t),_r.forEach(t),ls=h(d),_a=l(d,"HEADER",{});var _f=r(_a);pa=l(_f,"H3",{});var pf=r(pa);rs=n(pf,"match and !match"),pf.forEach(t),_f.forEach(t),os=h(d),ma=l(d,"P",{});var mf=r(ma);ns=n(mf,"Check for POSIX regex match."),mf.forEach(t),ss=h(d),ya=l(d,"UL",{});var yf=r(ya);re=l(yf,"LI",{});var pr=r(re);ga=l(pr,"CODE",{});var gf=r(ga);ds=n(gf,"name~/pattern/"),gf.forEach(t),cs=n(pr," or "),Ca=l(pr,"CODE",{});var Cf=r(Ca);hs=n(Cf,"name!~/pattern/"),Cf.forEach(t),pr.forEach(t),yf.forEach(t),is=h(d),Oa=l(d,"HEADER",{});var Of=r(Oa);Da=l(Of,"H3",{});var Df=r(Da);fs=n(Df,"imatch and !imatch"),Df.forEach(t),Of.forEach(t),us=h(d),ka=l(d,"P",{});var kf=r(ka);Es=n(kf,"Check for case insensitive POSIX regex match."),kf.forEach(t),vs=h(d),wa=l(d,"UL",{});var wf=r(wa);oe=l(wf,"LI",{});var mr=r(oe);La=l(mr,"CODE",{});var Lf=r(La);_s=n(Lf,"name~/pattern/i"),Lf.forEach(t),ps=n(mr," or "),ba=l(mr,"CODE",{});var bf=r(ba);ms=n(bf,"name!~/pattern/i"),bf.forEach(t),mr.forEach(t),wf.forEach(t),ys=h(d),Ia=l(d,"HEADER",{});var If=r(Ia);Ha=l(If,"H3",{});var Hf=r(Ha);gs=n(Hf,"like and !like"),Hf.forEach(t),If.forEach(t),Cs=h(d),qa=l(d,"P",{});var qf=r(qa);Os=n(qf,`Check for pattern match where _ is single char wildcard and % is any length - wildcard.`),qf.forEach(t),Ds=h(d),ne=l(d,"UL",{});var yr=r(ne);se=l(yr,"LI",{});var gr=r(se);Ua=l(gr,"CODE",{});var Uf=r(Ua);ks=n(Uf,"name~pattern"),Uf.forEach(t),ws=n(gr," or "),Pa=l(gr,"CODE",{});var Pf=r(Pa);Ls=n(Pf,"name!~pattern"),Pf.forEach(t),gr.forEach(t),bs=h(yr),S=l(yr,"LI",{});var Pe=r(S);Sa=l(Pe,"CODE",{});var Sf=r(Sa);Is=n(Sf,'name~"pattern"'),Sf.forEach(t),Hs=n(Pe," or "),Aa=l(Pe,"CODE",{});var Af=r(Aa);qs=n(Af,'name!~"pattern"'),Af.forEach(t),Us=h(Pe),Na=l(Pe,"UL",{});var Nf=r(Na);xa=l(Nf,"LI",{});var xf=r(xa);Ps=n(xf,"(Use this if you have a space in your pattern.)"),xf.forEach(t),Nf.forEach(t),Pe.forEach(t),yr.forEach(t),Ss=h(d),Ra=l(d,"HEADER",{});var Rf=r(Ra);Ja=l(Rf,"H3",{});var Jf=r(Ja);As=n(Jf,"ilike and !ilike"),Jf.forEach(t),Rf.forEach(t),Ns=h(d),$a=l(d,"P",{});var $f=r($a);xs=n($f,`Check for case insensitive pattern match where _ is single char wildcard and - % is any length wildcard.`),$f.forEach(t),Rs=h(d),Ta=l(d,"UL",{});var Tf=r(Ta);de=l(Tf,"LI",{});var Cr=r(de);ja=l(Cr,"CODE",{});var jf=r(ja);Js=n(jf,'name~"pattern"i'),jf.forEach(t),$s=n(Cr," or "),Fa=l(Cr,"CODE",{});var Ff=r(Fa);Ts=n(Ff,'name!~"pattern"i'),Ff.forEach(t),Cr.forEach(t),Tf.forEach(t),js=h(d),Qa=l(d,"HEADER",{});var Qf=r(Qa);Ba=l(Qf,"H3",{});var Bf=r(Ba);Fs=n(Bf,"gt"),Bf.forEach(t),Qf.forEach(t),Qs=h(d),Ya=l(d,"P",{});var Yf=r(Ya);Bs=n(Yf,"Check a prop's value is greater than a given value."),Yf.forEach(t),Ys=h(d),A=l(d,"UL",{});var Se=r(A);Ma=l(Se,"LI",{});var Mf=r(Ma);Xa=l(Mf,"CODE",{});var Xf=r(Xa);Ms=n(Xf,Dh),Xf.forEach(t),Mf.forEach(t),Xs=h(Se),ce=l(Se,"LI",{});var Or=r(ce);za=l(Or,"CODE",{});var zf=r(za);zs=n(zf,kh),zf.forEach(t),Gs=h(Or),Ga=l(Or,"UL",{});var Gf=r(Ga);N=l(Gf,"LI",{});var Ae=r(N);Ks=n(Ae,"(A single relative time value like "),Ka=l(Ae,"CODE",{});var Kf=r(Ka);Vs=n(Kf,"now"),Kf.forEach(t),Ws=n(Ae,` or - `),Va=l(Ae,"CODE",{});var Vf=r(Va);Zs=n(Vf,"yesterday"),Vf.forEach(t),ed=n(Ae,".)"),Ae.forEach(t),Gf.forEach(t),Or.forEach(t),td=h(Se),he=l(Se,"LI",{});var Dr=r(he);Wa=l(Dr,"CODE",{});var Wf=r(Wa);ad=n(Wf,wh),Wf.forEach(t),ld=h(Dr),Za=l(Dr,"UL",{});var Zf=r(Za);E=l(Zf,"LI",{});var D=r(E);rd=n(D,"(Use this for a time value with a space like "),el=l(D,"CODE",{});var eu=r(el);od=n(eu,'"two days from now"'),eu.forEach(t),nd=n(D,`, - `),tl=l(D,"CODE",{});var tu=r(tl);sd=n(tu,'"last thursday"'),tu.forEach(t),dd=n(D,", "),al=l(D,"CODE",{});var au=r(al);cd=n(au,'"+4 weeks"'),au.forEach(t),hd=n(D,`, or - `),ll=l(D,"CODE",{});var lu=r(ll);id=n(lu,'"5 minutes ago"'),lu.forEach(t),fd=n(D,".)"),D.forEach(t),Zf.forEach(t),Dr.forEach(t),Se.forEach(t),ud=h(d),rl=l(d,"HEADER",{});var ru=r(rl);ol=l(ru,"H3",{});var ou=r(ol);Ed=n(ou,"gte"),ou.forEach(t),ru.forEach(t),vd=h(d),nl=l(d,"P",{});var nu=r(nl);_d=n(nu,"Check a prop's value is greater than or equal to a given value."),nu.forEach(t),pd=h(d),x=l(d,"UL",{});var Ne=r(x);sl=l(Ne,"LI",{});var su=r(sl);dl=l(su,"CODE",{});var du=r(dl);md=n(du,Lh),du.forEach(t),su.forEach(t),yd=h(Ne),ie=l(Ne,"LI",{});var kr=r(ie);cl=l(kr,"CODE",{});var cu=r(cl);gd=n(cu,bh),cu.forEach(t),Cd=h(kr),hl=l(kr,"UL",{});var hu=r(hl);R=l(hu,"LI",{});var xe=r(R);Od=n(xe,"(A single relative time value like "),il=l(xe,"CODE",{});var iu=r(il);Dd=n(iu,"now"),iu.forEach(t),kd=n(xe,` or - `),fl=l(xe,"CODE",{});var fu=r(fl);wd=n(fu,"yesterday"),fu.forEach(t),Ld=n(xe,".)"),xe.forEach(t),hu.forEach(t),kr.forEach(t),bd=h(Ne),fe=l(Ne,"LI",{});var wr=r(fe);ul=l(wr,"CODE",{});var uu=r(ul);Id=n(uu,Ih),uu.forEach(t),Hd=h(wr),El=l(wr,"UL",{});var Eu=r(El);v=l(Eu,"LI",{});var k=r(v);qd=n(k,"(Use this for a time value with a space like "),vl=l(k,"CODE",{});var vu=r(vl);Ud=n(vu,'"two days from now"'),vu.forEach(t),Pd=n(k,`, - `),_l=l(k,"CODE",{});var _u=r(_l);Sd=n(_u,'"last thursday"'),_u.forEach(t),Ad=n(k,", "),pl=l(k,"CODE",{});var pu=r(pl);Nd=n(pu,'"+4 weeks"'),pu.forEach(t),xd=n(k,`, or - `),ml=l(k,"CODE",{});var mu=r(ml);Rd=n(mu,'"5 minutes ago"'),mu.forEach(t),Jd=n(k,".)"),k.forEach(t),Eu.forEach(t),wr.forEach(t),Ne.forEach(t),$d=h(d),yl=l(d,"HEADER",{});var yu=r(yl);gl=l(yu,"H3",{});var gu=r(gl);Td=n(gu,"lt"),gu.forEach(t),yu.forEach(t),jd=h(d),Cl=l(d,"P",{});var Cu=r(Cl);Fd=n(Cu,"Check a prop's value is less than a given value."),Cu.forEach(t),Qd=h(d),J=l(d,"UL",{});var Re=r(J);Ol=l(Re,"LI",{});var Ou=r(Ol);Dl=l(Ou,"CODE",{});var Du=r(Dl);Bd=n(Du,Hh),Du.forEach(t),Ou.forEach(t),Yd=h(Re),ue=l(Re,"LI",{});var Lr=r(ue);kl=l(Lr,"CODE",{});var ku=r(kl);Md=n(ku,qh),ku.forEach(t),Xd=h(Lr),wl=l(Lr,"UL",{});var wu=r(wl);$=l(wu,"LI",{});var Je=r($);zd=n(Je,"(A single relative time value like "),Ll=l(Je,"CODE",{});var Lu=r(Ll);Gd=n(Lu,"now"),Lu.forEach(t),Kd=n(Je,` or - `),bl=l(Je,"CODE",{});var bu=r(bl);Vd=n(bu,"yesterday"),bu.forEach(t),Wd=n(Je,".)"),Je.forEach(t),wu.forEach(t),Lr.forEach(t),Zd=h(Re),Ee=l(Re,"LI",{});var br=r(Ee);Il=l(br,"CODE",{});var Iu=r(Il);ec=n(Iu,Uh),Iu.forEach(t),tc=h(br),Hl=l(br,"UL",{});var Hu=r(Hl);_=l(Hu,"LI",{});var w=r(_);ac=n(w,"(Use this for a time value with a space like "),ql=l(w,"CODE",{});var qu=r(ql);lc=n(qu,'"two days from now"'),qu.forEach(t),rc=n(w,`, - `),Ul=l(w,"CODE",{});var Uu=r(Ul);oc=n(Uu,'"last thursday"'),Uu.forEach(t),nc=n(w,", "),Pl=l(w,"CODE",{});var Pu=r(Pl);sc=n(Pu,'"+4 weeks"'),Pu.forEach(t),dc=n(w,`, or - `),Sl=l(w,"CODE",{});var Su=r(Sl);cc=n(Su,'"5 minutes ago"'),Su.forEach(t),hc=n(w,".)"),w.forEach(t),Hu.forEach(t),br.forEach(t),Re.forEach(t),ic=h(d),Al=l(d,"HEADER",{});var Au=r(Al);Nl=l(Au,"H3",{});var Nu=r(Nl);fc=n(Nu,"lte"),Nu.forEach(t),Au.forEach(t),uc=h(d),xl=l(d,"P",{});var xu=r(xl);Ec=n(xu,"Check a prop's value is less than or equal to a given value."),xu.forEach(t),vc=h(d),T=l(d,"UL",{});var $e=r(T);Rl=l($e,"LI",{});var Ru=r(Rl);Jl=l(Ru,"CODE",{});var Ju=r(Jl);_c=n(Ju,Ph),Ju.forEach(t),Ru.forEach(t),pc=h($e),ve=l($e,"LI",{});var Ir=r(ve);$l=l(Ir,"CODE",{});var $u=r($l);mc=n($u,Sh),$u.forEach(t),yc=h(Ir),Tl=l(Ir,"UL",{});var Tu=r(Tl);j=l(Tu,"LI",{});var Te=r(j);gc=n(Te,"(A single relative time value like "),jl=l(Te,"CODE",{});var ju=r(jl);Cc=n(ju,"now"),ju.forEach(t),Oc=n(Te,` or - `),Fl=l(Te,"CODE",{});var Fu=r(Fl);Dc=n(Fu,"yesterday"),Fu.forEach(t),kc=n(Te,".)"),Te.forEach(t),Tu.forEach(t),Ir.forEach(t),wc=h($e),_e=l($e,"LI",{});var Hr=r(_e);Ql=l(Hr,"CODE",{});var Qu=r(Ql);Lc=n(Qu,Ah),Qu.forEach(t),bc=h(Hr),Bl=l(Hr,"UL",{});var Bu=r(Bl);p=l(Bu,"LI",{});var L=r(p);Ic=n(L,"(Use this for a time value with a space like "),Yl=l(L,"CODE",{});var Yu=r(Yl);Hc=n(Yu,'"two days from now"'),Yu.forEach(t),qc=n(L,`, - `),Ml=l(L,"CODE",{});var Mu=r(Ml);Uc=n(Mu,'"last thursday"'),Mu.forEach(t),Pc=n(L,", "),Xl=l(L,"CODE",{});var Xu=r(Xl);Sc=n(Xu,'"+4 weeks"'),Xu.forEach(t),Ac=n(L,`, or - `),zl=l(L,"CODE",{});var zu=r(zl);Nc=n(zu,'"5 minutes ago"'),zu.forEach(t),xc=n(L,".)"),L.forEach(t),Bu.forEach(t),Hr.forEach(t),$e.forEach(t),Rc=h(d),De=l(d,"HEADER",{class:!0});var Gu=r(De);Gl=l(Gu,"H2",{});var Ku=r(Gl);Jc=n(Ku,"Selectors"),Ku.forEach(t),Gu.forEach(t),$c=h(d),Kl=l(d,"P",{});var Vu=r(Kl);Tc=n(Vu,`You can specify nested selectors with different types using pairs of - parentheses. The first character (or two) inside the parentheses can be a - type: "&", "!&", "|", "!|", or "!" (the same as "!&").`),Vu.forEach(t),jc=h(d),Vl=l(d,"P",{});var Wu=r(Vl);Fc=n(Wu,"Here are some examples of nested selectors."),Wu.forEach(t),Qc=h(d),Wl=l(d,"PRE",{});var Zu=r(Wl);Bc=n(Zu,Nh),Zu.forEach(t),Yc=h(d),ke=l(d,"HEADER",{class:!0});var eE=r(ke);Zl=l(eE,"H2",{});var tE=r(Zl);Mc=n(tE,"Default Fields"),tE.forEach(t),eE.forEach(t),Xc=h(d),g=l(d,"P",{});var Y=r(g);zc=n(Y,`Anything contained in the query (including in selector parentheses) that - doesn't match any of the options or clause syntaxes listed above (bare query - parts) will be added (at the appropriate nesting level) to a selector with - an `),er=l(Y,"CODE",{});var aE=r(er);Gc=n(aE,'"|"'),aE.forEach(t),Kc=n(Y," type in an "),tr=l(Y,"CODE",{});var lE=r(tr);Vc=n(lE,"ilike"),lE.forEach(t),Wc=n(Y,` clause surrounded by "%" - characters for each field passed in to the `),ar=l(Y,"CODE",{});var rE=r(ar);Zc=n(rE,"defaultFields"),rE.forEach(t),eh=n(Y," argument."),Y.forEach(t),th=h(d),we=l(d,"HEADER",{class:!0});var oE=r(we);lr=l(oE,"H2",{});var nE=r(lr);ah=n(nE,"Bare Query Handler"),nE.forEach(t),oE.forEach(t),lh=h(d),F=l(d,"P",{});var je=r(F);rh=n(je,"You can also supply a function in the option "),rr=l(je,"CODE",{});var sE=r(rr);oh=n(sE,"bareHandler"),sE.forEach(t),nh=n(je,` that - will handle bare query parts instead of the "Default Fields" behavior - described above. It will receive three arguments, the query parts, the - entity class, and the default fields entry for that class. It should return - a partial selector that will replace or extend the `),or=l(je,"CODE",{});var dE=r(or);sh=n(dE,'"|"'),dE.forEach(t),dh=n(je," selector."),je.forEach(t),d.forEach(t),this.h()},h(){document.title="Query Parser - Packages - Nymph.js",X.a=Fe,wE(me,"font-size","3em"),M(pe,"class","major"),M(ye,"class","major"),M(ge,"class","major"),M(Ce,"class","major"),M(Oe,"class","major"),M(De,"class","major"),M(ke,"class","major"),M(we,"class","major")},m(i,nr){X.m(bE,document.head),e(document.head,Fe),fE(i,sr,nr),fE(i,s,nr),e(s,pe),e(pe,me),e(me,qr),e(s,Ur),e(s,Qe),e(Qe,Pr),e(s,Sr),e(s,ye),e(ye,Be),e(Be,Ar),e(s,Nr),uE(z,s,null),e(s,xr),e(s,ge),e(ge,Ye),e(Ye,Rr),e(s,Jr),e(s,G),e(G,$r),e(G,Me),e(Me,Tr),e(G,jr),e(s,Fr),uE(K,s,null),e(s,Qr),e(s,Ce),e(Ce,Xe),e(Xe,Br),e(s,Yr),e(s,ze),e(ze,Mr),e(s,Xr),e(s,m),e(m,Ge),e(Ge,Ke),e(Ke,zr),e(m,Gr),e(m,Ve),e(Ve,We),e(We,Kr),e(m,Vr),e(m,Ze),e(Ze,et),e(et,Wr),e(m,Zr),e(m,y),e(y,tt),e(tt,eo),e(y,to),e(y,at),e(at,ao),e(y,lo),e(y,lt),e(lt,ro),e(y,oo),e(y,rt),e(rt,no),e(s,so),e(s,ot),e(ot,co),e(s,ho),e(s,Oe),e(Oe,nt),e(nt,io),e(s,fo),e(s,st),e(st,uo),e(s,Eo),e(s,dt),e(dt,ct),e(ct,vo),e(s,_o),e(s,ht),e(ht,po),e(s,mo),e(s,b),e(b,V),e(V,it),e(it,yo),e(V,go),e(V,ft),e(ft,Co),e(b,Oo),e(b,I),e(I,ut),e(ut,Do),e(I,ko),e(I,Et),e(Et,wo),e(I,Lo),e(I,vt),e(vt,_t),e(_t,bo),e(b,Io),e(b,H),e(H,pt),e(pt,Ho),e(H,qo),e(H,mt),e(mt,Uo),e(H,Po),e(H,yt),e(yt,f),e(f,So),e(f,gt),e(gt,Ao),e(f,No),e(f,Ct),e(Ct,xo),e(f,Ro),e(f,Ot),e(Ot,Jo),e(f,$o),e(f,Dt),e(Dt,To),e(f,jo),e(s,Fo),e(s,kt),e(kt,wt),e(wt,Qo),e(s,Bo),e(s,Lt),e(Lt,Yo),e(s,Mo),e(s,bt),e(bt,W),e(W,It),e(It,Xo),e(W,zo),e(W,Ht),e(Ht,Go),e(s,Ko),e(s,qt),e(qt,Ut),e(Ut,Vo),e(s,Wo),e(s,Pt),e(Pt,Zo),e(s,en),e(s,St),e(St,Z),e(Z,At),e(At,tn),e(Z,an),e(Z,Nt),e(Nt,ln),e(s,rn),e(s,xt),e(xt,Rt),e(Rt,on),e(s,nn),e(s,Jt),e(Jt,sn),e(s,dn),e(s,$t),e($t,ee),e(ee,Tt),e(Tt,cn),e(ee,hn),e(ee,jt),e(jt,fn),e(s,un),e(s,Ft),e(Ft,Qt),e(Qt,En),e(s,vn),e(s,Bt),e(Bt,_n),e(s,pn),e(s,Yt),e(Yt,te),e(te,Mt),e(Mt,mn),e(te,yn),e(te,Xt),e(Xt,gn),e(s,Cn),e(s,zt),e(zt,Gt),e(Gt,On),e(s,Dn),e(s,Kt),e(Kt,kn),e(s,wn),e(s,Vt),e(Vt,q),e(q,Wt),e(Wt,Ln),e(q,bn),e(q,Zt),e(Zt,In),e(q,Hn),e(q,ae),e(ae,ea),e(ea,qn),e(ae,Un),e(ae,ta),e(ta,Pn),e(s,Sn),e(s,aa),e(aa,la),e(la,An),e(s,Nn),e(s,ra),e(ra,xn),e(s,Rn),e(s,le),e(le,U),e(U,oa),e(oa,Jn),e(U,$n),e(U,na),e(na,Tn),e(U,jn),e(U,sa),e(sa,da),e(da,Fn),e(le,Qn),e(le,P),e(P,ca),e(ca,Bn),e(P,Yn),e(P,ha),e(ha,Mn),e(P,Xn),e(P,ia),e(ia,u),e(u,zn),e(u,fa),e(fa,Gn),e(u,Kn),e(u,ua),e(ua,Vn),e(u,Wn),e(u,Ea),e(Ea,Zn),e(u,es),e(u,va),e(va,ts),e(u,as),e(s,ls),e(s,_a),e(_a,pa),e(pa,rs),e(s,os),e(s,ma),e(ma,ns),e(s,ss),e(s,ya),e(ya,re),e(re,ga),e(ga,ds),e(re,cs),e(re,Ca),e(Ca,hs),e(s,is),e(s,Oa),e(Oa,Da),e(Da,fs),e(s,us),e(s,ka),e(ka,Es),e(s,vs),e(s,wa),e(wa,oe),e(oe,La),e(La,_s),e(oe,ps),e(oe,ba),e(ba,ms),e(s,ys),e(s,Ia),e(Ia,Ha),e(Ha,gs),e(s,Cs),e(s,qa),e(qa,Os),e(s,Ds),e(s,ne),e(ne,se),e(se,Ua),e(Ua,ks),e(se,ws),e(se,Pa),e(Pa,Ls),e(ne,bs),e(ne,S),e(S,Sa),e(Sa,Is),e(S,Hs),e(S,Aa),e(Aa,qs),e(S,Us),e(S,Na),e(Na,xa),e(xa,Ps),e(s,Ss),e(s,Ra),e(Ra,Ja),e(Ja,As),e(s,Ns),e(s,$a),e($a,xs),e(s,Rs),e(s,Ta),e(Ta,de),e(de,ja),e(ja,Js),e(de,$s),e(de,Fa),e(Fa,Ts),e(s,js),e(s,Qa),e(Qa,Ba),e(Ba,Fs),e(s,Qs),e(s,Ya),e(Ya,Bs),e(s,Ys),e(s,A),e(A,Ma),e(Ma,Xa),e(Xa,Ms),e(A,Xs),e(A,ce),e(ce,za),e(za,zs),e(ce,Gs),e(ce,Ga),e(Ga,N),e(N,Ks),e(N,Ka),e(Ka,Vs),e(N,Ws),e(N,Va),e(Va,Zs),e(N,ed),e(A,td),e(A,he),e(he,Wa),e(Wa,ad),e(he,ld),e(he,Za),e(Za,E),e(E,rd),e(E,el),e(el,od),e(E,nd),e(E,tl),e(tl,sd),e(E,dd),e(E,al),e(al,cd),e(E,hd),e(E,ll),e(ll,id),e(E,fd),e(s,ud),e(s,rl),e(rl,ol),e(ol,Ed),e(s,vd),e(s,nl),e(nl,_d),e(s,pd),e(s,x),e(x,sl),e(sl,dl),e(dl,md),e(x,yd),e(x,ie),e(ie,cl),e(cl,gd),e(ie,Cd),e(ie,hl),e(hl,R),e(R,Od),e(R,il),e(il,Dd),e(R,kd),e(R,fl),e(fl,wd),e(R,Ld),e(x,bd),e(x,fe),e(fe,ul),e(ul,Id),e(fe,Hd),e(fe,El),e(El,v),e(v,qd),e(v,vl),e(vl,Ud),e(v,Pd),e(v,_l),e(_l,Sd),e(v,Ad),e(v,pl),e(pl,Nd),e(v,xd),e(v,ml),e(ml,Rd),e(v,Jd),e(s,$d),e(s,yl),e(yl,gl),e(gl,Td),e(s,jd),e(s,Cl),e(Cl,Fd),e(s,Qd),e(s,J),e(J,Ol),e(Ol,Dl),e(Dl,Bd),e(J,Yd),e(J,ue),e(ue,kl),e(kl,Md),e(ue,Xd),e(ue,wl),e(wl,$),e($,zd),e($,Ll),e(Ll,Gd),e($,Kd),e($,bl),e(bl,Vd),e($,Wd),e(J,Zd),e(J,Ee),e(Ee,Il),e(Il,ec),e(Ee,tc),e(Ee,Hl),e(Hl,_),e(_,ac),e(_,ql),e(ql,lc),e(_,rc),e(_,Ul),e(Ul,oc),e(_,nc),e(_,Pl),e(Pl,sc),e(_,dc),e(_,Sl),e(Sl,cc),e(_,hc),e(s,ic),e(s,Al),e(Al,Nl),e(Nl,fc),e(s,uc),e(s,xl),e(xl,Ec),e(s,vc),e(s,T),e(T,Rl),e(Rl,Jl),e(Jl,_c),e(T,pc),e(T,ve),e(ve,$l),e($l,mc),e(ve,yc),e(ve,Tl),e(Tl,j),e(j,gc),e(j,jl),e(jl,Cc),e(j,Oc),e(j,Fl),e(Fl,Dc),e(j,kc),e(T,wc),e(T,_e),e(_e,Ql),e(Ql,Lc),e(_e,bc),e(_e,Bl),e(Bl,p),e(p,Ic),e(p,Yl),e(Yl,Hc),e(p,qc),e(p,Ml),e(Ml,Uc),e(p,Pc),e(p,Xl),e(Xl,Sc),e(p,Ac),e(p,zl),e(zl,Nc),e(p,xc),e(s,Rc),e(s,De),e(De,Gl),e(Gl,Jc),e(s,$c),e(s,Kl),e(Kl,Tc),e(s,jc),e(s,Vl),e(Vl,Fc),e(s,Qc),e(s,Wl),e(Wl,Bc),e(s,Yc),e(s,ke),e(ke,Zl),e(Zl,Mc),e(s,Xc),e(s,g),e(g,zc),e(g,er),e(er,Gc),e(g,Kc),e(g,tr),e(tr,Vc),e(g,Wc),e(g,ar),e(ar,Zc),e(g,eh),e(s,th),e(s,we),e(we,lr),e(lr,ah),e(s,lh),e(s,F),e(F,rh),e(F,rr),e(rr,oh),e(F,nh),e(F,or),e(or,sh),e(F,dh),dr=!0},p:LE,i(i){dr||(EE(z.$$.fragment,i),EE(K.$$.fragment,i),dr=!0)},o(i){vE(z.$$.fragment,i),vE(K.$$.fragment,i),dr=!1},d(i){t(Fe),i&&X.d(),i&&t(sr),i&&t(s),_E(z),_E(K)}}}class NE extends yE{constructor(X){super(),gE(this,X,null,qE,CE,{})}}export{NE as component}; diff --git a/docs/_app/immutable/nodes/11.255d0ca1.js b/docs/_app/immutable/nodes/11.255d0ca1.js new file mode 100644 index 0000000..dbc8f9f --- /dev/null +++ b/docs/_app/immutable/nodes/11.255d0ca1.js @@ -0,0 +1,116 @@ +import{s as Mi,I as qi,e as pi,a as o,f as l,l as c,x as bi,J as wi,d as s,c as r,g as n,h as d,r as i,m as u,j as M,u as e,i as _i,v as ki}from"../chunks/scheduler.d7e45cc8.js";import{S as Di,i as Oi,b as mi,d as xi,m as Ei,a as Li,t as yi,e as Hi}from"../chunks/index.77720afb.js";import{H as gi,g as Pi}from"../chunks/github.64534d2c.js";import{b as Ui}from"../chunks/bash.7e4226ac.js";import{t as Ii}from"../chunks/typescript.09c48802.js";function Ai(Ti){let q,pt,tl,t,b,Na='

Query Parser

',Cl,K,$a=`The Query Parser is a utility for creating complex Nymph entity queries from + a simple text input. Essentially, it turns a string into a Nymph query.`,pl,w,za="

Installation

",_l,k,ml,D,Ja="

Usage

",xl,V,Ba=`The query parser will turn a string into an Options and Selectors array for + the Nymph Client. It has a syntax that allows for most features of a + Nymph query to be expressed in a text input.`,El,O,Ll,P,Fa="

Options

",yl,W,Qa="You can set limit, offset, sort, and reverse like this.",Hl,Z,Ya=`
  • limit:number
  • offset:number
  • sort:string
  • reverse:true, reverse:false, + reverse:1, or reverse:0
  • `,gl,ee,Xa=`These must appear in the top level of the query (outside of any + parentheses).`,Tl,U,Ga="

    Clauses

    ",Ml,te,Ka="These are the available clauses, and their syntax.",ql,le,Va="

    equal and !equal

    ",bl,ne,Wa="Check for string or JSON representation equality.",wl,_,ae,Za="name=string or name!=string",kl,oe,eo=`name="string value" or name!="string value"
    • (Use this if you have a space in your string, or if your string could + be interpreted as valid JSON. Escape double quotes with a leading + backslash.)
    `,Dl,m,re,to="name=JSON",Ol,ie,lo="name!=JSON",Pl,_t,h,Ul,se,no="true",Il,de,ao="1",Al,ce,oo="[1,2,3]",Rl,mt,ro='{"prop":"val"}',Sl,jl,Nl,ue,io="

    guid and !guid

    ",$l,he,so="Check for entity GUID.",zl,xt,I,Et,co="{guid}",Jl,Bl,Lt,uo="{!guid}",Fl,Ql,ve,ho="

    tag and !tag

    ",Yl,fe,vo="Check for a tag.",Xl,yt,A,Ht,fo="",Gl,Kl,gt,Co="",Vl,Wl,Ce,po="

    truthy and !truthy

    ",Zl,pe,_o="Check for truthiness.",en,_e,mo="
  • [name] or [!name]
  • ",tn,me,xo="

    ref and !ref

    ",ln,xe,Eo="Check for a reference to another entity.",nn,Tt,R,Mt,Lo="name<{guid}>",an,on,qt,yo="name!<{guid}>",rn,sn,Ee,Ho="

    qref and !qref

    ",dn,Le,go="Check for a reference to another entity using a query.",cn,bt,x,wt,To="name<{refclassname inner query}>",un,hn,kt,Mo="name!<{refclassname inner query}>",vn,fn,ye,qo=`
  • (Escape curly brackets with a leading backslash.)
  • (Requires a map of refclassname to their actual class and default + fields.)
  • `,Cn,He,bo="

    contain and !contain

    ",pn,ge,wo="Check if the array at the named property contains a value.",_n,S,E,Dt,ko="name",mn,xn,Ot,Do="name!",En,Ln,Te,Oo=`
  • (Escape angle brackets with a leading backslash. If your value could + be interpreted as valid JSON, encode it as a JSON string and use the + JSON syntax instead.)
  • `,yn,L,Pt,Po="name",Hn,gn,Ut,Uo="name!",Tn,Mn,It,v,qn,Me,Io="true",bn,qe,Ao="1",wn,be,Ro="[1,2,3]",kn,At,So='{"prop":"val"}',Dn,On,Pn,we,jo="

    match and !match

    ",Un,ke,No="Check for POSIX regex match.",In,De,$o="
  • name~/pattern/ or name!~/pattern/
  • ",An,Oe,zo="

    imatch and !imatch

    ",Rn,Pe,Jo="Check for case insensitive POSIX regex match.",Sn,Ue,Bo="
  • name~/pattern/i or name!~/pattern/i
  • ",jn,Ie,Fo="

    like and !like

    ",Nn,Ae,Qo=`Check for pattern match where _ is single char wildcard and % is any length + wildcard.`,$n,Re,Yo="
  • name~pattern or name!~pattern
  • name~"pattern" or name!~"pattern"
    • (Use this if you have a space in your pattern.)
  • ",zn,Se,Xo="

    ilike and !ilike

    ",Jn,je,Go=`Check for case insensitive pattern match where _ is single char wildcard and + % is any length wildcard.`,Bn,Ne,Ko="
  • name~"pattern"i or name!~"pattern"i
  • ",Fn,$e,Vo="

    gt

    ",Qn,ze,Wo="Check a prop's value is greater than a given value.",Yn,y,Rt,St,Zo="name>number",Xn,Gn,j,jt,er="name>relative",Kn,Vn,Je,tr=`
  • (A single relative time value like now or + yesterday.)
  • `,Wn,N,Nt,lr='name>"relative time value"',Zn,ea,Be,nr=`
  • (Use this for a time value with a space like "two days from now", + "last thursday", "+4 weeks", or + "5 minutes ago".)
  • `,ta,Fe,ar="

    gte

    ",la,Qe,or="Check a prop's value is greater than or equal to a given value.",na,H,$t,zt,rr="name>=number",aa,oa,$,Jt,ir="name>=relative",ra,ia,Ye,sr=`
  • (A single relative time value like now or + yesterday.)
  • `,sa,z,Bt,dr='name>="relative time value"',da,ca,Xe,cr=`
  • (Use this for a time value with a space like "two days from now", + "last thursday", "+4 weeks", or + "5 minutes ago".)
  • `,ua,Ge,ur="

    lt

    ",ha,Ke,hr="Check a prop's value is less than a given value.",va,g,Ft,Qt,vr="name(A single relative time value like now or + yesterday.)`,ma,B,Xt,pr='name<"relative time value"',xa,Ea,We,_r=`
  • (Use this for a time value with a space like "two days from now", + "last thursday", "+4 weeks", or + "5 minutes ago".)
  • `,La,Ze,mr="

    lte

    ",ya,et,xr="Check a prop's value is less than or equal to a given value.",Ha,T,Gt,Kt,Er="name<=number",ga,Ta,F,Vt,Lr="name<=relative",Ma,qa,tt,yr=`
  • (A single relative time value like now or + yesterday.)
  • `,ba,Q,Wt,Hr='name<="relative time value"',wa,ka,lt,gr=`
  • (Use this for a time value with a space like "two days from now", + "last thursday", "+4 weeks", or + "5 minutes ago".)
  • `,Da,Y,Tr="

    Selectors

    ",Oa,nt,Mr=`You can specify nested selectors with different types using pairs of + parentheses. The first character (or two) inside the parentheses can be a + type: "&", "!&", "|", "!|", or "!" (the same as "!&").`,Pa,at,qr="Here are some examples of nested selectors.",Ua,Zt,br=`Either enabled is truthy and abilities contains "subscriber", or abilities contains "lifelong-subscriber". + +(| ([enabled] abilities<"subscriber">) abilities<"lifeline-subscriber">) + + +Published is not truthy and cdate is not greater than 6 months ago. + +(! [published] cdate>"6 months ago")`,Ia,Aa,X,wr="

    Default Fields

    ",Ra,ot,kr=`Anything contained in the query (including in selector parentheses) that + doesn't match any of the options or clause syntaxes listed above (bare query + parts) will be added (at the appropriate nesting level) to a selector with + an "|" type in an ilike clause surrounded by "%" + characters for each field passed in to the defaultFields argument.`,Sa,G,Dr="

    Bare Query Handler

    ",ja,rt,Or=`You can also supply a function in the option bareHandler that + will handle bare query parts instead of the "Default Fields" behavior + described above. It will receive three arguments, the query parts, the + entity class, and the default fields entry for that class. It should return + a partial selector that will replace or extend the "|" selector.`,ll;return k=new gi({props:{language:Ui,code:"npm install --save @nymphjs/query-parser"}}),O=new gi({props:{language:Ii,code:`import queryParser from '@nymphjs/query-parser'; + +import BlogPost from './BlogPost'; +import Category from './Category'; + +async function doQuery() { + const [options, ...selectors] = queryParser({ + query: + 'limit:4 sort:mdate foobar (| [archived] mdate<"2 weeks ago") category<{cat Tech}>', + entityClass: BlogPost, + defaultFields: ['title', 'body'], + qrefMap: { + cat: { + class: Category, + defaultFields: ['name'], + }, + }, + }); + /* + Options will be + { + class: BlogPost, + limit: 4, + sort: 'mdate' + } + + And selectors will be (equivalent to) + [ + { + type: "|", + truthy: [ + "archived" + ], + lt: [ + ["mdate", null, "2 weeks ago"] + ] + }, + { + type: "&", + qref: [ + "category", + [ + { + class: Category + }, + { + type: "|", + ilike: ["name", "%Tech%"] + } + ] + ] + }, + { + type: "|", + ilike: [ + ["title", "%foobar%"], + ["body", "%foobar%"] + ] + } + ] + */ + const entities = await nymph.getEntities(options, ...selectors); +}`}}),{c(){q=new qi(!1),pt=pi(),tl=o(),t=l("section"),b=l("header"),b.innerHTML=Na,Cl=o(),K=l("p"),K.textContent=$a,pl=o(),w=l("header"),w.innerHTML=za,_l=o(),mi(k.$$.fragment),ml=o(),D=l("header"),D.innerHTML=Ja,xl=o(),V=l("p"),V.innerHTML=Ba,El=o(),mi(O.$$.fragment),Ll=o(),P=l("header"),P.innerHTML=Fa,yl=o(),W=l("p"),W.textContent=Qa,Hl=o(),Z=l("ul"),Z.innerHTML=Ya,gl=o(),ee=l("p"),ee.textContent=Xa,Tl=o(),U=l("header"),U.innerHTML=Ga,Ml=o(),te=l("p"),te.textContent=Ka,ql=o(),le=l("header"),le.innerHTML=Va,bl=o(),ne=l("p"),ne.textContent=Wa,wl=o(),_=l("ul"),ae=l("li"),ae.innerHTML=Za,kl=o(),oe=l("li"),oe.innerHTML=eo,Dl=o(),m=l("li"),re=l("code"),re.textContent=to,Ol=c(" or "),ie=l("code"),ie.textContent=lo,Pl=o(),_t=l("ul"),h=l("li"),Ul=c("(Match a JSON encoded value (like "),se=l("code"),se.textContent=no,Il=c(", "),de=l("code"),de.textContent=ao,Al=c(`, + `),ce=l("code"),ce.textContent=oo,Rl=c(", or "),mt=l("code"),Sl=c(ro),jl=c(").)"),Nl=o(),ue=l("header"),ue.innerHTML=io,$l=o(),he=l("p"),he.textContent=so,zl=o(),xt=l("ul"),I=l("li"),Et=l("code"),Jl=c(co),Bl=c(" or "),Lt=l("code"),Fl=c(uo),Ql=o(),ve=l("header"),ve.innerHTML=ho,Yl=o(),fe=l("p"),fe.textContent=vo,Xl=o(),yt=l("ul"),A=l("li"),Ht=l("code"),Gl=c(fo),Kl=c(" or "),gt=l("code"),Vl=c(Co),Wl=o(),Ce=l("header"),Ce.innerHTML=po,Zl=o(),pe=l("p"),pe.textContent=_o,en=o(),_e=l("ul"),_e.innerHTML=mo,tn=o(),me=l("header"),me.innerHTML=xo,ln=o(),xe=l("p"),xe.textContent=Eo,nn=o(),Tt=l("ul"),R=l("li"),Mt=l("code"),an=c(Lo),on=c(" or "),qt=l("code"),rn=c(yo),sn=o(),Ee=l("header"),Ee.innerHTML=Ho,dn=o(),Le=l("p"),Le.textContent=go,cn=o(),bt=l("ul"),x=l("li"),wt=l("code"),un=c(To),hn=c(` or + `),kt=l("code"),vn=c(Mo),fn=o(),ye=l("ul"),ye.innerHTML=qo,Cn=o(),He=l("header"),He.innerHTML=bo,pn=o(),ge=l("p"),ge.textContent=wo,_n=o(),S=l("ul"),E=l("li"),Dt=l("code"),mn=c(ko),xn=c(` or + `),Ot=l("code"),En=c(Do),Ln=o(),Te=l("ul"),Te.innerHTML=Oo,yn=o(),L=l("li"),Pt=l("code"),Hn=c(Po),gn=c(` or + `),Ut=l("code"),Tn=c(Uo),Mn=o(),It=l("ul"),v=l("li"),qn=c("(Search for a JSON encoded value (like "),Me=l("code"),Me.textContent=Io,bn=c(`, + `),qe=l("code"),qe.textContent=Ao,wn=c(`, + `),be=l("code"),be.textContent=Ro,kn=c(", or "),At=l("code"),Dn=c(So),On=c(").)"),Pn=o(),we=l("header"),we.innerHTML=jo,Un=o(),ke=l("p"),ke.textContent=No,In=o(),De=l("ul"),De.innerHTML=$o,An=o(),Oe=l("header"),Oe.innerHTML=zo,Rn=o(),Pe=l("p"),Pe.textContent=Jo,Sn=o(),Ue=l("ul"),Ue.innerHTML=Bo,jn=o(),Ie=l("header"),Ie.innerHTML=Fo,Nn=o(),Ae=l("p"),Ae.textContent=Qo,$n=o(),Re=l("ul"),Re.innerHTML=Yo,zn=o(),Se=l("header"),Se.innerHTML=Xo,Jn=o(),je=l("p"),je.textContent=Go,Bn=o(),Ne=l("ul"),Ne.innerHTML=Ko,Fn=o(),$e=l("header"),$e.innerHTML=Vo,Qn=o(),ze=l("p"),ze.textContent=Wo,Yn=o(),y=l("ul"),Rt=l("li"),St=l("code"),Xn=c(Zo),Gn=o(),j=l("li"),jt=l("code"),Kn=c(er),Vn=o(),Je=l("ul"),Je.innerHTML=tr,Wn=o(),N=l("li"),Nt=l("code"),Zn=c(lr),ea=o(),Be=l("ul"),Be.innerHTML=nr,ta=o(),Fe=l("header"),Fe.innerHTML=ar,la=o(),Qe=l("p"),Qe.textContent=or,na=o(),H=l("ul"),$t=l("li"),zt=l("code"),aa=c(rr),oa=o(),$=l("li"),Jt=l("code"),ra=c(ir),ia=o(),Ye=l("ul"),Ye.innerHTML=sr,sa=o(),z=l("li"),Bt=l("code"),da=c(dr),ca=o(),Xe=l("ul"),Xe.innerHTML=cr,ua=o(),Ge=l("header"),Ge.innerHTML=ur,ha=o(),Ke=l("p"),Ke.textContent=hr,va=o(),g=l("ul"),Ft=l("li"),Qt=l("code"),fa=c(vr),Ca=o(),J=l("li"),Yt=l("code"),pa=c(fr),_a=o(),Ve=l("ul"),Ve.innerHTML=Cr,ma=o(),B=l("li"),Xt=l("code"),xa=c(pr),Ea=o(),We=l("ul"),We.innerHTML=_r,La=o(),Ze=l("header"),Ze.innerHTML=mr,ya=o(),et=l("p"),et.textContent=xr,Ha=o(),T=l("ul"),Gt=l("li"),Kt=l("code"),ga=c(Er),Ta=o(),F=l("li"),Vt=l("code"),Ma=c(Lr),qa=o(),tt=l("ul"),tt.innerHTML=yr,ba=o(),Q=l("li"),Wt=l("code"),wa=c(Hr),ka=o(),lt=l("ul"),lt.innerHTML=gr,Da=o(),Y=l("header"),Y.innerHTML=Tr,Oa=o(),nt=l("p"),nt.textContent=Mr,Pa=o(),at=l("p"),at.textContent=qr,Ua=o(),Zt=l("pre"),Ia=c(br),Aa=o(),X=l("header"),X.innerHTML=wr,Ra=o(),ot=l("p"),ot.innerHTML=kr,Sa=o(),G=l("header"),G.innerHTML=Dr,ja=o(),rt=l("p"),rt.innerHTML=Or,this.h()},l(f){const el=bi("svelte-18iv594",document.head);q=wi(el,!1),pt=pi(),el.forEach(s),tl=r(f),t=n(f,"SECTION",{});var a=d(t);b=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(b)!=="svelte-ilghid"&&(b.innerHTML=Na),Cl=r(a),K=n(a,"P",{"data-svelte-h":!0}),i(K)!=="svelte-1u54ey9"&&(K.textContent=$a),pl=r(a),w=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(w)!=="svelte-1hx9pnb"&&(w.innerHTML=za),_l=r(a),xi(k.$$.fragment,a),ml=r(a),D=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(D)!=="svelte-n87w0o"&&(D.innerHTML=Ja),xl=r(a),V=n(a,"P",{"data-svelte-h":!0}),i(V)!=="svelte-d576tz"&&(V.innerHTML=Ba),El=r(a),xi(O.$$.fragment,a),Ll=r(a),P=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(P)!=="svelte-1v13hnh"&&(P.innerHTML=Fa),yl=r(a),W=n(a,"P",{"data-svelte-h":!0}),i(W)!=="svelte-k61ukp"&&(W.textContent=Qa),Hl=r(a),Z=n(a,"UL",{"data-svelte-h":!0}),i(Z)!=="svelte-w3ncnj"&&(Z.innerHTML=Ya),gl=r(a),ee=n(a,"P",{"data-svelte-h":!0}),i(ee)!=="svelte-1vvt3ch"&&(ee.textContent=Xa),Tl=r(a),U=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(U)!=="svelte-zyiri5"&&(U.innerHTML=Ga),Ml=r(a),te=n(a,"P",{"data-svelte-h":!0}),i(te)!=="svelte-1bkl19t"&&(te.textContent=Ka),ql=r(a),le=n(a,"HEADER",{"data-svelte-h":!0}),i(le)!=="svelte-1wpx9it"&&(le.innerHTML=Va),bl=r(a),ne=n(a,"P",{"data-svelte-h":!0}),i(ne)!=="svelte-1j94u4c"&&(ne.textContent=Wa),wl=r(a),_=n(a,"UL",{});var it=d(_);ae=n(it,"LI",{"data-svelte-h":!0}),i(ae)!=="svelte-1vnagpw"&&(ae.innerHTML=Za),kl=r(it),oe=n(it,"LI",{"data-svelte-h":!0}),i(oe)!=="svelte-1dirgw6"&&(oe.innerHTML=eo),Dl=r(it),m=n(it,"LI",{});var st=d(m);re=n(st,"CODE",{"data-svelte-h":!0}),i(re)!=="svelte-19pdxk6"&&(re.textContent=to),Ol=u(st," or "),ie=n(st,"CODE",{"data-svelte-h":!0}),i(ie)!=="svelte-3pupn"&&(ie.textContent=lo),Pl=r(st),_t=n(st,"UL",{});var Pr=d(_t);h=n(Pr,"LI",{});var C=d(h);Ul=u(C,"(Match a JSON encoded value (like "),se=n(C,"CODE",{"data-svelte-h":!0}),i(se)!=="svelte-1b4w2dk"&&(se.textContent=no),Il=u(C,", "),de=n(C,"CODE",{"data-svelte-h":!0}),i(de)!=="svelte-1rarbq3"&&(de.textContent=ao),Al=u(C,`, + `),ce=n(C,"CODE",{"data-svelte-h":!0}),i(ce)!=="svelte-ntdzrg"&&(ce.textContent=oo),Rl=u(C,", or "),mt=n(C,"CODE",{});var Ur=d(mt);Sl=u(Ur,ro),Ur.forEach(s),jl=u(C,").)"),C.forEach(s),Pr.forEach(s),st.forEach(s),it.forEach(s),Nl=r(a),ue=n(a,"HEADER",{"data-svelte-h":!0}),i(ue)!=="svelte-1v1minp"&&(ue.innerHTML=io),$l=r(a),he=n(a,"P",{"data-svelte-h":!0}),i(he)!=="svelte-1du67hd"&&(he.textContent=so),zl=r(a),xt=n(a,"UL",{});var Ir=d(xt);I=n(Ir,"LI",{});var nl=d(I);Et=n(nl,"CODE",{});var Ar=d(Et);Jl=u(Ar,co),Ar.forEach(s),Bl=u(nl," or "),Lt=n(nl,"CODE",{});var Rr=d(Lt);Fl=u(Rr,uo),Rr.forEach(s),nl.forEach(s),Ir.forEach(s),Ql=r(a),ve=n(a,"HEADER",{"data-svelte-h":!0}),i(ve)!=="svelte-1y925f9"&&(ve.innerHTML=ho),Yl=r(a),fe=n(a,"P",{"data-svelte-h":!0}),i(fe)!=="svelte-681s5m"&&(fe.textContent=vo),Xl=r(a),yt=n(a,"UL",{});var Sr=d(yt);A=n(Sr,"LI",{});var al=d(A);Ht=n(al,"CODE",{});var jr=d(Ht);Gl=u(jr,fo),jr.forEach(s),Kl=u(al," or "),gt=n(al,"CODE",{});var Nr=d(gt);Vl=u(Nr,Co),Nr.forEach(s),al.forEach(s),Sr.forEach(s),Wl=r(a),Ce=n(a,"HEADER",{"data-svelte-h":!0}),i(Ce)!=="svelte-1vzgm5l"&&(Ce.innerHTML=po),Zl=r(a),pe=n(a,"P",{"data-svelte-h":!0}),i(pe)!=="svelte-p4ruy4"&&(pe.textContent=_o),en=r(a),_e=n(a,"UL",{"data-svelte-h":!0}),i(_e)!=="svelte-1dq8v2h"&&(_e.innerHTML=mo),tn=r(a),me=n(a,"HEADER",{"data-svelte-h":!0}),i(me)!=="svelte-181n01z"&&(me.innerHTML=xo),ln=r(a),xe=n(a,"P",{"data-svelte-h":!0}),i(xe)!=="svelte-1m7ce6y"&&(xe.textContent=Eo),nn=r(a),Tt=n(a,"UL",{});var $r=d(Tt);R=n($r,"LI",{});var ol=d(R);Mt=n(ol,"CODE",{});var zr=d(Mt);an=u(zr,Lo),zr.forEach(s),on=u(ol," or "),qt=n(ol,"CODE",{});var Jr=d(qt);rn=u(Jr,yo),Jr.forEach(s),ol.forEach(s),$r.forEach(s),sn=r(a),Ee=n(a,"HEADER",{"data-svelte-h":!0}),i(Ee)!=="svelte-yp3f1"&&(Ee.innerHTML=Ho),dn=r(a),Le=n(a,"P",{"data-svelte-h":!0}),i(Le)!=="svelte-gnya5t"&&(Le.textContent=go),cn=r(a),bt=n(a,"UL",{});var Br=d(bt);x=n(Br,"LI",{});var dt=d(x);wt=n(dt,"CODE",{});var Fr=d(wt);un=u(Fr,To),Fr.forEach(s),hn=u(dt,` or + `),kt=n(dt,"CODE",{});var Qr=d(kt);vn=u(Qr,Mo),Qr.forEach(s),fn=r(dt),ye=n(dt,"UL",{"data-svelte-h":!0}),i(ye)!=="svelte-1rnvygs"&&(ye.innerHTML=qo),dt.forEach(s),Br.forEach(s),Cn=r(a),He=n(a,"HEADER",{"data-svelte-h":!0}),i(He)!=="svelte-zaqzad"&&(He.innerHTML=bo),pn=r(a),ge=n(a,"P",{"data-svelte-h":!0}),i(ge)!=="svelte-j3asv6"&&(ge.textContent=wo),_n=r(a),S=n(a,"UL",{});var rl=d(S);E=n(rl,"LI",{});var ct=d(E);Dt=n(ct,"CODE",{});var Yr=d(Dt);mn=u(Yr,ko),Yr.forEach(s),xn=u(ct,` or + `),Ot=n(ct,"CODE",{});var Xr=d(Ot);En=u(Xr,Do),Xr.forEach(s),Ln=r(ct),Te=n(ct,"UL",{"data-svelte-h":!0}),i(Te)!=="svelte-2dutyq"&&(Te.innerHTML=Oo),ct.forEach(s),yn=r(rl),L=n(rl,"LI",{});var ut=d(L);Pt=n(ut,"CODE",{});var Gr=d(Pt);Hn=u(Gr,Po),Gr.forEach(s),gn=u(ut,` or + `),Ut=n(ut,"CODE",{});var Kr=d(Ut);Tn=u(Kr,Uo),Kr.forEach(s),Mn=r(ut),It=n(ut,"UL",{});var Vr=d(It);v=n(Vr,"LI",{});var p=d(v);qn=u(p,"(Search for a JSON encoded value (like "),Me=n(p,"CODE",{"data-svelte-h":!0}),i(Me)!=="svelte-1b4w2dk"&&(Me.textContent=Io),bn=u(p,`, + `),qe=n(p,"CODE",{"data-svelte-h":!0}),i(qe)!=="svelte-1rarbq3"&&(qe.textContent=Ao),wn=u(p,`, + `),be=n(p,"CODE",{"data-svelte-h":!0}),i(be)!=="svelte-ntdzrg"&&(be.textContent=Ro),kn=u(p,", or "),At=n(p,"CODE",{});var Wr=d(At);Dn=u(Wr,So),Wr.forEach(s),On=u(p,").)"),p.forEach(s),Vr.forEach(s),ut.forEach(s),rl.forEach(s),Pn=r(a),we=n(a,"HEADER",{"data-svelte-h":!0}),i(we)!=="svelte-bua55r"&&(we.innerHTML=jo),Un=r(a),ke=n(a,"P",{"data-svelte-h":!0}),i(ke)!=="svelte-uwu0uk"&&(ke.textContent=No),In=r(a),De=n(a,"UL",{"data-svelte-h":!0}),i(De)!=="svelte-1ndwe67"&&(De.innerHTML=$o),An=r(a),Oe=n(a,"HEADER",{"data-svelte-h":!0}),i(Oe)!=="svelte-1rhkq09"&&(Oe.innerHTML=zo),Rn=r(a),Pe=n(a,"P",{"data-svelte-h":!0}),i(Pe)!=="svelte-7b6wj1"&&(Pe.textContent=Jo),Sn=r(a),Ue=n(a,"UL",{"data-svelte-h":!0}),i(Ue)!=="svelte-11m7ek5"&&(Ue.innerHTML=Bo),jn=r(a),Ie=n(a,"HEADER",{"data-svelte-h":!0}),i(Ie)!=="svelte-1rqgjcl"&&(Ie.innerHTML=Fo),Nn=r(a),Ae=n(a,"P",{"data-svelte-h":!0}),i(Ae)!=="svelte-1ue8bv6"&&(Ae.textContent=Qo),$n=r(a),Re=n(a,"UL",{"data-svelte-h":!0}),i(Re)!=="svelte-1tly68z"&&(Re.innerHTML=Yo),zn=r(a),Se=n(a,"HEADER",{"data-svelte-h":!0}),i(Se)!=="svelte-btuyo5"&&(Se.innerHTML=Xo),Jn=r(a),je=n(a,"P",{"data-svelte-h":!0}),i(je)!=="svelte-1m62xd1"&&(je.textContent=Go),Bn=r(a),Ne=n(a,"UL",{"data-svelte-h":!0}),i(Ne)!=="svelte-3tcf7p"&&(Ne.innerHTML=Ko),Fn=r(a),$e=n(a,"HEADER",{"data-svelte-h":!0}),i($e)!=="svelte-1565k96"&&($e.innerHTML=Vo),Qn=r(a),ze=n(a,"P",{"data-svelte-h":!0}),i(ze)!=="svelte-1st2fkl"&&(ze.textContent=Wo),Yn=r(a),y=n(a,"UL",{});var ht=d(y);Rt=n(ht,"LI",{});var Zr=d(Rt);St=n(Zr,"CODE",{});var ei=d(St);Xn=u(ei,Zo),ei.forEach(s),Zr.forEach(s),Gn=r(ht),j=n(ht,"LI",{});var il=d(j);jt=n(il,"CODE",{});var ti=d(jt);Kn=u(ti,er),ti.forEach(s),Vn=r(il),Je=n(il,"UL",{"data-svelte-h":!0}),i(Je)!=="svelte-1svbsw1"&&(Je.innerHTML=tr),il.forEach(s),Wn=r(ht),N=n(ht,"LI",{});var sl=d(N);Nt=n(sl,"CODE",{});var li=d(Nt);Zn=u(li,lr),li.forEach(s),ea=r(sl),Be=n(sl,"UL",{"data-svelte-h":!0}),i(Be)!=="svelte-1bn8y3i"&&(Be.innerHTML=nr),sl.forEach(s),ht.forEach(s),ta=r(a),Fe=n(a,"HEADER",{"data-svelte-h":!0}),i(Fe)!=="svelte-ijyrzj"&&(Fe.innerHTML=ar),la=r(a),Qe=n(a,"P",{"data-svelte-h":!0}),i(Qe)!=="svelte-1mrui9r"&&(Qe.textContent=or),na=r(a),H=n(a,"UL",{});var vt=d(H);$t=n(vt,"LI",{});var ni=d($t);zt=n(ni,"CODE",{});var ai=d(zt);aa=u(ai,rr),ai.forEach(s),ni.forEach(s),oa=r(vt),$=n(vt,"LI",{});var dl=d($);Jt=n(dl,"CODE",{});var oi=d(Jt);ra=u(oi,ir),oi.forEach(s),ia=r(dl),Ye=n(dl,"UL",{"data-svelte-h":!0}),i(Ye)!=="svelte-1svbsw1"&&(Ye.innerHTML=sr),dl.forEach(s),sa=r(vt),z=n(vt,"LI",{});var cl=d(z);Bt=n(cl,"CODE",{});var ri=d(Bt);da=u(ri,dr),ri.forEach(s),ca=r(cl),Xe=n(cl,"UL",{"data-svelte-h":!0}),i(Xe)!=="svelte-1bn8y3i"&&(Xe.innerHTML=cr),cl.forEach(s),vt.forEach(s),ua=r(a),Ge=n(a,"HEADER",{"data-svelte-h":!0}),i(Ge)!=="svelte-1qzfhtr"&&(Ge.innerHTML=ur),ha=r(a),Ke=n(a,"P",{"data-svelte-h":!0}),i(Ke)!=="svelte-1oswxdc"&&(Ke.textContent=hr),va=r(a),g=n(a,"UL",{});var ft=d(g);Ft=n(ft,"LI",{});var ii=d(Ft);Qt=n(ii,"CODE",{});var si=d(Qt);fa=u(si,vr),si.forEach(s),ii.forEach(s),Ca=r(ft),J=n(ft,"LI",{});var ul=d(J);Yt=n(ul,"CODE",{});var di=d(Yt);pa=u(di,fr),di.forEach(s),_a=r(ul),Ve=n(ul,"UL",{"data-svelte-h":!0}),i(Ve)!=="svelte-1svbsw1"&&(Ve.innerHTML=Cr),ul.forEach(s),ma=r(ft),B=n(ft,"LI",{});var hl=d(B);Xt=n(hl,"CODE",{});var ci=d(Xt);xa=u(ci,pr),ci.forEach(s),Ea=r(hl),We=n(hl,"UL",{"data-svelte-h":!0}),i(We)!=="svelte-1bn8y3i"&&(We.innerHTML=_r),hl.forEach(s),ft.forEach(s),La=r(a),Ze=n(a,"HEADER",{"data-svelte-h":!0}),i(Ze)!=="svelte-1o8n18a"&&(Ze.innerHTML=mr),ya=r(a),et=n(a,"P",{"data-svelte-h":!0}),i(et)!=="svelte-p4b7pu"&&(et.textContent=xr),Ha=r(a),T=n(a,"UL",{});var Ct=d(T);Gt=n(Ct,"LI",{});var ui=d(Gt);Kt=n(ui,"CODE",{});var hi=d(Kt);ga=u(hi,Er),hi.forEach(s),ui.forEach(s),Ta=r(Ct),F=n(Ct,"LI",{});var vl=d(F);Vt=n(vl,"CODE",{});var vi=d(Vt);Ma=u(vi,Lr),vi.forEach(s),qa=r(vl),tt=n(vl,"UL",{"data-svelte-h":!0}),i(tt)!=="svelte-1svbsw1"&&(tt.innerHTML=yr),vl.forEach(s),ba=r(Ct),Q=n(Ct,"LI",{});var fl=d(Q);Wt=n(fl,"CODE",{});var fi=d(Wt);wa=u(fi,Hr),fi.forEach(s),ka=r(fl),lt=n(fl,"UL",{"data-svelte-h":!0}),i(lt)!=="svelte-1bn8y3i"&&(lt.innerHTML=gr),fl.forEach(s),Ct.forEach(s),Da=r(a),Y=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(Y)!=="svelte-o2bzkl"&&(Y.innerHTML=Tr),Oa=r(a),nt=n(a,"P",{"data-svelte-h":!0}),i(nt)!=="svelte-1ego8n1"&&(nt.textContent=Mr),Pa=r(a),at=n(a,"P",{"data-svelte-h":!0}),i(at)!=="svelte-jrvukd"&&(at.textContent=qr),Ua=r(a),Zt=n(a,"PRE",{});var Ci=d(Zt);Ia=u(Ci,br),Ci.forEach(s),Aa=r(a),X=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(X)!=="svelte-1o84pgh"&&(X.innerHTML=wr),Ra=r(a),ot=n(a,"P",{"data-svelte-h":!0}),i(ot)!=="svelte-6nx9nn"&&(ot.innerHTML=kr),Sa=r(a),G=n(a,"HEADER",{class:!0,"data-svelte-h":!0}),i(G)!=="svelte-g58mlz"&&(G.innerHTML=Dr),ja=r(a),rt=n(a,"P",{"data-svelte-h":!0}),i(rt)!=="svelte-15xz686"&&(rt.innerHTML=Or),a.forEach(s),this.h()},h(){document.title="Query Parser - Packages - Nymph.js",q.a=pt,M(b,"class","major"),M(w,"class","major"),M(D,"class","major"),M(P,"class","major"),M(U,"class","major"),M(Y,"class","major"),M(X,"class","major"),M(G,"class","major")},m(f,el){q.m(Pi,document.head),e(document.head,pt),_i(f,tl,el),_i(f,t,el),e(t,b),e(t,Cl),e(t,K),e(t,pl),e(t,w),e(t,_l),Ei(k,t,null),e(t,ml),e(t,D),e(t,xl),e(t,V),e(t,El),Ei(O,t,null),e(t,Ll),e(t,P),e(t,yl),e(t,W),e(t,Hl),e(t,Z),e(t,gl),e(t,ee),e(t,Tl),e(t,U),e(t,Ml),e(t,te),e(t,ql),e(t,le),e(t,bl),e(t,ne),e(t,wl),e(t,_),e(_,ae),e(_,kl),e(_,oe),e(_,Dl),e(_,m),e(m,re),e(m,Ol),e(m,ie),e(m,Pl),e(m,_t),e(_t,h),e(h,Ul),e(h,se),e(h,Il),e(h,de),e(h,Al),e(h,ce),e(h,Rl),e(h,mt),e(mt,Sl),e(h,jl),e(t,Nl),e(t,ue),e(t,$l),e(t,he),e(t,zl),e(t,xt),e(xt,I),e(I,Et),e(Et,Jl),e(I,Bl),e(I,Lt),e(Lt,Fl),e(t,Ql),e(t,ve),e(t,Yl),e(t,fe),e(t,Xl),e(t,yt),e(yt,A),e(A,Ht),e(Ht,Gl),e(A,Kl),e(A,gt),e(gt,Vl),e(t,Wl),e(t,Ce),e(t,Zl),e(t,pe),e(t,en),e(t,_e),e(t,tn),e(t,me),e(t,ln),e(t,xe),e(t,nn),e(t,Tt),e(Tt,R),e(R,Mt),e(Mt,an),e(R,on),e(R,qt),e(qt,rn),e(t,sn),e(t,Ee),e(t,dn),e(t,Le),e(t,cn),e(t,bt),e(bt,x),e(x,wt),e(wt,un),e(x,hn),e(x,kt),e(kt,vn),e(x,fn),e(x,ye),e(t,Cn),e(t,He),e(t,pn),e(t,ge),e(t,_n),e(t,S),e(S,E),e(E,Dt),e(Dt,mn),e(E,xn),e(E,Ot),e(Ot,En),e(E,Ln),e(E,Te),e(S,yn),e(S,L),e(L,Pt),e(Pt,Hn),e(L,gn),e(L,Ut),e(Ut,Tn),e(L,Mn),e(L,It),e(It,v),e(v,qn),e(v,Me),e(v,bn),e(v,qe),e(v,wn),e(v,be),e(v,kn),e(v,At),e(At,Dn),e(v,On),e(t,Pn),e(t,we),e(t,Un),e(t,ke),e(t,In),e(t,De),e(t,An),e(t,Oe),e(t,Rn),e(t,Pe),e(t,Sn),e(t,Ue),e(t,jn),e(t,Ie),e(t,Nn),e(t,Ae),e(t,$n),e(t,Re),e(t,zn),e(t,Se),e(t,Jn),e(t,je),e(t,Bn),e(t,Ne),e(t,Fn),e(t,$e),e(t,Qn),e(t,ze),e(t,Yn),e(t,y),e(y,Rt),e(Rt,St),e(St,Xn),e(y,Gn),e(y,j),e(j,jt),e(jt,Kn),e(j,Vn),e(j,Je),e(y,Wn),e(y,N),e(N,Nt),e(Nt,Zn),e(N,ea),e(N,Be),e(t,ta),e(t,Fe),e(t,la),e(t,Qe),e(t,na),e(t,H),e(H,$t),e($t,zt),e(zt,aa),e(H,oa),e(H,$),e($,Jt),e(Jt,ra),e($,ia),e($,Ye),e(H,sa),e(H,z),e(z,Bt),e(Bt,da),e(z,ca),e(z,Xe),e(t,ua),e(t,Ge),e(t,ha),e(t,Ke),e(t,va),e(t,g),e(g,Ft),e(Ft,Qt),e(Qt,fa),e(g,Ca),e(g,J),e(J,Yt),e(Yt,pa),e(J,_a),e(J,Ve),e(g,ma),e(g,B),e(B,Xt),e(Xt,xa),e(B,Ea),e(B,We),e(t,La),e(t,Ze),e(t,ya),e(t,et),e(t,Ha),e(t,T),e(T,Gt),e(Gt,Kt),e(Kt,ga),e(T,Ta),e(T,F),e(F,Vt),e(Vt,Ma),e(F,qa),e(F,tt),e(T,ba),e(T,Q),e(Q,Wt),e(Wt,wa),e(Q,ka),e(Q,lt),e(t,Da),e(t,Y),e(t,Oa),e(t,nt),e(t,Pa),e(t,at),e(t,Ua),e(t,Zt),e(Zt,Ia),e(t,Aa),e(t,X),e(t,Ra),e(t,ot),e(t,Sa),e(t,G),e(t,ja),e(t,rt),ll=!0},p:ki,i(f){ll||(Li(k.$$.fragment,f),Li(O.$$.fragment,f),ll=!0)},o(f){yi(k.$$.fragment,f),yi(O.$$.fragment,f),ll=!1},d(f){f&&(q.d(),s(tl),s(t)),s(pt),Hi(k),Hi(O)}}}class zi extends Di{constructor(q){super(),Oi(this,q,null,Ai,Mi,{})}}export{zi as component}; diff --git a/docs/_app/immutable/nodes/12.5662eea9.js b/docs/_app/immutable/nodes/12.5662eea9.js deleted file mode 100644 index a66250d..0000000 --- a/docs/_app/immutable/nodes/12.5662eea9.js +++ /dev/null @@ -1,120 +0,0 @@ -import{S as be,i as Re,s as je,R as Me,e as xe,a as l,k as a,q as p,y as k,F as De,T as He,h as n,c as h,l as o,m as i,r as m,z as I,p as Ae,n as ue,C as e,b as Ce,A as U,D as Pe,g as q,d as L,B as Q}from"../chunks/index.d7cc8d8b.js";import{H as F,g as ke}from"../chunks/github.df9008b1.js";import{b as Ie}from"../chunks/bash.2b754df6.js";import{t as ye}from"../chunks/typescript.7dd1ec19.js";function Ue(Ne){let u,$,D,t,E,w,O,Y,T,z,X,_,x,B,G,y,J,S,C,K,V,N,W,Z,d,ee,b,te,re,c,se,R,ne,ae,oe,f,ie,v,le,j,pe,he,me,g,H;return y=new F({props:{language:Ie,code:"npm install --save @nymphjs/server"}}),d=new F({props:{language:ye,code:`import express from 'express'; -import { Nymph } from '@nymphjs/nymph'; -import SQLite3Driver from '@nymphjs/driver-sqlite3'; -import createServer from '@nymphjs/server'; - -// Import all the entities you will be using on the server. -import MyEntityClass from './entities/MyEntity'; - -// Configure Nymph. -const nymph = new Nymph( - {}, - new SQLite3Driver({ - filename: ':memory:', - }), -); -const MyEntity = nymph.addEntityClass(MyEntityClass); - -// Create your Express app. -const app = express(); - -// Create and use the REST server (with an optional path). -app.use('/rest', createServer(nymph)); - -// Do anything else you need to do... - -// Start your server. -app.listen(80);`}}),f=new F({props:{language:ye,code:`import { Nymph } from '@nymphjs/client'; - -import MyEntityClass from './entities/MyEntityClient'; - -const nymph = new Nymph({ - // You should configure your Express server to - // use HTTPS, but you don't have to. - restUrl: 'https://mydomain.tld/rest', -}); -const MyEntity = nymph.addEntityClass(MyEntityClass);`}}),g=new F({props:{language:ye,code:`import express from 'express'; -import { Nymph } from '@nymphjs/nymph'; -import SQLite3Driver from '@nymphjs/driver-sqlite3'; -import { Tilmeld } from '@nymphjs/tilmeld'; -import createServer from '@nymphjs/server'; -import setup from '@nymphjs/tilmeld-setup'; - -// Import all the entities you will be using on the server. -import MyEntityClass from './entities/MyEntity'; - -// Consfigure Tilmeld. -const tilmeld = new Tilmeld({ - appName: 'My Awesome App', - appUrl: 'https://mydomain.tld', - setupPath: '/user', -}); - -// Configure Nymph. -const nymph = new Nymph( - {}, - new SQLite3Driver({ - filename: ':memory:', - }), - tilmeld, -); -const MyEntity = nymph.addEntityClass(MyEntityClass); - -// Create your Express app. -const app = express(); - -// Authenticate the user manually. -app.use('/rest', async (request, response, next) => { - const { User } = tilmeld; - - try { - // Somehow authenticate the user... - const user = await User.factoryUsername(username); - - if (user.guid != null && user.enabled) { - response.locals.user = user; - } - - next(); - } catch (e: any) { - response.status(500); - response.send('Internal server error.'); - } -}); - -// Create and use the REST server (with an optional path). -app.use('/rest', createServer(nymph)); - -// Create Tilmeld setup app. -app.user( - '/user', - setup( - { - restUrl: 'https://mydomain.tld/rest', - }, - nymph, - ), -); - -// Do anything else you need to do... - -// Start your server. -app.listen(80);`}}),{c(){u=new Me(!1),$=xe(),D=l(),t=a("section"),E=a("header"),w=a("h1"),O=p("REST Server"),Y=l(),T=a("p"),z=p(`The REST server lets you configure an endpoint for the Nymph client to query - and push data to. The server provides this endpoint as an Express - middleware, which can be used in a new or existing Express (or compatible) - server.`),X=l(),_=a("header"),x=a("h2"),B=p("Installation"),G=l(),k(y.$$.fragment),J=l(),S=a("header"),C=a("h2"),K=p("Usage"),V=l(),N=a("p"),W=p(`You need to install Express, Nymph, and a Nymph driver, then you can use the - REST server with an optional path. For this example, I'll use the SQLite3 - driver with an in-memory database.`),Z=l(),k(d.$$.fragment),ee=l(),b=a("p"),te=p(`You will need to import any entities you use on the server, so they are - available to Nymph.`),re=l(),c=a("p"),se=p("Now you can configure your "),R=a("strong"),ne=p("client"),ae=p(`, using your server's - address (and the optional path, if set).`),oe=l(),k(f.$$.fragment),ie=l(),v=a("p"),le=p(`The REST server will authenticate for you using the Tilmeld auth cookie and - XSRF token, but if you need to, you can authenticate in some other way (like - OAuth2), and place the user in `),j=a("code"),pe=p("response.locals.user"),he=p("."),me=l(),k(g.$$.fragment),this.h()},l(s){const M=De("svelte-vfb9fs",document.head);u=He(M,!1),$=xe(),M.forEach(n),D=h(s),t=o(s,"SECTION",{});var r=i(t);E=o(r,"HEADER",{class:!0});var de=i(E);w=o(de,"H1",{style:!0});var ce=i(w);O=m(ce,"REST Server"),ce.forEach(n),de.forEach(n),Y=h(r),T=o(r,"P",{});var fe=i(T);z=m(fe,`The REST server lets you configure an endpoint for the Nymph client to query - and push data to. The server provides this endpoint as an Express - middleware, which can be used in a new or existing Express (or compatible) - server.`),fe.forEach(n),X=h(r),_=o(r,"HEADER",{class:!0});var ve=i(_);x=o(ve,"H2",{});var ge=i(x);B=m(ge,"Installation"),ge.forEach(n),ve.forEach(n),G=h(r),I(y.$$.fragment,r),J=h(r),S=o(r,"HEADER",{class:!0});var Ee=i(S);C=o(Ee,"H2",{});var we=i(C);K=m(we,"Usage"),we.forEach(n),Ee.forEach(n),V=h(r),N=o(r,"P",{});var _e=i(N);W=m(_e,`You need to install Express, Nymph, and a Nymph driver, then you can use the - REST server with an optional path. For this example, I'll use the SQLite3 - driver with an in-memory database.`),_e.forEach(n),Z=h(r),I(d.$$.fragment,r),ee=h(r),b=o(r,"P",{});var Se=i(b);te=m(Se,`You will need to import any entities you use on the server, so they are - available to Nymph.`),Se.forEach(n),re=h(r),c=o(r,"P",{});var A=i(c);se=m(A,"Now you can configure your "),R=o(A,"STRONG",{});var $e=i(R);ne=m($e,"client"),$e.forEach(n),ae=m(A,`, using your server's - address (and the optional path, if set).`),A.forEach(n),oe=h(r),I(f.$$.fragment,r),ie=h(r),v=o(r,"P",{});var P=i(v);le=m(P,`The REST server will authenticate for you using the Tilmeld auth cookie and - XSRF token, but if you need to, you can authenticate in some other way (like - OAuth2), and place the user in `),j=o(P,"CODE",{});var Te=i(j);pe=m(Te,"response.locals.user"),Te.forEach(n),he=m(P,"."),P.forEach(n),me=h(r),I(g.$$.fragment,r),r.forEach(n),this.h()},h(){document.title="REST Server - Packages - Nymph.js",u.a=$,Ae(w,"font-size","3em"),ue(E,"class","major"),ue(_,"class","major"),ue(S,"class","major")},m(s,M){u.m(ke,document.head),e(document.head,$),Ce(s,D,M),Ce(s,t,M),e(t,E),e(E,w),e(w,O),e(t,Y),e(t,T),e(T,z),e(t,X),e(t,_),e(_,x),e(x,B),e(t,G),U(y,t,null),e(t,J),e(t,S),e(S,C),e(C,K),e(t,V),e(t,N),e(N,W),e(t,Z),U(d,t,null),e(t,ee),e(t,b),e(b,te),e(t,re),e(t,c),e(c,se),e(c,R),e(R,ne),e(c,ae),e(t,oe),U(f,t,null),e(t,ie),e(t,v),e(v,le),e(v,j),e(j,pe),e(v,he),e(t,me),U(g,t,null),H=!0},p:Pe,i(s){H||(q(y.$$.fragment,s),q(d.$$.fragment,s),q(f.$$.fragment,s),q(g.$$.fragment,s),H=!0)},o(s){L(y.$$.fragment,s),L(d.$$.fragment,s),L(f.$$.fragment,s),L(g.$$.fragment,s),H=!1},d(s){n($),s&&u.d(),s&&n(D),s&&n(t),Q(y),Q(d),Q(f),Q(g)}}}class Oe extends be{constructor(u){super(),Re(this,u,null,Ue,je,{})}}export{Oe as component}; diff --git a/docs/_app/immutable/nodes/12.b900fcff.js b/docs/_app/immutable/nodes/12.b900fcff.js new file mode 100644 index 0000000..5e34b02 --- /dev/null +++ b/docs/_app/immutable/nodes/12.b900fcff.js @@ -0,0 +1,111 @@ +import{s as re,I as ae,e as te,a as r,f as o,x as oe,J as ie,d as T,c as a,g as i,h as le,r as l,j as O,u as n,i as ne,v as pe}from"../chunks/scheduler.d7e45cc8.js";import{S as me,i as he,b as M,d as H,m as b,a as N,t as j,e as L}from"../chunks/index.77720afb.js";import{H as R,g as ue}from"../chunks/github.64534d2c.js";import{b as ye}from"../chunks/bash.7e4226ac.js";import{t as J}from"../chunks/typescript.09c48802.js";function de(se){let p,$,_,e,m,X='

    REST Server

    ',D,g,B=`The REST server lets you configure an endpoint for the Nymph client to query + and push data to. The server provides this endpoint as an Express + middleware, which can be used in a new or existing Express (or compatible) + server.`,P,h,G="

    Installation

    ",A,u,I,y,K="

    Usage

    ",U,v,V=`You need to install Express, Nymph, and a Nymph driver, then you can use the + REST server with an optional path. For this example, I'll use the SQLite3 + driver with an in-memory database.`,q,d,Q,E,W=`You will need to import any entities you use on the server, so they are + available to Nymph.`,k,x,Z=`Now you can configure your client, using your server's + address (and the optional path, if set).`,Y,c,z,C,ee=`The REST server will authenticate for you using the Tilmeld auth cookie and + XSRF token, but if you need to, you can authenticate in some other way (like + OAuth2), and place the user in response.locals.user.`,F,f,S;return u=new R({props:{language:ye,code:"npm install --save @nymphjs/server"}}),d=new R({props:{language:J,code:`import express from 'express'; +import { Nymph } from '@nymphjs/nymph'; +import SQLite3Driver from '@nymphjs/driver-sqlite3'; +import createServer from '@nymphjs/server'; + +// Import all the entities you will be using on the server. +import MyEntityClass from './entities/MyEntity'; + +// Configure Nymph. +const nymph = new Nymph( + {}, + new SQLite3Driver({ + filename: ':memory:', + }), +); +const MyEntity = nymph.addEntityClass(MyEntityClass); + +// Create your Express app. +const app = express(); + +// Create and use the REST server (with an optional path). +app.use('/rest', createServer(nymph)); + +// Do anything else you need to do... + +// Start your server. +app.listen(80);`}}),c=new R({props:{language:J,code:`import { Nymph } from '@nymphjs/client'; + +import MyEntityClass from './entities/MyEntityClient'; + +const nymph = new Nymph({ + // You should configure your Express server to + // use HTTPS, but you don't have to. + restUrl: 'https://mydomain.tld/rest', +}); +const MyEntity = nymph.addEntityClass(MyEntityClass);`}}),f=new R({props:{language:J,code:`import express from 'express'; +import { Nymph } from '@nymphjs/nymph'; +import SQLite3Driver from '@nymphjs/driver-sqlite3'; +import { Tilmeld } from '@nymphjs/tilmeld'; +import createServer from '@nymphjs/server'; +import setup from '@nymphjs/tilmeld-setup'; + +// Import all the entities you will be using on the server. +import MyEntityClass from './entities/MyEntity'; + +// Consfigure Tilmeld. +const tilmeld = new Tilmeld({ + appName: 'My Awesome App', + appUrl: 'https://mydomain.tld', + setupPath: '/user', +}); + +// Configure Nymph. +const nymph = new Nymph( + {}, + new SQLite3Driver({ + filename: ':memory:', + }), + tilmeld, +); +const MyEntity = nymph.addEntityClass(MyEntityClass); + +// Create your Express app. +const app = express(); + +// Authenticate the user manually. +app.use('/rest', async (request, response, next) => { + const { User } = tilmeld; + + try { + // Somehow authenticate the user... + const user = await User.factoryUsername(username); + + if (user.guid != null && user.enabled) { + response.locals.user = user; + } + + next(); + } catch (e: any) { + response.status(500); + response.send('Internal server error.'); + } +}); + +// Create and use the REST server (with an optional path). +app.use('/rest', createServer(nymph)); + +// Create Tilmeld setup app. +app.user( + '/user', + setup( + { + restUrl: 'https://mydomain.tld/rest', + }, + nymph, + ), +); + +// Do anything else you need to do... + +// Start your server. +app.listen(80);`}}),{c(){p=new ae(!1),$=te(),_=r(),e=o("section"),m=o("header"),m.innerHTML=X,D=r(),g=o("p"),g.textContent=B,P=r(),h=o("header"),h.innerHTML=G,A=r(),M(u.$$.fragment),I=r(),y=o("header"),y.innerHTML=K,U=r(),v=o("p"),v.textContent=V,q=r(),M(d.$$.fragment),Q=r(),E=o("p"),E.textContent=W,k=r(),x=o("p"),x.innerHTML=Z,Y=r(),M(c.$$.fragment),z=r(),C=o("p"),C.innerHTML=ee,F=r(),M(f.$$.fragment),this.h()},l(s){const w=oe("svelte-vfb9fs",document.head);p=ie(w,!1),$=te(),w.forEach(T),_=a(s),e=i(s,"SECTION",{});var t=le(e);m=i(t,"HEADER",{class:!0,"data-svelte-h":!0}),l(m)!=="svelte-n2t05f"&&(m.innerHTML=X),D=a(t),g=i(t,"P",{"data-svelte-h":!0}),l(g)!=="svelte-1t43z4b"&&(g.textContent=B),P=a(t),h=i(t,"HEADER",{class:!0,"data-svelte-h":!0}),l(h)!=="svelte-1hx9pnb"&&(h.innerHTML=G),A=a(t),H(u.$$.fragment,t),I=a(t),y=i(t,"HEADER",{class:!0,"data-svelte-h":!0}),l(y)!=="svelte-n87w0o"&&(y.innerHTML=K),U=a(t),v=i(t,"P",{"data-svelte-h":!0}),l(v)!=="svelte-5fapv"&&(v.textContent=V),q=a(t),H(d.$$.fragment,t),Q=a(t),E=i(t,"P",{"data-svelte-h":!0}),l(E)!=="svelte-ihx1p9"&&(E.textContent=W),k=a(t),x=i(t,"P",{"data-svelte-h":!0}),l(x)!=="svelte-5wdfo3"&&(x.innerHTML=Z),Y=a(t),H(c.$$.fragment,t),z=a(t),C=i(t,"P",{"data-svelte-h":!0}),l(C)!=="svelte-1f1uhip"&&(C.innerHTML=ee),F=a(t),H(f.$$.fragment,t),t.forEach(T),this.h()},h(){document.title="REST Server - Packages - Nymph.js",p.a=$,O(m,"class","major"),O(h,"class","major"),O(y,"class","major")},m(s,w){p.m(ue,document.head),n(document.head,$),ne(s,_,w),ne(s,e,w),n(e,m),n(e,D),n(e,g),n(e,P),n(e,h),n(e,A),b(u,e,null),n(e,I),n(e,y),n(e,U),n(e,v),n(e,q),b(d,e,null),n(e,Q),n(e,E),n(e,k),n(e,x),n(e,Y),b(c,e,null),n(e,z),n(e,C),n(e,F),b(f,e,null),S=!0},p:pe,i(s){S||(N(u.$$.fragment,s),N(d.$$.fragment,s),N(c.$$.fragment,s),N(f.$$.fragment,s),S=!0)},o(s){j(u.$$.fragment,s),j(d.$$.fragment,s),j(c.$$.fragment,s),j(f.$$.fragment,s),S=!1},d(s){s&&(p.d(),T(_),T(e)),T($),L(u),L(d),L(c),L(f)}}}class xe extends me{constructor(p){super(),he(this,p,null,de,re,{})}}export{xe as component}; diff --git a/docs/_app/immutable/nodes/13.f8c5ad83.js b/docs/_app/immutable/nodes/13.f8c5ad83.js new file mode 100644 index 0000000..5c1ceb0 --- /dev/null +++ b/docs/_app/immutable/nodes/13.f8c5ad83.js @@ -0,0 +1,72 @@ +import{s as J,I as Y,e as O,a as m,f as d,x as B,J as G,d as _,c as p,g as y,h as K,r as b,j as S,u as s,i as A,v as Q}from"../chunks/scheduler.d7e45cc8.js";import{S as V,i as W,b as D,d as F,m as I,a as R,t as U,e as k}from"../chunks/index.77720afb.js";import{H as q,g as X}from"../chunks/github.64534d2c.js";import{b as Z}from"../chunks/bash.7e4226ac.js";import{t as ee}from"../chunks/typescript.09c48802.js";function te(z){let r,u,w,e,n,T='

    Entity Sorter

    ',P,h,j=`The Nymph Entity Sorter lets you sort entities by their properties, + including hierarchically.`,$,o,N="

    Installation

    ",H,i,x,l,L="

    Usage

    ",C,g,M="Here's an overview:",E,c,v;return i=new q({props:{language:Z,code:"npm install --save @nymphjs/sorter"}}),c=new q({props:{language:ee,code:`import { Nymph } from '@nymphjs/nymph'; +// or +import { Nymph } from '@nymphjs/client'; +import PageClass from 'Page'; + +import { Sorter } from '@nymphjs/sorter'; + +const nymphOptions = { + // the options for your Nymph instance. +}; +const nymph = new Nymph(nymphOptions); +const Page = nymph.addEntityClass(PageClass); + +let pages = await nymph.getEntities({ class: Page }); + +const sorter = new Sorter(pages); + +// +// ## Simple sort by some property. +// + +sorter.sort('name'); +// Pages are now sorted by name, with locale aware sorting. +console.log(pages); + +sorter.sort('cdate'); +// Pages are now sorted by creation date. +console.log(pages); + +sorter.sort('cdate', { reverse: true }); +// Pages are now sorted by creation date, newest first. +console.log(pages); + +// Specifying your own comparator. +sorter.sort('name', { comparator: (a, b) => (a < b ? -1 : a > b ? 1 : 0) }); +// Pages are now sorted by name, based on UTF-16 code points. +console.log(pages); + +// Specifying options to the collator. +sorter.sort('name', { + collatorOptions: { + sensitivity: 'case', + caseFirst: 'upper', + numeric: true, + }, +}); +// Pages are now sorted by name, with uppercase coming first in case of +// otherwise identical entries, and numbers being sorted logically (2 < 10). +console.log(pages); + +// +// ## Hierarchical sorting. +// + +sorter.hsort('name', 'parent'); +// Pages are now sorted by name, hierarchically. (All child pages come +// immediately after their parent.) +console.log(pages); + +// You can specify the same options as before. +sorter.hsort('name', 'parent', { + collatorOptions: { + sensitivity: 'case', + caseFirst: 'upper', + numeric: true, + }, +}); +// Pages are now sorted by name, hierarchically, with uppercase coming first +// in case of otherwise identical entries, and numbers being sorted +// logically (2 < 10). +console.log(pages);`}}),{c(){r=new Y(!1),u=O(),w=m(),e=d("section"),n=d("header"),n.innerHTML=T,P=m(),h=d("p"),h.textContent=j,$=m(),o=d("header"),o.innerHTML=N,H=m(),D(i.$$.fragment),x=m(),l=d("header"),l.innerHTML=L,C=m(),g=d("p"),g.textContent=M,E=m(),D(c.$$.fragment),this.h()},l(a){const f=B("svelte-1wc9pbr",document.head);r=G(f,!1),u=O(),f.forEach(_),w=p(a),e=y(a,"SECTION",{});var t=K(e);n=y(t,"HEADER",{class:!0,"data-svelte-h":!0}),b(n)!=="svelte-uo1y54"&&(n.innerHTML=T),P=p(t),h=y(t,"P",{"data-svelte-h":!0}),b(h)!=="svelte-1nd7e5o"&&(h.textContent=j),$=p(t),o=y(t,"HEADER",{class:!0,"data-svelte-h":!0}),b(o)!=="svelte-1hx9pnb"&&(o.innerHTML=N),H=p(t),F(i.$$.fragment,t),x=p(t),l=y(t,"HEADER",{class:!0,"data-svelte-h":!0}),b(l)!=="svelte-n87w0o"&&(l.innerHTML=L),C=p(t),g=y(t,"P",{"data-svelte-h":!0}),b(g)!=="svelte-deeya8"&&(g.textContent=M),E=p(t),F(c.$$.fragment,t),t.forEach(_),this.h()},h(){document.title="Entity Sorter - Packages - Nymph.js",r.a=u,S(n,"class","major"),S(o,"class","major"),S(l,"class","major")},m(a,f){r.m(X,document.head),s(document.head,u),A(a,w,f),A(a,e,f),s(e,n),s(e,P),s(e,h),s(e,$),s(e,o),s(e,H),I(i,e,null),s(e,x),s(e,l),s(e,C),s(e,g),s(e,E),I(c,e,null),v=!0},p:Q,i(a){v||(R(i.$$.fragment,a),R(c.$$.fragment,a),v=!0)},o(a){U(i.$$.fragment,a),U(c.$$.fragment,a),v=!1},d(a){a&&(r.d(),_(w),_(e)),_(u),k(i),k(c)}}}class ie extends V{constructor(r){super(),W(this,r,null,te,J,{})}}export{ie as component}; diff --git a/docs/_app/immutable/nodes/13.fda82904.js b/docs/_app/immutable/nodes/13.fda82904.js deleted file mode 100644 index 41e717d..0000000 --- a/docs/_app/immutable/nodes/13.fda82904.js +++ /dev/null @@ -1,73 +0,0 @@ -import{S as re,i as se,s as oe,R as ne,e as L,a as m,k as o,q as P,y as M,F as ie,T as le,h as s,c as p,l as n,m as i,r as $,z as Q,p as ce,n as U,C as e,b as V,A as W,D as he,g as X,d as Z,B as ee}from"../chunks/index.d7cc8d8b.js";import{H as te,g as me}from"../chunks/github.df9008b1.js";import{b as pe}from"../chunks/bash.2b754df6.js";import{t as ge}from"../chunks/typescript.7dd1ec19.js";function de(ae){let l,u,H,t,g,d,j,N,_,C,T,y,b,x,A,c,O,f,w,D,F,E,R,I,h,S;return c=new te({props:{language:pe,code:"npm install --save @nymphjs/sorter"}}),h=new te({props:{language:ge,code:`import { Nymph } from '@nymphjs/nymph'; -// or -import { Nymph } from '@nymphjs/client'; -import PageClass from 'Page'; - -import { Sorter } from '@nymphjs/sorter'; - -const nymphOptions = { - // the options for your Nymph instance. -}; -const nymph = new Nymph(nymphOptions); -const Page = nymph.addEntityClass(PageClass); - -let pages = await nymph.getEntities({ class: Page }); - -const sorter = new Sorter(pages); - -// -// ## Simple sort by some property. -// - -sorter.sort('name'); -// Pages are now sorted by name, with locale aware sorting. -console.log(pages); - -sorter.sort('cdate'); -// Pages are now sorted by creation date. -console.log(pages); - -sorter.sort('cdate', { reverse: true }); -// Pages are now sorted by creation date, newest first. -console.log(pages); - -// Specifying your own comparator. -sorter.sort('name', { comparator: (a, b) => (a < b ? -1 : a > b ? 1 : 0) }); -// Pages are now sorted by name, based on UTF-16 code points. -console.log(pages); - -// Specifying options to the collator. -sorter.sort('name', { - collatorOptions: { - sensitivity: 'case', - caseFirst: 'upper', - numeric: true, - }, -}); -// Pages are now sorted by name, with uppercase coming first in case of -// otherwise identical entries, and numbers being sorted logically (2 < 10). -console.log(pages); - -// -// ## Hierarchical sorting. -// - -sorter.hsort('name', 'parent'); -// Pages are now sorted by name, hierarchically. (All child pages come -// immediately after their parent.) -console.log(pages); - -// You can specify the same options as before. -sorter.hsort('name', 'parent', { - collatorOptions: { - sensitivity: 'case', - caseFirst: 'upper', - numeric: true, - }, -}); -// Pages are now sorted by name, hierarchically, with uppercase coming first -// in case of otherwise identical entries, and numbers being sorted -// logically (2 < 10). -console.log(pages);`}}),{c(){l=new ne(!1),u=L(),H=m(),t=o("section"),g=o("header"),d=o("h1"),j=P("Entity Sorter"),N=m(),_=o("p"),C=P(`The Nymph Entity Sorter lets you sort entities by their properties, - including hierarchically.`),T=m(),y=o("header"),b=o("h2"),x=P("Installation"),A=m(),M(c.$$.fragment),O=m(),f=o("header"),w=o("h2"),D=P("Usage"),F=m(),E=o("p"),R=P("Here's an overview:"),I=m(),M(h.$$.fragment),this.h()},l(a){const v=ie("svelte-1wc9pbr",document.head);l=le(v,!1),u=L(),v.forEach(s),H=p(a),t=n(a,"SECTION",{});var r=i(t);g=n(r,"HEADER",{class:!0});var k=i(g);d=n(k,"H1",{style:!0});var q=i(d);j=$(q,"Entity Sorter"),q.forEach(s),k.forEach(s),N=p(r),_=n(r,"P",{});var z=i(_);C=$(z,`The Nymph Entity Sorter lets you sort entities by their properties, - including hierarchically.`),z.forEach(s),T=p(r),y=n(r,"HEADER",{class:!0});var B=i(y);b=n(B,"H2",{});var Y=i(b);x=$(Y,"Installation"),Y.forEach(s),B.forEach(s),A=p(r),Q(c.$$.fragment,r),O=p(r),f=n(r,"HEADER",{class:!0});var G=i(f);w=n(G,"H2",{});var J=i(w);D=$(J,"Usage"),J.forEach(s),G.forEach(s),F=p(r),E=n(r,"P",{});var K=i(E);R=$(K,"Here's an overview:"),K.forEach(s),I=p(r),Q(h.$$.fragment,r),r.forEach(s),this.h()},h(){document.title="Entity Sorter - Packages - Nymph.js",l.a=u,ce(d,"font-size","3em"),U(g,"class","major"),U(y,"class","major"),U(f,"class","major")},m(a,v){l.m(me,document.head),e(document.head,u),V(a,H,v),V(a,t,v),e(t,g),e(g,d),e(d,j),e(t,N),e(t,_),e(_,C),e(t,T),e(t,y),e(y,b),e(b,x),e(t,A),W(c,t,null),e(t,O),e(t,f),e(f,w),e(w,D),e(t,F),e(t,E),e(E,R),e(t,I),W(h,t,null),S=!0},p:he,i(a){S||(X(c.$$.fragment,a),X(h.$$.fragment,a),S=!0)},o(a){Z(c.$$.fragment,a),Z(h.$$.fragment,a),S=!1},d(a){s(u),a&&l.d(),a&&s(H),a&&s(t),ee(c),ee(h)}}}class be extends re{constructor(l){super(),se(this,l,null,de,oe,{})}}export{be as component}; diff --git a/docs/_app/immutable/nodes/14.0448e6e5.js b/docs/_app/immutable/nodes/14.0448e6e5.js new file mode 100644 index 0000000..9383b0d --- /dev/null +++ b/docs/_app/immutable/nodes/14.0448e6e5.js @@ -0,0 +1,37 @@ +import{s as me,I as de,e as te,a as n,f as i,x as pe,J as ue,d as L,c as s,g as o,h as fe,r,j,u as a,i as ae,v as ge}from"../chunks/scheduler.d7e45cc8.js";import{S as ve,i as _e,b as ne,d as se,m as le,a as ie,t as oe,e as re}from"../chunks/index.77720afb.js";import{H as he,g as ye}from"../chunks/github.64534d2c.js";import{b as xe}from"../chunks/bash.7e4226ac.js";import{t as Te}from"../chunks/typescript.09c48802.js";function we(ce){let h,H,$,e,c,O='

    Tilmeld

    ',A,v,Q=`Tilmeld (the d is silent) is a user and group management system for Nymph. + It provides strict access controls to protect entities from unauthorized + access/modification. It allows for granting and revoking ad hoc abilities to + users and groups, then checking for those abilities. It provides + authentication services and features protection against XSRF attacks.`,E,m,F="

    Installation

    ",k,d,D,p,J="

    Usage

    ",P,_,W=`When you initialize Nymph, provide it with an instance of the Tilmeld class + from this package. You now have access to the User and Group classes that + are specific to that instance of Nymph/Tilmeld.`,I,y,X="Here's an overview.",R,u,N,f,Y="

    Options

    ",S,x,B='See the config declaration file.',U,g,K="

    Abilities

    ",z,T,V="There are a few abilities that Tilmeld uses internally:",q,w,Z=`
  • system/admin - A user with this ability has + all abilities.
  • tilmeld/admin - Allow the user to manage and edit other user's + account and group information and grant/revoke abilities.
  • tilmeld/switch - Allow the user to switch to other users (log + in as them without their password).
  • uid/get/[name] - Allow the user to read the named UID.
  • uid/new/[name] - Allow the user to read, create, and increment + the named UID.
  • uid/set/[name] - Allow the user to read, create, increment, set, + and delete the named UID.
  • `,G,C,ee="The admin and switch abilities cannot be inherited from groups.",M;return d=new he({props:{language:xe,code:"npm install --save @nymphjs/tilmeld"}}),u=new he({props:{language:Te,code:`import SQLite3Driver from '@nymphjs/driver-sqlite3'; +import { Tilmeld } from '@nymphjs/tilmeld'; +import { Nymph } from '@nymphjs/nymph'; + +const tilmeld = new Tilmeld({ + appName: 'My App', + appUrl: 'http://localhost', + cookieDomain: 'localhost', + cookiePath: '/', + setupPath: '/user', + verifyRedirect: 'http://localhost', + verifyChangeRedirect: 'http://localhost', + cancelChangeRedirect: 'http://localhost', + jwtSecret: 'shhhhh', +}); + +const nymph = new Nymph( + {}, + new SQLite3Driver({ + filename: ':memory:', + }), + tilmeld, +); + +// These are the classes specific to this instance of Tilmeld. +const { User, Group } = tilmeld;`}}),{c(){h=new de(!1),H=te(),$=n(),e=i("section"),c=i("header"),c.innerHTML=O,A=n(),v=i("p"),v.textContent=Q,E=n(),m=i("header"),m.innerHTML=F,k=n(),ne(d.$$.fragment),D=n(),p=i("header"),p.innerHTML=J,P=n(),_=i("p"),_.textContent=W,I=n(),y=i("p"),y.textContent=X,R=n(),ne(u.$$.fragment),N=n(),f=i("header"),f.innerHTML=Y,S=n(),x=i("p"),x.innerHTML=B,U=n(),g=i("header"),g.innerHTML=K,z=n(),T=i("p"),T.textContent=V,q=n(),w=i("ul"),w.innerHTML=Z,G=n(),C=i("p"),C.textContent=ee,this.h()},l(l){const b=pe("svelte-u4tysy",document.head);h=ue(b,!1),H=te(),b.forEach(L),$=s(l),e=o(l,"SECTION",{});var t=fe(e);c=o(t,"HEADER",{class:!0,"data-svelte-h":!0}),r(c)!=="svelte-wbnjet"&&(c.innerHTML=O),A=s(t),v=o(t,"P",{"data-svelte-h":!0}),r(v)!=="svelte-1dec0km"&&(v.textContent=Q),E=s(t),m=o(t,"HEADER",{class:!0,"data-svelte-h":!0}),r(m)!=="svelte-1hx9pnb"&&(m.innerHTML=F),k=s(t),se(d.$$.fragment,t),D=s(t),p=o(t,"HEADER",{class:!0,"data-svelte-h":!0}),r(p)!=="svelte-n87w0o"&&(p.innerHTML=J),P=s(t),_=o(t,"P",{"data-svelte-h":!0}),r(_)!=="svelte-g7y6bt"&&(_.textContent=W),I=s(t),y=o(t,"P",{"data-svelte-h":!0}),r(y)!=="svelte-1a308lw"&&(y.textContent=X),R=s(t),se(u.$$.fragment,t),N=s(t),f=o(t,"HEADER",{class:!0,"data-svelte-h":!0}),r(f)!=="svelte-1v13hnh"&&(f.innerHTML=Y),S=s(t),x=o(t,"P",{"data-svelte-h":!0}),r(x)!=="svelte-1hvv6m0"&&(x.innerHTML=B),U=s(t),g=o(t,"HEADER",{class:!0,"data-svelte-h":!0}),r(g)!=="svelte-pmakbp"&&(g.innerHTML=K),z=s(t),T=o(t,"P",{"data-svelte-h":!0}),r(T)!=="svelte-1uc2fjp"&&(T.textContent=V),q=s(t),w=o(t,"UL",{"data-svelte-h":!0}),r(w)!=="svelte-1pgzxq0"&&(w.innerHTML=Z),G=s(t),C=o(t,"P",{"data-svelte-h":!0}),r(C)!=="svelte-1f1xj6z"&&(C.textContent=ee),t.forEach(L),this.h()},h(){document.title="Tilmeld - Packages - Nymph.js",h.a=H,j(c,"class","major"),j(m,"class","major"),j(p,"class","major"),j(f,"class","major"),j(g,"class","major")},m(l,b){h.m(ye,document.head),a(document.head,H),ae(l,$,b),ae(l,e,b),a(e,c),a(e,A),a(e,v),a(e,E),a(e,m),a(e,k),le(d,e,null),a(e,D),a(e,p),a(e,P),a(e,_),a(e,I),a(e,y),a(e,R),le(u,e,null),a(e,N),a(e,f),a(e,S),a(e,x),a(e,U),a(e,g),a(e,z),a(e,T),a(e,q),a(e,w),a(e,G),a(e,C),M=!0},p:ge,i(l){M||(ie(d.$$.fragment,l),ie(u.$$.fragment,l),M=!0)},o(l){oe(d.$$.fragment,l),oe(u.$$.fragment,l),M=!1},d(l){l&&(h.d(),L($),L(e)),L(H),re(d),re(u)}}}class $e extends ve{constructor(h){super(),_e(this,h,null,we,me,{})}}export{$e as component}; diff --git a/docs/_app/immutable/nodes/14.cf29e398.js b/docs/_app/immutable/nodes/14.cf29e398.js deleted file mode 100644 index dbff3e7..0000000 --- a/docs/_app/immutable/nodes/14.cf29e398.js +++ /dev/null @@ -1,48 +0,0 @@ -import{S as $t,i as Ut,s as jt,R as Nt,e as Et,a as h,k as s,q as i,y as wt,F as Rt,T as Ct,h as t,c,l as o,m as r,r as n,z as yt,p as St,n as g,C as e,b as bt,A as Tt,D as Ot,g as At,d as Dt,B as It}from"../chunks/index.d7cc8d8b.js";import{H as kt,g as Pt}from"../chunks/github.df9008b1.js";import{b as Lt}from"../chunks/bash.2b754df6.js";import{t as xt}from"../chunks/typescript.7dd1ec19.js";function zt(Ht){let v,N,K,a,y,b,ee,te,R,ae,se,T,C,oe,re,_,le,A,S,ie,ne,O,he,ce,P,de,me,E,pe,D,L,fe,ue,w,ge,f,ve,_e,Ee,I,x,we,ye,z,be,Te,d,u,G,Ae,De,q,Ie,ke,He,k,F,$e,Ue,je,H,Q,Ne,Re,Ce,$,W,Se,Oe,Pe,U,X,Le,xe,ze,j,Y,Ge,qe,Fe,B,Qe,V;return _=new kt({props:{language:Lt,code:"npm install --save @nymphjs/tilmeld"}}),E=new kt({props:{language:xt,code:`import SQLite3Driver from '@nymphjs/driver-sqlite3'; -import { Tilmeld } from '@nymphjs/tilmeld'; -import { Nymph } from '@nymphjs/nymph'; - -const tilmeld = new Tilmeld({ - appName: 'My App', - appUrl: 'http://localhost', - cookieDomain: 'localhost', - cookiePath: '/', - setupPath: '/user', - verifyRedirect: 'http://localhost', - verifyChangeRedirect: 'http://localhost', - cancelChangeRedirect: 'http://localhost', - jwtSecret: 'shhhhh', -}); - -const nymph = new Nymph( - {}, - new SQLite3Driver({ - filename: ':memory:', - }), - tilmeld, -); - -// These are the classes specific to this instance of Tilmeld. -const { User, Group } = tilmeld;`}}),{c(){v=new Nt(!1),N=Et(),K=h(),a=s("section"),y=s("header"),b=s("h1"),ee=i("Tilmeld"),te=h(),R=s("p"),ae=i(`Tilmeld (the d is silent) is a user and group management system for Nymph. - It provides strict access controls to protect entities from unauthorized - access/modification. It allows for granting and revoking ad hoc abilities to - users and groups, then checking for those abilities. It provides - authentication services and features protection against XSRF attacks.`),se=h(),T=s("header"),C=s("h2"),oe=i("Installation"),re=h(),wt(_.$$.fragment),le=h(),A=s("header"),S=s("h2"),ie=i("Usage"),ne=h(),O=s("p"),he=i(`When you initialize Nymph, provide it with an instance of the Tilmeld class - from this package. You now have access to the User and Group classes that - are specific to that instance of Nymph/Tilmeld.`),ce=h(),P=s("p"),de=i("Here's an overview."),me=h(),wt(E.$$.fragment),pe=h(),D=s("header"),L=s("h2"),fe=i("Options"),ue=h(),w=s("p"),ge=i("See the "),f=s("a"),ve=i("config declaration file"),_e=i("."),Ee=h(),I=s("header"),x=s("h2"),we=i("Abilities"),ye=h(),z=s("p"),be=i("There are a few abilities that Tilmeld uses internally:"),Te=h(),d=s("ul"),u=s("li"),G=s("code"),Ae=i("system/admin"),De=i(` - A user with this ability has - `),q=s("strong"),Ie=i("all"),ke=i(" abilities."),He=h(),k=s("li"),F=s("code"),$e=i("tilmeld/admin"),Ue=i(` - Allow the user to manage and edit other user's - account and group information and grant/revoke abilities.`),je=h(),H=s("li"),Q=s("code"),Ne=i("tilmeld/switch"),Re=i(` - Allow the user to switch to other users (log - in as them without their password).`),Ce=h(),$=s("li"),W=s("code"),Se=i("uid/get/[name]"),Oe=i(" - Allow the user to read the named UID."),Pe=h(),U=s("li"),X=s("code"),Le=i("uid/new/[name]"),xe=i(` - Allow the user to read, create, and increment - the named UID.`),ze=h(),j=s("li"),Y=s("code"),Ge=i("uid/set/[name]"),qe=i(` - Allow the user to read, create, increment, set, - and delete the named UID.`),Fe=h(),B=s("p"),Qe=i("The admin and switch abilities cannot be inherited from groups."),this.h()},l(m){const M=Rt("svelte-u4tysy",document.head);v=Ct(M,!1),N=Et(),M.forEach(t),K=c(m),a=o(m,"SECTION",{});var l=r(a);y=o(l,"HEADER",{class:!0});var Je=r(y);b=o(Je,"H1",{style:!0});var Ke=r(b);ee=n(Ke,"Tilmeld"),Ke.forEach(t),Je.forEach(t),te=c(l),R=o(l,"P",{});var Ve=r(R);ae=n(Ve,`Tilmeld (the d is silent) is a user and group management system for Nymph. - It provides strict access controls to protect entities from unauthorized - access/modification. It allows for granting and revoking ad hoc abilities to - users and groups, then checking for those abilities. It provides - authentication services and features protection against XSRF attacks.`),Ve.forEach(t),se=c(l),T=o(l,"HEADER",{class:!0});var Ze=r(T);C=o(Ze,"H2",{});var et=r(C);oe=n(et,"Installation"),et.forEach(t),Ze.forEach(t),re=c(l),yt(_.$$.fragment,l),le=c(l),A=o(l,"HEADER",{class:!0});var tt=r(A);S=o(tt,"H2",{});var at=r(S);ie=n(at,"Usage"),at.forEach(t),tt.forEach(t),ne=c(l),O=o(l,"P",{});var st=r(O);he=n(st,`When you initialize Nymph, provide it with an instance of the Tilmeld class - from this package. You now have access to the User and Group classes that - are specific to that instance of Nymph/Tilmeld.`),st.forEach(t),ce=c(l),P=o(l,"P",{});var ot=r(P);de=n(ot,"Here's an overview."),ot.forEach(t),me=c(l),yt(E.$$.fragment,l),pe=c(l),D=o(l,"HEADER",{class:!0});var rt=r(D);L=o(rt,"H2",{});var lt=r(L);fe=n(lt,"Options"),lt.forEach(t),rt.forEach(t),ue=c(l),w=o(l,"P",{});var Z=r(w);ge=n(Z,"See the "),f=o(Z,"A",{href:!0,target:!0,rel:!0});var it=r(f);ve=n(it,"config declaration file"),it.forEach(t),_e=n(Z,"."),Z.forEach(t),Ee=c(l),I=o(l,"HEADER",{class:!0});var nt=r(I);x=o(nt,"H2",{});var ht=r(x);we=n(ht,"Abilities"),ht.forEach(t),nt.forEach(t),ye=c(l),z=o(l,"P",{});var ct=r(z);be=n(ct,"There are a few abilities that Tilmeld uses internally:"),ct.forEach(t),Te=c(l),d=o(l,"UL",{});var p=r(d);u=o(p,"LI",{});var J=r(u);G=o(J,"CODE",{});var dt=r(G);Ae=n(dt,"system/admin"),dt.forEach(t),De=n(J,` - A user with this ability has - `),q=o(J,"STRONG",{});var mt=r(q);Ie=n(mt,"all"),mt.forEach(t),ke=n(J," abilities."),J.forEach(t),He=c(p),k=o(p,"LI",{});var We=r(k);F=o(We,"CODE",{});var pt=r(F);$e=n(pt,"tilmeld/admin"),pt.forEach(t),Ue=n(We,` - Allow the user to manage and edit other user's - account and group information and grant/revoke abilities.`),We.forEach(t),je=c(p),H=o(p,"LI",{});var Xe=r(H);Q=o(Xe,"CODE",{});var ft=r(Q);Ne=n(ft,"tilmeld/switch"),ft.forEach(t),Re=n(Xe,` - Allow the user to switch to other users (log - in as them without their password).`),Xe.forEach(t),Ce=c(p),$=o(p,"LI",{});var Ye=r($);W=o(Ye,"CODE",{});var ut=r(W);Se=n(ut,"uid/get/[name]"),ut.forEach(t),Oe=n(Ye," - Allow the user to read the named UID."),Ye.forEach(t),Pe=c(p),U=o(p,"LI",{});var Be=r(U);X=o(Be,"CODE",{});var gt=r(X);Le=n(gt,"uid/new/[name]"),gt.forEach(t),xe=n(Be,` - Allow the user to read, create, and increment - the named UID.`),Be.forEach(t),ze=c(p),j=o(p,"LI",{});var Me=r(j);Y=o(Me,"CODE",{});var vt=r(Y);Ge=n(vt,"uid/set/[name]"),vt.forEach(t),qe=n(Me,` - Allow the user to read, create, increment, set, - and delete the named UID.`),Me.forEach(t),p.forEach(t),Fe=c(l),B=o(l,"P",{});var _t=r(B);Qe=n(_t,"The admin and switch abilities cannot be inherited from groups."),_t.forEach(t),l.forEach(t),this.h()},h(){document.title="Tilmeld - Packages - Nymph.js",v.a=N,St(b,"font-size","3em"),g(y,"class","major"),g(T,"class","major"),g(A,"class","major"),g(D,"class","major"),g(f,"href","https://github.com/sciactive/nymphjs/tree/master/packages/tilmeld/src/conf/d.ts"),g(f,"target","_blank"),g(f,"rel","external"),g(I,"class","major")},m(m,M){v.m(Pt,document.head),e(document.head,N),bt(m,K,M),bt(m,a,M),e(a,y),e(y,b),e(b,ee),e(a,te),e(a,R),e(R,ae),e(a,se),e(a,T),e(T,C),e(C,oe),e(a,re),Tt(_,a,null),e(a,le),e(a,A),e(A,S),e(S,ie),e(a,ne),e(a,O),e(O,he),e(a,ce),e(a,P),e(P,de),e(a,me),Tt(E,a,null),e(a,pe),e(a,D),e(D,L),e(L,fe),e(a,ue),e(a,w),e(w,ge),e(w,f),e(f,ve),e(w,_e),e(a,Ee),e(a,I),e(I,x),e(x,we),e(a,ye),e(a,z),e(z,be),e(a,Te),e(a,d),e(d,u),e(u,G),e(G,Ae),e(u,De),e(u,q),e(q,Ie),e(u,ke),e(d,He),e(d,k),e(k,F),e(F,$e),e(k,Ue),e(d,je),e(d,H),e(H,Q),e(Q,Ne),e(H,Re),e(d,Ce),e(d,$),e($,W),e(W,Se),e($,Oe),e(d,Pe),e(d,U),e(U,X),e(X,Le),e(U,xe),e(d,ze),e(d,j),e(j,Y),e(Y,Ge),e(j,qe),e(a,Fe),e(a,B),e(B,Qe),V=!0},p:Ot,i(m){V||(At(_.$$.fragment,m),At(E.$$.fragment,m),V=!0)},o(m){Dt(_.$$.fragment,m),Dt(E.$$.fragment,m),V=!1},d(m){t(N),m&&v.d(),m&&t(K),m&&t(a),It(_),It(E)}}}class Wt extends $t{constructor(v){super(),Ut(this,v,null,zt,jt,{})}}export{Wt as component}; diff --git a/docs/_app/immutable/nodes/15.4cc074e7.js b/docs/_app/immutable/nodes/15.4cc074e7.js deleted file mode 100644 index 5767f89..0000000 --- a/docs/_app/immutable/nodes/15.4cc074e7.js +++ /dev/null @@ -1,28 +0,0 @@ -import{S as Ke,i as Le,s as Qe,R as Ve,e as Se,a as m,k as r,q as n,y as ke,F as We,T as Xe,h as s,c as p,l,m as i,r as a,z as Ae,p as Ze,n as ve,C as e,b as Re,A as qe,D as et,g as Me,d as Ye,B as Be}from"../chunks/index.d7cc8d8b.js";import{H as Fe,g as tt}from"../chunks/github.df9008b1.js";import{b as nt}from"../chunks/bash.2b754df6.js";import{t as st}from"../chunks/typescript.7dd1ec19.js";function at(Je){let f,$,k,t,g,v,q,M,D,Y,B,C,N,F,J,y,K,u,L,b,Q,V,O,W,X,Z,T,w,ee,te,c,ne,H,se,ae,j,oe,re,G,le,ie,I,ce,he,P,de,me,pe,z,ue,fe,_,ye,E,_e,x,Ee,ge,A;return y=new Fe({props:{language:nt,code:"npm install --save @nymphjs/tilmeld-client"}}),_=new Fe({props:{language:st,code:`import { Nymph } from '@nymphjs/client'; -import { - User as UserClass, - Group as GroupClass, -} from '@nymphjs/tilmeld-client'; - -const nymph = new Nymph({ - restUrl: 'https://yournymphrestserver/path/to/your/endpoint', -}); -const User = nymph.addEntityClass(UserClass); -const Group = nymph.addEntityClass(GroupClass); -User.init(nymph);`}}),{c(){f=new Ve(!1),$=Se(),k=m(),t=r("section"),g=r("header"),v=r("h1"),q=n("Tilmeld Client"),M=m(),D=r("p"),Y=n(`The Tilmeld Client lets you register, login, and perform user account - related functions remotely on a Nymph server.`),B=m(),C=r("header"),N=r("h2"),F=n("Installation"),J=m(),ke(y.$$.fragment),K=m(),u=r("p"),L=n("You can find UMD in "),b=r("code"),Q=n("dist"),V=n(", or TS source in "),O=r("code"),W=n("src"),X=n("."),Z=m(),T=r("header"),w=r("h2"),ee=n("Usage"),te=m(),c=r("p"),ne=n("The Tilmeld client contains the client versions of the "),H=r("code"),se=n("User"),ae=n(` and - `),j=r("code"),oe=n("Group"),re=n(` - entities. It also contains helpers, `),G=r("code"),le=n("login"),ie=n(`, - `),I=r("code"),ce=n("register"),he=n(", and "),P=r("code"),de=n("checkUsername"),me=n("."),pe=m(),z=r("p"),ue=n(`Once you've initialized Nymph Client, set the User and Group classes on it. - Then initialize the new User class with the Nymph instance. (This allows the - class to set up authentication listeners.)`),fe=m(),ke(_.$$.fragment),ye=m(),E=r("p"),_e=n(`If you're running more than one instance of Nymph client, be sure to use the - classes returned by `),x=r("code"),Ee=n("addEntityClass"),ge=n(`, so as not to accidentally - submit entities from one instances to another instance.`),this.h()},l(h){const S=We("svelte-1baconj",document.head);f=Xe(S,!1),$=Se(),S.forEach(s),k=p(h),t=l(h,"SECTION",{});var o=i(t);g=l(o,"HEADER",{class:!0});var Ce=i(g);v=l(Ce,"H1",{style:!0});var Te=i(v);q=a(Te,"Tilmeld Client"),Te.forEach(s),Ce.forEach(s),M=p(o),D=l(o,"P",{});var Ue=i(D);Y=a(Ue,`The Tilmeld Client lets you register, login, and perform user account - related functions remotely on a Nymph server.`),Ue.forEach(s),B=p(o),C=l(o,"HEADER",{class:!0});var $e=i(C);N=l($e,"H2",{});var De=i(N);F=a(De,"Installation"),De.forEach(s),$e.forEach(s),J=p(o),Ae(y.$$.fragment,o),K=p(o),u=l(o,"P",{});var U=i(u);L=a(U,"You can find UMD in "),b=l(U,"CODE",{});var Ne=i(b);Q=a(Ne,"dist"),Ne.forEach(s),V=a(U,", or TS source in "),O=l(U,"CODE",{});var be=i(O);W=a(be,"src"),be.forEach(s),X=a(U,"."),U.forEach(s),Z=p(o),T=l(o,"HEADER",{class:!0});var Oe=i(T);w=l(Oe,"H2",{});var we=i(w);ee=a(we,"Usage"),we.forEach(s),Oe.forEach(s),te=p(o),c=l(o,"P",{});var d=i(c);ne=a(d,"The Tilmeld client contains the client versions of the "),H=l(d,"CODE",{});var He=i(H);se=a(He,"User"),He.forEach(s),ae=a(d,` and - `),j=l(d,"CODE",{});var je=i(j);oe=a(je,"Group"),je.forEach(s),re=a(d,` - entities. It also contains helpers, `),G=l(d,"CODE",{});var Ge=i(G);le=a(Ge,"login"),Ge.forEach(s),ie=a(d,`, - `),I=l(d,"CODE",{});var Ie=i(I);ce=a(Ie,"register"),Ie.forEach(s),he=a(d,", and "),P=l(d,"CODE",{});var Pe=i(P);de=a(Pe,"checkUsername"),Pe.forEach(s),me=a(d,"."),d.forEach(s),pe=p(o),z=l(o,"P",{});var ze=i(z);ue=a(ze,`Once you've initialized Nymph Client, set the User and Group classes on it. - Then initialize the new User class with the Nymph instance. (This allows the - class to set up authentication listeners.)`),ze.forEach(s),fe=p(o),Ae(_.$$.fragment,o),ye=p(o),E=l(o,"P",{});var R=i(E);_e=a(R,`If you're running more than one instance of Nymph client, be sure to use the - classes returned by `),x=l(R,"CODE",{});var xe=i(x);Ee=a(xe,"addEntityClass"),xe.forEach(s),ge=a(R,`, so as not to accidentally - submit entities from one instances to another instance.`),R.forEach(s),o.forEach(s),this.h()},h(){document.title="Tilmeld Client - Packages - Nymph.js",f.a=$,Ze(v,"font-size","3em"),ve(g,"class","major"),ve(C,"class","major"),ve(T,"class","major")},m(h,S){f.m(tt,document.head),e(document.head,$),Re(h,k,S),Re(h,t,S),e(t,g),e(g,v),e(v,q),e(t,M),e(t,D),e(D,Y),e(t,B),e(t,C),e(C,N),e(N,F),e(t,J),qe(y,t,null),e(t,K),e(t,u),e(u,L),e(u,b),e(b,Q),e(u,V),e(u,O),e(O,W),e(u,X),e(t,Z),e(t,T),e(T,w),e(w,ee),e(t,te),e(t,c),e(c,ne),e(c,H),e(H,se),e(c,ae),e(c,j),e(j,oe),e(c,re),e(c,G),e(G,le),e(c,ie),e(c,I),e(I,ce),e(c,he),e(c,P),e(P,de),e(c,me),e(t,pe),e(t,z),e(z,ue),e(t,fe),qe(_,t,null),e(t,ye),e(t,E),e(E,_e),e(E,x),e(x,Ee),e(E,ge),A=!0},p:et,i(h){A||(Me(y.$$.fragment,h),Me(_.$$.fragment,h),A=!0)},o(h){Ye(y.$$.fragment,h),Ye(_.$$.fragment,h),A=!1},d(h){s($),h&&f.d(),h&&s(k),h&&s(t),Be(y),Be(_)}}}class ct extends Ke{constructor(f){super(),Le(this,f,null,at,Qe,{})}}export{ct as component}; diff --git a/docs/_app/immutable/nodes/15.d517831e.js b/docs/_app/immutable/nodes/15.d517831e.js new file mode 100644 index 0000000..78ee230 --- /dev/null +++ b/docs/_app/immutable/nodes/15.d517831e.js @@ -0,0 +1,20 @@ +import{s as Z,I as ee,e as O,a,f as o,x as te,J as ne,d as H,c as l,g as r,h as se,r as i,j as G,u as n,i as J,v as ae}from"../chunks/scheduler.d7e45cc8.js";import{S as le,i as oe,b as Y,d as B,m as F,a as K,t as Q,e as V}from"../chunks/index.77720afb.js";import{H as W,g as re}from"../chunks/github.64534d2c.js";import{b as ie}from"../chunks/bash.7e4226ac.js";import{t as ce}from"../chunks/typescript.09c48802.js";function he(X){let c,C,x,e,h,I='

    Tilmeld Client

    ',M,f,q=`The Tilmeld Client lets you register, login, and perform user account + related functions remotely on a Nymph server.`,E,m,z="

    Installation

    ",L,d,U,g,D="You can find UMD in dist, or TS source in src.",b,p,S="

    Usage

    ",j,y,k=`The Tilmeld client contains the client versions of the User and + Group + entities. It also contains helpers, login, + register, and checkUsername.`,w,_,A=`Once you've initialized Nymph Client, set the User and Group classes on it. + Then initialize the new User class with the Nymph instance. (This allows the + class to set up authentication listeners.)`,N,u,P,v,R=`If you're running more than one instance of Nymph client, be sure to use the + classes returned by addEntityClass, so as not to accidentally + submit entities from one instances to another instance.`,$;return d=new W({props:{language:ie,code:"npm install --save @nymphjs/tilmeld-client"}}),u=new W({props:{language:ce,code:`import { Nymph } from '@nymphjs/client'; +import { + User as UserClass, + Group as GroupClass, +} from '@nymphjs/tilmeld-client'; + +const nymph = new Nymph({ + restUrl: 'https://yournymphrestserver/path/to/your/endpoint', +}); +const User = nymph.addEntityClass(UserClass); +const Group = nymph.addEntityClass(GroupClass); +User.init(nymph);`}}),{c(){c=new ee(!1),C=O(),x=a(),e=o("section"),h=o("header"),h.innerHTML=I,M=a(),f=o("p"),f.textContent=q,E=a(),m=o("header"),m.innerHTML=z,L=a(),Y(d.$$.fragment),U=a(),g=o("p"),g.innerHTML=D,b=a(),p=o("header"),p.innerHTML=S,j=a(),y=o("p"),y.innerHTML=k,w=a(),_=o("p"),_.textContent=A,N=a(),Y(u.$$.fragment),P=a(),v=o("p"),v.innerHTML=R,this.h()},l(s){const T=te("svelte-1baconj",document.head);c=ne(T,!1),C=O(),T.forEach(H),x=l(s),e=r(s,"SECTION",{});var t=se(e);h=r(t,"HEADER",{class:!0,"data-svelte-h":!0}),i(h)!=="svelte-isekeu"&&(h.innerHTML=I),M=l(t),f=r(t,"P",{"data-svelte-h":!0}),i(f)!=="svelte-13mrlh4"&&(f.textContent=q),E=l(t),m=r(t,"HEADER",{class:!0,"data-svelte-h":!0}),i(m)!=="svelte-1hx9pnb"&&(m.innerHTML=z),L=l(t),B(d.$$.fragment,t),U=l(t),g=r(t,"P",{"data-svelte-h":!0}),i(g)!=="svelte-h28vnv"&&(g.innerHTML=D),b=l(t),p=r(t,"HEADER",{class:!0,"data-svelte-h":!0}),i(p)!=="svelte-n87w0o"&&(p.innerHTML=S),j=l(t),y=r(t,"P",{"data-svelte-h":!0}),i(y)!=="svelte-g39yzf"&&(y.innerHTML=k),w=l(t),_=r(t,"P",{"data-svelte-h":!0}),i(_)!=="svelte-1f69b11"&&(_.textContent=A),N=l(t),B(u.$$.fragment,t),P=l(t),v=r(t,"P",{"data-svelte-h":!0}),i(v)!=="svelte-qtqrq3"&&(v.innerHTML=R),t.forEach(H),this.h()},h(){document.title="Tilmeld Client - Packages - Nymph.js",c.a=C,G(h,"class","major"),G(m,"class","major"),G(p,"class","major")},m(s,T){c.m(re,document.head),n(document.head,C),J(s,x,T),J(s,e,T),n(e,h),n(e,M),n(e,f),n(e,E),n(e,m),n(e,L),F(d,e,null),n(e,U),n(e,g),n(e,b),n(e,p),n(e,j),n(e,y),n(e,w),n(e,_),n(e,N),F(u,e,null),n(e,P),n(e,v),$=!0},p:ae,i(s){$||(K(d.$$.fragment,s),K(u.$$.fragment,s),$=!0)},o(s){Q(d.$$.fragment,s),Q(u.$$.fragment,s),$=!1},d(s){s&&(c.d(),H(x),H(e)),H(C),V(d),V(u)}}}class ge extends le{constructor(c){super(),oe(this,c,null,he,Z,{})}}export{ge as component}; diff --git a/docs/_app/immutable/nodes/16.d3ee0c7c.js b/docs/_app/immutable/nodes/16.d3ee0c7c.js deleted file mode 100644 index ba7b680..0000000 --- a/docs/_app/immutable/nodes/16.d3ee0c7c.js +++ /dev/null @@ -1,9 +0,0 @@ -import{S as ae,i as ne,s as oe,R as se,e as Z,a as S,k as s,q as d,y as re,F as le,T as he,h as a,c as T,l as r,m as l,r as c,z as de,p as ce,n as f,C as e,b as ee,A as ie,D as me,g as pe,d as ue,B as fe}from"../chunks/index.d7cc8d8b.js";import{H as _e,g as ge}from"../chunks/github.df9008b1.js";import{b as ve}from"../chunks/bash.2b754df6.js";function ye(te){let i,H,j,t,_,g,w,A,h,U,m,x,D,p,M,P,R,v,I,q,z,u,N,y,b,Y,B,C,F,k;return u=new _e({props:{language:ve,code:"npm install --save @nymphjs/tilmeld-components"}}),{c(){i=new se(!1),H=Z(),j=S(),t=s("section"),_=s("header"),g=s("h1"),w=d("Tilmeld Components"),A=S(),h=s("p"),U=d(`The Tilmeld Components are front end registration/login, account recovery, - account details, and password change components built with `),m=s("a"),x=d("Svelte"),D=d(` - and `),p=s("a"),M=d("SMUI"),P=d("."),R=S(),v=s("header"),I=s("h2"),q=d("Installation"),z=S(),re(u.$$.fragment),N=S(),y=s("header"),b=s("h2"),Y=d("Usage"),B=S(),C=s("p"),F=d(`You need to have an SMUI theme compiled and installed on your front end app. - If you're using Svelte, you need to have TypeScript support and you should - use the 'svelte' mainfield from package.json.`),this.h()},l(n){const $=le("svelte-n3h9ha",document.head);i=he($,!1),H=Z(),$.forEach(a),j=T(n),t=r(n,"SECTION",{});var o=l(t);_=r(o,"HEADER",{class:!0});var O=l(_);g=r(O,"H1",{style:!0});var G=l(g);w=c(G,"Tilmeld Components"),G.forEach(a),O.forEach(a),A=T(o),h=r(o,"P",{});var E=l(h);U=c(E,`The Tilmeld Components are front end registration/login, account recovery, - account details, and password change components built with `),m=r(E,"A",{href:!0,target:!0});var J=l(m);x=c(J,"Svelte"),J.forEach(a),D=c(E,` - and `),p=r(E,"A",{href:!0,target:!0});var K=l(p);M=c(K,"SMUI"),K.forEach(a),P=c(E,"."),E.forEach(a),R=T(o),v=r(o,"HEADER",{class:!0});var L=l(v);I=r(L,"H2",{});var Q=l(I);q=c(Q,"Installation"),Q.forEach(a),L.forEach(a),z=T(o),de(u.$$.fragment,o),N=T(o),y=r(o,"HEADER",{class:!0});var V=l(y);b=r(V,"H2",{});var W=l(b);Y=c(W,"Usage"),W.forEach(a),V.forEach(a),B=T(o),C=r(o,"P",{});var X=l(C);F=c(X,`You need to have an SMUI theme compiled and installed on your front end app. - If you're using Svelte, you need to have TypeScript support and you should - use the 'svelte' mainfield from package.json.`),X.forEach(a),o.forEach(a),this.h()},h(){document.title="Tilmeld Components - Packages - Nymph.js",i.a=H,ce(g,"font-size","3em"),f(_,"class","major"),f(m,"href","https://svelte.dev/"),f(m,"target","_blank"),f(p,"href","https://sveltematerialui.com/"),f(p,"target","_blank"),f(v,"class","major"),f(y,"class","major")},m(n,$){i.m(ge,document.head),e(document.head,H),ee(n,j,$),ee(n,t,$),e(t,_),e(_,g),e(g,w),e(t,A),e(t,h),e(h,U),e(h,m),e(m,x),e(h,D),e(h,p),e(p,M),e(h,P),e(t,R),e(t,v),e(v,I),e(I,q),e(t,z),ie(u,t,null),e(t,N),e(t,y),e(y,b),e(b,Y),e(t,B),e(t,C),e(C,F),k=!0},p:me,i(n){k||(pe(u.$$.fragment,n),k=!0)},o(n){ue(u.$$.fragment,n),k=!1},d(n){a(H),n&&i.d(),n&&a(j),n&&a(t),fe(u)}}}class He extends ae{constructor(i){super(),ne(this,i,null,ye,oe,{})}}export{He as component}; diff --git a/docs/_app/immutable/nodes/16.de906698.js b/docs/_app/immutable/nodes/16.de906698.js new file mode 100644 index 0000000..7eeaf07 --- /dev/null +++ b/docs/_app/immutable/nodes/16.de906698.js @@ -0,0 +1,5 @@ +import{s as A,I as D,e as w,a as d,f as c,x as R,J as U,d as g,c as p,g as u,h as N,r as v,j as E,u as n,i as I,v as q}from"../chunks/scheduler.d7e45cc8.js";import{S as z,i as J,b as O,d as Y,m as B,a as F,t as G,e as K}from"../chunks/index.77720afb.js";import{H as Q,g as V}from"../chunks/github.64534d2c.js";import{b as W}from"../chunks/bash.7e4226ac.js";function X(P){let s,f,H,e,l,L='

    Tilmeld Components

    ',y,h,S=`The Tilmeld Components are front end registration/login, account recovery, + account details, and password change components built with Svelte + and SMUI.`,x,o,$="

    Installation

    ",C,r,M,i,j="

    Usage

    ",b,m,k=`You need to have an SMUI theme compiled and installed on your front end app. + If you're using Svelte, you need to have TypeScript support and you should + use the 'svelte' mainfield from package.json.`,T;return r=new Q({props:{language:W,code:"npm install --save @nymphjs/tilmeld-components"}}),{c(){s=new D(!1),f=w(),H=d(),e=c("section"),l=c("header"),l.innerHTML=L,y=d(),h=c("p"),h.innerHTML=S,x=d(),o=c("header"),o.innerHTML=$,C=d(),O(r.$$.fragment),M=d(),i=c("header"),i.innerHTML=j,b=d(),m=c("p"),m.textContent=k,this.h()},l(a){const _=R("svelte-n3h9ha",document.head);s=U(_,!1),f=w(),_.forEach(g),H=p(a),e=u(a,"SECTION",{});var t=N(e);l=u(t,"HEADER",{class:!0,"data-svelte-h":!0}),v(l)!=="svelte-1k6vxf3"&&(l.innerHTML=L),y=p(t),h=u(t,"P",{"data-svelte-h":!0}),v(h)!=="svelte-71lkmd"&&(h.innerHTML=S),x=p(t),o=u(t,"HEADER",{class:!0,"data-svelte-h":!0}),v(o)!=="svelte-1hx9pnb"&&(o.innerHTML=$),C=p(t),Y(r.$$.fragment,t),M=p(t),i=u(t,"HEADER",{class:!0,"data-svelte-h":!0}),v(i)!=="svelte-n87w0o"&&(i.innerHTML=j),b=p(t),m=u(t,"P",{"data-svelte-h":!0}),v(m)!=="svelte-15wbd4n"&&(m.textContent=k),t.forEach(g),this.h()},h(){document.title="Tilmeld Components - Packages - Nymph.js",s.a=f,E(l,"class","major"),E(o,"class","major"),E(i,"class","major")},m(a,_){s.m(V,document.head),n(document.head,f),I(a,H,_),I(a,e,_),n(e,l),n(e,y),n(e,h),n(e,x),n(e,o),n(e,C),B(r,e,null),n(e,M),n(e,i),n(e,b),n(e,m),T=!0},p:q,i(a){T||(F(r.$$.fragment,a),T=!0)},o(a){G(r.$$.fragment,a),T=!1},d(a){a&&(s.d(),g(H),g(e)),g(f),K(r)}}}class ne extends z{constructor(s){super(),J(this,s,null,X,A,{})}}export{ne as component}; diff --git a/docs/_app/immutable/nodes/17.61cc7221.js b/docs/_app/immutable/nodes/17.61cc7221.js new file mode 100644 index 0000000..9bb7994 --- /dev/null +++ b/docs/_app/immutable/nodes/17.61cc7221.js @@ -0,0 +1,55 @@ +import{s as G,I as K,e as q,a,f as o,x as V,J as Z,d as T,c as r,g as l,h as ee,r as c,j as M,u as n,i as F,v as te}from"../chunks/scheduler.d7e45cc8.js";import{S as ne,i as se,b as Q,d as O,m as X,a as z,t as J,e as W}from"../chunks/index.77720afb.js";import{H as Y,g as ae}from"../chunks/github.64534d2c.js";import{b as re}from"../chunks/bash.7e4226ac.js";import{t as oe}from"../chunks/typescript.09c48802.js";function le(B){let i,_,C,e,p,P='

    Tilmeld Setup

    ',w,f,k=`The Tilmeld Setup App allows administrators to create, modify, and delete + users and groups and configure how Tilmeld works. It also acts as the + endpoint for email address verification.`,$,h,N="

    Installation

    ",E,m,H,d,A="

    Usage

    ",j,g,D=`You need to setup a Nymph REST endpoint, then you can use the Tilmeld Setup + App as another endpoint in your Express server.`,R,y,I=`IMPORTANT: Within the setup app, Tilmeld does not check for + XSRF tokens, so do not put your REST endpoint under the setup + app's path, or you will be vulnerable to XSRF attacks!`,b,v,U="For this example, I'll use the SQLite3 driver with an in-memory database.",L,u,S;return m=new Y({props:{language:re,code:"npm install --save @nymphjs/tilmeld-setup"}}),u=new Y({props:{language:oe,code:`import express from 'express'; +import SQLite3Driver from '@nymphjs/driver-sqlite3'; +import { Nymph } from '@nymphjs/nymph'; +import { Tilmeld } from '@nymphjs/tilmeld'; +import createServer from '@nymphjs/server'; +import setup from '@nymphjs/tilmeld-setup'; + +// Import all the entities you will be using on the server. +import './entities/MyEntity'; + +// Configure Nymph. +const nymph = new Nymph( + {}, + new SQLite3Driver({ + filename: ':memory:', + }), + new Tilmeld({ + appName: 'My App', + appUrl: 'http://localhost', + cookieDomain: 'localhost', + cookiePath: '/', + setupPath: '/user', + verifyRedirect: 'http://localhost', + verifyChangeRedirect: 'http://localhost', + cancelChangeRedirect: 'http://localhost', + jwtSecret: 'shhhhh', + }), +); + +// Create your Express app. +const app = express(); + +// Use the REST server. +app.use('/rest', createServer(nymph)); + +// Create Tilmeld setup app. +app.use( + '/user', + setup( + { + restUrl: 'http://localhost/rest', + }, + nymph, + ), +); + +// Do anything else you need to do... + +// Start your server. +app.listen(80);`}}),{c(){i=new K(!1),_=q(),C=a(),e=o("section"),p=o("header"),p.innerHTML=P,w=a(),f=o("p"),f.textContent=k,$=a(),h=o("header"),h.innerHTML=N,E=a(),Q(m.$$.fragment),H=a(),d=o("header"),d.innerHTML=A,j=a(),g=o("p"),g.textContent=D,R=a(),y=o("p"),y.innerHTML=I,b=a(),v=o("p"),v.textContent=U,L=a(),Q(u.$$.fragment),this.h()},l(s){const x=V("svelte-k7q6er",document.head);i=Z(x,!1),_=q(),x.forEach(T),C=r(s),e=l(s,"SECTION",{});var t=ee(e);p=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),c(p)!=="svelte-osove8"&&(p.innerHTML=P),w=r(t),f=l(t,"P",{"data-svelte-h":!0}),c(f)!=="svelte-1w25xsb"&&(f.textContent=k),$=r(t),h=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),c(h)!=="svelte-1hx9pnb"&&(h.innerHTML=N),E=r(t),O(m.$$.fragment,t),H=r(t),d=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),c(d)!=="svelte-n87w0o"&&(d.innerHTML=A),j=r(t),g=l(t,"P",{"data-svelte-h":!0}),c(g)!=="svelte-1ym3n7x"&&(g.textContent=D),R=r(t),y=l(t,"P",{"data-svelte-h":!0}),c(y)!=="svelte-gwm2u9"&&(y.innerHTML=I),b=r(t),v=l(t,"P",{"data-svelte-h":!0}),c(v)!=="svelte-ar0pb9"&&(v.textContent=U),L=r(t),O(u.$$.fragment,t),t.forEach(T),this.h()},h(){document.title="Tilmeld Setup - Packages - Nymph.js",i.a=_,M(p,"class","major"),M(h,"class","major"),M(d,"class","major")},m(s,x){i.m(ae,document.head),n(document.head,_),F(s,C,x),F(s,e,x),n(e,p),n(e,w),n(e,f),n(e,$),n(e,h),n(e,E),X(m,e,null),n(e,H),n(e,d),n(e,j),n(e,g),n(e,R),n(e,y),n(e,b),n(e,v),n(e,L),X(u,e,null),S=!0},p:te,i(s){S||(z(m.$$.fragment,s),z(u.$$.fragment,s),S=!0)},o(s){J(m.$$.fragment,s),J(u.$$.fragment,s),S=!1},d(s){s&&(i.d(),T(C),T(e)),T(_),W(m),W(u)}}}class ue extends ne{constructor(i){super(),se(this,i,null,le,G,{})}}export{ue as component}; diff --git a/docs/_app/immutable/nodes/17.83da61bb.js b/docs/_app/immutable/nodes/17.83da61bb.js deleted file mode 100644 index e12dd56..0000000 --- a/docs/_app/immutable/nodes/17.83da61bb.js +++ /dev/null @@ -1,60 +0,0 @@ -import{S as _e,i as Ee,s as Te,R as Se,e as ie,a as m,k as o,q as p,y as he,F as Re,T as we,h as s,c as d,l as n,m as l,r as i,z as me,p as $e,n as K,C as e,b as de,A as ce,D as ke,g as ue,d as fe,B as ye}from"../chunks/index.d7cc8d8b.js";import{H as ge,g as xe}from"../chunks/github.df9008b1.js";import{b as Ne}from"../chunks/bash.2b754df6.js";import{t as be}from"../chunks/typescript.7dd1ec19.js";function je(ve){let c,T,j,t,y,g,H,I,S,P,C,v,R,D,F,u,O,_,w,U,q,$,L,M,h,Q,k,X,z,x,G,W,Y,N,B,J,f,A;return u=new ge({props:{language:Ne,code:"npm install --save @nymphjs/tilmeld-setup"}}),f=new ge({props:{language:be,code:`import express from 'express'; -import SQLite3Driver from '@nymphjs/driver-sqlite3'; -import { Nymph } from '@nymphjs/nymph'; -import { Tilmeld } from '@nymphjs/tilmeld'; -import createServer from '@nymphjs/server'; -import setup from '@nymphjs/tilmeld-setup'; - -// Import all the entities you will be using on the server. -import './entities/MyEntity'; - -// Configure Nymph. -const nymph = new Nymph( - {}, - new SQLite3Driver({ - filename: ':memory:', - }), - new Tilmeld({ - appName: 'My App', - appUrl: 'http://localhost', - cookieDomain: 'localhost', - cookiePath: '/', - setupPath: '/user', - verifyRedirect: 'http://localhost', - verifyChangeRedirect: 'http://localhost', - cancelChangeRedirect: 'http://localhost', - jwtSecret: 'shhhhh', - }), -); - -// Create your Express app. -const app = express(); - -// Use the REST server. -app.use('/rest', createServer(nymph)); - -// Create Tilmeld setup app. -app.use( - '/user', - setup( - { - restUrl: 'http://localhost/rest', - }, - nymph, - ), -); - -// Do anything else you need to do... - -// Start your server. -app.listen(80);`}}),{c(){c=new Se(!1),T=ie(),j=m(),t=o("section"),y=o("header"),g=o("h1"),H=p("Tilmeld Setup"),I=m(),S=o("p"),P=p(`The Tilmeld Setup App allows administrators to create, modify, and delete - users and groups and configure how Tilmeld works. It also acts as the - endpoint for email address verification.`),C=m(),v=o("header"),R=o("h2"),D=p("Installation"),F=m(),he(u.$$.fragment),O=m(),_=o("header"),w=o("h2"),U=p("Usage"),q=m(),$=o("p"),L=p(`You need to setup a Nymph REST endpoint, then you can use the Tilmeld Setup - App as another endpoint in your Express server.`),M=m(),h=o("p"),Q=p("IMPORTANT: Within the setup app, Tilmeld "),k=o("strong"),X=p("does not"),z=p(` check for - XSRF tokens, so `),x=o("strong"),G=p("do not"),W=p(` put your REST endpoint under the setup - app's path, or you will be vulnerable to XSRF attacks!`),Y=m(),N=o("p"),B=p("For this example, I'll use the SQLite3 driver with an in-memory database."),J=m(),he(f.$$.fragment),this.h()},l(r){const b=Re("svelte-k7q6er",document.head);c=we(b,!1),T=ie(),b.forEach(s),j=d(r),t=n(r,"SECTION",{});var a=l(t);y=n(a,"HEADER",{class:!0});var V=l(y);g=n(V,"H1",{style:!0});var Z=l(g);H=i(Z,"Tilmeld Setup"),Z.forEach(s),V.forEach(s),I=d(a),S=n(a,"P",{});var ee=l(S);P=i(ee,`The Tilmeld Setup App allows administrators to create, modify, and delete - users and groups and configure how Tilmeld works. It also acts as the - endpoint for email address verification.`),ee.forEach(s),C=d(a),v=n(a,"HEADER",{class:!0});var te=l(v);R=n(te,"H2",{});var ae=l(R);D=i(ae,"Installation"),ae.forEach(s),te.forEach(s),F=d(a),me(u.$$.fragment,a),O=d(a),_=n(a,"HEADER",{class:!0});var se=l(_);w=n(se,"H2",{});var re=l(w);U=i(re,"Usage"),re.forEach(s),se.forEach(s),q=d(a),$=n(a,"P",{});var oe=l($);L=i(oe,`You need to setup a Nymph REST endpoint, then you can use the Tilmeld Setup - App as another endpoint in your Express server.`),oe.forEach(s),M=d(a),h=n(a,"P",{});var E=l(h);Q=i(E,"IMPORTANT: Within the setup app, Tilmeld "),k=n(E,"STRONG",{});var ne=l(k);X=i(ne,"does not"),ne.forEach(s),z=i(E,` check for - XSRF tokens, so `),x=n(E,"STRONG",{});var le=l(x);G=i(le,"do not"),le.forEach(s),W=i(E,` put your REST endpoint under the setup - app's path, or you will be vulnerable to XSRF attacks!`),E.forEach(s),Y=d(a),N=n(a,"P",{});var pe=l(N);B=i(pe,"For this example, I'll use the SQLite3 driver with an in-memory database."),pe.forEach(s),J=d(a),me(f.$$.fragment,a),a.forEach(s),this.h()},h(){document.title="Tilmeld Setup - Packages - Nymph.js",c.a=T,$e(g,"font-size","3em"),K(y,"class","major"),K(v,"class","major"),K(_,"class","major")},m(r,b){c.m(xe,document.head),e(document.head,T),de(r,j,b),de(r,t,b),e(t,y),e(y,g),e(g,H),e(t,I),e(t,S),e(S,P),e(t,C),e(t,v),e(v,R),e(R,D),e(t,F),ce(u,t,null),e(t,O),e(t,_),e(_,w),e(w,U),e(t,q),e(t,$),e($,L),e(t,M),e(t,h),e(h,Q),e(h,k),e(k,X),e(h,z),e(h,x),e(x,G),e(h,W),e(t,Y),e(t,N),e(N,B),e(t,J),ce(f,t,null),A=!0},p:ke,i(r){A||(ue(u.$$.fragment,r),ue(f.$$.fragment,r),A=!0)},o(r){fe(u.$$.fragment,r),fe(f.$$.fragment,r),A=!1},d(r){s(T),r&&c.d(),r&&s(j),r&&s(t),ye(u),ye(f)}}}class Ce extends _e{constructor(c){super(),Ee(this,c,null,je,Te,{})}}export{Ce as component}; diff --git a/docs/_app/immutable/nodes/18.c2536513.js b/docs/_app/immutable/nodes/18.c2536513.js deleted file mode 100644 index df442d5..0000000 --- a/docs/_app/immutable/nodes/18.c2536513.js +++ /dev/null @@ -1,66 +0,0 @@ -import{S as ht,i as dt,s as yt,R as ft,e as rt,a as h,k as i,q as n,y as X,F as ut,T as gt,h as t,c as d,l as r,m as l,r as a,z as Z,p as Ve,n as N,C as e,b as ee,A as te,D as pt,g as ne,d as ae,B as se}from"../chunks/index.d7cc8d8b.js";import{H as oe,g as mt}from"../chunks/github.df9008b1.js";import{t as ie}from"../chunks/typescript.7dd1ec19.js";import{b as lt}from"../chunks/paths.d307dac8.js";function vt(ct){let E,O,z,o,P,S,re,le,y,ce,A,he,de,x,ye,fe,R,ue,ge,pe,$,me,B,ve,Ee,w,$e,G,we,_e,_,g,be,W,ke,Ie,Te,b,De,k,p,Ce,q,Pe,Se,Ne,I,Oe,U,Ae,xe,f,Re,H,Be,Ge,Y,We,qe,j,Ue,He,V,u,T,Ye,je,D,ze,F;return $=new oe({props:{language:ie,code:`// BlogPost extends the Entity class. -let blogPost = await BlogPost.factory(); - -// Check that the entity is new. -if (someBlogPost.guid == null) { - alert("This blog post hasn't been saved yet!"); -}`}}),w=new oe({props:{language:ie,code:`blogPost.$addTag('super-post'); -await blogPost.$save(); - -let superPosts = await nymph.getEntities( - { class: BlogPost }, - { type: '&', tag: 'super-post' } -); - -blogPost.$inArray(superPosts); // true`}}),b=new oe({props:{language:ie,code:`let entity = await Entity.factory(); -entity.foo = await Entity.factory(); - -entity.foo.bar = 'It works!'; -await entity.foo.$save(); // Saving the referenced entity first! :) -await entity.$save(); // now foo has been saved. - -const guid = entity.guid; -entity = await Entity.factory(guid); - -entity.foo.guid == null; // False -console.log(entity.foo.bar); // Outputs 'It works!'.`}}),I=new oe({props:{language:ie,code:`let entity = await Entity.factory(); -entity.foo = await Entity.factory(); - -await entity.$save(); // foo hasn't been saved yet! - -entity.foo.bar = 'It works!'; -await entity.foo.$save(); - -const guid = entity.guid; -entity = await Entity.factory(guid); - -entity.foo.guid == null; // True -console.log(entity.foo.bar); // Outputs undefined.`}}),{c(){E=new ft(!1),O=rt(),z=h(),o=i("section"),P=i("header"),S=i("h1"),re=n("Creating Entities"),le=h(),y=i("p"),ce=n("To create or retrieve an entity, you can call the "),A=i("code"),he=n("factory"),de=n(` - static method of an entity's class and pass in an optional GUID. You can also - use the `),x=i("code"),ye=n("factorySync"),fe=n(` method if you need to create a new entity - synchronously. The benefit of using the factory methods is that they can - return the correct type in TypeScript. To check that an entity hasn't been - saved yet, check that the GUID is null (`),R=i("code"),ue=n("entity.guid == null"),ge=n(")."),pe=h(),X($.$$.fragment),me=h(),B=i("p"),ve=n(`Much like entries in many blogging systems, entities can be organized using - tags. The tags provide a fast way to query entities.`),Ee=h(),X(w.$$.fragment),$e=h(),G=i("p"),we=n(`Be cautious when saving an entity in another entity's property. If the - referenced entity is newly created and does not have a GUID, Nymph will not - be able to retrieve it later. Always save the referenced entity first.`),_e=h(),_=i("div"),g=i("div"),be=n("Saving a Referenced Entity the "),W=i("strong"),ke=n("Right"),Ie=n(" Way"),Te=h(),X(b.$$.fragment),De=h(),k=i("div"),p=i("div"),Ce=n("Saving a Referenced Entity the "),q=i("strong"),Pe=n("Wrong"),Se=n(" Way"),Ne=h(),X(I.$$.fragment),Oe=h(),U=i("p"),Ae=n(`Caution: Since the referenced entity's class name is stored in the reference - on the parent entity, if you change the class name in an update, you need to - reassign all referenced entities of that class and resave.`),xe=h(),f=i("p"),Re=n('When an entity is loaded, it does not request its referenced entities from\n Nymph. Instead, it creates instances without data called "sleeping\n references". You can use `$wake` on the entity or `$wakeAll` on the parent\n entity to get the entity\'s data from the DB. The '),H=i("code"),Be=n("$wakeAll"),Ge=n(` - method will awaken all sleeping references in the entity's data. You can call - `),Y=i("code"),We=n("$clearCache"),qe=n(` - in Node.js or `),j=i("code"),Ue=n("$refresh"),He=n(` in the client to turn all the entities back - into sleeping references.`),V=h(),u=i("section"),T=i("a"),Ye=n("Previous: Introduction"),je=h(),D=i("a"),ze=n("Next: Entity Querying"),this.h()},l(s){const C=ut("svelte-1eabkgd",document.head);E=gt(C,!1),O=rt(),C.forEach(t),z=d(s),o=r(s,"SECTION",{});var c=l(o);P=r(c,"HEADER",{class:!0});var Fe=l(P);S=r(Fe,"H1",{style:!0});var Me=l(S);re=a(Me,"Creating Entities"),Me.forEach(t),Fe.forEach(t),le=d(c),y=r(c,"P",{});var m=l(y);ce=a(m,"To create or retrieve an entity, you can call the "),A=r(m,"CODE",{});var Qe=l(A);he=a(Qe,"factory"),Qe.forEach(t),de=a(m,` - static method of an entity's class and pass in an optional GUID. You can also - use the `),x=r(m,"CODE",{});var Je=l(x);ye=a(Je,"factorySync"),Je.forEach(t),fe=a(m,` method if you need to create a new entity - synchronously. The benefit of using the factory methods is that they can - return the correct type in TypeScript. To check that an entity hasn't been - saved yet, check that the GUID is null (`),R=r(m,"CODE",{});var Ke=l(R);ue=a(Ke,"entity.guid == null"),Ke.forEach(t),ge=a(m,")."),m.forEach(t),pe=d(c),Z($.$$.fragment,c),me=d(c),B=r(c,"P",{});var Le=l(B);ve=a(Le,`Much like entries in many blogging systems, entities can be organized using - tags. The tags provide a fast way to query entities.`),Le.forEach(t),Ee=d(c),Z(w.$$.fragment,c),$e=d(c),G=r(c,"P",{});var Xe=l(G);we=a(Xe,`Be cautious when saving an entity in another entity's property. If the - referenced entity is newly created and does not have a GUID, Nymph will not - be able to retrieve it later. Always save the referenced entity first.`),Xe.forEach(t),_e=d(c),_=r(c,"DIV",{});var M=l(_);g=r(M,"DIV",{style:!0});var Q=l(g);be=a(Q,"Saving a Referenced Entity the "),W=r(Q,"STRONG",{});var Ze=l(W);ke=a(Ze,"Right"),Ze.forEach(t),Ie=a(Q," Way"),Q.forEach(t),Te=d(M),Z(b.$$.fragment,M),M.forEach(t),De=d(c),k=r(c,"DIV",{});var J=l(k);p=r(J,"DIV",{style:!0});var K=l(p);Ce=a(K,"Saving a Referenced Entity the "),q=r(K,"STRONG",{});var et=l(q);Pe=a(et,"Wrong"),et.forEach(t),Se=a(K," Way"),K.forEach(t),Ne=d(J),Z(I.$$.fragment,J),J.forEach(t),Oe=d(c),U=r(c,"P",{});var tt=l(U);Ae=a(tt,`Caution: Since the referenced entity's class name is stored in the reference - on the parent entity, if you change the class name in an update, you need to - reassign all referenced entities of that class and resave.`),tt.forEach(t),xe=d(c),f=r(c,"P",{});var v=l(f);Re=a(v,'When an entity is loaded, it does not request its referenced entities from\n Nymph. Instead, it creates instances without data called "sleeping\n references". You can use `$wake` on the entity or `$wakeAll` on the parent\n entity to get the entity\'s data from the DB. The '),H=r(v,"CODE",{});var nt=l(H);Be=a(nt,"$wakeAll"),nt.forEach(t),Ge=a(v,` - method will awaken all sleeping references in the entity's data. You can call - `),Y=r(v,"CODE",{});var at=l(Y);We=a(at,"$clearCache"),at.forEach(t),qe=a(v,` - in Node.js or `),j=r(v,"CODE",{});var st=l(j);Ue=a(st,"$refresh"),st.forEach(t),He=a(v,` in the client to turn all the entities back - into sleeping references.`),v.forEach(t),c.forEach(t),V=d(s),u=r(s,"SECTION",{class:!0});var L=l(u);T=r(L,"A",{href:!0,class:!0});var ot=l(T);Ye=a(ot,"Previous: Introduction"),ot.forEach(t),je=d(L),D=r(L,"A",{href:!0,class:!0});var it=l(D);ze=a(it,"Next: Entity Querying"),it.forEach(t),L.forEach(t),this.h()},h(){document.title="Creating Entities - User Guide - Nymph.js",E.a=O,Ve(S,"font-size","3em"),N(P,"class","major"),Ve(g,"text-align","end"),Ve(p,"text-align","end"),N(T,"href",lt+"/user-guide/introduction"),N(T,"class","button"),N(D,"href",lt+"/user-guide/entity-querying"),N(D,"class","button"),N(u,"class","page-steps")},m(s,C){E.m(mt,document.head),e(document.head,O),ee(s,z,C),ee(s,o,C),e(o,P),e(P,S),e(S,re),e(o,le),e(o,y),e(y,ce),e(y,A),e(A,he),e(y,de),e(y,x),e(x,ye),e(y,fe),e(y,R),e(R,ue),e(y,ge),e(o,pe),te($,o,null),e(o,me),e(o,B),e(B,ve),e(o,Ee),te(w,o,null),e(o,$e),e(o,G),e(G,we),e(o,_e),e(o,_),e(_,g),e(g,be),e(g,W),e(W,ke),e(g,Ie),e(_,Te),te(b,_,null),e(o,De),e(o,k),e(k,p),e(p,Ce),e(p,q),e(q,Pe),e(p,Se),e(k,Ne),te(I,k,null),e(o,Oe),e(o,U),e(U,Ae),e(o,xe),e(o,f),e(f,Re),e(f,H),e(H,Be),e(f,Ge),e(f,Y),e(Y,We),e(f,qe),e(f,j),e(j,Ue),e(f,He),ee(s,V,C),ee(s,u,C),e(u,T),e(T,Ye),e(u,je),e(u,D),e(D,ze),F=!0},p:pt,i(s){F||(ne($.$$.fragment,s),ne(w.$$.fragment,s),ne(b.$$.fragment,s),ne(I.$$.fragment,s),F=!0)},o(s){ae($.$$.fragment,s),ae(w.$$.fragment,s),ae(b.$$.fragment,s),ae(I.$$.fragment,s),F=!1},d(s){t(O),s&&E.d(),s&&t(z),s&&t(o),se($),se(w),se(b),se(I),s&&t(V),s&&t(u)}}}class bt extends ht{constructor(E){super(),dt(this,E,null,vt,yt,{})}}export{bt as component}; diff --git a/docs/_app/immutable/nodes/18.cae0e6d0.js b/docs/_app/immutable/nodes/18.cae0e6d0.js new file mode 100644 index 0000000..ac6a002 --- /dev/null +++ b/docs/_app/immutable/nodes/18.cae0e6d0.js @@ -0,0 +1,55 @@ +import{s as bt,I as Et,e as pt,a as s,f as i,l as vt,x as Ct,J as Tt,d as l,c as o,g as r,h as k,r as d,m as $t,j as H,k as wt,u as t,i as q,v as Pt}from"../chunks/scheduler.d7e45cc8.js";import{S as It,i as kt,b as B,d as z,m as G,a as O,t as R,e as U}from"../chunks/index.77720afb.js";import{H as V,g as Ht}from"../chunks/github.64534d2c.js";import{t as W}from"../chunks/typescript.09c48802.js";import{b as _t}from"../chunks/paths.d4a6803e.js";function Mt(xt){let h,M,L,e,u,rt='

    Creating Entities

    ',Y,E,lt=`To create or retrieve an entity, you can call the factory + static method of an entity's class and pass in an optional GUID. You can also + use the factorySync method if you need to create a new entity + synchronously. The benefit of using the factory methods is that they can + return the correct type in TypeScript. To check that an entity hasn't been + saved yet, check that the GUID is null (entity.guid == null).`,Q,g,F,C,ct=`Much like entries in many blogging systems, entities can be organized using + tags. The tags provide a fast way to query entities.`,J,f,K,T,dt=`Be cautious when saving an entity in another entity's property. If the + referenced entity is newly created and does not have a GUID, Nymph will not + be able to retrieve it later. Always save the referenced entity first.`,X,y,m,ht="Saving a Referenced Entity the Right Way",Z,p,tt,v,$,ut="Saving a Referenced Entity the Wrong Way",et,w,nt,P,gt=`Caution: Since the referenced entity's class name is stored in the reference + on the parent entity, if you change the class name in an update, you need to + reassign all referenced entities of that class and resave.`,at,I,ft=`When an entity is loaded, it does not request its referenced entities from + Nymph. Instead, it creates instances without data called "sleeping + references". You can use \`$wake\` on the entity or \`$wakeAll\` on the parent + entity to get the entity's data from the DB. The $wakeAll + method will awaken all sleeping references in the entity's data. You can call + $clearCache + in Node.js or $refresh in the client to turn all the entities back + into sleeping references.`,S,c,_,st,it,x,ot,D;return g=new V({props:{language:W,code:`// BlogPost extends the Entity class. +let blogPost = await BlogPost.factory(); + +// Check that the entity is new. +if (someBlogPost.guid == null) { + alert("This blog post hasn't been saved yet!"); +}`}}),f=new V({props:{language:W,code:`blogPost.$addTag('super-post'); +await blogPost.$save(); + +let superPosts = await nymph.getEntities( + { class: BlogPost }, + { type: '&', tag: 'super-post' } +); + +blogPost.$inArray(superPosts); // true`}}),p=new V({props:{language:W,code:`let entity = await Entity.factory(); +entity.foo = await Entity.factory(); + +entity.foo.bar = 'It works!'; +await entity.foo.$save(); // Saving the referenced entity first! :) +await entity.$save(); // now foo has been saved. + +const guid = entity.guid; +entity = await Entity.factory(guid); + +entity.foo.guid == null; // False +console.log(entity.foo.bar); // Outputs 'It works!'.`}}),w=new V({props:{language:W,code:`let entity = await Entity.factory(); +entity.foo = await Entity.factory(); + +await entity.$save(); // foo hasn't been saved yet! + +entity.foo.bar = 'It works!'; +await entity.foo.$save(); + +const guid = entity.guid; +entity = await Entity.factory(guid); + +entity.foo.guid == null; // True +console.log(entity.foo.bar); // Outputs undefined.`}}),{c(){h=new Et(!1),M=pt(),L=s(),e=i("section"),u=i("header"),u.innerHTML=rt,Y=s(),E=i("p"),E.innerHTML=lt,Q=s(),B(g.$$.fragment),F=s(),C=i("p"),C.textContent=ct,J=s(),B(f.$$.fragment),K=s(),T=i("p"),T.textContent=dt,X=s(),y=i("div"),m=i("div"),m.innerHTML=ht,Z=s(),B(p.$$.fragment),tt=s(),v=i("div"),$=i("div"),$.innerHTML=ut,et=s(),B(w.$$.fragment),nt=s(),P=i("p"),P.textContent=gt,at=s(),I=i("p"),I.innerHTML=ft,S=s(),c=i("section"),_=i("a"),st=vt("Previous: Introduction"),it=s(),x=i("a"),ot=vt("Next: Entity Querying"),this.h()},l(n){const b=Ct("svelte-1eabkgd",document.head);h=Tt(b,!1),M=pt(),b.forEach(l),L=o(n),e=r(n,"SECTION",{});var a=k(e);u=r(a,"HEADER",{class:!0,"data-svelte-h":!0}),d(u)!=="svelte-1r4zxlg"&&(u.innerHTML=rt),Y=o(a),E=r(a,"P",{"data-svelte-h":!0}),d(E)!=="svelte-1jwh69x"&&(E.innerHTML=lt),Q=o(a),z(g.$$.fragment,a),F=o(a),C=r(a,"P",{"data-svelte-h":!0}),d(C)!=="svelte-go5m5m"&&(C.textContent=ct),J=o(a),z(f.$$.fragment,a),K=o(a),T=r(a,"P",{"data-svelte-h":!0}),d(T)!=="svelte-k2lz97"&&(T.textContent=dt),X=o(a),y=r(a,"DIV",{});var N=k(y);m=r(N,"DIV",{style:!0,"data-svelte-h":!0}),d(m)!=="svelte-1jxvgmh"&&(m.innerHTML=ht),Z=o(N),z(p.$$.fragment,N),N.forEach(l),tt=o(a),v=r(a,"DIV",{});var A=k(v);$=r(A,"DIV",{style:!0,"data-svelte-h":!0}),d($)!=="svelte-1s82s64"&&($.innerHTML=ut),et=o(A),z(w.$$.fragment,A),A.forEach(l),nt=o(a),P=r(a,"P",{"data-svelte-h":!0}),d(P)!=="svelte-v88prl"&&(P.textContent=gt),at=o(a),I=r(a,"P",{"data-svelte-h":!0}),d(I)!=="svelte-1v43csb"&&(I.innerHTML=ft),a.forEach(l),S=o(n),c=r(n,"SECTION",{class:!0});var j=k(c);_=r(j,"A",{href:!0,class:!0});var yt=k(_);st=$t(yt,"Previous: Introduction"),yt.forEach(l),it=o(j),x=r(j,"A",{href:!0,class:!0});var mt=k(x);ot=$t(mt,"Next: Entity Querying"),mt.forEach(l),j.forEach(l),this.h()},h(){document.title="Creating Entities - User Guide - Nymph.js",h.a=M,H(u,"class","major"),wt(m,"text-align","end"),wt($,"text-align","end"),H(_,"href",_t+"/user-guide/introduction"),H(_,"class","button"),H(x,"href",_t+"/user-guide/entity-querying"),H(x,"class","button"),H(c,"class","page-steps")},m(n,b){h.m(Ht,document.head),t(document.head,M),q(n,L,b),q(n,e,b),t(e,u),t(e,Y),t(e,E),t(e,Q),G(g,e,null),t(e,F),t(e,C),t(e,J),G(f,e,null),t(e,K),t(e,T),t(e,X),t(e,y),t(y,m),t(y,Z),G(p,y,null),t(e,tt),t(e,v),t(v,$),t(v,et),G(w,v,null),t(e,nt),t(e,P),t(e,at),t(e,I),q(n,S,b),q(n,c,b),t(c,_),t(_,st),t(c,it),t(c,x),t(x,ot),D=!0},p:Pt,i(n){D||(O(g.$$.fragment,n),O(f.$$.fragment,n),O(p.$$.fragment,n),O(w.$$.fragment,n),D=!0)},o(n){R(g.$$.fragment,n),R(f.$$.fragment,n),R(p.$$.fragment,n),R(w.$$.fragment,n),D=!1},d(n){n&&(h.d(),l(L),l(e),l(S),l(c)),l(M),U(g),U(f),U(p),U(w)}}}class jt extends It{constructor(h){super(),kt(this,h,null,Mt,bt,{})}}export{jt as component}; diff --git a/docs/_app/immutable/nodes/19.bdc12e86.js b/docs/_app/immutable/nodes/19.bdc12e86.js new file mode 100644 index 0000000..2d11984 --- /dev/null +++ b/docs/_app/immutable/nodes/19.bdc12e86.js @@ -0,0 +1,140 @@ +import{s as He,I as Me,e as ye,a as i,f as n,l as fe,x as je,J as Ie,d as l,c as r,g as o,h as j,r as d,m as ge,j as I,k as z,u as e,i as S,v as Le}from"../chunks/scheduler.d7e45cc8.js";import{S as De,i as Pe,b as ve,d as Te,m as $e,a as we,t as Ee,e as xe}from"../chunks/index.77720afb.js";import{H as _e,g as qe}from"../chunks/github.64534d2c.js";import{t as Ce}from"../chunks/typescript.09c48802.js";import{b as be}from"../chunks/paths.d4a6803e.js";function ke(Ne){let p,L,D,t,u,ae='

    Defining Entities

    ',V,E,se=`To create a new type of data object in Nymph, you extend the Entity class. This is equivalent to creating a new table in a relational database. + If you are going to use the class on the client side, you also need to create + a corresponding client class. Below are two examples, one for Node.js, and one + for the client. A more in depth explanation follows the examples.`,A,y,f,ne="Extending Entity in Node.js",O,g,Y,v,T,oe="Extending Entity in the Client",B,$,G,x,ie=`In both cases, defaults are set in the constructor (the done + property is set to false and the name property is set to an + empty string). You can see that from within the methods of an entity, the + entity's data (other than guid, cdate, mdate, and tags) are accessed from + this.$data. The + $data part is not necessary outside of the entity's own methods.`,R,_,re=`You'll also notice that when using Nymph from within an entity's methods, + there is an instance of Nymph available in this.$nymph (or + this.nymph in static methods). In Node.js, these instances will + know which user is logged in and add appropriate permission checks, and will + maintain a persistent DB connection during a transaction. On the client, + these instances will know how to communicate with the configured REST + server. Basically, you have to use these instances. You can also use + this.$nymph.getEntityClass + and this.nymph.getEntityClass to get the right class for Nymph queries.`,W,C,le=`In Node.js, the etype is set to "todo". The etype of an entity + determines which table(s) the entity will be placed in. When you search for + an entity, you give Nymph a class. Nymph will use that class' etype to + determine where to search for entities. If you don't provide a class, the + Entity class and the "entity" etype will be used.`,F,b,de=`The $clientEnabledMethods property and the + clientEnabledStaticMethods + static property in Node.js determine which methods and static methods can be + called from the client using $serverCall and + serverCallStatic. In the client class, the + return await this.$serverCall('$archive', []); statement takes advantage + of this feature.`,K,N,he=`On both the Node.js class and the client class, the class name is set in the class static property. This class name should match on each side. It is how Nymph + maps the client class to the Node.js class and vice versa.`,Q,H,ce=`Nymph provides a mechanism to ensure uniqueness among entities. Any strings + returned by the $getUniques method will have a uniqueness + constraint enforced by the database across this entity's etype. The + Todo class returns a string containing both the user's GUID and + the todo name. This ensures that the user can't have two todos with the same + name. The $save method checks for a thrown + EntityUniqueConstraintError + when calling the super class' $save.`,X,M,me=`Finally, in Node.js, the Todo class validates all of its data + in the $save method using + Joi. Without + this validation, a malicious user could send invalid data types or even + megabytes worth of data in an entity. Any validation library should support + validation in Nymph using the $getValidatable method. The + $allowlistData property will ensure no extra properties are set.`,P,h,c,Z,ee,m,te,q;return g=new _e({props:{language:Ce,code:`import { + Entity, + EntityUniqueConstraintError, + nymphJoiProps, +} from '@nymphjs/nymph'; +import { tilmeldJoiProps } from '@nymphjs/tilmeld'; +import Joi from 'joi'; + +export type TodoData = { + name?: string; + done?: boolean; +}; + +export class Todo extends Entity { + static ETYPE = 'todo'; + static class = 'Todo'; + + protected $clientEnabledMethods = ['$archive']; + protected $allowlistData? = ['name', 'done']; + protected $protectedTags = ['archived']; + protected $allowlistTags? = []; + + constructor() { + super(); + + this.$data.name = ''; + this.$data.done = false; + } + + async $getUniques() { + // Make sure this isn't a duplicate Todo for this user. + return [\`\${this.$data.user.guid}:\${this.$data.name}\`]; + } + + async $archive() { + if (this.$hasTag('archived')) { + return true; + } + this.$addTag('archived'); + return await this.$save(); + } + + async $save() { + if (!this.$nymph.tilmeld?.gatekeeper()) { + // Only allow logged in users to save. + throw new Error('You are not logged in.'); + } + + // Validate the entity's data. + Joi.attempt( + this.$getValidatable(), + Joi.object().keys({ + ...nymphJoiProps, + ...tilmeldJoiProps, + + name: Joi.string().trim(false).max(500, 'utf8').required(), + done: Joi.boolean().required(), + }), + 'Invalid Todo: ' + ); + + try { + return await super.$save(); + } catch (e: any) { + if (e instanceof EntityUniqueConstraintError) { + throw new Error('There is already a todo for that.'); + } + throw e; + } + } +} + +// Elsewhere, after initializing Nymph. +import { Todo as TodoClass } from './Todo.js'; +const Todo = nymph.addEntityClass(TodoClass);`}}),$=new _e({props:{language:Ce,code:`import { Entity } from '@nymphjs/client'; + +export type TodoData = { + name?: string; + done?: boolean; +}; + +export class Todo extends Entity { + // The name of the server class + public static class = 'Todo'; + + constructor() { + super(); + + this.$data.name = ''; + this.$data.done = false; + } + + async $archive(): Promise { + return await this.$serverCall('$archive', []); + } +} + +// Elsewhere, after initializing Nymph. +import { Todo as TodoClass } from './Todo.js'; +const Todo = nymph.addEntityClass(TodoClass);`}}),{c(){p=new Me(!1),L=ye(),D=i(),t=n("section"),u=n("header"),u.innerHTML=ae,V=i(),E=n("p"),E.innerHTML=se,A=i(),y=n("div"),f=n("div"),f.textContent=ne,O=i(),ve(g.$$.fragment),Y=i(),v=n("div"),T=n("div"),T.textContent=oe,B=i(),ve($.$$.fragment),G=i(),x=n("p"),x.innerHTML=ie,R=i(),_=n("p"),_.innerHTML=re,W=i(),C=n("p"),C.innerHTML=le,F=i(),b=n("p"),b.innerHTML=de,K=i(),N=n("p"),N.innerHTML=he,Q=i(),H=n("p"),H.innerHTML=ce,X=i(),M=n("p"),M.innerHTML=me,P=i(),h=n("section"),c=n("a"),Z=fe("Previous: Entity Class"),ee=i(),m=n("a"),te=fe("Next: UIDs"),this.h()},l(s){const w=je("svelte-1kddyis",document.head);p=Ie(w,!1),L=ye(),w.forEach(l),D=r(s),t=o(s,"SECTION",{});var a=j(t);u=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),d(u)!=="svelte-m0pwuh"&&(u.innerHTML=ae),V=r(a),E=o(a,"P",{"data-svelte-h":!0}),d(E)!=="svelte-1ga4ymg"&&(E.innerHTML=se),A=r(a),y=o(a,"DIV",{});var k=j(y);f=o(k,"DIV",{style:!0,"data-svelte-h":!0}),d(f)!=="svelte-x4a4x6"&&(f.textContent=ne),O=r(k),Te(g.$$.fragment,k),k.forEach(l),Y=r(a),v=o(a,"DIV",{});var J=j(v);T=o(J,"DIV",{style:!0,"data-svelte-h":!0}),d(T)!=="svelte-cz2e9p"&&(T.textContent=oe),B=r(J),Te($.$$.fragment,J),J.forEach(l),G=r(a),x=o(a,"P",{"data-svelte-h":!0}),d(x)!=="svelte-i2s6a"&&(x.innerHTML=ie),R=r(a),_=o(a,"P",{"data-svelte-h":!0}),d(_)!=="svelte-1dyi7tz"&&(_.innerHTML=re),W=r(a),C=o(a,"P",{"data-svelte-h":!0}),d(C)!=="svelte-gi493t"&&(C.innerHTML=le),F=r(a),b=o(a,"P",{"data-svelte-h":!0}),d(b)!=="svelte-tt0ehe"&&(b.innerHTML=de),K=r(a),N=o(a,"P",{"data-svelte-h":!0}),d(N)!=="svelte-xvwhoh"&&(N.innerHTML=he),Q=r(a),H=o(a,"P",{"data-svelte-h":!0}),d(H)!=="svelte-zzn5k9"&&(H.innerHTML=ce),X=r(a),M=o(a,"P",{"data-svelte-h":!0}),d(M)!=="svelte-16ufu2w"&&(M.innerHTML=me),a.forEach(l),P=r(s),h=o(s,"SECTION",{class:!0});var U=j(h);c=o(U,"A",{href:!0,class:!0,style:!0});var pe=j(c);Z=ge(pe,"Previous: Entity Class"),pe.forEach(l),ee=r(U),m=o(U,"A",{href:!0,class:!0,style:!0});var ue=j(m);te=ge(ue,"Next: UIDs"),ue.forEach(l),U.forEach(l),this.h()},h(){document.title="Defining Entities - User Guide - Nymph.js",p.a=L,I(u,"class","major"),z(f,"text-align","end"),z(T,"text-align","end"),I(c,"href",be+"/user-guide/entity-class"),I(c,"class","button"),z(c,"margin",".5em"),I(m,"href",be+"/user-guide/uids"),I(m,"class","button"),z(m,"margin",".5em"),I(h,"class","page-steps")},m(s,w){p.m(qe,document.head),e(document.head,L),S(s,D,w),S(s,t,w),e(t,u),e(t,V),e(t,E),e(t,A),e(t,y),e(y,f),e(y,O),$e(g,y,null),e(t,Y),e(t,v),e(v,T),e(v,B),$e($,v,null),e(t,G),e(t,x),e(t,R),e(t,_),e(t,W),e(t,C),e(t,F),e(t,b),e(t,K),e(t,N),e(t,Q),e(t,H),e(t,X),e(t,M),S(s,P,w),S(s,h,w),e(h,c),e(c,Z),e(h,ee),e(h,m),e(m,te),q=!0},p:Le,i(s){q||(we(g.$$.fragment,s),we($.$$.fragment,s),q=!0)},o(s){Ee(g.$$.fragment,s),Ee($.$$.fragment,s),q=!1},d(s){s&&(p.d(),l(D),l(t),l(P),l(h)),l(L),xe(g),xe($)}}}class Ae extends De{constructor(p){super(),Pe(this,p,null,ke,He,{})}}export{Ae as component}; diff --git a/docs/_app/immutable/nodes/19.fefd0bc2.js b/docs/_app/immutable/nodes/19.fefd0bc2.js deleted file mode 100644 index a470f29..0000000 --- a/docs/_app/immutable/nodes/19.fefd0bc2.js +++ /dev/null @@ -1,180 +0,0 @@ -import{S as Ya,i as Ba,s as Ha,R as Ma,e as xa,a as m,k as s,q as t,y as ja,F as za,T as Ra,h as n,c as u,l as o,m as i,r as a,z as Ia,p as ue,n as C,C as e,b as Te,A as qa,D as Wa,g as Pa,d as ka,B as Ua}from"../chunks/index.d7cc8d8b.js";import{H as Aa,g as Fa}from"../chunks/github.df9008b1.js";import{t as Ja}from"../chunks/typescript.7dd1ec19.js";import{b as Sa}from"../chunks/paths.d307dac8.js";function Ga(Va){let O,B,ye,r,A,J,Ce,be,x,De,H,Ne,Oe,xe,j,S,je,Ie,I,qe,q,V,Pe,ke,P,Ue,y,Ae,M,Je,Se,z,Ve,Ye,R,Be,He,W,Me,ze,Re,f,We,F,Fe,Ge,G,Ke,Le,K,Qe,Xe,L,Ze,et,tt,_,at,Q,nt,st,X,ot,it,rt,h,lt,Z,dt,ht,ee,ct,pt,te,mt,ut,ae,yt,ft,ne,vt,Et,gt,k,wt,se,$t,_t,Tt,c,Ct,oe,bt,Dt,ie,Nt,Ot,re,xt,jt,le,It,qt,de,Pt,kt,Ut,p,At,he,Jt,St,ce,Vt,Yt,b,Bt,Ht,pe,Mt,zt,me,Rt,Wt,fe,T,D,Ft,Gt,N,Kt,ve;return I=new Aa({props:{language:Ja,code:`import { - Entity, - EntityUniqueConstraintError, - nymphJoiProps, -} from '@nymphjs/nymph'; -import { tilmeldJoiProps } from '@nymphjs/tilmeld'; -import Joi from 'joi'; - -export type TodoData = { - name?: string; - done?: boolean; -}; - -export class Todo extends Entity { - static ETYPE = 'todo'; - static class = 'Todo'; - - protected $clientEnabledMethods = ['$archive']; - protected $allowlistData? = ['name', 'done']; - protected $protectedTags = ['archived']; - protected $allowlistTags? = []; - - constructor() { - super(); - - this.$data.name = ''; - this.$data.done = false; - } - - async $getUniques() { - // Make sure this isn't a duplicate Todo for this user. - return [\`\${this.$data.user.guid}:\${this.$data.name}\`]; - } - - async $archive() { - if (this.$hasTag('archived')) { - return true; - } - this.$addTag('archived'); - return await this.$save(); - } - - async $save() { - if (!this.$nymph.tilmeld?.gatekeeper()) { - // Only allow logged in users to save. - throw new Error('You are not logged in.'); - } - - // Validate the entity's data. - Joi.attempt( - this.$getValidatable(), - Joi.object().keys({ - ...nymphJoiProps, - ...tilmeldJoiProps, - - name: Joi.string().trim(false).max(500, 'utf8').required(), - done: Joi.boolean().required(), - }), - 'Invalid Todo: ' - ); - - try { - return await super.$save(); - } catch (e: any) { - if (e instanceof EntityUniqueConstraintError) { - throw new Error('There is already a todo for that.'); - } - throw e; - } - } -} - -// Elsewhere, after initializing Nymph. -import { Todo as TodoClass } from './Todo.js'; -const Todo = nymph.addEntityClass(TodoClass);`}}),P=new Aa({props:{language:Ja,code:`import { Entity } from '@nymphjs/client'; - -export type TodoData = { - name?: string; - done?: boolean; -}; - -export class Todo extends Entity { - // The name of the server class - public static class = 'Todo'; - - constructor() { - super(); - - this.$data.name = ''; - this.$data.done = false; - } - - async $archive(): Promise { - return await this.$serverCall('$archive', []); - } -} - -// Elsewhere, after initializing Nymph. -import { Todo as TodoClass } from './Todo.js'; -const Todo = nymph.addEntityClass(TodoClass);`}}),{c(){O=new Ma(!1),B=xa(),ye=m(),r=s("section"),A=s("header"),J=s("h1"),Ce=t("Defining Entities"),be=m(),x=s("p"),De=t("To create a new type of data object in Nymph, you extend the "),H=s("code"),Ne=t("Entity"),Oe=t(` class. This is equivalent to creating a new table in a relational database. - If you are going to use the class on the client side, you also need to create - a corresponding client class. Below are two examples, one for Node.js, and one - for the client. A more in depth explanation follows the examples.`),xe=m(),j=s("div"),S=s("div"),je=t("Extending Entity in Node.js"),Ie=m(),ja(I.$$.fragment),qe=m(),q=s("div"),V=s("div"),Pe=t("Extending Entity in the Client"),ke=m(),ja(P.$$.fragment),Ue=m(),y=s("p"),Ae=t("In both cases, defaults are set in the constructor (the "),M=s("code"),Je=t("done"),Se=t(` - property is set to false and the `),z=s("code"),Ve=t("name"),Ye=t(` property is set to an - empty string). You can see that from within the methods of an entity, the - entity's data (other than guid, cdate, mdate, and tags) are accessed from - `),R=s("code"),Be=t("this.$data"),He=t(`. The - `),W=s("code"),Me=t("$data"),ze=t(" part is not necessary outside of the entity's own methods."),Re=m(),f=s("p"),We=t(`You'll also notice that when using Nymph from within an entity's methods, - there is an instance of Nymph available in `),F=s("code"),Fe=t("this.$nymph"),Ge=t(` (or - `),G=s("code"),Ke=t("this.nymph"),Le=t(` in static methods). In Node.js, these instances will - know which user is logged in and add appropriate permission checks, and will - maintain a persistent DB connection during a transaction. On the client, - these instances will know how to communicate with the configured REST - server. Basically, you have to use these instances. You can also use - `),K=s("code"),Qe=t("this.$nymph.getEntityClass"),Xe=t(` - and `),L=s("code"),Ze=t("this.nymph.getEntityClass"),et=t(" to get the right class for Nymph queries."),tt=m(),_=s("p"),at=t("In Node.js, the etype is set to "),Q=s("code"),nt=t('"todo"'),st=t(`. The etype of an entity - determines which table(s) the entity will be placed in. When you search for - an entity, you give Nymph a class. Nymph will use that class' etype to - determine where to search for entities. If you don't provide a class, the - `),X=s("code"),ot=t("Entity"),it=t(' class and the "entity" etype will be used.'),rt=m(),h=s("p"),lt=t("The "),Z=s("code"),dt=t("$clientEnabledMethods"),ht=t(` property and the - `),ee=s("code"),ct=t("clientEnabledStaticMethods"),pt=t(` - static property in Node.js determine which methods and static methods can be - called from the client using `),te=s("code"),mt=t("$serverCall"),ut=t(` and - `),ae=s("code"),yt=t("serverCallStatic"),ft=t(`. In the client class, the - `),ne=s("code"),vt=t("return await this.$serverCall('$archive', []);"),Et=t(` statement takes advantage - of this feature.`),gt=m(),k=s("p"),wt=t("On both the Node.js class and the client class, the class name is set in the "),se=s("code"),$t=t("class"),_t=t(` static property. This class name should match on each side. It is how Nymph - maps the client class to the Node.js class and vice versa.`),Tt=m(),c=s("p"),Ct=t(`Nymph provides a mechanism to ensure uniqueness among entities. Any strings - returned by the `),oe=s("code"),bt=t("$getUniques"),Dt=t(` method will have a uniqueness - constraint enforced by the database across this entity's etype. The - `),ie=s("code"),Nt=t("Todo"),Ot=t(` class returns a string containing both the user's GUID and - the todo name. This ensures that the user can't have two todos with the same - name. The `),re=s("code"),xt=t("$save"),jt=t(` method checks for a thrown - `),le=s("code"),It=t("EntityUniqueConstraintError"),qt=t(` - when calling the super class' `),de=s("code"),Pt=t("$save"),kt=t("."),Ut=m(),p=s("p"),At=t("Finally, in Node.js, the "),he=s("code"),Jt=t("Todo"),St=t(` class validates all of its data - in the `),ce=s("code"),Vt=t("$save"),Yt=t(` method using - `),b=s("a"),Bt=t("Joi"),Ht=t(`. Without - this validation, a malicious user could send invalid data types or even - megabytes worth of data in an entity. Any validation library should support - validation in Nymph using the `),pe=s("code"),Mt=t("$getValidatable"),zt=t(` method. The - `),me=s("code"),Rt=t("$allowlistData"),Wt=t(" property will ensure no extra properties are set."),fe=m(),T=s("section"),D=s("a"),Ft=t("Previous: Entity Class"),Gt=m(),N=s("a"),Kt=t("Next: UIDs"),this.h()},l(d){const U=za("svelte-1kddyis",document.head);O=Ra(U,!1),B=xa(),U.forEach(n),ye=u(d),r=o(d,"SECTION",{});var l=i(r);A=o(l,"HEADER",{class:!0});var Lt=i(A);J=o(Lt,"H1",{style:!0});var Qt=i(J);Ce=a(Qt,"Defining Entities"),Qt.forEach(n),Lt.forEach(n),be=u(l),x=o(l,"P",{});var Ee=i(x);De=a(Ee,"To create a new type of data object in Nymph, you extend the "),H=o(Ee,"CODE",{});var Xt=i(H);Ne=a(Xt,"Entity"),Xt.forEach(n),Oe=a(Ee,` class. This is equivalent to creating a new table in a relational database. - If you are going to use the class on the client side, you also need to create - a corresponding client class. Below are two examples, one for Node.js, and one - for the client. A more in depth explanation follows the examples.`),Ee.forEach(n),xe=u(l),j=o(l,"DIV",{});var ge=i(j);S=o(ge,"DIV",{style:!0});var Zt=i(S);je=a(Zt,"Extending Entity in Node.js"),Zt.forEach(n),Ie=u(ge),Ia(I.$$.fragment,ge),ge.forEach(n),qe=u(l),q=o(l,"DIV",{});var we=i(q);V=o(we,"DIV",{style:!0});var ea=i(V);Pe=a(ea,"Extending Entity in the Client"),ea.forEach(n),ke=u(we),Ia(P.$$.fragment,we),we.forEach(n),Ue=u(l),y=o(l,"P",{});var w=i(y);Ae=a(w,"In both cases, defaults are set in the constructor (the "),M=o(w,"CODE",{});var ta=i(M);Je=a(ta,"done"),ta.forEach(n),Se=a(w,` - property is set to false and the `),z=o(w,"CODE",{});var aa=i(z);Ve=a(aa,"name"),aa.forEach(n),Ye=a(w,` property is set to an - empty string). You can see that from within the methods of an entity, the - entity's data (other than guid, cdate, mdate, and tags) are accessed from - `),R=o(w,"CODE",{});var na=i(R);Be=a(na,"this.$data"),na.forEach(n),He=a(w,`. The - `),W=o(w,"CODE",{});var sa=i(W);Me=a(sa,"$data"),sa.forEach(n),ze=a(w," part is not necessary outside of the entity's own methods."),w.forEach(n),Re=u(l),f=o(l,"P",{});var $=i(f);We=a($,`You'll also notice that when using Nymph from within an entity's methods, - there is an instance of Nymph available in `),F=o($,"CODE",{});var oa=i(F);Fe=a(oa,"this.$nymph"),oa.forEach(n),Ge=a($,` (or - `),G=o($,"CODE",{});var ia=i(G);Ke=a(ia,"this.nymph"),ia.forEach(n),Le=a($,` in static methods). In Node.js, these instances will - know which user is logged in and add appropriate permission checks, and will - maintain a persistent DB connection during a transaction. On the client, - these instances will know how to communicate with the configured REST - server. Basically, you have to use these instances. You can also use - `),K=o($,"CODE",{});var ra=i(K);Qe=a(ra,"this.$nymph.getEntityClass"),ra.forEach(n),Xe=a($,` - and `),L=o($,"CODE",{});var la=i(L);Ze=a(la,"this.nymph.getEntityClass"),la.forEach(n),et=a($," to get the right class for Nymph queries."),$.forEach(n),tt=u(l),_=o(l,"P",{});var Y=i(_);at=a(Y,"In Node.js, the etype is set to "),Q=o(Y,"CODE",{});var da=i(Q);nt=a(da,'"todo"'),da.forEach(n),st=a(Y,`. The etype of an entity - determines which table(s) the entity will be placed in. When you search for - an entity, you give Nymph a class. Nymph will use that class' etype to - determine where to search for entities. If you don't provide a class, the - `),X=o(Y,"CODE",{});var ha=i(X);ot=a(ha,"Entity"),ha.forEach(n),it=a(Y,' class and the "entity" etype will be used.'),Y.forEach(n),rt=u(l),h=o(l,"P",{});var v=i(h);lt=a(v,"The "),Z=o(v,"CODE",{});var ca=i(Z);dt=a(ca,"$clientEnabledMethods"),ca.forEach(n),ht=a(v,` property and the - `),ee=o(v,"CODE",{});var pa=i(ee);ct=a(pa,"clientEnabledStaticMethods"),pa.forEach(n),pt=a(v,` - static property in Node.js determine which methods and static methods can be - called from the client using `),te=o(v,"CODE",{});var ma=i(te);mt=a(ma,"$serverCall"),ma.forEach(n),ut=a(v,` and - `),ae=o(v,"CODE",{});var ua=i(ae);yt=a(ua,"serverCallStatic"),ua.forEach(n),ft=a(v,`. In the client class, the - `),ne=o(v,"CODE",{});var ya=i(ne);vt=a(ya,"return await this.$serverCall('$archive', []);"),ya.forEach(n),Et=a(v,` statement takes advantage - of this feature.`),v.forEach(n),gt=u(l),k=o(l,"P",{});var $e=i(k);wt=a($e,"On both the Node.js class and the client class, the class name is set in the "),se=o($e,"CODE",{});var fa=i(se);$t=a(fa,"class"),fa.forEach(n),_t=a($e,` static property. This class name should match on each side. It is how Nymph - maps the client class to the Node.js class and vice versa.`),$e.forEach(n),Tt=u(l),c=o(l,"P",{});var E=i(c);Ct=a(E,`Nymph provides a mechanism to ensure uniqueness among entities. Any strings - returned by the `),oe=o(E,"CODE",{});var va=i(oe);bt=a(va,"$getUniques"),va.forEach(n),Dt=a(E,` method will have a uniqueness - constraint enforced by the database across this entity's etype. The - `),ie=o(E,"CODE",{});var Ea=i(ie);Nt=a(Ea,"Todo"),Ea.forEach(n),Ot=a(E,` class returns a string containing both the user's GUID and - the todo name. This ensures that the user can't have two todos with the same - name. The `),re=o(E,"CODE",{});var ga=i(re);xt=a(ga,"$save"),ga.forEach(n),jt=a(E,` method checks for a thrown - `),le=o(E,"CODE",{});var wa=i(le);It=a(wa,"EntityUniqueConstraintError"),wa.forEach(n),qt=a(E,` - when calling the super class' `),de=o(E,"CODE",{});var $a=i(de);Pt=a($a,"$save"),$a.forEach(n),kt=a(E,"."),E.forEach(n),Ut=u(l),p=o(l,"P",{});var g=i(p);At=a(g,"Finally, in Node.js, the "),he=o(g,"CODE",{});var _a=i(he);Jt=a(_a,"Todo"),_a.forEach(n),St=a(g,` class validates all of its data - in the `),ce=o(g,"CODE",{});var Ta=i(ce);Vt=a(Ta,"$save"),Ta.forEach(n),Yt=a(g,` method using - `),b=o(g,"A",{href:!0,target:!0,rel:!0});var Ca=i(b);Bt=a(Ca,"Joi"),Ca.forEach(n),Ht=a(g,`. Without - this validation, a malicious user could send invalid data types or even - megabytes worth of data in an entity. Any validation library should support - validation in Nymph using the `),pe=o(g,"CODE",{});var ba=i(pe);Mt=a(ba,"$getValidatable"),ba.forEach(n),zt=a(g,` method. The - `),me=o(g,"CODE",{});var Da=i(me);Rt=a(Da,"$allowlistData"),Da.forEach(n),Wt=a(g," property will ensure no extra properties are set."),g.forEach(n),l.forEach(n),fe=u(d),T=o(d,"SECTION",{class:!0});var _e=i(T);D=o(_e,"A",{href:!0,class:!0,style:!0});var Na=i(D);Ft=a(Na,"Previous: Entity Class"),Na.forEach(n),Gt=u(_e),N=o(_e,"A",{href:!0,class:!0,style:!0});var Oa=i(N);Kt=a(Oa,"Next: UIDs"),Oa.forEach(n),_e.forEach(n),this.h()},h(){document.title="Defining Entities - User Guide - Nymph.js",O.a=B,ue(J,"font-size","3em"),C(A,"class","major"),ue(S,"text-align","end"),ue(V,"text-align","end"),C(b,"href","https://joi.dev/"),C(b,"target","_blank"),C(b,"rel","noreferrer"),C(D,"href",Sa+"/user-guide/entity-class"),C(D,"class","button"),ue(D,"margin",".5em"),C(N,"href",Sa+"/user-guide/uids"),C(N,"class","button"),ue(N,"margin",".5em"),C(T,"class","page-steps")},m(d,U){O.m(Fa,document.head),e(document.head,B),Te(d,ye,U),Te(d,r,U),e(r,A),e(A,J),e(J,Ce),e(r,be),e(r,x),e(x,De),e(x,H),e(H,Ne),e(x,Oe),e(r,xe),e(r,j),e(j,S),e(S,je),e(j,Ie),qa(I,j,null),e(r,qe),e(r,q),e(q,V),e(V,Pe),e(q,ke),qa(P,q,null),e(r,Ue),e(r,y),e(y,Ae),e(y,M),e(M,Je),e(y,Se),e(y,z),e(z,Ve),e(y,Ye),e(y,R),e(R,Be),e(y,He),e(y,W),e(W,Me),e(y,ze),e(r,Re),e(r,f),e(f,We),e(f,F),e(F,Fe),e(f,Ge),e(f,G),e(G,Ke),e(f,Le),e(f,K),e(K,Qe),e(f,Xe),e(f,L),e(L,Ze),e(f,et),e(r,tt),e(r,_),e(_,at),e(_,Q),e(Q,nt),e(_,st),e(_,X),e(X,ot),e(_,it),e(r,rt),e(r,h),e(h,lt),e(h,Z),e(Z,dt),e(h,ht),e(h,ee),e(ee,ct),e(h,pt),e(h,te),e(te,mt),e(h,ut),e(h,ae),e(ae,yt),e(h,ft),e(h,ne),e(ne,vt),e(h,Et),e(r,gt),e(r,k),e(k,wt),e(k,se),e(se,$t),e(k,_t),e(r,Tt),e(r,c),e(c,Ct),e(c,oe),e(oe,bt),e(c,Dt),e(c,ie),e(ie,Nt),e(c,Ot),e(c,re),e(re,xt),e(c,jt),e(c,le),e(le,It),e(c,qt),e(c,de),e(de,Pt),e(c,kt),e(r,Ut),e(r,p),e(p,At),e(p,he),e(he,Jt),e(p,St),e(p,ce),e(ce,Vt),e(p,Yt),e(p,b),e(b,Bt),e(p,Ht),e(p,pe),e(pe,Mt),e(p,zt),e(p,me),e(me,Rt),e(p,Wt),Te(d,fe,U),Te(d,T,U),e(T,D),e(D,Ft),e(T,Gt),e(T,N),e(N,Kt),ve=!0},p:Wa,i(d){ve||(Pa(I.$$.fragment,d),Pa(P.$$.fragment,d),ve=!0)},o(d){ka(I.$$.fragment,d),ka(P.$$.fragment,d),ve=!1},d(d){n(B),d&&O.d(),d&&n(ye),d&&n(r),Ua(I),Ua(P),d&&n(fe),d&&n(T)}}}class Za extends Ya{constructor(O){super(),Ba(this,O,null,Ga,Ha,{})}}export{Za as component}; diff --git a/docs/_app/immutable/nodes/2.60fef664.js b/docs/_app/immutable/nodes/2.60fef664.js deleted file mode 100644 index b75fa1f..0000000 --- a/docs/_app/immutable/nodes/2.60fef664.js +++ /dev/null @@ -1,49 +0,0 @@ -import{S as ka,i as Aa,s as ja,a as i,k as a,q as o,y as Oe,F as La,h as t,c,l as r,m as n,r as l,z as Fe,n as h,b as y,C as e,A as Me,D as Ra,g as Ve,d as Je,B as ze}from"../chunks/index.d7cc8d8b.js";import{I as Be,e as Ha,f as Qa,g as Ta,h as qa}from"../chunks/Icon.b8c1070a.js";function Da($a){let M,k,p,A,Z,Ge,Ue,ee,We,Ke,te,Xe,Ze,ae,et,tt,V,re,v,at,_e,m,J,ne,rt,nt,se,st,ot,d,j,z,L,lt,E,oe,it,ct,le,ht,pt,R,B,H,dt,b,ie,ut,ft,ce,mt,yt,Q,G,T,vt,g,he,Et,bt,q,gt,pe,_t,Nt,wt,D,U,x,St,_,de,Pt,It,ue,$t,Ne,u,N,fe,kt,At,me,jt,Lt,ye,Rt,Ht,ve,Qt,Tt,Ee,qt,we,w,W,be,Dt,xt,Y,Yt,C,Ct,Ot,Se,S,K,ge,Ft,Mt,O,Vt,F,Jt,zt,Pe;return L=new Be({props:{path:Ha}}),H=new Be({props:{path:Qa}}),T=new Be({props:{path:Ta}}),x=new Be({props:{path:qa}}),{c(){M=i(),k=a("section"),p=a("div"),A=a("header"),Z=a("h1"),Ge=o("Nymph.js"),Ue=i(),ee=a("p"),We=o("JavaScript data objects for Node.js and the browser."),Ke=i(),te=a("p"),Xe=o(`Nymph is an object relational mapper for collaborative web apps. Nymph - runs in Node.js and provides a REST server with clients built for Node.js - and the browser. It allows rapid prototyping and production ready speed - and features.`),Ze=i(),ae=a("p"),et=o(`Nymph can use SQLite3, MySQL, or PostgreSQL as its database backend. You - can use SQLite in development, and MySQL or Postgres in production. You - can even use Nymph with SQLite in an Electron app.`),tt=i(),V=a("ul"),re=a("li"),v=a("a"),at=o("Nymph.js on GitHub"),_e=i(),m=a("section"),J=a("header"),ne=a("h2"),rt=o("Features"),nt=i(),se=a("p"),st=o(`Picture writing a SQL query on the frontend and saying, "update this array - whenever the results for this query change." Now instead of SQL, your query - is a simple JSON structure and has automatic access control built right in. - You can have all your logic on the frontend, or the backend if you prefer, - because you work with the data all the same. That's Nymph.`),ot=i(),d=a("div"),j=a("article"),z=a("span"),Oe(L.$$.fragment),lt=i(),E=a("div"),oe=a("h3"),it=o("Speedy"),ct=i(),le=a("p"),ht=o(`Nymph is lean and fast. Not just in processing, but Nymph can be used - for rapid prototyping.`),pt=i(),R=a("article"),B=a("span"),Oe(H.$$.fragment),dt=i(),b=a("div"),ie=a("h3"),ut=o("Open Source"),ft=i(),ce=a("p"),mt=o(`Nymph is licensed under the Apache-2 license. It provides all you need - to build a backend for your app and the frontend tools you'll need as - well.`),yt=i(),Q=a("article"),G=a("span"),Oe(T.$$.fragment),vt=i(),g=a("div"),he=a("h3"),Et=o("Reactive"),bt=i(),q=a("p"),gt=o("Nymph's publish/subscribe server makes it easy to build "),pe=a("strong"),_t=o("collaborative"),Nt=o(` apps. You can subscribe to complex queries from the client and be notified - when the queries' results have changed.`),wt=i(),D=a("article"),U=a("span"),Oe(x.$$.fragment),St=i(),_=a("div"),de=a("h3"),Pt=o("Secure"),It=i(),ue=a("p"),$t=o(`Nymph provides an optional user and group manager called Tilmeld that - secures your app based on granular permission controls.`),Ne=i(),u=a("section"),N=a("header"),fe=a("h2"),kt=o("Framework Agnostic"),At=i(),me=a("p"),jt=o(`Nymph is very easy to integrate into React, Svelte, Angular, Ember, and - more.`),Lt=i(),ye=a("p"),Rt=o(`Nymph's easy querying on the server and client makes it perfect for building - complex apps with any frontend framework. Because you don't have to write - SQL, almost all of your logic can be on the client side, if you prefer. You - can also use backend logic in the client as if it were written on the - front-end with automatic asynchronous server calls.`),Ht=i(),ve=a("p"),Qt=o(`Nymph's REST server package makes it easy to integrate anywhere in your app. - It provides an Express middleware that you can place on any arbitrary - endpoint.`),Tt=i(),Ee=a("p"),qt=o(`Nymph's PubSub server package makes synchronizing your client with pushed - changes from the server super easy. With a reactive framework on the - frontend, your UI will update in near real time to changes to any entities - that match your subscribed queries.`),we=i(),w=a("section"),W=a("header"),be=a("h2"),Dt=o("Full API Docs"),xt=i(),Y=a("p"),Yt=o("If you want to really dive deep into Nymph, you can also browse the "),C=a("a"),Ct=o("API docs"),Ot=o(", which covers every part of Nymph's API."),Se=i(),S=a("section"),K=a("header"),ge=a("h2"),Ft=o("Migration"),Mt=i(),O=a("p"),Vt=o("In 2021, Nymph was migrated from PHP to Node.js. You can also visit "),F=a("a"),Jt=o("the site for the legacy version"),zt=o("."),this.h()},l(s){La("svelte-o16nng",document.head).forEach(t),M=c(s),k=r(s,"SECTION",{id:!0});var Bt=n(k);p=r(Bt,"DIV",{class:!0});var P=n(p);A=r(P,"HEADER",{});var Ie=n(A);Z=r(Ie,"H1",{});var Gt=n(Z);Ge=l(Gt,"Nymph.js"),Gt.forEach(t),Ue=c(Ie),ee=r(Ie,"P",{});var Ut=n(ee);We=l(Ut,"JavaScript data objects for Node.js and the browser."),Ut.forEach(t),Ie.forEach(t),Ke=c(P),te=r(P,"P",{});var Wt=n(te);Xe=l(Wt,`Nymph is an object relational mapper for collaborative web apps. Nymph - runs in Node.js and provides a REST server with clients built for Node.js - and the browser. It allows rapid prototyping and production ready speed - and features.`),Wt.forEach(t),Ze=c(P),ae=r(P,"P",{});var Kt=n(ae);et=l(Kt,`Nymph can use SQLite3, MySQL, or PostgreSQL as its database backend. You - can use SQLite in development, and MySQL or Postgres in production. You - can even use Nymph with SQLite in an Electron app.`),Kt.forEach(t),tt=c(P),V=r(P,"UL",{class:!0});var Xt=n(V);re=r(Xt,"LI",{});var Zt=n(re);v=r(Zt,"A",{href:!0,target:!0,rel:!0,class:!0});var ea=n(v);at=l(ea,"Nymph.js on GitHub"),ea.forEach(t),Zt.forEach(t),Xt.forEach(t),P.forEach(t),Bt.forEach(t),_e=c(s),m=r(s,"SECTION",{});var X=n(m);J=r(X,"HEADER",{class:!0});var ta=n(J);ne=r(ta,"H2",{});var aa=n(ne);rt=l(aa,"Features"),aa.forEach(t),ta.forEach(t),nt=c(X),se=r(X,"P",{});var ra=n(se);st=l(ra,`Picture writing a SQL query on the frontend and saying, "update this array - whenever the results for this query change." Now instead of SQL, your query - is a simple JSON structure and has automatic access control built right in. - You can have all your logic on the frontend, or the backend if you prefer, - because you work with the data all the same. That's Nymph.`),ra.forEach(t),ot=c(X),d=r(X,"DIV",{class:!0});var I=n(d);j=r(I,"ARTICLE",{});var $e=n(j);z=r($e,"SPAN",{class:!0});var na=n(z);Fe(L.$$.fragment,na),na.forEach(t),lt=c($e),E=r($e,"DIV",{class:!0});var ke=n(E);oe=r(ke,"H3",{});var sa=n(oe);it=l(sa,"Speedy"),sa.forEach(t),ct=c(ke),le=r(ke,"P",{});var oa=n(le);ht=l(oa,`Nymph is lean and fast. Not just in processing, but Nymph can be used - for rapid prototyping.`),oa.forEach(t),ke.forEach(t),$e.forEach(t),pt=c(I),R=r(I,"ARTICLE",{});var Ae=n(R);B=r(Ae,"SPAN",{class:!0});var la=n(B);Fe(H.$$.fragment,la),la.forEach(t),dt=c(Ae),b=r(Ae,"DIV",{class:!0});var je=n(b);ie=r(je,"H3",{});var ia=n(ie);ut=l(ia,"Open Source"),ia.forEach(t),ft=c(je),ce=r(je,"P",{});var ca=n(ce);mt=l(ca,`Nymph is licensed under the Apache-2 license. It provides all you need - to build a backend for your app and the frontend tools you'll need as - well.`),ca.forEach(t),je.forEach(t),Ae.forEach(t),yt=c(I),Q=r(I,"ARTICLE",{});var Le=n(Q);G=r(Le,"SPAN",{class:!0});var ha=n(G);Fe(T.$$.fragment,ha),ha.forEach(t),vt=c(Le),g=r(Le,"DIV",{class:!0});var Re=n(g);he=r(Re,"H3",{});var pa=n(he);Et=l(pa,"Reactive"),pa.forEach(t),bt=c(Re),q=r(Re,"P",{});var He=n(q);gt=l(He,"Nymph's publish/subscribe server makes it easy to build "),pe=r(He,"STRONG",{});var da=n(pe);_t=l(da,"collaborative"),da.forEach(t),Nt=l(He,` apps. You can subscribe to complex queries from the client and be notified - when the queries' results have changed.`),He.forEach(t),Re.forEach(t),Le.forEach(t),wt=c(I),D=r(I,"ARTICLE",{});var Qe=n(D);U=r(Qe,"SPAN",{class:!0});var ua=n(U);Fe(x.$$.fragment,ua),ua.forEach(t),St=c(Qe),_=r(Qe,"DIV",{class:!0});var Te=n(_);de=r(Te,"H3",{});var fa=n(de);Pt=l(fa,"Secure"),fa.forEach(t),It=c(Te),ue=r(Te,"P",{});var ma=n(ue);$t=l(ma,`Nymph provides an optional user and group manager called Tilmeld that - secures your app based on granular permission controls.`),ma.forEach(t),Te.forEach(t),Qe.forEach(t),I.forEach(t),X.forEach(t),Ne=c(s),u=r(s,"SECTION",{});var $=n(u);N=r($,"HEADER",{class:!0});var qe=n(N);fe=r(qe,"H2",{});var ya=n(fe);kt=l(ya,"Framework Agnostic"),ya.forEach(t),At=c(qe),me=r(qe,"P",{});var va=n(me);jt=l(va,`Nymph is very easy to integrate into React, Svelte, Angular, Ember, and - more.`),va.forEach(t),qe.forEach(t),Lt=c($),ye=r($,"P",{});var Ea=n(ye);Rt=l(Ea,`Nymph's easy querying on the server and client makes it perfect for building - complex apps with any frontend framework. Because you don't have to write - SQL, almost all of your logic can be on the client side, if you prefer. You - can also use backend logic in the client as if it were written on the - front-end with automatic asynchronous server calls.`),Ea.forEach(t),Ht=c($),ve=r($,"P",{});var ba=n(ve);Qt=l(ba,`Nymph's REST server package makes it easy to integrate anywhere in your app. - It provides an Express middleware that you can place on any arbitrary - endpoint.`),ba.forEach(t),Tt=c($),Ee=r($,"P",{});var ga=n(Ee);qt=l(ga,`Nymph's PubSub server package makes synchronizing your client with pushed - changes from the server super easy. With a reactive framework on the - frontend, your UI will update in near real time to changes to any entities - that match your subscribed queries.`),ga.forEach(t),$.forEach(t),we=c(s),w=r(s,"SECTION",{});var De=n(w);W=r(De,"HEADER",{class:!0});var _a=n(W);be=r(_a,"H2",{});var Na=n(be);Dt=l(Na,"Full API Docs"),Na.forEach(t),_a.forEach(t),xt=c(De),Y=r(De,"P",{});var xe=n(Y);Yt=l(xe,"If you want to really dive deep into Nymph, you can also browse the "),C=r(xe,"A",{href:!0,rel:!0});var wa=n(C);Ct=l(wa,"API docs"),wa.forEach(t),Ot=l(xe,", which covers every part of Nymph's API."),xe.forEach(t),De.forEach(t),Se=c(s),S=r(s,"SECTION",{});var Ye=n(S);K=r(Ye,"HEADER",{class:!0});var Sa=n(K);ge=r(Sa,"H2",{});var Pa=n(ge);Ft=l(Pa,"Migration"),Pa.forEach(t),Sa.forEach(t),Mt=c(Ye),O=r(Ye,"P",{});var Ce=n(O);Vt=l(Ce,"In 2021, Nymph was migrated from PHP to Node.js. You can also visit "),F=r(Ce,"A",{href:!0,rel:!0});var Ia=n(F);Jt=l(Ia,"the site for the legacy version"),Ia.forEach(t),zt=l(Ce,"."),Ce.forEach(t),Ye.forEach(t),this.h()},h(){document.title="Nymph.js - JavaScript Data Objects",h(v,"href","https://github.com/sciactive/nymphjs"),h(v,"target","_blank"),h(v,"rel","noreferrer"),h(v,"class","button big"),h(V,"class","actions"),h(p,"class","content"),h(k,"id","banner"),h(J,"class","major"),h(z,"class","icon"),h(E,"class","content"),h(B,"class","icon"),h(b,"class","content"),h(G,"class","icon"),h(g,"class","content"),h(U,"class","icon"),h(_,"class","content"),h(d,"class","features"),h(N,"class","major"),h(W,"class","major"),h(C,"href","/api/latest/"),h(C,"rel","external"),h(K,"class","major"),h(F,"href","/legacy/"),h(F,"rel","external")},m(s,f){y(s,M,f),y(s,k,f),e(k,p),e(p,A),e(A,Z),e(Z,Ge),e(A,Ue),e(A,ee),e(ee,We),e(p,Ke),e(p,te),e(te,Xe),e(p,Ze),e(p,ae),e(ae,et),e(p,tt),e(p,V),e(V,re),e(re,v),e(v,at),y(s,_e,f),y(s,m,f),e(m,J),e(J,ne),e(ne,rt),e(m,nt),e(m,se),e(se,st),e(m,ot),e(m,d),e(d,j),e(j,z),Me(L,z,null),e(j,lt),e(j,E),e(E,oe),e(oe,it),e(E,ct),e(E,le),e(le,ht),e(d,pt),e(d,R),e(R,B),Me(H,B,null),e(R,dt),e(R,b),e(b,ie),e(ie,ut),e(b,ft),e(b,ce),e(ce,mt),e(d,yt),e(d,Q),e(Q,G),Me(T,G,null),e(Q,vt),e(Q,g),e(g,he),e(he,Et),e(g,bt),e(g,q),e(q,gt),e(q,pe),e(pe,_t),e(q,Nt),e(d,wt),e(d,D),e(D,U),Me(x,U,null),e(D,St),e(D,_),e(_,de),e(de,Pt),e(_,It),e(_,ue),e(ue,$t),y(s,Ne,f),y(s,u,f),e(u,N),e(N,fe),e(fe,kt),e(N,At),e(N,me),e(me,jt),e(u,Lt),e(u,ye),e(ye,Rt),e(u,Ht),e(u,ve),e(ve,Qt),e(u,Tt),e(u,Ee),e(Ee,qt),y(s,we,f),y(s,w,f),e(w,W),e(W,be),e(be,Dt),e(w,xt),e(w,Y),e(Y,Yt),e(Y,C),e(C,Ct),e(Y,Ot),y(s,Se,f),y(s,S,f),e(S,K),e(K,ge),e(ge,Ft),e(S,Mt),e(S,O),e(O,Vt),e(O,F),e(F,Jt),e(O,zt),Pe=!0},p:Ra,i(s){Pe||(Ve(L.$$.fragment,s),Ve(H.$$.fragment,s),Ve(T.$$.fragment,s),Ve(x.$$.fragment,s),Pe=!0)},o(s){Je(L.$$.fragment,s),Je(H.$$.fragment,s),Je(T.$$.fragment,s),Je(x.$$.fragment,s),Pe=!1},d(s){s&&t(M),s&&t(k),s&&t(_e),s&&t(m),ze(L),ze(H),ze(T),ze(x),s&&t(Ne),s&&t(u),s&&t(we),s&&t(w),s&&t(Se),s&&t(S)}}}class Ca extends ka{constructor(M){super(),Aa(this,M,null,Da,ja,{})}}export{Ca as component}; diff --git a/docs/_app/immutable/nodes/2.adc99557.js b/docs/_app/immutable/nodes/2.adc99557.js new file mode 100644 index 0000000..25edf08 --- /dev/null +++ b/docs/_app/immutable/nodes/2.adc99557.js @@ -0,0 +1,25 @@ +import{s as Le,a as r,f as n,x as Te,d as a,c as o,g as s,r as h,h as d,j as c,i as u,u as t,v as Ee}from"../chunks/scheduler.d7e45cc8.js";import{S as Ie,i as xe,b as G,d as U,m as W,a as K,t as X,e as Z}from"../chunks/index.77720afb.js";import{I as ee,e as Ce,f as He,g as Me,h as je}from"../chunks/Icon.050ff215.js";function ke($e){let M,m,pe=`

    Nymph.js

    JavaScript data objects for Node.js and the browser.

    Nymph is an object relational mapper for collaborative web apps. Nymph + runs in Node.js and provides a REST server with clients built for Node.js + and the browser. It allows rapid prototyping and production ready speed + and features.

    Nymph can use SQLite3, MySQL, or PostgreSQL as its database backend. You + can use SQLite in development, and MySQL or Postgres in production. You + can even use Nymph with SQLite in an Electron app.

    `,Q,p,v,he="

    Features

    ",te,j,de=`Picture writing a SQL query on the frontend and saying, "update this array + whenever the results for this query change." Now instead of SQL, your query + is a simple JSON structure and has automatic access control built right in. + You can have all your logic on the frontend, or the backend if you prefer, + because you work with the data all the same. That's Nymph.`,ae,i,y,k,g,ne,b,ue=`

    Speedy

    Nymph is lean and fast. Not just in processing, but Nymph can be used + for rapid prototyping.

    `,se,_,A,w,re,N,me=`

    Open Source

    Nymph is licensed under the Apache-2 license. It provides all you need + to build a backend for your app and the frontend tools you'll need as + well.

    `,oe,S,P,$,ie,L,fe=`

    Reactive

    Nymph's publish/subscribe server makes it easy to build collaborative apps. You can subscribe to complex queries from the client and be notified + when the queries' results have changed.

    `,le,T,q,E,ce,I,ve=`

    Secure

    Nymph provides an optional user and group manager called Tilmeld that + secures your app based on granular permission controls.

    `,D,x,ye=`

    Framework Agnostic

    Nymph is very easy to integrate into React, Svelte, Angular, Ember, and + more.

    Nymph's easy querying on the server and client makes it perfect for building + complex apps with any frontend framework. Because you don't have to write + SQL, almost all of your logic can be on the client side, if you prefer. You + can also use backend logic in the client as if it were written on the + front-end with automatic asynchronous server calls.

    Nymph's REST server package makes it easy to integrate anywhere in your app. + It provides an Express middleware that you can place on any arbitrary + endpoint.

    Nymph's PubSub server package makes synchronizing your client with pushed + changes from the server super easy. With a reactive framework on the + frontend, your UI will update in near real time to changes to any entities + that match your subscribed queries.

    `,O,C,ge='

    Full API Docs

    If you want to really dive deep into Nymph, you can also browse the API docs, which covers every part of Nymph's API.

    ',Y,H,be='

    Migration

    In 2021, Nymph was migrated from PHP to Node.js. You can also visit the site for the legacy version.

    ',V;return g=new ee({props:{path:Ce}}),w=new ee({props:{path:He}}),$=new ee({props:{path:Me}}),E=new ee({props:{path:je}}),{c(){M=r(),m=n("section"),m.innerHTML=pe,Q=r(),p=n("section"),v=n("header"),v.innerHTML=he,te=r(),j=n("p"),j.textContent=de,ae=r(),i=n("div"),y=n("article"),k=n("span"),G(g.$$.fragment),ne=r(),b=n("div"),b.innerHTML=ue,se=r(),_=n("article"),A=n("span"),G(w.$$.fragment),re=r(),N=n("div"),N.innerHTML=me,oe=r(),S=n("article"),P=n("span"),G($.$$.fragment),ie=r(),L=n("div"),L.innerHTML=fe,le=r(),T=n("article"),q=n("span"),G(E.$$.fragment),ce=r(),I=n("div"),I.innerHTML=ve,D=r(),x=n("section"),x.innerHTML=ye,O=r(),C=n("section"),C.innerHTML=ge,Y=r(),H=n("section"),H.innerHTML=be,this.h()},l(e){Te("svelte-o16nng",document.head).forEach(a),M=o(e),m=s(e,"SECTION",{id:!0,"data-svelte-h":!0}),h(m)!=="svelte-sq7jw"&&(m.innerHTML=pe),Q=o(e),p=s(e,"SECTION",{});var R=d(p);v=s(R,"HEADER",{class:!0,"data-svelte-h":!0}),h(v)!=="svelte-1mw113u"&&(v.innerHTML=he),te=o(R),j=s(R,"P",{"data-svelte-h":!0}),h(j)!=="svelte-1twg9ow"&&(j.textContent=de),ae=o(R),i=s(R,"DIV",{class:!0});var f=d(i);y=s(f,"ARTICLE",{});var F=d(y);k=s(F,"SPAN",{class:!0});var _e=d(k);U(g.$$.fragment,_e),_e.forEach(a),ne=o(F),b=s(F,"DIV",{class:!0,"data-svelte-h":!0}),h(b)!=="svelte-gv6mah"&&(b.innerHTML=ue),F.forEach(a),se=o(f),_=s(f,"ARTICLE",{});var J=d(_);A=s(J,"SPAN",{class:!0});var we=d(A);U(w.$$.fragment,we),we.forEach(a),re=o(J),N=s(J,"DIV",{class:!0,"data-svelte-h":!0}),h(N)!=="svelte-1f7ku42"&&(N.innerHTML=me),J.forEach(a),oe=o(f),S=s(f,"ARTICLE",{});var z=d(S);P=s(z,"SPAN",{class:!0});var Ne=d(P);U($.$$.fragment,Ne),Ne.forEach(a),ie=o(z),L=s(z,"DIV",{class:!0,"data-svelte-h":!0}),h(L)!=="svelte-1qg7qmr"&&(L.innerHTML=fe),z.forEach(a),le=o(f),T=s(f,"ARTICLE",{});var B=d(T);q=s(B,"SPAN",{class:!0});var Se=d(q);U(E.$$.fragment,Se),Se.forEach(a),ce=o(B),I=s(B,"DIV",{class:!0,"data-svelte-h":!0}),h(I)!=="svelte-342cl6"&&(I.innerHTML=ve),B.forEach(a),f.forEach(a),R.forEach(a),D=o(e),x=s(e,"SECTION",{"data-svelte-h":!0}),h(x)!=="svelte-g5k3xt"&&(x.innerHTML=ye),O=o(e),C=s(e,"SECTION",{"data-svelte-h":!0}),h(C)!=="svelte-x9jtur"&&(C.innerHTML=ge),Y=o(e),H=s(e,"SECTION",{"data-svelte-h":!0}),h(H)!=="svelte-6rylbe"&&(H.innerHTML=be),this.h()},h(){document.title="Nymph.js - JavaScript Data Objects",c(m,"id","banner"),c(v,"class","major"),c(k,"class","icon"),c(b,"class","content"),c(A,"class","icon"),c(N,"class","content"),c(P,"class","icon"),c(L,"class","content"),c(q,"class","icon"),c(I,"class","content"),c(i,"class","features")},m(e,l){u(e,M,l),u(e,m,l),u(e,Q,l),u(e,p,l),t(p,v),t(p,te),t(p,j),t(p,ae),t(p,i),t(i,y),t(y,k),W(g,k,null),t(y,ne),t(y,b),t(i,se),t(i,_),t(_,A),W(w,A,null),t(_,re),t(_,N),t(i,oe),t(i,S),t(S,P),W($,P,null),t(S,ie),t(S,L),t(i,le),t(i,T),t(T,q),W(E,q,null),t(T,ce),t(T,I),u(e,D,l),u(e,x,l),u(e,O,l),u(e,C,l),u(e,Y,l),u(e,H,l),V=!0},p:Ee,i(e){V||(K(g.$$.fragment,e),K(w.$$.fragment,e),K($.$$.fragment,e),K(E.$$.fragment,e),V=!0)},o(e){X(g.$$.fragment,e),X(w.$$.fragment,e),X($.$$.fragment,e),X(E.$$.fragment,e),V=!1},d(e){e&&(a(M),a(m),a(Q),a(p),a(D),a(x),a(O),a(C),a(Y),a(H)),Z(g),Z(w),Z($),Z(E)}}}class Re extends Ie{constructor(M){super(),xe(this,M,null,ke,Le,{})}}export{Re as component}; diff --git a/docs/_app/immutable/nodes/20.5b87b0c3.js b/docs/_app/immutable/nodes/20.5b87b0c3.js deleted file mode 100644 index f5764a0..0000000 --- a/docs/_app/immutable/nodes/20.5b87b0c3.js +++ /dev/null @@ -1,224 +0,0 @@ -import{S as ds,i as us,s as fs,R as ys,e as ls,a as h,k as o,q as t,y as le,F as ms,T as ps,h as n,c,l as s,m as r,r as a,z as he,p as so,n as ce,C as e,b as bt,A as de,D as Es,g as ue,d as fe,B as ye}from"../chunks/index.d7cc8d8b.js";import{H as me,g as vs}from"../chunks/github.df9008b1.js";import{t as pe}from"../chunks/typescript.7dd1ec19.js";import{b as hs}from"../chunks/paths.d307dac8.js";function gs(cs){let S,Ee,mt,i,J,K,Ct,Dt,ve,Ot,Tt,w,kt,ge,It,qt,$e,Nt,Ut,jt,E,Pt,we,At,St,_e,Gt,Lt,be,xt,Mt,Ft,G,zt,_,Ht,Ce,Yt,Bt,De,Qt,Rt,Jt,b,Kt,Oe,Vt,Wt,Te,Xt,Zt,ea,L,ta,x,aa,ke,na,oa,sa,M,ra,u,ia,Ie,la,ha,qe,ca,da,Ne,ua,fa,Ue,ya,ma,je,pa,Ea,Pe,va,ga,Ae,$a,wa,_a,F,ba,z,Ca,Se,Da,Oa,Ta,v,H,Ge,ka,Ia,C,Le,qa,Na,xe,Ua,ja,Me,Pa,Aa,D,Fe,Sa,Ga,ze,La,xa,O,He,Ma,Fa,Ye,za,Ha,Be,Ya,Ba,p,Qe,Qa,Ra,Re,Ja,Ka,Je,Va,Wa,Ke,Xa,Za,Ve,en,tn,an,f,We,nn,on,Xe,sn,rn,Ze,ln,hn,et,cn,dn,tt,un,fn,at,yn,mn,nt,pn,En,vn,Y,gn,T,$n,ot,wn,_n,st,bn,Cn,Dn,k,V,rt,On,Tn,kn,W,it,In,qn,Nn,X,lt,Un,jn,Pn,I,An,ht,Sn,Gn,ct,Ln,xn,Mn,B,Fn,dt,zn,Hn,Yn,g,Bn,ut,Qn,Rn,ft,Jn,Kn,yt,Vn,Wn,Xn,Q,pt,q,N,Zn,eo,U,to,Et;return G=new me({props:{language:pe,code:`const entity = await MyEntity.factory(); - -entity.$addTag('foo', 'bar'); -entity.$hasTag('foo'); // True - -entity.$removeTag('foo', 'bar'); -entity.$hasTag('foo'); // False`}}),L=new me({props:{language:pe,code:`// Create some entities. -let entity = await MyEntity.factory(); -entity.foo = await MyEntity.factory(); -entity.foo.bar = 'Old value.'; -await entity.foo.$save(); -await entity.$save(); - -// Get a copy of the referenced entity. -let instOfFoo = await nymph.getEntity( - { class: MyEntity }, - { type: '&', guid: entity.foo.guid } -); -// And change a value on it. -instOfFoo.bar = 'New value.'; -await instOfFoo.$save(); - -console.log(entity.foo.bar); // Outputs 'Old value.' -// If on Node.js -entity.$clearCache(); -await entity.foo.$wake(); -// Else if on the client -await entity.$refresh(); -await entity.foo.$wake(); -// End if -console.log(entity.foo.bar); // Outputs 'New value.'`}}),M=new me({props:{language:pe,code:`// Create an entity. -const entity = await MyEntity.factory(); -entity.foo = 'Old value.'; -await entity.$save(); - -// Get a copy of the entity. -const instOfEnt = await nymph.getEntity( - { class: MyEntity }, - { type: '&', guid: entity.guid } -); -// And change a value on it. -instOfEnt.foo = 'New value.'; -await instOfEnt.$save(); - -console.log(entity.foo); // Outputs 'Old value.' -await entity.$refresh(); -console.log(entity.foo); // Outputs 'New value.'`}}),F=new me({props:{language:pe,code:`const entity = await MyEntity.factory(); - -// Save the entity. -await entity.$save(); -// or -await nymph.saveEntity(entity); -// or -await nymph.saveEntities([entity]); - -// (Client only.) Save only the data that has changed. -await entity.$patch(); -// or -await nymph.patchEntity(entity); -// or -await nymph.patchEntities([entity]); - -// Delete the entity. -await entity.$delete(); -// or -await nymph.deleteEntity(entity); -// or -await nymph.deleteEntities([entity]);`}}),Y=new me({props:{language:pe,code:`// Assuming the entity with GUID 'a4c1591d6ea91c8450d2d360' exists. -let entity = await MyEntity.factory('a4c1591d6ea91c8450d2d360'); -let entity2 = await MyEntity.factory('a4c1591d6ea91c8450d2d360'); - -entity.$is(entity2); // True -entity.$equals(entity2); // True - -entity2.someProp = 'some new value'; -entity.$is(entity2); // True -entity.$equals(entity2); // False - -const arr = [null, null, entity2]; -entity.$arraySearch(arr); // 2 -entity.$inArray(arr); // True -entity.$arraySearch(arr, true); // -1 -entity.$inArray(arr, true); // false`}}),Q=new me({props:{language:pe,code:`// You can use $serverCall and serverCallStatic directly. -try { - const success: boolean = await todo.$serverCall('$archive', []); - if (!success) { - alert("Couldn't archive " + todo.name); - } -} catch (e) { - alert('Error: ' + e.textStatus + " -Couldn't archive " + todo.name); -} - -// Or you can define methods like this in your client class. -class Todo extends Entity { - // ... - - static async archiveAllDone(onlyOlderThanDay: boolean): Promise { - return await this.serverCallStatic('archiveAllDone', [onlyOlderThanDay]); - } - - async $archive(): Promise { - return await this.$serverCall('archive', []); - } -} - -// You'd use them like this. -const success = await Todo.archiveAllDone(true); - -// And -const todo = await Todo.factory(someGuid); -const success = await todo.$archive();`}}),{c(){S=new ys(!1),Ee=ls(),mt=h(),i=o("section"),J=o("header"),K=o("h1"),Ct=t("Entity Class"),Dt=h(),ve=o("p"),Ot=t(`Entities in Nymph work pretty much like regular objects, and this is due to - the Entity class. The Entity class constructor returns a proxy to allow - accessing data on it just like a regular object while keeping track of - changes and only unserializing data from the DB when it's first accessed. - Instance methods and properties begin with "$" to differentiate them from - data.`),Tt=h(),w=o("p"),kt=t(`In the client, assigning a property internally marks that property as - "dirty", and calling `),ge=o("code"),It=t("$patch"),qt=t(` will push just the changed - properties up to the server, whereas `),$e=o("code"),Nt=t("$save"),Ut=t(" would push all properties."),jt=h(),E=o("p"),Pt=t(`Entities can be organized using tags. To add, remove, and check tags, the - methods `),we=o("code"),At=t("$addTag"),St=t(", "),_e=o("code"),Gt=t("$removeTag"),Lt=t(`, and - `),be=o("code"),xt=t("$hasTag"),Mt=t(` are used, respectively. Each takes any number of tags as - arguments.`),Ft=h(),le(G.$$.fragment),zt=h(),_=o("p"),Ht=t(`Entities that have been saved inside another entity's property are loaded as - "sleeping references". This means their data is not actually pulled from the - database/server. It will "wake up" when you use `),Ce=o("code"),Yt=t("$wake"),Bt=t(` on it or - `),De=o("code"),Qt=t("$wakeAll"),Rt=t(" on the entity that contains it."),Jt=h(),b=o("p"),Kt=t(`To clear the cache of referenced entities, so that the next time one is - awoken, it will be pulled from the database, use the `),Oe=o("code"),Vt=t("$clearCache"),Wt=t(` - method in Node.js or the `),Te=o("code"),Xt=t("$refresh"),Zt=t(" method in the client."),ea=h(),le(L.$$.fragment),ta=h(),x=o("p"),aa=t(`Much like clearing the entity cache, you may need to refresh the entity's - own data in Node.js. Use the `),ke=o("code"),na=t("$refresh"),oa=t(` method, just like in the client, - for this.`),sa=h(),le(M.$$.fragment),ra=h(),u=o("p"),ia=t("To save an entity, use the "),Ie=o("code"),la=t("$save"),ha=t(` method. Likewise, to delete - the entity, use the `),qe=o("code"),ca=t("$delete"),da=t(` method. You can also call the - `),Ne=o("code"),ua=t("saveEntity"),fa=t(`, - `),Ue=o("code"),ya=t("deleteEntity"),ma=t(", and "),je=o("code"),pa=t("deleteEntityByID"),Ea=t(` methods of - `),Pe=o("code"),va=t("Nymph"),ga=t(". The "),Ae=o("code"),$a=t("Entity"),wa=t(" class uses these methods."),_a=h(),le(F.$$.fragment),ba=h(),z=o("p"),Ca=t("Entities can't be checked using the "),Se=o("code"),Da=t("=="),Oa=t(` operator. Instead, you can - use the following entity methods.`),Ta=h(),v=o("ul"),H=o("li"),Ge=o("code"),ka=t("$is"),Ia=t(` - Perform a less strict comparison of two entities - (basically a GUID check). To return true, the entities must meet the - following criteria. - `),C=o("ul"),Le=o("li"),qa=t("They must be entities."),Na=h(),xe=o("li"),Ua=t("They must have equal GUIDs, or both can have no GUID."),ja=h(),Me=o("li"),Pa=t("If they have no GUIDs, their data and tags must be equal."),Aa=h(),D=o("li"),Fe=o("code"),Sa=t("$equals"),Ga=t(` - Perform a more strict comparison of two entities - (basically a GUID + data + tags check). To return true, the entities must - meet the following criteria. Unlike `),ze=o("code"),La=t("$is"),xa=t(`, this method can't be - used on sleeping references. - `),O=o("ul"),He=o("li"),Ma=t("They must be entities."),Fa=h(),Ye=o("li"),za=t("They must have equal GUIDs, or both can have no GUID."),Ha=h(),Be=o("li"),Ya=t("Their data and tags must be equal."),Ba=h(),p=o("li"),Qe=o("code"),Qa=t("$inArray"),Ra=t(` - Check whether the entity is in an array. Takes two - arguments, the array and a boolean `),Re=o("code"),Ja=t("strict"),Ka=t(`. If - `),Je=o("code"),Va=t("strict"),Wa=t(` - is false or undefined, the function uses `),Ke=o("code"),Xa=t("$is"),Za=t(` to compare, and - if it's true, the function uses `),Ve=o("code"),en=t("$equals"),tn=t("."),an=h(),f=o("li"),We=o("code"),nn=t("$arraySearch"),on=t(` - Search an array for the entity and return its - index, or `),Xe=o("code"),sn=t("-1"),rn=t(` if it's not found. Takes two arguments, the - array and a boolean - `),Ze=o("code"),ln=t("strict"),hn=t(". If "),et=o("code"),cn=t("strict"),dn=t(` is false or undefined, the - function uses - `),tt=o("code"),un=t("$is"),fn=t(` - to compare, and if it's true, the function uses `),at=o("code"),yn=t("$equals"),mn=t(`. This - method may return 0, which evaluates to false, so you should use - `),nt=o("code"),pn=t("$inArray"),En=t(` if you are only checking whether the entity is in the - array.`),vn=h(),le(Y.$$.fragment),gn=h(),T=o("p"),$n=t("Client side Nymph entities can use the "),ot=o("code"),wn=t("$serverCall"),_n=t(` method to - call methods on a server side instance of the entity. - `),st=o("code"),bn=t("$serverCall"),Cn=t(" expects three parameters."),Dn=h(),k=o("ul"),V=o("li"),rt=o("code"),On=t("method"),Tn=t(" - the name of the method to call on the server side object."),kn=h(),W=o("li"),it=o("code"),In=t("params"),qn=t(" - an array of the parameters to pass to the method."),Nn=h(),X=o("li"),lt=o("code"),Un=t("stateless"),jn=t(` - if set to true, the method won't update the entity - with the returned server side representation.`),Pn=h(),I=o("p"),An=t(`Normally, when you use this method, just before the promise is fulfilled, - the entity's data will be replaced with that of the entity on the server - side after the method was run. This will cause any awoken entities in the - data of your entity to be replaced with sleeping entities, so you will have - to run `),ht=o("code"),Sn=t("$readyAll"),Gn=t(` again. If you know that the server side method - will not change any of the data on the entity, you can set - `),ct=o("code"),Ln=t("stateless"),xn=t(" to true."),Mn=h(),B=o("p"),Fn=t("You can also call static methods on the server with "),dt=o("code"),zn=t("serverCallStatic"),Hn=t("."),Yn=h(),g=o("p"),Bn=t(`In order to be called from the client side, the method must be listed in the - `),ut=o("code"),Qn=t("$clientEnabledMethods"),Rn=t(` or - `),ft=o("code"),Jn=t("clientEnabledStaticMethods"),Kn=t(` property in the Node.js class. This - guards against a user submitting tailored requests to perform potentially - dangerous tasks on the server side. If the method is not listed, the request - will fail with a `),yt=o("code"),Vn=t("403 Forbidden"),Wn=t(" status."),Xn=h(),le(Q.$$.fragment),pt=h(),q=o("section"),N=o("a"),Zn=t("Previous: Subscribing to Queries"),eo=h(),U=o("a"),to=t("Next: Defining Entities"),this.h()},l(d){const R=ms("svelte-24q1tq",document.head);S=ps(R,!1),Ee=ls(),R.forEach(n),mt=c(d),i=s(d,"SECTION",{});var l=r(i);J=s(l,"HEADER",{class:!0});var ro=r(J);K=s(ro,"H1",{style:!0});var io=r(K);Ct=a(io,"Entity Class"),io.forEach(n),ro.forEach(n),Dt=c(l),ve=s(l,"P",{});var lo=r(ve);Ot=a(lo,`Entities in Nymph work pretty much like regular objects, and this is due to - the Entity class. The Entity class constructor returns a proxy to allow - accessing data on it just like a regular object while keeping track of - changes and only unserializing data from the DB when it's first accessed. - Instance methods and properties begin with "$" to differentiate them from - data.`),lo.forEach(n),Tt=c(l),w=s(l,"P",{});var Z=r(w);kt=a(Z,`In the client, assigning a property internally marks that property as - "dirty", and calling `),ge=s(Z,"CODE",{});var ho=r(ge);It=a(ho,"$patch"),ho.forEach(n),qt=a(Z,` will push just the changed - properties up to the server, whereas `),$e=s(Z,"CODE",{});var co=r($e);Nt=a(co,"$save"),co.forEach(n),Ut=a(Z," would push all properties."),Z.forEach(n),jt=c(l),E=s(l,"P",{});var j=r(E);Pt=a(j,`Entities can be organized using tags. To add, remove, and check tags, the - methods `),we=s(j,"CODE",{});var uo=r(we);At=a(uo,"$addTag"),uo.forEach(n),St=a(j,", "),_e=s(j,"CODE",{});var fo=r(_e);Gt=a(fo,"$removeTag"),fo.forEach(n),Lt=a(j,`, and - `),be=s(j,"CODE",{});var yo=r(be);xt=a(yo,"$hasTag"),yo.forEach(n),Mt=a(j,` are used, respectively. Each takes any number of tags as - arguments.`),j.forEach(n),Ft=c(l),he(G.$$.fragment,l),zt=c(l),_=s(l,"P",{});var ee=r(_);Ht=a(ee,`Entities that have been saved inside another entity's property are loaded as - "sleeping references". This means their data is not actually pulled from the - database/server. It will "wake up" when you use `),Ce=s(ee,"CODE",{});var mo=r(Ce);Yt=a(mo,"$wake"),mo.forEach(n),Bt=a(ee,` on it or - `),De=s(ee,"CODE",{});var po=r(De);Qt=a(po,"$wakeAll"),po.forEach(n),Rt=a(ee," on the entity that contains it."),ee.forEach(n),Jt=c(l),b=s(l,"P",{});var te=r(b);Kt=a(te,`To clear the cache of referenced entities, so that the next time one is - awoken, it will be pulled from the database, use the `),Oe=s(te,"CODE",{});var Eo=r(Oe);Vt=a(Eo,"$clearCache"),Eo.forEach(n),Wt=a(te,` - method in Node.js or the `),Te=s(te,"CODE",{});var vo=r(Te);Xt=a(vo,"$refresh"),vo.forEach(n),Zt=a(te," method in the client."),te.forEach(n),ea=c(l),he(L.$$.fragment,l),ta=c(l),x=s(l,"P",{});var vt=r(x);aa=a(vt,`Much like clearing the entity cache, you may need to refresh the entity's - own data in Node.js. Use the `),ke=s(vt,"CODE",{});var go=r(ke);na=a(go,"$refresh"),go.forEach(n),oa=a(vt,` method, just like in the client, - for this.`),vt.forEach(n),sa=c(l),he(M.$$.fragment,l),ra=c(l),u=s(l,"P",{});var y=r(u);ia=a(y,"To save an entity, use the "),Ie=s(y,"CODE",{});var $o=r(Ie);la=a($o,"$save"),$o.forEach(n),ha=a(y,` method. Likewise, to delete - the entity, use the `),qe=s(y,"CODE",{});var wo=r(qe);ca=a(wo,"$delete"),wo.forEach(n),da=a(y,` method. You can also call the - `),Ne=s(y,"CODE",{});var _o=r(Ne);ua=a(_o,"saveEntity"),_o.forEach(n),fa=a(y,`, - `),Ue=s(y,"CODE",{});var bo=r(Ue);ya=a(bo,"deleteEntity"),bo.forEach(n),ma=a(y,", and "),je=s(y,"CODE",{});var Co=r(je);pa=a(Co,"deleteEntityByID"),Co.forEach(n),Ea=a(y,` methods of - `),Pe=s(y,"CODE",{});var Do=r(Pe);va=a(Do,"Nymph"),Do.forEach(n),ga=a(y,". The "),Ae=s(y,"CODE",{});var Oo=r(Ae);$a=a(Oo,"Entity"),Oo.forEach(n),wa=a(y," class uses these methods."),y.forEach(n),_a=c(l),he(F.$$.fragment,l),ba=c(l),z=s(l,"P",{});var gt=r(z);Ca=a(gt,"Entities can't be checked using the "),Se=s(gt,"CODE",{});var To=r(Se);Da=a(To,"=="),To.forEach(n),Oa=a(gt,` operator. Instead, you can - use the following entity methods.`),gt.forEach(n),Ta=c(l),v=s(l,"UL",{});var P=r(v);H=s(P,"LI",{});var $t=r(H);Ge=s($t,"CODE",{});var ko=r(Ge);ka=a(ko,"$is"),ko.forEach(n),Ia=a($t,` - Perform a less strict comparison of two entities - (basically a GUID check). To return true, the entities must meet the - following criteria. - `),C=s($t,"UL",{});var ae=r(C);Le=s(ae,"LI",{});var Io=r(Le);qa=a(Io,"They must be entities."),Io.forEach(n),Na=c(ae),xe=s(ae,"LI",{});var qo=r(xe);Ua=a(qo,"They must have equal GUIDs, or both can have no GUID."),qo.forEach(n),ja=c(ae),Me=s(ae,"LI",{});var No=r(Me);Pa=a(No,"If they have no GUIDs, their data and tags must be equal."),No.forEach(n),ae.forEach(n),$t.forEach(n),Aa=c(P),D=s(P,"LI",{});var ne=r(D);Fe=s(ne,"CODE",{});var Uo=r(Fe);Sa=a(Uo,"$equals"),Uo.forEach(n),Ga=a(ne,` - Perform a more strict comparison of two entities - (basically a GUID + data + tags check). To return true, the entities must - meet the following criteria. Unlike `),ze=s(ne,"CODE",{});var jo=r(ze);La=a(jo,"$is"),jo.forEach(n),xa=a(ne,`, this method can't be - used on sleeping references. - `),O=s(ne,"UL",{});var oe=r(O);He=s(oe,"LI",{});var Po=r(He);Ma=a(Po,"They must be entities."),Po.forEach(n),Fa=c(oe),Ye=s(oe,"LI",{});var Ao=r(Ye);za=a(Ao,"They must have equal GUIDs, or both can have no GUID."),Ao.forEach(n),Ha=c(oe),Be=s(oe,"LI",{});var So=r(Be);Ya=a(So,"Their data and tags must be equal."),So.forEach(n),oe.forEach(n),ne.forEach(n),Ba=c(P),p=s(P,"LI",{});var $=r(p);Qe=s($,"CODE",{});var Go=r(Qe);Qa=a(Go,"$inArray"),Go.forEach(n),Ra=a($,` - Check whether the entity is in an array. Takes two - arguments, the array and a boolean `),Re=s($,"CODE",{});var Lo=r(Re);Ja=a(Lo,"strict"),Lo.forEach(n),Ka=a($,`. If - `),Je=s($,"CODE",{});var xo=r(Je);Va=a(xo,"strict"),xo.forEach(n),Wa=a($,` - is false or undefined, the function uses `),Ke=s($,"CODE",{});var Mo=r(Ke);Xa=a(Mo,"$is"),Mo.forEach(n),Za=a($,` to compare, and - if it's true, the function uses `),Ve=s($,"CODE",{});var Fo=r(Ve);en=a(Fo,"$equals"),Fo.forEach(n),tn=a($,"."),$.forEach(n),an=c(P),f=s(P,"LI",{});var m=r(f);We=s(m,"CODE",{});var zo=r(We);nn=a(zo,"$arraySearch"),zo.forEach(n),on=a(m,` - Search an array for the entity and return its - index, or `),Xe=s(m,"CODE",{});var Ho=r(Xe);sn=a(Ho,"-1"),Ho.forEach(n),rn=a(m,` if it's not found. Takes two arguments, the - array and a boolean - `),Ze=s(m,"CODE",{});var Yo=r(Ze);ln=a(Yo,"strict"),Yo.forEach(n),hn=a(m,". If "),et=s(m,"CODE",{});var Bo=r(et);cn=a(Bo,"strict"),Bo.forEach(n),dn=a(m,` is false or undefined, the - function uses - `),tt=s(m,"CODE",{});var Qo=r(tt);un=a(Qo,"$is"),Qo.forEach(n),fn=a(m,` - to compare, and if it's true, the function uses `),at=s(m,"CODE",{});var Ro=r(at);yn=a(Ro,"$equals"),Ro.forEach(n),mn=a(m,`. This - method may return 0, which evaluates to false, so you should use - `),nt=s(m,"CODE",{});var Jo=r(nt);pn=a(Jo,"$inArray"),Jo.forEach(n),En=a(m,` if you are only checking whether the entity is in the - array.`),m.forEach(n),P.forEach(n),vn=c(l),he(Y.$$.fragment,l),gn=c(l),T=s(l,"P",{});var se=r(T);$n=a(se,"Client side Nymph entities can use the "),ot=s(se,"CODE",{});var Ko=r(ot);wn=a(Ko,"$serverCall"),Ko.forEach(n),_n=a(se,` method to - call methods on a server side instance of the entity. - `),st=s(se,"CODE",{});var Vo=r(st);bn=a(Vo,"$serverCall"),Vo.forEach(n),Cn=a(se," expects three parameters."),se.forEach(n),Dn=c(l),k=s(l,"UL",{});var re=r(k);V=s(re,"LI",{});var ao=r(V);rt=s(ao,"CODE",{});var Wo=r(rt);On=a(Wo,"method"),Wo.forEach(n),Tn=a(ao," - the name of the method to call on the server side object."),ao.forEach(n),kn=c(re),W=s(re,"LI",{});var no=r(W);it=s(no,"CODE",{});var Xo=r(it);In=a(Xo,"params"),Xo.forEach(n),qn=a(no," - an array of the parameters to pass to the method."),no.forEach(n),Nn=c(re),X=s(re,"LI",{});var oo=r(X);lt=s(oo,"CODE",{});var Zo=r(lt);Un=a(Zo,"stateless"),Zo.forEach(n),jn=a(oo,` - if set to true, the method won't update the entity - with the returned server side representation.`),oo.forEach(n),re.forEach(n),Pn=c(l),I=s(l,"P",{});var ie=r(I);An=a(ie,`Normally, when you use this method, just before the promise is fulfilled, - the entity's data will be replaced with that of the entity on the server - side after the method was run. This will cause any awoken entities in the - data of your entity to be replaced with sleeping entities, so you will have - to run `),ht=s(ie,"CODE",{});var es=r(ht);Sn=a(es,"$readyAll"),es.forEach(n),Gn=a(ie,` again. If you know that the server side method - will not change any of the data on the entity, you can set - `),ct=s(ie,"CODE",{});var ts=r(ct);Ln=a(ts,"stateless"),ts.forEach(n),xn=a(ie," to true."),ie.forEach(n),Mn=c(l),B=s(l,"P",{});var wt=r(B);Fn=a(wt,"You can also call static methods on the server with "),dt=s(wt,"CODE",{});var as=r(dt);zn=a(as,"serverCallStatic"),as.forEach(n),Hn=a(wt,"."),wt.forEach(n),Yn=c(l),g=s(l,"P",{});var A=r(g);Bn=a(A,`In order to be called from the client side, the method must be listed in the - `),ut=s(A,"CODE",{});var ns=r(ut);Qn=a(ns,"$clientEnabledMethods"),ns.forEach(n),Rn=a(A,` or - `),ft=s(A,"CODE",{});var os=r(ft);Jn=a(os,"clientEnabledStaticMethods"),os.forEach(n),Kn=a(A,` property in the Node.js class. This - guards against a user submitting tailored requests to perform potentially - dangerous tasks on the server side. If the method is not listed, the request - will fail with a `),yt=s(A,"CODE",{});var ss=r(yt);Vn=a(ss,"403 Forbidden"),ss.forEach(n),Wn=a(A," status."),A.forEach(n),Xn=c(l),he(Q.$$.fragment,l),l.forEach(n),pt=c(d),q=s(d,"SECTION",{class:!0});var _t=r(q);N=s(_t,"A",{href:!0,class:!0,style:!0});var rs=r(N);Zn=a(rs,"Previous: Subscribing to Queries"),rs.forEach(n),eo=c(_t),U=s(_t,"A",{href:!0,class:!0,style:!0});var is=r(U);to=a(is,"Next: Defining Entities"),is.forEach(n),_t.forEach(n),this.h()},h(){document.title="Entity Class - User Guide - Nymph.js",S.a=Ee,so(K,"font-size","3em"),ce(J,"class","major"),ce(N,"href",hs+"/user-guide/subscribing-to-queries"),ce(N,"class","button"),so(N,"margin",".5em"),ce(U,"href",hs+"/user-guide/defining-entities"),ce(U,"class","button"),so(U,"margin",".5em"),ce(q,"class","page-steps")},m(d,R){S.m(vs,document.head),e(document.head,Ee),bt(d,mt,R),bt(d,i,R),e(i,J),e(J,K),e(K,Ct),e(i,Dt),e(i,ve),e(ve,Ot),e(i,Tt),e(i,w),e(w,kt),e(w,ge),e(ge,It),e(w,qt),e(w,$e),e($e,Nt),e(w,Ut),e(i,jt),e(i,E),e(E,Pt),e(E,we),e(we,At),e(E,St),e(E,_e),e(_e,Gt),e(E,Lt),e(E,be),e(be,xt),e(E,Mt),e(i,Ft),de(G,i,null),e(i,zt),e(i,_),e(_,Ht),e(_,Ce),e(Ce,Yt),e(_,Bt),e(_,De),e(De,Qt),e(_,Rt),e(i,Jt),e(i,b),e(b,Kt),e(b,Oe),e(Oe,Vt),e(b,Wt),e(b,Te),e(Te,Xt),e(b,Zt),e(i,ea),de(L,i,null),e(i,ta),e(i,x),e(x,aa),e(x,ke),e(ke,na),e(x,oa),e(i,sa),de(M,i,null),e(i,ra),e(i,u),e(u,ia),e(u,Ie),e(Ie,la),e(u,ha),e(u,qe),e(qe,ca),e(u,da),e(u,Ne),e(Ne,ua),e(u,fa),e(u,Ue),e(Ue,ya),e(u,ma),e(u,je),e(je,pa),e(u,Ea),e(u,Pe),e(Pe,va),e(u,ga),e(u,Ae),e(Ae,$a),e(u,wa),e(i,_a),de(F,i,null),e(i,ba),e(i,z),e(z,Ca),e(z,Se),e(Se,Da),e(z,Oa),e(i,Ta),e(i,v),e(v,H),e(H,Ge),e(Ge,ka),e(H,Ia),e(H,C),e(C,Le),e(Le,qa),e(C,Na),e(C,xe),e(xe,Ua),e(C,ja),e(C,Me),e(Me,Pa),e(v,Aa),e(v,D),e(D,Fe),e(Fe,Sa),e(D,Ga),e(D,ze),e(ze,La),e(D,xa),e(D,O),e(O,He),e(He,Ma),e(O,Fa),e(O,Ye),e(Ye,za),e(O,Ha),e(O,Be),e(Be,Ya),e(v,Ba),e(v,p),e(p,Qe),e(Qe,Qa),e(p,Ra),e(p,Re),e(Re,Ja),e(p,Ka),e(p,Je),e(Je,Va),e(p,Wa),e(p,Ke),e(Ke,Xa),e(p,Za),e(p,Ve),e(Ve,en),e(p,tn),e(v,an),e(v,f),e(f,We),e(We,nn),e(f,on),e(f,Xe),e(Xe,sn),e(f,rn),e(f,Ze),e(Ze,ln),e(f,hn),e(f,et),e(et,cn),e(f,dn),e(f,tt),e(tt,un),e(f,fn),e(f,at),e(at,yn),e(f,mn),e(f,nt),e(nt,pn),e(f,En),e(i,vn),de(Y,i,null),e(i,gn),e(i,T),e(T,$n),e(T,ot),e(ot,wn),e(T,_n),e(T,st),e(st,bn),e(T,Cn),e(i,Dn),e(i,k),e(k,V),e(V,rt),e(rt,On),e(V,Tn),e(k,kn),e(k,W),e(W,it),e(it,In),e(W,qn),e(k,Nn),e(k,X),e(X,lt),e(lt,Un),e(X,jn),e(i,Pn),e(i,I),e(I,An),e(I,ht),e(ht,Sn),e(I,Gn),e(I,ct),e(ct,Ln),e(I,xn),e(i,Mn),e(i,B),e(B,Fn),e(B,dt),e(dt,zn),e(B,Hn),e(i,Yn),e(i,g),e(g,Bn),e(g,ut),e(ut,Qn),e(g,Rn),e(g,ft),e(ft,Jn),e(g,Kn),e(g,yt),e(yt,Vn),e(g,Wn),e(i,Xn),de(Q,i,null),bt(d,pt,R),bt(d,q,R),e(q,N),e(N,Zn),e(q,eo),e(q,U),e(U,to),Et=!0},p:Es,i(d){Et||(ue(G.$$.fragment,d),ue(L.$$.fragment,d),ue(M.$$.fragment,d),ue(F.$$.fragment,d),ue(Y.$$.fragment,d),ue(Q.$$.fragment,d),Et=!0)},o(d){fe(G.$$.fragment,d),fe(L.$$.fragment,d),fe(M.$$.fragment,d),fe(F.$$.fragment,d),fe(Y.$$.fragment,d),fe(Q.$$.fragment,d),Et=!1},d(d){n(Ee),d&&S.d(),d&&n(mt),d&&n(i),ye(G),ye(L),ye(M),ye(F),ye(Y),ye(Q),d&&n(pt),d&&n(q)}}}class Cs extends ds{constructor(S){super(),us(this,S,null,gs,fs,{})}}export{Cs as component}; diff --git a/docs/_app/immutable/nodes/20.9069807c.js b/docs/_app/immutable/nodes/20.9069807c.js new file mode 100644 index 0000000..5a7c38d --- /dev/null +++ b/docs/_app/immutable/nodes/20.9069807c.js @@ -0,0 +1,168 @@ +import{s as Ye,I as Be,e as Ae,a as i,f as s,l as je,x as Qe,J as Je,d as c,c as o,g as r,h as V,r as l,m as Ue,j as N,k as Ge,u as a,i as W,v as Re}from"../chunks/scheduler.d7e45cc8.js";import{S as Ke,i as Ve,b as S,d as A,m as j,a as U,t as G,e as F}from"../chunks/index.77720afb.js";import{H as z,g as We}from"../chunks/github.64534d2c.js";import{t as Y}from"../chunks/typescript.09c48802.js";import{b as Fe}from"../chunks/paths.d4a6803e.js";function Xe(ze){let y,B,Q,e,f,Te='

    Entity Class

    ',X,b,be=`Entities in Nymph work pretty much like regular objects, and this is due to + the Entity class. The Entity class constructor returns a proxy to allow + accessing data on it just like a regular object while keeping track of + changes and only unserializing data from the DB when it's first accessed. + Instance methods and properties begin with "$" to differentiate them from + data.`,Z,E,Ee=`In the client, assigning a property internally marks that property as + "dirty", and calling $patch will push just the changed + properties up to the server, whereas $save would push all properties.`,ee,_,_e=`Entities can be organized using tags. To add, remove, and check tags, the + methods $addTag, $removeTag, and + $hasTag are used, respectively. Each takes any number of tags as + arguments.`,te,m,ae,M,Me=`Entities that have been saved inside another entity's property are loaded as + "sleeping references". This means their data is not actually pulled from the + database/server. It will "wake up" when you use $wake on it or + $wakeAll on the entity that contains it.`,ne,C,Ce=`To clear the cache of referenced entities, so that the next time one is + awoken, it will be pulled from the database, use the $clearCache + method in Node.js or the $refresh method in the client.`,ie,p,oe,x,xe=`Much like clearing the entity cache, you may need to refresh the entity's + own data in Node.js. Use the $refresh method, just like in the client, + for this.`,se,g,re,k,ke=`To save an entity, use the $save method. Likewise, to delete + the entity, use the $delete method. You can also call the + saveEntity, + deleteEntity, and deleteEntityByID methods of + Nymph. The Entity class uses these methods.`,le,v,ce,H,He=`Entities can't be checked using the == operator. Instead, you can + use the following entity methods.`,de,L,Le=`
  • $is - Perform a less strict comparison of two entities + (basically a GUID check). To return true, the entities must meet the + following criteria. +
    • They must be entities.
    • They must have equal GUIDs, or both can have no GUID.
    • If they have no GUIDs, their data and tags must be equal.
  • $equals - Perform a more strict comparison of two entities + (basically a GUID + data + tags check). To return true, the entities must + meet the following criteria. Unlike $is, this method can't be + used on sleeping references. +
    • They must be entities.
    • They must have equal GUIDs, or both can have no GUID.
    • Their data and tags must be equal.
  • $inArray - Check whether the entity is in an array. Takes two + arguments, the array and a boolean strict. If + strict + is false or undefined, the function uses $is to compare, and + if it's true, the function uses $equals.
  • $arraySearch - Search an array for the entity and return its + index, or -1 if it's not found. Takes two arguments, the + array and a boolean + strict. If strict is false or undefined, the + function uses + $is + to compare, and if it's true, the function uses $equals. This + method may return 0, which evaluates to false, so you should use + $inArray if you are only checking whether the entity is in the + array.
  • `,he,$,ue,I,Ie=`Client side Nymph entities can use the $serverCall method to + call methods on a server side instance of the entity. + $serverCall expects three parameters.`,ye,q,qe=`
  • method - the name of the method to call on the server side object.
  • params - an array of the parameters to pass to the method.
  • stateless - if set to true, the method won't update the entity + with the returned server side representation.
  • `,fe,D,De=`Normally, when you use this method, just before the promise is fulfilled, + the entity's data will be replaced with that of the entity on the server + side after the method was run. This will cause any awoken entities in the + data of your entity to be replaced with sleeping entities, so you will have + to run $readyAll again. If you know that the server side method + will not change any of the data on the entity, you can set + stateless to true.`,me,P,Pe="You can also call static methods on the server with serverCallStatic.",pe,O,Oe=`In order to be called from the client side, the method must be listed in the + $clientEnabledMethods or + clientEnabledStaticMethods property in the Node.js class. This + guards against a user submitting tailored requests to perform potentially + dangerous tasks on the server side. If the method is not listed, the request + will fail with a 403 Forbidden status.`,ge,w,J,d,h,ve,$e,u,we,R;return m=new z({props:{language:Y,code:`const entity = await MyEntity.factory(); + +entity.$addTag('foo', 'bar'); +entity.$hasTag('foo'); // True + +entity.$removeTag('foo', 'bar'); +entity.$hasTag('foo'); // False`}}),p=new z({props:{language:Y,code:`// Create some entities. +let entity = await MyEntity.factory(); +entity.foo = await MyEntity.factory(); +entity.foo.bar = 'Old value.'; +await entity.foo.$save(); +await entity.$save(); + +// Get a copy of the referenced entity. +let instOfFoo = await nymph.getEntity( + { class: MyEntity }, + { type: '&', guid: entity.foo.guid } +); +// And change a value on it. +instOfFoo.bar = 'New value.'; +await instOfFoo.$save(); + +console.log(entity.foo.bar); // Outputs 'Old value.' +// If on Node.js +entity.$clearCache(); +await entity.foo.$wake(); +// Else if on the client +await entity.$refresh(); +await entity.foo.$wake(); +// End if +console.log(entity.foo.bar); // Outputs 'New value.'`}}),g=new z({props:{language:Y,code:`// Create an entity. +const entity = await MyEntity.factory(); +entity.foo = 'Old value.'; +await entity.$save(); + +// Get a copy of the entity. +const instOfEnt = await nymph.getEntity( + { class: MyEntity }, + { type: '&', guid: entity.guid } +); +// And change a value on it. +instOfEnt.foo = 'New value.'; +await instOfEnt.$save(); + +console.log(entity.foo); // Outputs 'Old value.' +await entity.$refresh(); +console.log(entity.foo); // Outputs 'New value.'`}}),v=new z({props:{language:Y,code:`const entity = await MyEntity.factory(); + +// Save the entity. +await entity.$save(); +// or +await nymph.saveEntity(entity); +// or +await nymph.saveEntities([entity]); + +// (Client only.) Save only the data that has changed. +await entity.$patch(); +// or +await nymph.patchEntity(entity); +// or +await nymph.patchEntities([entity]); + +// Delete the entity. +await entity.$delete(); +// or +await nymph.deleteEntity(entity); +// or +await nymph.deleteEntities([entity]);`}}),$=new z({props:{language:Y,code:`// Assuming the entity with GUID 'a4c1591d6ea91c8450d2d360' exists. +let entity = await MyEntity.factory('a4c1591d6ea91c8450d2d360'); +let entity2 = await MyEntity.factory('a4c1591d6ea91c8450d2d360'); + +entity.$is(entity2); // True +entity.$equals(entity2); // True + +entity2.someProp = 'some new value'; +entity.$is(entity2); // True +entity.$equals(entity2); // False + +const arr = [null, null, entity2]; +entity.$arraySearch(arr); // 2 +entity.$inArray(arr); // True +entity.$arraySearch(arr, true); // -1 +entity.$inArray(arr, true); // false`}}),w=new z({props:{language:Y,code:`// You can use $serverCall and serverCallStatic directly. +try { + const success: boolean = await todo.$serverCall('$archive', []); + if (!success) { + alert("Couldn't archive " + todo.name); + } +} catch (e) { + alert('Error: ' + e.textStatus + " +Couldn't archive " + todo.name); +} + +// Or you can define methods like this in your client class. +class Todo extends Entity { + // ... + + static async archiveAllDone(onlyOlderThanDay: boolean): Promise { + return await this.serverCallStatic('archiveAllDone', [onlyOlderThanDay]); + } + + async $archive(): Promise { + return await this.$serverCall('archive', []); + } +} + +// You'd use them like this. +const success = await Todo.archiveAllDone(true); + +// And +const todo = await Todo.factory(someGuid); +const success = await todo.$archive();`}}),{c(){y=new Be(!1),B=Ae(),Q=i(),e=s("section"),f=s("header"),f.innerHTML=Te,X=i(),b=s("p"),b.textContent=be,Z=i(),E=s("p"),E.innerHTML=Ee,ee=i(),_=s("p"),_.innerHTML=_e,te=i(),S(m.$$.fragment),ae=i(),M=s("p"),M.innerHTML=Me,ne=i(),C=s("p"),C.innerHTML=Ce,ie=i(),S(p.$$.fragment),oe=i(),x=s("p"),x.innerHTML=xe,se=i(),S(g.$$.fragment),re=i(),k=s("p"),k.innerHTML=ke,le=i(),S(v.$$.fragment),ce=i(),H=s("p"),H.innerHTML=He,de=i(),L=s("ul"),L.innerHTML=Le,he=i(),S($.$$.fragment),ue=i(),I=s("p"),I.innerHTML=Ie,ye=i(),q=s("ul"),q.innerHTML=qe,fe=i(),D=s("p"),D.innerHTML=De,me=i(),P=s("p"),P.innerHTML=Pe,pe=i(),O=s("p"),O.innerHTML=Oe,ge=i(),S(w.$$.fragment),J=i(),d=s("section"),h=s("a"),ve=je("Previous: Subscribing to Queries"),$e=i(),u=s("a"),we=je("Next: Defining Entities"),this.h()},l(n){const T=Qe("svelte-24q1tq",document.head);y=Je(T,!1),B=Ae(),T.forEach(c),Q=o(n),e=r(n,"SECTION",{});var t=V(e);f=r(t,"HEADER",{class:!0,"data-svelte-h":!0}),l(f)!=="svelte-og671h"&&(f.innerHTML=Te),X=o(t),b=r(t,"P",{"data-svelte-h":!0}),l(b)!=="svelte-110h7us"&&(b.textContent=be),Z=o(t),E=r(t,"P",{"data-svelte-h":!0}),l(E)!=="svelte-y8afi6"&&(E.innerHTML=Ee),ee=o(t),_=r(t,"P",{"data-svelte-h":!0}),l(_)!=="svelte-i83m4k"&&(_.innerHTML=_e),te=o(t),A(m.$$.fragment,t),ae=o(t),M=r(t,"P",{"data-svelte-h":!0}),l(M)!=="svelte-ndkimk"&&(M.innerHTML=Me),ne=o(t),C=r(t,"P",{"data-svelte-h":!0}),l(C)!=="svelte-1b8l87g"&&(C.innerHTML=Ce),ie=o(t),A(p.$$.fragment,t),oe=o(t),x=r(t,"P",{"data-svelte-h":!0}),l(x)!=="svelte-bvqxix"&&(x.innerHTML=xe),se=o(t),A(g.$$.fragment,t),re=o(t),k=r(t,"P",{"data-svelte-h":!0}),l(k)!=="svelte-m1pah4"&&(k.innerHTML=ke),le=o(t),A(v.$$.fragment,t),ce=o(t),H=r(t,"P",{"data-svelte-h":!0}),l(H)!=="svelte-ofuybv"&&(H.innerHTML=He),de=o(t),L=r(t,"UL",{"data-svelte-h":!0}),l(L)!=="svelte-k6om4g"&&(L.innerHTML=Le),he=o(t),A($.$$.fragment,t),ue=o(t),I=r(t,"P",{"data-svelte-h":!0}),l(I)!=="svelte-17ufvy7"&&(I.innerHTML=Ie),ye=o(t),q=r(t,"UL",{"data-svelte-h":!0}),l(q)!=="svelte-11n6zj9"&&(q.innerHTML=qe),fe=o(t),D=r(t,"P",{"data-svelte-h":!0}),l(D)!=="svelte-7sz2fh"&&(D.innerHTML=De),me=o(t),P=r(t,"P",{"data-svelte-h":!0}),l(P)!=="svelte-h3sxmn"&&(P.innerHTML=Pe),pe=o(t),O=r(t,"P",{"data-svelte-h":!0}),l(O)!=="svelte-xe32i4"&&(O.innerHTML=Oe),ge=o(t),A(w.$$.fragment,t),t.forEach(c),J=o(n),d=r(n,"SECTION",{class:!0});var K=V(d);h=r(K,"A",{href:!0,class:!0,style:!0});var Ne=V(h);ve=Ue(Ne,"Previous: Subscribing to Queries"),Ne.forEach(c),$e=o(K),u=r(K,"A",{href:!0,class:!0,style:!0});var Se=V(u);we=Ue(Se,"Next: Defining Entities"),Se.forEach(c),K.forEach(c),this.h()},h(){document.title="Entity Class - User Guide - Nymph.js",y.a=B,N(f,"class","major"),N(h,"href",Fe+"/user-guide/subscribing-to-queries"),N(h,"class","button"),Ge(h,"margin",".5em"),N(u,"href",Fe+"/user-guide/defining-entities"),N(u,"class","button"),Ge(u,"margin",".5em"),N(d,"class","page-steps")},m(n,T){y.m(We,document.head),a(document.head,B),W(n,Q,T),W(n,e,T),a(e,f),a(e,X),a(e,b),a(e,Z),a(e,E),a(e,ee),a(e,_),a(e,te),j(m,e,null),a(e,ae),a(e,M),a(e,ne),a(e,C),a(e,ie),j(p,e,null),a(e,oe),a(e,x),a(e,se),j(g,e,null),a(e,re),a(e,k),a(e,le),j(v,e,null),a(e,ce),a(e,H),a(e,de),a(e,L),a(e,he),j($,e,null),a(e,ue),a(e,I),a(e,ye),a(e,q),a(e,fe),a(e,D),a(e,me),a(e,P),a(e,pe),a(e,O),a(e,ge),j(w,e,null),W(n,J,T),W(n,d,T),a(d,h),a(h,ve),a(d,$e),a(d,u),a(u,we),R=!0},p:Re,i(n){R||(U(m.$$.fragment,n),U(p.$$.fragment,n),U(g.$$.fragment,n),U(v.$$.fragment,n),U($.$$.fragment,n),U(w.$$.fragment,n),R=!0)},o(n){G(m.$$.fragment,n),G(p.$$.fragment,n),G(g.$$.fragment,n),G(v.$$.fragment,n),G($.$$.fragment,n),G(w.$$.fragment,n),R=!1},d(n){n&&(y.d(),c(Q),c(e),c(J),c(d)),c(B),F(m),F(p),F(g),F(v),F($),F(w)}}}class it extends Ke{constructor(y){super(),Ve(this,y,null,Xe,Ye,{})}}export{it as component}; diff --git a/docs/_app/immutable/nodes/21.2ea02312.js b/docs/_app/immutable/nodes/21.2ea02312.js deleted file mode 100644 index 4bb51ec..0000000 --- a/docs/_app/immutable/nodes/21.2ea02312.js +++ /dev/null @@ -1,227 +0,0 @@ -import{S as uE,i as EE,s as vE,R as mE,e as hE,a as d,k as a,q as l,y as m,F as gE,T as pE,h as e,c as s,l as r,m as o,r as n,z as g,p as Uc,n as $,C as t,b as gl,A as p,D as _E,g as _,d as y,B as T}from"../chunks/index.d7cc8d8b.js";import{H as b,g as yE}from"../chunks/github.df9008b1.js";import{t as D}from"../chunks/typescript.7dd1ec19.js";import{b as cE}from"../chunks/paths.d307dac8.js";function TE(fE){let Jt,ze,nl,i,Ee,ve,pl,_l,Re,yl,Tl,me,qe,bl,Dl,w,$l,ke,wl,Cl,Ge,Ol,zl,Ae,Rl,ql,kl,jt,Gl,ge,Pe,Al,Pl,at,Nl,Ne,Bl,Fl,Be,Sl,Hl,Il,pe,Qt,Fe,C,Se,Ul,xl,He,Jl,jl,Ie,Ql,Ml,Ue,Ll,Yl,E,O,xe,Wl,Xl,Je,Vl,Kl,je,Zl,tn,Qe,en,an,z,Me,rn,on,Le,ln,nn,Ye,dn,sn,Mt,hn,We,cn,fn,un,R,Xe,En,vn,Ve,mn,gn,Ke,pn,_n,Ze,yn,Tn,q,ta,bn,Dn,ea,$n,wn,aa,Cn,On,Lt,zn,ra,Rn,qn,kn,k,oa,Gn,An,la,Pn,Nn,na,Bn,Fn,da,Sn,Hn,G,sa,In,Un,ia,xn,Jn,ha,jn,Qn,ca,Mn,Ln,A,fa,Yn,Wn,ua,Xn,Vn,Ea,Kn,Zn,va,td,ed,P,ma,ad,rd,ga,od,ld,pa,nd,dd,_a,sd,id,N,ya,hd,cd,Ta,fd,ud,ba,Ed,vd,Da,md,gd,Yt,pd,$a,_d,yd,Td,_e,Wt,wa,rt,Ca,bd,Dd,Oa,$d,wd,za,Cd,Od,B,ot,Ra,zd,Rd,qa,qd,kd,ka,Gd,Ad,lt,Ga,Pd,Nd,Aa,Bd,Fd,Pa,Sd,Hd,nt,Na,Id,Ud,Ba,xd,Jd,Fa,jd,Qd,dt,Sa,Md,Ld,Ha,Yd,Wd,Ia,Xd,Vd,F,Kd,Ua,Zd,ts,xa,es,as,Ja,rs,os,ls,ye,Xt,ja,S,Qa,ns,ds,Ma,ss,is,La,hs,cs,Ya,fs,us,f,H,Wa,Es,vs,Xa,ms,gs,Va,Ka,xc="{type: '&', guid: '790229ae527f1511b3120b71'}",ps,_s,Za,tr,Jc="entity.guid = '790229ae527f1511b3120b71'",ys,Ts,I,er,bs,Ds,ar,$s,ws,rr,or,jc="{type: '&', tag: 'foobar'}",Cs,Os,lr,nr,Qc="entity.$addTag('foobar')",zs,Rs,U,dr,qs,ks,sr,Gs,As,ir,hr,Mc="{type: '&', defined: 'foo'}",Ps,Ns,cr,fr,Lc="entity.foo = 0",Bs,Fs,x,ur,Ss,Hs,Er,Is,Us,vr,mr,Yc="{type: '&', truthy: 'foo'}",xs,Js,gr,pr,Wc="entity.foo = 1",js,Qs,J,_r,Ms,Ls,yr,Ys,Ws,Tr,br,Xc="{type: '&', equal: ['foo', 0]}",Xs,Vs,Dr,$r,Vc="entity.foo = 0",Ks,Zs,j,wr,ti,ei,Cr,ai,ri,Or,zr,Kc="{type: '&', contain: ['foo', 'bar']}",oi,li,Rr,qr,Zc="entity.foo = ['bar', 'baz']",ni,di,Q,kr,si,ii,Gr,hi,ci,Ar,Pr,tf="{type: '&', match: ['foo', 'bar.*z']}",fi,ui,Nr,Br,ef="entity.foo = 'foobarbaz'",Ei,vi,M,Fr,mi,gi,Sr,pi,_i,Hr,Ir,af="{type: '&', imatch: ['foo', 'BaR.*Z']}",yi,Ti,Ur,xr,rf="entity.foo = 'foobarbaz'",bi,Di,L,Jr,$i,wi,jr,Ci,Oi,Qr,Mr,of="{type: '&', like: ['foo', 'f%bar_az']}",zi,Ri,Lr,Yr,lf="entity.foo = 'foobarbaz'",qi,ki,Y,Wr,Gi,Ai,Xr,Pi,Ni,Vr,Kr,nf="{type: '&', ilike: ['foo', 'F%bAr_aZ']}",Bi,Fi,Zr,to,df="entity.foo = 'foobarbaz'",Si,Hi,W,eo,Ii,Ui,ao,xi,Ji,ro,oo,sf="{type: '&', gt: ['foo', 5]}",ji,Qi,lo,no,hf="entity.foo = 6",Mi,Li,X,so,Yi,Wi,io,Xi,Vi,ho,co,cf="{type: '&', gte: ['foo', 6]}",Ki,Zi,fo,uo,ff="entity.foo = 6",th,eh,V,Eo,ah,rh,vo,oh,lh,mo,go,uf="{type: '&', lt: ['foo', 7]}",nh,dh,po,_o,Ef="entity.foo = 6",sh,ih,K,yo,hh,ch,To,fh,uh,bo,Do,vf="{type: '&', lte: ['foo', 6]}",Eh,vh,$o,wo,mf="entity.foo = 6",mh,gh,Z,Co,ph,_h,Oo,yh,Th,zo,Ro,gf="{type: '&', ref: ['foo', '790229ae527f1511b3120b71']}",bh,Dh,qo,ko,pf="entity.foo = await Entity.factory('790229ae527f1511b3120b71')",$h,wh,tt,Go,Ch,Oh,Ao,zh,Rh,Po,No,_f="{type: '&', qref: ['foo', [{class: Entity}, {type: '&', equal: ['name', 'Foobar']}]]}",qh,kh,Bo,Fo,yf="entity.foo = await nymph.getEntity({class: Entity}, {type: '&', equal: ['name', 'Foobar']})",Gh,Ah,et,So,Ph,Nh,Ho,Bh,Fh,Io,Uo,Tf="{type: '&', selector: {type: '|', tag: ['foo', 'bar']}}",Sh,Hh,xo,Jo,bf="entity.$addTag('bar')",Ih,Uh,Vt,xh,it,Jh,jh,Qh,Kt,Mh,Te,jo,Lh,Yh,Qo,Wh,Xh,Mo,Vh,Kh,Zt,Zh,Lo,tc,ec,te,ac,Yo,rc,oc,ee,lc,Wo,nc,dc,ae,sc,Xo,ic,hc,re,cc,Vo,fc,uc,oe,Ec,Ko,vc,mc,le,gc,Zo,pc,_c,ne,yc,tl,Tc,bc,de,Dc,el,$c,wc,se,Cc,al,Oc,zc,ie,Rc,rl,qc,kc,he,Gc,ol,Ac,Pc,ce,Nc,ll,Bc,Fc,fe,dl,st,ht,Sc,Hc,ct,Ic,sl;return jt=new b({props:{language:D,code:`const baz = await FoobarBaz.factory(guid); -if (baz.guid == null) { - console.error("Can't find the Foobar Baz!"); -} - -// Tilmeld's User class has a username factory function. -const cronUser = await User.factoryUsername('cron'); -if (cronUser.guid == null) { - console.error("Can't find the cron user!"); -}`}}),Kt=new b({props:{language:D,code:`{ - type: '&', - gte: ['cdate', null, '-1 day'] -}`}}),Zt=new b({props:{language:D,code:"const entity = await nymph.getEntity({ class: FoobarBaz });"}}),te=new b({props:{language:D,code:`const entity = await nymph.getEntity({ - class: FoobarBaz, - reverse: true -});`}}),ee=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz - }, - { - type: '&', - tag: 'baz' - } -);`}}),ae=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz, - reverse: true, - limit: 5 - }, - { - type: '&', - tag: ['bar', 'baz'] - } -);`}}),re=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz, - reverse: true, - limit: 5, - sort: 'mdate' - }, - { - type: '&', - tag: ['bar', 'baz'] - } -);`}}),oe=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz, - limit: 5, - offset: 10, - sort: 'name' - }, - { - type: '&', - tag: ['baz'] - } -);`}}),le=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz - }, - { - type: '&', - tag: 'baz', - defined: 'name' - } -);`}}),ne=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz - }, - { - type: '&', - tag: 'baz', - '!defined': 'name' - } -);`}}),de=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz - }, - { - type: '|', - selector: [ - { - type: '&', - tag: 'baz', - '!defined': 'name' - }, - { - type: '&', - tag: 'bar', - defined: 'name' - } - ] - } -);`}}),se=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz - }, - { - type: '&', - tag: 'baz' - }, - { - type: '|', - defined: ['firstName', 'lastName'] - } -);`}}),ie=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz - }, - { - type: '&', - tag: 'baz', - gt: ['cdate', null, '-1 day'] - } -);`}}),he=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { - class: FoobarBaz - }, - { type: '&', tag: 'baz', defined: 'name' }, - { - type: '!|', // at least one must be false - gte: ['age', 22], - gt: ['pay', 8] - } -);`}}),ce=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { class: FoobarBaz }, - { type: '&', tag: 'baz' }, - { - type: '|', - equal: [ - ['firstName', 'Clark'], - ['firstName', 'James'] - ], - match: [ - ['firstName', '^Chris(topher)?$'], - ['firstName', '^Ja(ke|cob)$'] - ] - } -);`}}),fe=new b({props:{language:D,code:`const entities = await nymph.getEntities( - { class: FoobarBaz }, - { - type: '&', - tag: 'baz', - qref: [ - 'user', - [ - { class: User }, - { - type: '|', - like: [ - ['name', 'John %'], - ['name', 'James %'] - ] - } - ] - ] - } -);`}}),{c(){Jt=new mE(!1),ze=hE(),nl=d(),i=a("section"),Ee=a("header"),ve=a("h1"),pl=l("Entity Querying"),_l=d(),Re=a("p"),yl=l("The real power behind Nymph is the entity querying system."),Tl=d(),me=a("header"),qe=a("h2"),bl=l("Factory Method"),Dl=d(),w=a("p"),$l=l("The "),ke=a("code"),wl=l("Entity"),Cl=l(` class' factory method can take a GUID as an - argument. You can provide other factory functions that can take things as - well. For example, the `),Ge=a("code"),Ol=l("User"),zl=l(` class in Tilmeld has a - `),Ae=a("code"),Rl=l("factoryUsername"),ql=l(` method that takes a username. The method will return - a new entity if the queried entity is not found. You can determine if it was - found by checking that its GUID is not null.`),kl=d(),m(jt.$$.fragment),Gl=d(),ge=a("header"),Pe=a("h2"),Al=l("Nymph's Query Language"),Pl=d(),at=a("p"),Nl=l("The powerful way of querying entities is Nymph's "),Ne=a("code"),Bl=l("getEntities"),Fl=l(` - and `),Be=a("code"),Sl=l("getEntity"),Hl=l(" methods. The first argument is an Options object."),Il=d(),pe=a("div"),Qt=a("table"),Fe=a("thead"),C=a("tr"),Se=a("th"),Ul=l("Option"),xl=d(),He=a("th"),Jl=l("Type"),jl=d(),Ie=a("th"),Ql=l("Default"),Ml=d(),Ue=a("th"),Ll=l("Description"),Yl=d(),E=a("tbody"),O=a("tr"),xe=a("td"),Wl=l("class"),Xl=d(),Je=a("td"),Vl=l("typeof Entity"),Kl=d(),je=a("td"),Zl=l("Entity"),tn=d(),Qe=a("td"),en=l("The Entity class to query."),an=d(),z=a("tr"),Me=a("td"),rn=l("limit"),on=d(),Le=a("td"),ln=l("number"),nn=d(),Ye=a("td"),dn=l("undefined"),sn=d(),Mt=a("td"),hn=l("The limit of entities to be returned. Not needed when using "),We=a("code"),cn=l("getEntity"),fn=l(", as it always returns only one."),un=d(),R=a("tr"),Xe=a("td"),En=l("offset"),vn=d(),Ve=a("td"),mn=l("number"),gn=d(),Ke=a("td"),pn=l("0"),_n=d(),Ze=a("td"),yn=l(`The offset from the first matching entity, in order, to start - retrieving.`),Tn=d(),q=a("tr"),ta=a("td"),bn=l("reverse"),Dn=d(),ea=a("td"),$n=l("boolean"),wn=d(),aa=a("td"),Cn=l("false"),On=d(),Lt=a("td"),zn=l(`If true, entities will be retrieved from newest to oldest/largest - to smallest (with regard to `),ra=a("code"),Rn=l("sort"),qn=l(")."),kn=d(),k=a("tr"),oa=a("td"),Gn=l("sort"),An=d(),la=a("td"),Pn=l("'cdate' | 'mdate' | string"),Nn=d(),na=a("td"),Bn=l("'cdate'"),Fn=d(),da=a("td"),Sn=l(`How to sort the entities. Should be "cdate", "mdate", or the name - of a property.`),Hn=d(),G=a("tr"),sa=a("td"),In=l("return"),Un=d(),ia=a("td"),xn=l("'entity' | 'guid' | 'count'"),Jn=d(),ha=a("td"),jn=l("'entity'"),Qn=d(),ca=a("td"),Mn=l(`What to return, the entities with their data, just the GUIDs, or - just a count.`),Ln=d(),A=a("tr"),fa=a("td"),Yn=l("source"),Wn=d(),ua=a("td"),Xn=l("string"),Vn=d(),Ea=a("td"),Kn=l("undefined"),Zn=d(),va=a("td"),td=l(`Will be 'client' if the query came from a REST request or the - PubSub server. (Mainly used in Tilmeld for access control.)`),ed=d(),P=a("tr"),ma=a("td"),ad=l("skipCache"),rd=d(),ga=a("td"),od=l("boolean"),ld=d(),pa=a("td"),nd=l("false"),dd=d(),_a=a("td"),sd=l(`If true, Nymph will skip the cache and retrieve the entity from the - DB.`),id=d(),N=a("tr"),ya=a("td"),hd=l("skipAc"),cd=d(),Ta=a("td"),fd=l("boolean"),ud=d(),ba=a("td"),Ed=l("false"),vd=d(),Da=a("td"),md=l(`If true, Tilmeld will not filter returned entities according to - access controls. (If Tilmeld is installed.) (This is always set to - false by the REST endpoint and PubSub server.)`),gd=d(),Yt=a("p"),pd=l(`Every argument following the Options is a Selector object. They contain - clauses and a type. An entity must match each selector to be returned. There - are four selector types, and they are defined on the `),$a=a("code"),_d=l("type"),yd=l(" property."),Td=d(),_e=a("div"),Wt=a("table"),wa=a("thead"),rt=a("tr"),Ca=a("th"),bd=l("Type"),Dd=d(),Oa=a("th"),$d=l("Name"),wd=d(),za=a("th"),Cd=l("Description"),Od=d(),B=a("tbody"),ot=a("tr"),Ra=a("td"),zd=l("&"),Rd=d(),qa=a("td"),qd=l("And"),kd=d(),ka=a("td"),Gd=l("All clauses in the selector must match."),Ad=d(),lt=a("tr"),Ga=a("td"),Pd=l("|"),Nd=d(),Aa=a("td"),Bd=l("Or"),Fd=d(),Pa=a("td"),Sd=l("At least one clause in the selector must match."),Hd=d(),nt=a("tr"),Na=a("td"),Id=l("!&"),Ud=d(),Ba=a("td"),xd=l("Not And"),Jd=d(),Fa=a("td"),jd=l("All clauses in the selector must not match."),Qd=d(),dt=a("tr"),Sa=a("td"),Md=l("!|"),Ld=d(),Ha=a("td"),Yd=l("Not Or"),Wd=d(),Ia=a("td"),Xd=l("At least one clause in the selector must not match."),Vd=d(),F=a("p"),Kd=l("The other properties of the Selector are clauses. Clauses use the form "),Ua=a("code"),Zd=l("name: value"),ts=l(`, or - `),xa=a("code"),es=l("name: [value1, value2, ...]"),as=l(`. They can be negated by prepending - a bang (!) to the name, like `),Ja=a("code"),rs=l("'!name': value"),os=l(`. A clause that has - multiple values is considered as multiple clauses in terms of matching for - "or" selectors.`),ls=d(),ye=a("div"),Xt=a("table"),ja=a("thead"),S=a("tr"),Qa=a("th"),ns=l("Property"),ds=d(),Ma=a("th"),ss=l("Description"),is=d(),La=a("th"),hs=l("Example"),cs=d(),Ya=a("th"),fs=l("Works On"),us=d(),f=a("tbody"),H=a("tr"),Wa=a("td"),Es=l("guid"),vs=d(),Xa=a("td"),ms=l("The entity's GUID is equal."),gs=d(),Va=a("td"),Ka=a("code"),ps=l(xc),_s=d(),Za=a("td"),tr=a("code"),ys=l(Jc),Ts=d(),I=a("tr"),er=a("td"),bs=l("tag"),Ds=d(),ar=a("td"),$s=l("The entity has the tag."),ws=d(),rr=a("td"),or=a("code"),Cs=l(jc),Os=d(),lr=a("td"),nr=a("code"),zs=l(Qc),Rs=d(),U=a("tr"),dr=a("td"),qs=l("defined"),ks=d(),sr=a("td"),Gs=l("The named property is not undefined."),As=d(),ir=a("td"),hr=a("code"),Ps=l(Mc),Ns=d(),cr=a("td"),fr=a("code"),Bs=l(Lc),Fs=d(),x=a("tr"),ur=a("td"),Ss=l("truthy"),Hs=d(),Er=a("td"),Is=l("The named property evaluates to true."),Us=d(),vr=a("td"),mr=a("code"),xs=l(Yc),Js=d(),gr=a("td"),pr=a("code"),js=l(Wc),Qs=d(),J=a("tr"),_r=a("td"),Ms=l("equal"),Ls=d(),yr=a("td"),Ys=l(`The named property is defined and equals the value (their JSON - strings are identical).`),Ws=d(),Tr=a("td"),br=a("code"),Xs=l(Xc),Vs=d(),Dr=a("td"),$r=a("code"),Ks=l(Vc),Zs=d(),j=a("tr"),wr=a("td"),ti=l("contain"),ei=d(),Cr=a("td"),ai=l(`The named property contains the value (its JSON string is found - within the property's JSON string).`),ri=d(),Or=a("td"),zr=a("code"),oi=l(Kc),li=d(),Rr=a("td"),qr=a("code"),ni=l(Zc),di=d(),Q=a("tr"),kr=a("td"),si=l("match"),ii=d(),Gr=a("td"),hi=l(`The named property matches. Uses POSIX RegExp. Case sensitive. Must - *not* be surrounded by any delimiters.`),ci=d(),Ar=a("td"),Pr=a("code"),fi=l(tf),ui=d(),Nr=a("td"),Br=a("code"),Ei=l(ef),vi=d(),M=a("tr"),Fr=a("td"),mi=l("imatch"),gi=d(),Sr=a("td"),pi=l(`The named property matches. Uses POSIX RegExp. Case insensitive. - Must *not* be surrounded by any delimiters.`),_i=d(),Hr=a("td"),Ir=a("code"),yi=l(af),Ti=d(),Ur=a("td"),xr=a("code"),bi=l(rf),Di=d(),L=a("tr"),Jr=a("td"),$i=l("like"),wi=d(),jr=a("td"),Ci=l(`The named property matches. Uses % for variable length wildcard and - _ for single character wildcard. Case sensitive.`),Oi=d(),Qr=a("td"),Mr=a("code"),zi=l(of),Ri=d(),Lr=a("td"),Yr=a("code"),qi=l(lf),ki=d(),Y=a("tr"),Wr=a("td"),Gi=l("ilike"),Ai=d(),Xr=a("td"),Pi=l(`The named property matches. Uses % for variable length wildcard and - _ for single character wildcard. Case insensitive.`),Ni=d(),Vr=a("td"),Kr=a("code"),Bi=l(nf),Fi=d(),Zr=a("td"),to=a("code"),Si=l(df),Hi=d(),W=a("tr"),eo=a("td"),Ii=l("gt"),Ui=d(),ao=a("td"),xi=l("The named property is greater than the value."),Ji=d(),ro=a("td"),oo=a("code"),ji=l(sf),Qi=d(),lo=a("td"),no=a("code"),Mi=l(hf),Li=d(),X=a("tr"),so=a("td"),Yi=l("gte"),Wi=d(),io=a("td"),Xi=l("The named property is greater than or equal to the value."),Vi=d(),ho=a("td"),co=a("code"),Ki=l(cf),Zi=d(),fo=a("td"),uo=a("code"),th=l(ff),eh=d(),V=a("tr"),Eo=a("td"),ah=l("lt"),rh=d(),vo=a("td"),oh=l("The named property is less than the value."),lh=d(),mo=a("td"),go=a("code"),nh=l(uf),dh=d(),po=a("td"),_o=a("code"),sh=l(Ef),ih=d(),K=a("tr"),yo=a("td"),hh=l("lte"),ch=d(),To=a("td"),fh=l("The named property is less than or equal to the value."),uh=d(),bo=a("td"),Do=a("code"),Eh=l(vf),vh=d(),$o=a("td"),wo=a("code"),mh=l(mf),gh=d(),Z=a("tr"),Co=a("td"),ph=l("ref"),_h=d(),Oo=a("td"),yh=l("The named property is the entity or contains the entity."),Th=d(),zo=a("td"),Ro=a("code"),bh=l(gf),Dh=d(),qo=a("td"),ko=a("code"),$h=l(pf),wh=d(),tt=a("tr"),Go=a("td"),Ch=l("qref"),Oh=d(),Ao=a("td"),zh=l(`The named property is an entity that matches the query or contains - an entity that matches the query.`),Rh=d(),Po=a("td"),No=a("code"),qh=l(_f),kh=d(),Bo=a("td"),Fo=a("code"),Gh=l(yf),Ah=d(),et=a("tr"),So=a("td"),Ph=l("selector"),Nh=d(),Ho=a("td"),Bh=l(`A selector. (Keep in mind, you can also use an array of these, just - like any other clause.)`),Fh=d(),Io=a("td"),Uo=a("code"),Sh=l(Tf),Hh=d(),xo=a("td"),Jo=a("code"),Ih=l(bf),Uh=d(),Vt=a("p"),xh=l(`The clauses "equal", "contain", "gt", "gte", "lt", and "lte" can also accept - a third element. If value is null and the third element is a string, the - third element will be used with `),it=a("a"),Jh=l("Locutus' strtotime function"),jh=l(` to set the value to a relative timestamp. For example, the following selector - will look for all entities that were created in the last day.`),Qh=d(),m(Kt.$$.fragment),Mh=d(),Te=a("header"),jo=a("h2"),Lh=l("Querying Examples"),Yh=d(),Qo=a("p"),Wh=l(`So putting it all together, you can specify the options and selectors to - find the exact entities you want.`),Xh=d(),Mo=a("p"),Vh=l("Get the first FoobarBaz entity."),Kh=d(),m(Zt.$$.fragment),Zh=d(),Lo=a("p"),tc=l("Get the latest FoobarBaz entity."),ec=d(),m(te.$$.fragment),ac=d(),Yo=a("p"),rc=l("Get all baz tagged entities, using the FoobarBaz class."),oc=d(),m(ee.$$.fragment),lc=d(),Wo=a("p"),nc=l("Get the five last created bar and baz tagged entities."),dc=d(),m(ae.$$.fragment),sc=d(),Xo=a("p"),ic=l("Get the five last modified bar and baz tagged entities."),hc=d(),m(re.$$.fragment),cc=d(),Vo=a("p"),fc=l(`Get the third page of sorted by name, baz tagged entities (if pages are 5 - entities long).`),uc=d(),m(oe.$$.fragment),Ec=d(),Ko=a("p"),vc=l("Get baz tagged entities with names."),mc=d(),m(le.$$.fragment),gc=d(),Zo=a("p"),pc=l("Get baz tagged entities without names."),_c=d(),m(ne.$$.fragment),yc=d(),tl=a("p"),Tc=l("Get baz tagged entities without names or bar tagged entities with names."),bc=d(),m(de.$$.fragment),Dc=d(),el=a("p"),$c=l("Get baz tagged entities with either first names or last names."),wc=d(),m(se.$$.fragment),Cc=d(),al=a("p"),Oc=l("Get baz tagged entities created in the last day."),zc=d(),m(ie.$$.fragment),Rc=d(),rl=a("p"),qc=l(`Get baz tagged entities with names, who either make only up to 8 dollars pay - or are under 22.`),kc=d(),m(he.$$.fragment),Gc=d(),ol=a("p"),Ac=l(`Get baz tagged entities named Clark, James, Chris, Christopher, Jake, or - Jacob.`),Pc=d(),m(ce.$$.fragment),Nc=d(),ll=a("p"),Bc=l('Get baz tagged entities that belong to any user named "John" or "James".'),Fc=d(),m(fe.$$.fragment),dl=d(),st=a("section"),ht=a("a"),Sc=l("Previous: Creating Entities"),Hc=d(),ct=a("a"),Ic=l("Next: Subscribing to Queries"),this.h()},l(c){const ue=gE("svelte-13nmepq",document.head);Jt=pE(ue,!1),ze=hE(),ue.forEach(e),nl=s(c),i=r(c,"SECTION",{});var h=o(i);Ee=r(h,"HEADER",{class:!0});var Df=o(Ee);ve=r(Df,"H1",{style:!0});var $f=o(ve);pl=n($f,"Entity Querying"),$f.forEach(e),Df.forEach(e),_l=s(h),Re=r(h,"P",{});var wf=o(Re);yl=n(wf,"The real power behind Nymph is the entity querying system."),wf.forEach(e),Tl=s(h),me=r(h,"HEADER",{class:!0});var Cf=o(me);qe=r(Cf,"H2",{});var Of=o(qe);bl=n(Of,"Factory Method"),Of.forEach(e),Cf.forEach(e),Dl=s(h),w=r(h,"P",{});var ft=o(w);$l=n(ft,"The "),ke=r(ft,"CODE",{});var zf=o(ke);wl=n(zf,"Entity"),zf.forEach(e),Cl=n(ft,` class' factory method can take a GUID as an - argument. You can provide other factory functions that can take things as - well. For example, the `),Ge=r(ft,"CODE",{});var Rf=o(Ge);Ol=n(Rf,"User"),Rf.forEach(e),zl=n(ft,` class in Tilmeld has a - `),Ae=r(ft,"CODE",{});var qf=o(Ae);Rl=n(qf,"factoryUsername"),qf.forEach(e),ql=n(ft,` method that takes a username. The method will return - a new entity if the queried entity is not found. You can determine if it was - found by checking that its GUID is not null.`),ft.forEach(e),kl=s(h),g(jt.$$.fragment,h),Gl=s(h),ge=r(h,"HEADER",{class:!0});var kf=o(ge);Pe=r(kf,"H2",{});var Gf=o(Pe);Al=n(Gf,"Nymph's Query Language"),Gf.forEach(e),kf.forEach(e),Pl=s(h),at=r(h,"P",{});var be=o(at);Nl=n(be,"The powerful way of querying entities is Nymph's "),Ne=r(be,"CODE",{});var Af=o(Ne);Bl=n(Af,"getEntities"),Af.forEach(e),Fl=n(be,` - and `),Be=r(be,"CODE",{});var Pf=o(Be);Sl=n(Pf,"getEntity"),Pf.forEach(e),Hl=n(be," methods. The first argument is an Options object."),be.forEach(e),Il=s(h),pe=r(h,"DIV",{class:!0});var Nf=o(pe);Qt=r(Nf,"TABLE",{});var il=o(Qt);Fe=r(il,"THEAD",{});var Bf=o(Fe);C=r(Bf,"TR",{});var ut=o(C);Se=r(ut,"TH",{});var Ff=o(Se);Ul=n(Ff,"Option"),Ff.forEach(e),xl=s(ut),He=r(ut,"TH",{});var Sf=o(He);Jl=n(Sf,"Type"),Sf.forEach(e),jl=s(ut),Ie=r(ut,"TH",{});var Hf=o(Ie);Ql=n(Hf,"Default"),Hf.forEach(e),Ml=s(ut),Ue=r(ut,"TH",{});var If=o(Ue);Ll=n(If,"Description"),If.forEach(e),ut.forEach(e),Bf.forEach(e),Yl=s(il),E=r(il,"TBODY",{});var v=o(E);O=r(v,"TR",{});var Et=o(O);xe=r(Et,"TD",{});var Uf=o(xe);Wl=n(Uf,"class"),Uf.forEach(e),Xl=s(Et),Je=r(Et,"TD",{});var xf=o(Je);Vl=n(xf,"typeof Entity"),xf.forEach(e),Kl=s(Et),je=r(Et,"TD",{});var Jf=o(je);Zl=n(Jf,"Entity"),Jf.forEach(e),tn=s(Et),Qe=r(Et,"TD",{});var jf=o(Qe);en=n(jf,"The Entity class to query."),jf.forEach(e),Et.forEach(e),an=s(v),z=r(v,"TR",{});var vt=o(z);Me=r(vt,"TD",{});var Qf=o(Me);rn=n(Qf,"limit"),Qf.forEach(e),on=s(vt),Le=r(vt,"TD",{});var Mf=o(Le);ln=n(Mf,"number"),Mf.forEach(e),nn=s(vt),Ye=r(vt,"TD",{});var Lf=o(Ye);dn=n(Lf,"undefined"),Lf.forEach(e),sn=s(vt),Mt=r(vt,"TD",{});var hl=o(Mt);hn=n(hl,"The limit of entities to be returned. Not needed when using "),We=r(hl,"CODE",{});var Yf=o(We);cn=n(Yf,"getEntity"),Yf.forEach(e),fn=n(hl,", as it always returns only one."),hl.forEach(e),vt.forEach(e),un=s(v),R=r(v,"TR",{});var mt=o(R);Xe=r(mt,"TD",{});var Wf=o(Xe);En=n(Wf,"offset"),Wf.forEach(e),vn=s(mt),Ve=r(mt,"TD",{});var Xf=o(Ve);mn=n(Xf,"number"),Xf.forEach(e),gn=s(mt),Ke=r(mt,"TD",{});var Vf=o(Ke);pn=n(Vf,"0"),Vf.forEach(e),_n=s(mt),Ze=r(mt,"TD",{});var Kf=o(Ze);yn=n(Kf,`The offset from the first matching entity, in order, to start - retrieving.`),Kf.forEach(e),mt.forEach(e),Tn=s(v),q=r(v,"TR",{});var gt=o(q);ta=r(gt,"TD",{});var Zf=o(ta);bn=n(Zf,"reverse"),Zf.forEach(e),Dn=s(gt),ea=r(gt,"TD",{});var t1=o(ea);$n=n(t1,"boolean"),t1.forEach(e),wn=s(gt),aa=r(gt,"TD",{});var e1=o(aa);Cn=n(e1,"false"),e1.forEach(e),On=s(gt),Lt=r(gt,"TD",{});var cl=o(Lt);zn=n(cl,`If true, entities will be retrieved from newest to oldest/largest - to smallest (with regard to `),ra=r(cl,"CODE",{});var a1=o(ra);Rn=n(a1,"sort"),a1.forEach(e),qn=n(cl,")."),cl.forEach(e),gt.forEach(e),kn=s(v),k=r(v,"TR",{});var pt=o(k);oa=r(pt,"TD",{});var r1=o(oa);Gn=n(r1,"sort"),r1.forEach(e),An=s(pt),la=r(pt,"TD",{});var o1=o(la);Pn=n(o1,"'cdate' | 'mdate' | string"),o1.forEach(e),Nn=s(pt),na=r(pt,"TD",{});var l1=o(na);Bn=n(l1,"'cdate'"),l1.forEach(e),Fn=s(pt),da=r(pt,"TD",{});var n1=o(da);Sn=n(n1,`How to sort the entities. Should be "cdate", "mdate", or the name - of a property.`),n1.forEach(e),pt.forEach(e),Hn=s(v),G=r(v,"TR",{});var _t=o(G);sa=r(_t,"TD",{});var d1=o(sa);In=n(d1,"return"),d1.forEach(e),Un=s(_t),ia=r(_t,"TD",{});var s1=o(ia);xn=n(s1,"'entity' | 'guid' | 'count'"),s1.forEach(e),Jn=s(_t),ha=r(_t,"TD",{});var i1=o(ha);jn=n(i1,"'entity'"),i1.forEach(e),Qn=s(_t),ca=r(_t,"TD",{});var h1=o(ca);Mn=n(h1,`What to return, the entities with their data, just the GUIDs, or - just a count.`),h1.forEach(e),_t.forEach(e),Ln=s(v),A=r(v,"TR",{});var yt=o(A);fa=r(yt,"TD",{});var c1=o(fa);Yn=n(c1,"source"),c1.forEach(e),Wn=s(yt),ua=r(yt,"TD",{});var f1=o(ua);Xn=n(f1,"string"),f1.forEach(e),Vn=s(yt),Ea=r(yt,"TD",{});var u1=o(Ea);Kn=n(u1,"undefined"),u1.forEach(e),Zn=s(yt),va=r(yt,"TD",{});var E1=o(va);td=n(E1,`Will be 'client' if the query came from a REST request or the - PubSub server. (Mainly used in Tilmeld for access control.)`),E1.forEach(e),yt.forEach(e),ed=s(v),P=r(v,"TR",{});var Tt=o(P);ma=r(Tt,"TD",{});var v1=o(ma);ad=n(v1,"skipCache"),v1.forEach(e),rd=s(Tt),ga=r(Tt,"TD",{});var m1=o(ga);od=n(m1,"boolean"),m1.forEach(e),ld=s(Tt),pa=r(Tt,"TD",{});var g1=o(pa);nd=n(g1,"false"),g1.forEach(e),dd=s(Tt),_a=r(Tt,"TD",{});var p1=o(_a);sd=n(p1,`If true, Nymph will skip the cache and retrieve the entity from the - DB.`),p1.forEach(e),Tt.forEach(e),id=s(v),N=r(v,"TR",{});var bt=o(N);ya=r(bt,"TD",{});var _1=o(ya);hd=n(_1,"skipAc"),_1.forEach(e),cd=s(bt),Ta=r(bt,"TD",{});var y1=o(Ta);fd=n(y1,"boolean"),y1.forEach(e),ud=s(bt),ba=r(bt,"TD",{});var T1=o(ba);Ed=n(T1,"false"),T1.forEach(e),vd=s(bt),Da=r(bt,"TD",{});var b1=o(Da);md=n(b1,`If true, Tilmeld will not filter returned entities according to - access controls. (If Tilmeld is installed.) (This is always set to - false by the REST endpoint and PubSub server.)`),b1.forEach(e),bt.forEach(e),v.forEach(e),il.forEach(e),Nf.forEach(e),gd=s(h),Yt=r(h,"P",{});var fl=o(Yt);pd=n(fl,`Every argument following the Options is a Selector object. They contain - clauses and a type. An entity must match each selector to be returned. There - are four selector types, and they are defined on the `),$a=r(fl,"CODE",{});var D1=o($a);_d=n(D1,"type"),D1.forEach(e),yd=n(fl," property."),fl.forEach(e),Td=s(h),_e=r(h,"DIV",{class:!0});var $1=o(_e);Wt=r($1,"TABLE",{});var ul=o(Wt);wa=r(ul,"THEAD",{});var w1=o(wa);rt=r(w1,"TR",{});var De=o(rt);Ca=r(De,"TH",{});var C1=o(Ca);bd=n(C1,"Type"),C1.forEach(e),Dd=s(De),Oa=r(De,"TH",{});var O1=o(Oa);$d=n(O1,"Name"),O1.forEach(e),wd=s(De),za=r(De,"TH",{});var z1=o(za);Cd=n(z1,"Description"),z1.forEach(e),De.forEach(e),w1.forEach(e),Od=s(ul),B=r(ul,"TBODY",{});var Dt=o(B);ot=r(Dt,"TR",{});var $e=o(ot);Ra=r($e,"TD",{});var R1=o(Ra);zd=n(R1,"&"),R1.forEach(e),Rd=s($e),qa=r($e,"TD",{});var q1=o(qa);qd=n(q1,"And"),q1.forEach(e),kd=s($e),ka=r($e,"TD",{});var k1=o(ka);Gd=n(k1,"All clauses in the selector must match."),k1.forEach(e),$e.forEach(e),Ad=s(Dt),lt=r(Dt,"TR",{});var we=o(lt);Ga=r(we,"TD",{});var G1=o(Ga);Pd=n(G1,"|"),G1.forEach(e),Nd=s(we),Aa=r(we,"TD",{});var A1=o(Aa);Bd=n(A1,"Or"),A1.forEach(e),Fd=s(we),Pa=r(we,"TD",{});var P1=o(Pa);Sd=n(P1,"At least one clause in the selector must match."),P1.forEach(e),we.forEach(e),Hd=s(Dt),nt=r(Dt,"TR",{});var Ce=o(nt);Na=r(Ce,"TD",{});var N1=o(Na);Id=n(N1,"!&"),N1.forEach(e),Ud=s(Ce),Ba=r(Ce,"TD",{});var B1=o(Ba);xd=n(B1,"Not And"),B1.forEach(e),Jd=s(Ce),Fa=r(Ce,"TD",{});var F1=o(Fa);jd=n(F1,"All clauses in the selector must not match."),F1.forEach(e),Ce.forEach(e),Qd=s(Dt),dt=r(Dt,"TR",{});var Oe=o(dt);Sa=r(Oe,"TD",{});var S1=o(Sa);Md=n(S1,"!|"),S1.forEach(e),Ld=s(Oe),Ha=r(Oe,"TD",{});var H1=o(Ha);Yd=n(H1,"Not Or"),H1.forEach(e),Wd=s(Oe),Ia=r(Oe,"TD",{});var I1=o(Ia);Xd=n(I1,"At least one clause in the selector must not match."),I1.forEach(e),Oe.forEach(e),Dt.forEach(e),ul.forEach(e),$1.forEach(e),Vd=s(h),F=r(h,"P",{});var $t=o(F);Kd=n($t,"The other properties of the Selector are clauses. Clauses use the form "),Ua=r($t,"CODE",{});var U1=o(Ua);Zd=n(U1,"name: value"),U1.forEach(e),ts=n($t,`, or - `),xa=r($t,"CODE",{});var x1=o(xa);es=n(x1,"name: [value1, value2, ...]"),x1.forEach(e),as=n($t,`. They can be negated by prepending - a bang (!) to the name, like `),Ja=r($t,"CODE",{});var J1=o(Ja);rs=n(J1,"'!name': value"),J1.forEach(e),os=n($t,`. A clause that has - multiple values is considered as multiple clauses in terms of matching for - "or" selectors.`),$t.forEach(e),ls=s(h),ye=r(h,"DIV",{class:!0});var j1=o(ye);Xt=r(j1,"TABLE",{});var El=o(Xt);ja=r(El,"THEAD",{});var Q1=o(ja);S=r(Q1,"TR",{});var wt=o(S);Qa=r(wt,"TH",{});var M1=o(Qa);ns=n(M1,"Property"),M1.forEach(e),ds=s(wt),Ma=r(wt,"TH",{});var L1=o(Ma);ss=n(L1,"Description"),L1.forEach(e),is=s(wt),La=r(wt,"TH",{});var Y1=o(La);hs=n(Y1,"Example"),Y1.forEach(e),cs=s(wt),Ya=r(wt,"TH",{});var W1=o(Ya);fs=n(W1,"Works On"),W1.forEach(e),wt.forEach(e),Q1.forEach(e),us=s(El),f=r(El,"TBODY",{});var u=o(f);H=r(u,"TR",{});var Ct=o(H);Wa=r(Ct,"TD",{});var X1=o(Wa);Es=n(X1,"guid"),X1.forEach(e),vs=s(Ct),Xa=r(Ct,"TD",{});var V1=o(Xa);ms=n(V1,"The entity's GUID is equal."),V1.forEach(e),gs=s(Ct),Va=r(Ct,"TD",{});var K1=o(Va);Ka=r(K1,"CODE",{});var Z1=o(Ka);ps=n(Z1,xc),Z1.forEach(e),K1.forEach(e),_s=s(Ct),Za=r(Ct,"TD",{});var tu=o(Za);tr=r(tu,"CODE",{});var eu=o(tr);ys=n(eu,Jc),eu.forEach(e),tu.forEach(e),Ct.forEach(e),Ts=s(u),I=r(u,"TR",{});var Ot=o(I);er=r(Ot,"TD",{});var au=o(er);bs=n(au,"tag"),au.forEach(e),Ds=s(Ot),ar=r(Ot,"TD",{});var ru=o(ar);$s=n(ru,"The entity has the tag."),ru.forEach(e),ws=s(Ot),rr=r(Ot,"TD",{});var ou=o(rr);or=r(ou,"CODE",{});var lu=o(or);Cs=n(lu,jc),lu.forEach(e),ou.forEach(e),Os=s(Ot),lr=r(Ot,"TD",{});var nu=o(lr);nr=r(nu,"CODE",{});var du=o(nr);zs=n(du,Qc),du.forEach(e),nu.forEach(e),Ot.forEach(e),Rs=s(u),U=r(u,"TR",{});var zt=o(U);dr=r(zt,"TD",{});var su=o(dr);qs=n(su,"defined"),su.forEach(e),ks=s(zt),sr=r(zt,"TD",{});var iu=o(sr);Gs=n(iu,"The named property is not undefined."),iu.forEach(e),As=s(zt),ir=r(zt,"TD",{});var hu=o(ir);hr=r(hu,"CODE",{});var cu=o(hr);Ps=n(cu,Mc),cu.forEach(e),hu.forEach(e),Ns=s(zt),cr=r(zt,"TD",{});var fu=o(cr);fr=r(fu,"CODE",{});var uu=o(fr);Bs=n(uu,Lc),uu.forEach(e),fu.forEach(e),zt.forEach(e),Fs=s(u),x=r(u,"TR",{});var Rt=o(x);ur=r(Rt,"TD",{});var Eu=o(ur);Ss=n(Eu,"truthy"),Eu.forEach(e),Hs=s(Rt),Er=r(Rt,"TD",{});var vu=o(Er);Is=n(vu,"The named property evaluates to true."),vu.forEach(e),Us=s(Rt),vr=r(Rt,"TD",{});var mu=o(vr);mr=r(mu,"CODE",{});var gu=o(mr);xs=n(gu,Yc),gu.forEach(e),mu.forEach(e),Js=s(Rt),gr=r(Rt,"TD",{});var pu=o(gr);pr=r(pu,"CODE",{});var _u=o(pr);js=n(_u,Wc),_u.forEach(e),pu.forEach(e),Rt.forEach(e),Qs=s(u),J=r(u,"TR",{});var qt=o(J);_r=r(qt,"TD",{});var yu=o(_r);Ms=n(yu,"equal"),yu.forEach(e),Ls=s(qt),yr=r(qt,"TD",{});var Tu=o(yr);Ys=n(Tu,`The named property is defined and equals the value (their JSON - strings are identical).`),Tu.forEach(e),Ws=s(qt),Tr=r(qt,"TD",{});var bu=o(Tr);br=r(bu,"CODE",{});var Du=o(br);Xs=n(Du,Xc),Du.forEach(e),bu.forEach(e),Vs=s(qt),Dr=r(qt,"TD",{});var $u=o(Dr);$r=r($u,"CODE",{});var wu=o($r);Ks=n(wu,Vc),wu.forEach(e),$u.forEach(e),qt.forEach(e),Zs=s(u),j=r(u,"TR",{});var kt=o(j);wr=r(kt,"TD",{});var Cu=o(wr);ti=n(Cu,"contain"),Cu.forEach(e),ei=s(kt),Cr=r(kt,"TD",{});var Ou=o(Cr);ai=n(Ou,`The named property contains the value (its JSON string is found - within the property's JSON string).`),Ou.forEach(e),ri=s(kt),Or=r(kt,"TD",{});var zu=o(Or);zr=r(zu,"CODE",{});var Ru=o(zr);oi=n(Ru,Kc),Ru.forEach(e),zu.forEach(e),li=s(kt),Rr=r(kt,"TD",{});var qu=o(Rr);qr=r(qu,"CODE",{});var ku=o(qr);ni=n(ku,Zc),ku.forEach(e),qu.forEach(e),kt.forEach(e),di=s(u),Q=r(u,"TR",{});var Gt=o(Q);kr=r(Gt,"TD",{});var Gu=o(kr);si=n(Gu,"match"),Gu.forEach(e),ii=s(Gt),Gr=r(Gt,"TD",{});var Au=o(Gr);hi=n(Au,`The named property matches. Uses POSIX RegExp. Case sensitive. Must - *not* be surrounded by any delimiters.`),Au.forEach(e),ci=s(Gt),Ar=r(Gt,"TD",{});var Pu=o(Ar);Pr=r(Pu,"CODE",{});var Nu=o(Pr);fi=n(Nu,tf),Nu.forEach(e),Pu.forEach(e),ui=s(Gt),Nr=r(Gt,"TD",{});var Bu=o(Nr);Br=r(Bu,"CODE",{});var Fu=o(Br);Ei=n(Fu,ef),Fu.forEach(e),Bu.forEach(e),Gt.forEach(e),vi=s(u),M=r(u,"TR",{});var At=o(M);Fr=r(At,"TD",{});var Su=o(Fr);mi=n(Su,"imatch"),Su.forEach(e),gi=s(At),Sr=r(At,"TD",{});var Hu=o(Sr);pi=n(Hu,`The named property matches. Uses POSIX RegExp. Case insensitive. - Must *not* be surrounded by any delimiters.`),Hu.forEach(e),_i=s(At),Hr=r(At,"TD",{});var Iu=o(Hr);Ir=r(Iu,"CODE",{});var Uu=o(Ir);yi=n(Uu,af),Uu.forEach(e),Iu.forEach(e),Ti=s(At),Ur=r(At,"TD",{});var xu=o(Ur);xr=r(xu,"CODE",{});var Ju=o(xr);bi=n(Ju,rf),Ju.forEach(e),xu.forEach(e),At.forEach(e),Di=s(u),L=r(u,"TR",{});var Pt=o(L);Jr=r(Pt,"TD",{});var ju=o(Jr);$i=n(ju,"like"),ju.forEach(e),wi=s(Pt),jr=r(Pt,"TD",{});var Qu=o(jr);Ci=n(Qu,`The named property matches. Uses % for variable length wildcard and - _ for single character wildcard. Case sensitive.`),Qu.forEach(e),Oi=s(Pt),Qr=r(Pt,"TD",{});var Mu=o(Qr);Mr=r(Mu,"CODE",{});var Lu=o(Mr);zi=n(Lu,of),Lu.forEach(e),Mu.forEach(e),Ri=s(Pt),Lr=r(Pt,"TD",{});var Yu=o(Lr);Yr=r(Yu,"CODE",{});var Wu=o(Yr);qi=n(Wu,lf),Wu.forEach(e),Yu.forEach(e),Pt.forEach(e),ki=s(u),Y=r(u,"TR",{});var Nt=o(Y);Wr=r(Nt,"TD",{});var Xu=o(Wr);Gi=n(Xu,"ilike"),Xu.forEach(e),Ai=s(Nt),Xr=r(Nt,"TD",{});var Vu=o(Xr);Pi=n(Vu,`The named property matches. Uses % for variable length wildcard and - _ for single character wildcard. Case insensitive.`),Vu.forEach(e),Ni=s(Nt),Vr=r(Nt,"TD",{});var Ku=o(Vr);Kr=r(Ku,"CODE",{});var Zu=o(Kr);Bi=n(Zu,nf),Zu.forEach(e),Ku.forEach(e),Fi=s(Nt),Zr=r(Nt,"TD",{});var t2=o(Zr);to=r(t2,"CODE",{});var e2=o(to);Si=n(e2,df),e2.forEach(e),t2.forEach(e),Nt.forEach(e),Hi=s(u),W=r(u,"TR",{});var Bt=o(W);eo=r(Bt,"TD",{});var a2=o(eo);Ii=n(a2,"gt"),a2.forEach(e),Ui=s(Bt),ao=r(Bt,"TD",{});var r2=o(ao);xi=n(r2,"The named property is greater than the value."),r2.forEach(e),Ji=s(Bt),ro=r(Bt,"TD",{});var o2=o(ro);oo=r(o2,"CODE",{});var l2=o(oo);ji=n(l2,sf),l2.forEach(e),o2.forEach(e),Qi=s(Bt),lo=r(Bt,"TD",{});var n2=o(lo);no=r(n2,"CODE",{});var d2=o(no);Mi=n(d2,hf),d2.forEach(e),n2.forEach(e),Bt.forEach(e),Li=s(u),X=r(u,"TR",{});var Ft=o(X);so=r(Ft,"TD",{});var s2=o(so);Yi=n(s2,"gte"),s2.forEach(e),Wi=s(Ft),io=r(Ft,"TD",{});var i2=o(io);Xi=n(i2,"The named property is greater than or equal to the value."),i2.forEach(e),Vi=s(Ft),ho=r(Ft,"TD",{});var h2=o(ho);co=r(h2,"CODE",{});var c2=o(co);Ki=n(c2,cf),c2.forEach(e),h2.forEach(e),Zi=s(Ft),fo=r(Ft,"TD",{});var f2=o(fo);uo=r(f2,"CODE",{});var u2=o(uo);th=n(u2,ff),u2.forEach(e),f2.forEach(e),Ft.forEach(e),eh=s(u),V=r(u,"TR",{});var St=o(V);Eo=r(St,"TD",{});var E2=o(Eo);ah=n(E2,"lt"),E2.forEach(e),rh=s(St),vo=r(St,"TD",{});var v2=o(vo);oh=n(v2,"The named property is less than the value."),v2.forEach(e),lh=s(St),mo=r(St,"TD",{});var m2=o(mo);go=r(m2,"CODE",{});var g2=o(go);nh=n(g2,uf),g2.forEach(e),m2.forEach(e),dh=s(St),po=r(St,"TD",{});var p2=o(po);_o=r(p2,"CODE",{});var _2=o(_o);sh=n(_2,Ef),_2.forEach(e),p2.forEach(e),St.forEach(e),ih=s(u),K=r(u,"TR",{});var Ht=o(K);yo=r(Ht,"TD",{});var y2=o(yo);hh=n(y2,"lte"),y2.forEach(e),ch=s(Ht),To=r(Ht,"TD",{});var T2=o(To);fh=n(T2,"The named property is less than or equal to the value."),T2.forEach(e),uh=s(Ht),bo=r(Ht,"TD",{});var b2=o(bo);Do=r(b2,"CODE",{});var D2=o(Do);Eh=n(D2,vf),D2.forEach(e),b2.forEach(e),vh=s(Ht),$o=r(Ht,"TD",{});var $2=o($o);wo=r($2,"CODE",{});var w2=o(wo);mh=n(w2,mf),w2.forEach(e),$2.forEach(e),Ht.forEach(e),gh=s(u),Z=r(u,"TR",{});var It=o(Z);Co=r(It,"TD",{});var C2=o(Co);ph=n(C2,"ref"),C2.forEach(e),_h=s(It),Oo=r(It,"TD",{});var O2=o(Oo);yh=n(O2,"The named property is the entity or contains the entity."),O2.forEach(e),Th=s(It),zo=r(It,"TD",{});var z2=o(zo);Ro=r(z2,"CODE",{});var R2=o(Ro);bh=n(R2,gf),R2.forEach(e),z2.forEach(e),Dh=s(It),qo=r(It,"TD",{});var q2=o(qo);ko=r(q2,"CODE",{});var k2=o(ko);$h=n(k2,pf),k2.forEach(e),q2.forEach(e),It.forEach(e),wh=s(u),tt=r(u,"TR",{});var Ut=o(tt);Go=r(Ut,"TD",{});var G2=o(Go);Ch=n(G2,"qref"),G2.forEach(e),Oh=s(Ut),Ao=r(Ut,"TD",{});var A2=o(Ao);zh=n(A2,`The named property is an entity that matches the query or contains - an entity that matches the query.`),A2.forEach(e),Rh=s(Ut),Po=r(Ut,"TD",{});var P2=o(Po);No=r(P2,"CODE",{});var N2=o(No);qh=n(N2,_f),N2.forEach(e),P2.forEach(e),kh=s(Ut),Bo=r(Ut,"TD",{});var B2=o(Bo);Fo=r(B2,"CODE",{});var F2=o(Fo);Gh=n(F2,yf),F2.forEach(e),B2.forEach(e),Ut.forEach(e),Ah=s(u),et=r(u,"TR",{});var xt=o(et);So=r(xt,"TD",{});var S2=o(So);Ph=n(S2,"selector"),S2.forEach(e),Nh=s(xt),Ho=r(xt,"TD",{});var H2=o(Ho);Bh=n(H2,`A selector. (Keep in mind, you can also use an array of these, just - like any other clause.)`),H2.forEach(e),Fh=s(xt),Io=r(xt,"TD",{});var I2=o(Io);Uo=r(I2,"CODE",{});var U2=o(Uo);Sh=n(U2,Tf),U2.forEach(e),I2.forEach(e),Hh=s(xt),xo=r(xt,"TD",{});var x2=o(xo);Jo=r(x2,"CODE",{});var J2=o(Jo);Ih=n(J2,bf),J2.forEach(e),x2.forEach(e),xt.forEach(e),u.forEach(e),El.forEach(e),j1.forEach(e),Uh=s(h),Vt=r(h,"P",{});var vl=o(Vt);xh=n(vl,`The clauses "equal", "contain", "gt", "gte", "lt", and "lte" can also accept - a third element. If value is null and the third element is a string, the - third element will be used with `),it=r(vl,"A",{href:!0,target:!0,rel:!0});var j2=o(it);Jh=n(j2,"Locutus' strtotime function"),j2.forEach(e),jh=n(vl,` to set the value to a relative timestamp. For example, the following selector - will look for all entities that were created in the last day.`),vl.forEach(e),Qh=s(h),g(Kt.$$.fragment,h),Mh=s(h),Te=r(h,"HEADER",{class:!0});var Q2=o(Te);jo=r(Q2,"H2",{});var M2=o(jo);Lh=n(M2,"Querying Examples"),M2.forEach(e),Q2.forEach(e),Yh=s(h),Qo=r(h,"P",{});var L2=o(Qo);Wh=n(L2,`So putting it all together, you can specify the options and selectors to - find the exact entities you want.`),L2.forEach(e),Xh=s(h),Mo=r(h,"P",{});var Y2=o(Mo);Vh=n(Y2,"Get the first FoobarBaz entity."),Y2.forEach(e),Kh=s(h),g(Zt.$$.fragment,h),Zh=s(h),Lo=r(h,"P",{});var W2=o(Lo);tc=n(W2,"Get the latest FoobarBaz entity."),W2.forEach(e),ec=s(h),g(te.$$.fragment,h),ac=s(h),Yo=r(h,"P",{});var X2=o(Yo);rc=n(X2,"Get all baz tagged entities, using the FoobarBaz class."),X2.forEach(e),oc=s(h),g(ee.$$.fragment,h),lc=s(h),Wo=r(h,"P",{});var V2=o(Wo);nc=n(V2,"Get the five last created bar and baz tagged entities."),V2.forEach(e),dc=s(h),g(ae.$$.fragment,h),sc=s(h),Xo=r(h,"P",{});var K2=o(Xo);ic=n(K2,"Get the five last modified bar and baz tagged entities."),K2.forEach(e),hc=s(h),g(re.$$.fragment,h),cc=s(h),Vo=r(h,"P",{});var Z2=o(Vo);fc=n(Z2,`Get the third page of sorted by name, baz tagged entities (if pages are 5 - entities long).`),Z2.forEach(e),uc=s(h),g(oe.$$.fragment,h),Ec=s(h),Ko=r(h,"P",{});var tE=o(Ko);vc=n(tE,"Get baz tagged entities with names."),tE.forEach(e),mc=s(h),g(le.$$.fragment,h),gc=s(h),Zo=r(h,"P",{});var eE=o(Zo);pc=n(eE,"Get baz tagged entities without names."),eE.forEach(e),_c=s(h),g(ne.$$.fragment,h),yc=s(h),tl=r(h,"P",{});var aE=o(tl);Tc=n(aE,"Get baz tagged entities without names or bar tagged entities with names."),aE.forEach(e),bc=s(h),g(de.$$.fragment,h),Dc=s(h),el=r(h,"P",{});var rE=o(el);$c=n(rE,"Get baz tagged entities with either first names or last names."),rE.forEach(e),wc=s(h),g(se.$$.fragment,h),Cc=s(h),al=r(h,"P",{});var oE=o(al);Oc=n(oE,"Get baz tagged entities created in the last day."),oE.forEach(e),zc=s(h),g(ie.$$.fragment,h),Rc=s(h),rl=r(h,"P",{});var lE=o(rl);qc=n(lE,`Get baz tagged entities with names, who either make only up to 8 dollars pay - or are under 22.`),lE.forEach(e),kc=s(h),g(he.$$.fragment,h),Gc=s(h),ol=r(h,"P",{});var nE=o(ol);Ac=n(nE,`Get baz tagged entities named Clark, James, Chris, Christopher, Jake, or - Jacob.`),nE.forEach(e),Pc=s(h),g(ce.$$.fragment,h),Nc=s(h),ll=r(h,"P",{});var dE=o(ll);Bc=n(dE,'Get baz tagged entities that belong to any user named "John" or "James".'),dE.forEach(e),Fc=s(h),g(fe.$$.fragment,h),h.forEach(e),dl=s(c),st=r(c,"SECTION",{class:!0});var ml=o(st);ht=r(ml,"A",{href:!0,class:!0,style:!0});var sE=o(ht);Sc=n(sE,"Previous: Creating Entities"),sE.forEach(e),Hc=s(ml),ct=r(ml,"A",{href:!0,class:!0,style:!0});var iE=o(ct);Ic=n(iE,"Next: Subscribing to Queries"),iE.forEach(e),ml.forEach(e),this.h()},h(){document.title="Entity Querying - User Guide - Nymph.js",Jt.a=ze,Uc(ve,"font-size","3em"),$(Ee,"class","major"),$(me,"class","major"),$(ge,"class","major"),$(pe,"class","table-wrapper"),$(_e,"class","table-wrapper"),$(ye,"class","table-wrapper"),$(it,"href","https://locutus.io/php/datetime/strtotime/"),$(it,"target","_blank"),$(it,"rel","noreferrer"),$(Te,"class","major"),$(ht,"href",cE+"/user-guide/creating-entities"),$(ht,"class","button"),Uc(ht,"margin",".5em"),$(ct,"href",cE+"/user-guide/subscribing-to-queries"),$(ct,"class","button"),Uc(ct,"margin",".5em"),$(st,"class","page-steps")},m(c,ue){Jt.m(yE,document.head),t(document.head,ze),gl(c,nl,ue),gl(c,i,ue),t(i,Ee),t(Ee,ve),t(ve,pl),t(i,_l),t(i,Re),t(Re,yl),t(i,Tl),t(i,me),t(me,qe),t(qe,bl),t(i,Dl),t(i,w),t(w,$l),t(w,ke),t(ke,wl),t(w,Cl),t(w,Ge),t(Ge,Ol),t(w,zl),t(w,Ae),t(Ae,Rl),t(w,ql),t(i,kl),p(jt,i,null),t(i,Gl),t(i,ge),t(ge,Pe),t(Pe,Al),t(i,Pl),t(i,at),t(at,Nl),t(at,Ne),t(Ne,Bl),t(at,Fl),t(at,Be),t(Be,Sl),t(at,Hl),t(i,Il),t(i,pe),t(pe,Qt),t(Qt,Fe),t(Fe,C),t(C,Se),t(Se,Ul),t(C,xl),t(C,He),t(He,Jl),t(C,jl),t(C,Ie),t(Ie,Ql),t(C,Ml),t(C,Ue),t(Ue,Ll),t(Qt,Yl),t(Qt,E),t(E,O),t(O,xe),t(xe,Wl),t(O,Xl),t(O,Je),t(Je,Vl),t(O,Kl),t(O,je),t(je,Zl),t(O,tn),t(O,Qe),t(Qe,en),t(E,an),t(E,z),t(z,Me),t(Me,rn),t(z,on),t(z,Le),t(Le,ln),t(z,nn),t(z,Ye),t(Ye,dn),t(z,sn),t(z,Mt),t(Mt,hn),t(Mt,We),t(We,cn),t(Mt,fn),t(E,un),t(E,R),t(R,Xe),t(Xe,En),t(R,vn),t(R,Ve),t(Ve,mn),t(R,gn),t(R,Ke),t(Ke,pn),t(R,_n),t(R,Ze),t(Ze,yn),t(E,Tn),t(E,q),t(q,ta),t(ta,bn),t(q,Dn),t(q,ea),t(ea,$n),t(q,wn),t(q,aa),t(aa,Cn),t(q,On),t(q,Lt),t(Lt,zn),t(Lt,ra),t(ra,Rn),t(Lt,qn),t(E,kn),t(E,k),t(k,oa),t(oa,Gn),t(k,An),t(k,la),t(la,Pn),t(k,Nn),t(k,na),t(na,Bn),t(k,Fn),t(k,da),t(da,Sn),t(E,Hn),t(E,G),t(G,sa),t(sa,In),t(G,Un),t(G,ia),t(ia,xn),t(G,Jn),t(G,ha),t(ha,jn),t(G,Qn),t(G,ca),t(ca,Mn),t(E,Ln),t(E,A),t(A,fa),t(fa,Yn),t(A,Wn),t(A,ua),t(ua,Xn),t(A,Vn),t(A,Ea),t(Ea,Kn),t(A,Zn),t(A,va),t(va,td),t(E,ed),t(E,P),t(P,ma),t(ma,ad),t(P,rd),t(P,ga),t(ga,od),t(P,ld),t(P,pa),t(pa,nd),t(P,dd),t(P,_a),t(_a,sd),t(E,id),t(E,N),t(N,ya),t(ya,hd),t(N,cd),t(N,Ta),t(Ta,fd),t(N,ud),t(N,ba),t(ba,Ed),t(N,vd),t(N,Da),t(Da,md),t(i,gd),t(i,Yt),t(Yt,pd),t(Yt,$a),t($a,_d),t(Yt,yd),t(i,Td),t(i,_e),t(_e,Wt),t(Wt,wa),t(wa,rt),t(rt,Ca),t(Ca,bd),t(rt,Dd),t(rt,Oa),t(Oa,$d),t(rt,wd),t(rt,za),t(za,Cd),t(Wt,Od),t(Wt,B),t(B,ot),t(ot,Ra),t(Ra,zd),t(ot,Rd),t(ot,qa),t(qa,qd),t(ot,kd),t(ot,ka),t(ka,Gd),t(B,Ad),t(B,lt),t(lt,Ga),t(Ga,Pd),t(lt,Nd),t(lt,Aa),t(Aa,Bd),t(lt,Fd),t(lt,Pa),t(Pa,Sd),t(B,Hd),t(B,nt),t(nt,Na),t(Na,Id),t(nt,Ud),t(nt,Ba),t(Ba,xd),t(nt,Jd),t(nt,Fa),t(Fa,jd),t(B,Qd),t(B,dt),t(dt,Sa),t(Sa,Md),t(dt,Ld),t(dt,Ha),t(Ha,Yd),t(dt,Wd),t(dt,Ia),t(Ia,Xd),t(i,Vd),t(i,F),t(F,Kd),t(F,Ua),t(Ua,Zd),t(F,ts),t(F,xa),t(xa,es),t(F,as),t(F,Ja),t(Ja,rs),t(F,os),t(i,ls),t(i,ye),t(ye,Xt),t(Xt,ja),t(ja,S),t(S,Qa),t(Qa,ns),t(S,ds),t(S,Ma),t(Ma,ss),t(S,is),t(S,La),t(La,hs),t(S,cs),t(S,Ya),t(Ya,fs),t(Xt,us),t(Xt,f),t(f,H),t(H,Wa),t(Wa,Es),t(H,vs),t(H,Xa),t(Xa,ms),t(H,gs),t(H,Va),t(Va,Ka),t(Ka,ps),t(H,_s),t(H,Za),t(Za,tr),t(tr,ys),t(f,Ts),t(f,I),t(I,er),t(er,bs),t(I,Ds),t(I,ar),t(ar,$s),t(I,ws),t(I,rr),t(rr,or),t(or,Cs),t(I,Os),t(I,lr),t(lr,nr),t(nr,zs),t(f,Rs),t(f,U),t(U,dr),t(dr,qs),t(U,ks),t(U,sr),t(sr,Gs),t(U,As),t(U,ir),t(ir,hr),t(hr,Ps),t(U,Ns),t(U,cr),t(cr,fr),t(fr,Bs),t(f,Fs),t(f,x),t(x,ur),t(ur,Ss),t(x,Hs),t(x,Er),t(Er,Is),t(x,Us),t(x,vr),t(vr,mr),t(mr,xs),t(x,Js),t(x,gr),t(gr,pr),t(pr,js),t(f,Qs),t(f,J),t(J,_r),t(_r,Ms),t(J,Ls),t(J,yr),t(yr,Ys),t(J,Ws),t(J,Tr),t(Tr,br),t(br,Xs),t(J,Vs),t(J,Dr),t(Dr,$r),t($r,Ks),t(f,Zs),t(f,j),t(j,wr),t(wr,ti),t(j,ei),t(j,Cr),t(Cr,ai),t(j,ri),t(j,Or),t(Or,zr),t(zr,oi),t(j,li),t(j,Rr),t(Rr,qr),t(qr,ni),t(f,di),t(f,Q),t(Q,kr),t(kr,si),t(Q,ii),t(Q,Gr),t(Gr,hi),t(Q,ci),t(Q,Ar),t(Ar,Pr),t(Pr,fi),t(Q,ui),t(Q,Nr),t(Nr,Br),t(Br,Ei),t(f,vi),t(f,M),t(M,Fr),t(Fr,mi),t(M,gi),t(M,Sr),t(Sr,pi),t(M,_i),t(M,Hr),t(Hr,Ir),t(Ir,yi),t(M,Ti),t(M,Ur),t(Ur,xr),t(xr,bi),t(f,Di),t(f,L),t(L,Jr),t(Jr,$i),t(L,wi),t(L,jr),t(jr,Ci),t(L,Oi),t(L,Qr),t(Qr,Mr),t(Mr,zi),t(L,Ri),t(L,Lr),t(Lr,Yr),t(Yr,qi),t(f,ki),t(f,Y),t(Y,Wr),t(Wr,Gi),t(Y,Ai),t(Y,Xr),t(Xr,Pi),t(Y,Ni),t(Y,Vr),t(Vr,Kr),t(Kr,Bi),t(Y,Fi),t(Y,Zr),t(Zr,to),t(to,Si),t(f,Hi),t(f,W),t(W,eo),t(eo,Ii),t(W,Ui),t(W,ao),t(ao,xi),t(W,Ji),t(W,ro),t(ro,oo),t(oo,ji),t(W,Qi),t(W,lo),t(lo,no),t(no,Mi),t(f,Li),t(f,X),t(X,so),t(so,Yi),t(X,Wi),t(X,io),t(io,Xi),t(X,Vi),t(X,ho),t(ho,co),t(co,Ki),t(X,Zi),t(X,fo),t(fo,uo),t(uo,th),t(f,eh),t(f,V),t(V,Eo),t(Eo,ah),t(V,rh),t(V,vo),t(vo,oh),t(V,lh),t(V,mo),t(mo,go),t(go,nh),t(V,dh),t(V,po),t(po,_o),t(_o,sh),t(f,ih),t(f,K),t(K,yo),t(yo,hh),t(K,ch),t(K,To),t(To,fh),t(K,uh),t(K,bo),t(bo,Do),t(Do,Eh),t(K,vh),t(K,$o),t($o,wo),t(wo,mh),t(f,gh),t(f,Z),t(Z,Co),t(Co,ph),t(Z,_h),t(Z,Oo),t(Oo,yh),t(Z,Th),t(Z,zo),t(zo,Ro),t(Ro,bh),t(Z,Dh),t(Z,qo),t(qo,ko),t(ko,$h),t(f,wh),t(f,tt),t(tt,Go),t(Go,Ch),t(tt,Oh),t(tt,Ao),t(Ao,zh),t(tt,Rh),t(tt,Po),t(Po,No),t(No,qh),t(tt,kh),t(tt,Bo),t(Bo,Fo),t(Fo,Gh),t(f,Ah),t(f,et),t(et,So),t(So,Ph),t(et,Nh),t(et,Ho),t(Ho,Bh),t(et,Fh),t(et,Io),t(Io,Uo),t(Uo,Sh),t(et,Hh),t(et,xo),t(xo,Jo),t(Jo,Ih),t(i,Uh),t(i,Vt),t(Vt,xh),t(Vt,it),t(it,Jh),t(Vt,jh),t(i,Qh),p(Kt,i,null),t(i,Mh),t(i,Te),t(Te,jo),t(jo,Lh),t(i,Yh),t(i,Qo),t(Qo,Wh),t(i,Xh),t(i,Mo),t(Mo,Vh),t(i,Kh),p(Zt,i,null),t(i,Zh),t(i,Lo),t(Lo,tc),t(i,ec),p(te,i,null),t(i,ac),t(i,Yo),t(Yo,rc),t(i,oc),p(ee,i,null),t(i,lc),t(i,Wo),t(Wo,nc),t(i,dc),p(ae,i,null),t(i,sc),t(i,Xo),t(Xo,ic),t(i,hc),p(re,i,null),t(i,cc),t(i,Vo),t(Vo,fc),t(i,uc),p(oe,i,null),t(i,Ec),t(i,Ko),t(Ko,vc),t(i,mc),p(le,i,null),t(i,gc),t(i,Zo),t(Zo,pc),t(i,_c),p(ne,i,null),t(i,yc),t(i,tl),t(tl,Tc),t(i,bc),p(de,i,null),t(i,Dc),t(i,el),t(el,$c),t(i,wc),p(se,i,null),t(i,Cc),t(i,al),t(al,Oc),t(i,zc),p(ie,i,null),t(i,Rc),t(i,rl),t(rl,qc),t(i,kc),p(he,i,null),t(i,Gc),t(i,ol),t(ol,Ac),t(i,Pc),p(ce,i,null),t(i,Nc),t(i,ll),t(ll,Bc),t(i,Fc),p(fe,i,null),gl(c,dl,ue),gl(c,st,ue),t(st,ht),t(ht,Sc),t(st,Hc),t(st,ct),t(ct,Ic),sl=!0},p:_E,i(c){sl||(_(jt.$$.fragment,c),_(Kt.$$.fragment,c),_(Zt.$$.fragment,c),_(te.$$.fragment,c),_(ee.$$.fragment,c),_(ae.$$.fragment,c),_(re.$$.fragment,c),_(oe.$$.fragment,c),_(le.$$.fragment,c),_(ne.$$.fragment,c),_(de.$$.fragment,c),_(se.$$.fragment,c),_(ie.$$.fragment,c),_(he.$$.fragment,c),_(ce.$$.fragment,c),_(fe.$$.fragment,c),sl=!0)},o(c){y(jt.$$.fragment,c),y(Kt.$$.fragment,c),y(Zt.$$.fragment,c),y(te.$$.fragment,c),y(ee.$$.fragment,c),y(ae.$$.fragment,c),y(re.$$.fragment,c),y(oe.$$.fragment,c),y(le.$$.fragment,c),y(ne.$$.fragment,c),y(de.$$.fragment,c),y(se.$$.fragment,c),y(ie.$$.fragment,c),y(he.$$.fragment,c),y(ce.$$.fragment,c),y(fe.$$.fragment,c),sl=!1},d(c){e(ze),c&&Jt.d(),c&&e(nl),c&&e(i),T(jt),T(Kt),T(Zt),T(te),T(ee),T(ae),T(re),T(oe),T(le),T(ne),T(de),T(se),T(ie),T(he),T(ce),T(fe),c&&e(dl),c&&e(st)}}}class CE extends uE{constructor(Jt){super(),EE(this,Jt,null,TE,vE,{})}}export{CE as component}; diff --git a/docs/_app/immutable/nodes/21.f0d11c05.js b/docs/_app/immutable/nodes/21.f0d11c05.js new file mode 100644 index 0000000..9e1ed1c --- /dev/null +++ b/docs/_app/immutable/nodes/21.f0d11c05.js @@ -0,0 +1,191 @@ +import{s as Ks,I as ti,e as Ws,a as n,f as e,l as f,x as ei,J as ai,d as l,c as o,g as a,h as d,r as i,m as u,j as T,k as Ys,u as t,i as en,v as ni}from"../chunks/scheduler.d7e45cc8.js";import{S as oi,i as li,b as g,d as m,m as p,a as _,t as C,e as y}from"../chunks/index.77720afb.js";import{H as x,g as ri}from"../chunks/github.64534d2c.js";import{t as E}from"../chunks/typescript.09c48802.js";import{b as Xs}from"../chunks/paths.d4a6803e.js";function di(Zs){let dt,Le,Ya,r,st,Sl='

    Entity Querying

    ',an,Ht,Ul="The real power behind Nymph is the entity querying system.",nn,it,Jl="

    Factory Method

    ",on,Pt,Ql=`The Entity class' factory method can take a GUID as an + argument. You can provide other factory functions that can take things as + well. For example, the User class in Tilmeld has a + factoryUsername method that takes a username. The method will return + a new entity if the queried entity is not found. You can determine if it was + found by checking that its GUID is not null.`,ln,ht,rn,ct,Vl="

    Nymph's Query Language

    ",dn,Mt,Wl=`The powerful way of querying entities is Nymph's getEntities + and getEntity methods. The first argument is an Options object.`,sn,ft,Yl=`
    Option Type Default Description
    class typeof Entity Entity The Entity class to query.
    limit number undefined The limit of entities to be returned. Not needed when using getEntity, as it always returns only one.
    offset number 0 The offset from the first matching entity, in order, to start + retrieving.
    reverse boolean false If true, entities will be retrieved from newest to oldest/largest + to smallest (with regard to sort).
    sort 'cdate' | 'mdate' | string 'cdate' How to sort the entities. Should be "cdate", "mdate", or the name + of a property.
    return 'entity' | 'guid' | 'count' 'entity' What to return, the entities with their data, just the GUIDs, or + just a count.
    source string undefined Will be 'client' if the query came from a REST request or the + PubSub server. (Mainly used in Tilmeld for access control.)
    skipCache boolean false If true, Nymph will skip the cache and retrieve the entity from the + DB.
    skipAc boolean false If true, Tilmeld will not filter returned entities according to + access controls. (If Tilmeld is installed.) (This is always set to + false by the REST endpoint and PubSub server.)
    `,hn,Lt,Xl=`Every argument following the Options is a Selector object. They contain + clauses and a type. An entity must match each selector to be returned. There + are four selector types, and they are defined on the type property.`,cn,ut,Zl="
    Type Name Description
    & And All clauses in the selector must match.
    | Or At least one clause in the selector must match.
    !& Not And All clauses in the selector must not match.
    !| Not Or At least one clause in the selector must not match.
    ",fn,Rt,Kl=`The other properties of the Selector are clauses. Clauses use the form name: value, or + name: [value1, value2, ...]. They can be negated by prepending + a bang (!) to the name, like '!name': value. A clause that has + multiple values is considered as multiple clauses in terms of matching for + "or" selectors.`,un,Ft,vt,Bt,tr="Property Description Example Works On",vn,c,b,jt,er="guid",gn,Nt,ar="The entity's GUID is equal.",mn,Re,Fe,nr="{type: '&', guid: '790229ae527f1511b3120b71'}",pn,_n,Be,je,or="entity.guid = '790229ae527f1511b3120b71'",Cn,yn,$,At,lr="tag",xn,Gt,rr="The entity has the tag.",En,Ne,Ae,dr="{type: '&', tag: 'foobar'}",Tn,bn,Ge,Ie,sr="entity.$addTag('foobar')",$n,Dn,D,It,ir="defined",wn,St,hr="The named property is not undefined.",zn,Se,Ue,cr="{type: '&', defined: 'foo'}",qn,On,Je,Qe,fr="entity.foo = 0",kn,Hn,w,Ut,ur="truthy",Pn,Jt,vr="The named property evaluates to true.",Mn,Ve,We,gr="{type: '&', truthy: 'foo'}",Ln,Rn,Ye,Xe,mr="entity.foo = 1",Fn,Bn,z,Qt,pr="equal",jn,Vt,_r=`The named property is defined and equals the value (their JSON + strings are identical).`,Nn,Ze,Ke,Cr="{type: '&', equal: ['foo', 0]}",An,Gn,ta,ea,yr="entity.foo = 0",In,Sn,q,Wt,xr="contain",Un,Yt,Er="The named property is an array that contains the value.",Jn,aa,na,Tr="{type: '&', contain: ['foo', 'bar']}",Qn,Vn,oa,la,br="entity.foo = ['bar', 'baz']",Wn,Yn,O,Xt,$r="match",Xn,Zt,Dr=`The named property matches. Uses POSIX RegExp. Case sensitive. Must + *not* be surrounded by any delimiters.`,Zn,ra,da,wr="{type: '&', match: ['foo', 'bar.*z']}",Kn,to,sa,ia,zr="entity.foo = 'foobarbaz'",eo,ao,k,Kt,qr="imatch",no,te,Or=`The named property matches. Uses POSIX RegExp. Case insensitive. + Must *not* be surrounded by any delimiters.`,oo,ha,ca,kr="{type: '&', imatch: ['foo', 'BaR.*Z']}",lo,ro,fa,ua,Hr="entity.foo = 'foobarbaz'",so,io,H,ee,Pr="like",ho,ae,Mr=`The named property matches. Uses % for variable length wildcard and + _ for single character wildcard. Case sensitive.`,co,va,ga,Lr="{type: '&', like: ['foo', 'f%bar_az']}",fo,uo,ma,pa,Rr="entity.foo = 'foobarbaz'",vo,go,P,ne,Fr="ilike",mo,oe,Br=`The named property matches. Uses % for variable length wildcard and + _ for single character wildcard. Case insensitive.`,po,_a,Ca,jr="{type: '&', ilike: ['foo', 'F%bAr_aZ']}",_o,Co,ya,xa,Nr="entity.foo = 'foobarbaz'",yo,xo,M,le,Ar="gt",Eo,re,Gr="The named property is greater than the value.",To,Ea,Ta,Ir="{type: '&', gt: ['foo', 5]}",bo,$o,ba,$a,Sr="entity.foo = 6",Do,wo,L,de,Ur="gte",zo,se,Jr="The named property is greater than or equal to the value.",qo,Da,wa,Qr="{type: '&', gte: ['foo', 6]}",Oo,ko,za,qa,Vr="entity.foo = 6",Ho,Po,R,ie,Wr="lt",Mo,he,Yr="The named property is less than the value.",Lo,Oa,ka,Xr="{type: '&', lt: ['foo', 7]}",Ro,Fo,Ha,Pa,Zr="entity.foo = 6",Bo,jo,F,ce,Kr="lte",No,fe,td="The named property is less than or equal to the value.",Ao,Ma,La,ed="{type: '&', lte: ['foo', 6]}",Go,Io,Ra,Fa,ad="entity.foo = 6",So,Uo,B,ue,nd="ref",Jo,ve,od="The named property is the entity or contains the entity.",Qo,Ba,ja,ld="{type: '&', ref: ['foo', '790229ae527f1511b3120b71']}",Vo,Wo,Na,Aa,rd="entity.foo = await Entity.factory('790229ae527f1511b3120b71')",Yo,Xo,j,ge,dd="qref",Zo,me,sd=`The named property is an entity that matches the query or contains + an entity that matches the query.`,Ko,Ga,Ia,id="{type: '&', qref: ['foo', [{class: Entity}, {type: '&', equal: ['name', 'Foobar']}]]}",tl,el,Sa,Ua,hd="entity.foo = await nymph.getEntity({class: Entity}, {type: '&', equal: ['name', 'Foobar']})",al,nl,N,pe,cd="selector",ol,_e,fd=`A selector. (Keep in mind, you can also use an array of these, just + like any other clause.)`,ll,Ja,Qa,ud="{type: '&', selector: {type: '|', tag: ['foo', 'bar']}}",rl,dl,Va,Wa,vd="entity.$addTag('bar')",sl,il,Ce,gd=`The clauses "equal", "contain", "gt", "gte", "lt", and "lte" can also accept + a third element. If value is null and the third element is a string, the + third element will be used with Locutus' strtotime function to set the value to a relative timestamp. For example, the following selector + will look for all entities that were created in the last day.`,hl,gt,cl,mt,md="

    Querying Examples

    ",fl,ye,pd=`So putting it all together, you can specify the options and selectors to + find the exact entities you want.`,ul,xe,_d="Get the first FoobarBaz entity.",vl,pt,gl,Ee,Cd="Get the latest FoobarBaz entity.",ml,_t,pl,Te,yd="Get all baz tagged entities, using the FoobarBaz class.",_l,Ct,Cl,be,xd="Get the five last created bar and baz tagged entities.",yl,yt,xl,$e,Ed="Get the five last modified bar and baz tagged entities.",El,xt,Tl,De,Td=`Get the third page of sorted by name, baz tagged entities (if pages are 5 + entities long).`,bl,Et,$l,we,bd="Get baz tagged entities with names.",Dl,Tt,wl,ze,$d="Get baz tagged entities without names.",zl,bt,ql,qe,Dd="Get baz tagged entities without names or bar tagged entities with names.",Ol,$t,kl,Oe,wd="Get baz tagged entities with either first names or last names.",Hl,Dt,Pl,ke,zd="Get baz tagged entities created in the last day.",Ml,wt,Ll,He,qd=`Get baz tagged entities with names, who either make only up to 8 dollars pay + or are under 22.`,Rl,zt,Fl,Pe,Od=`Get baz tagged entities named Clark, James, Chris, Christopher, Jake, or + Jacob.`,Bl,qt,jl,Me,kd='Get baz tagged entities that belong to any user named "John" or "James".',Nl,Ot,Xa,A,G,Al,Gl,I,Il,Za;return ht=new x({props:{language:E,code:`const baz = await FoobarBaz.factory(guid); +if (baz.guid == null) { + console.error("Can't find the Foobar Baz!"); +} + +// Tilmeld's User class has a username factory function. +const cronUser = await User.factoryUsername('cron'); +if (cronUser.guid == null) { + console.error("Can't find the cron user!"); +}`}}),gt=new x({props:{language:E,code:`{ + type: '&', + gte: ['cdate', null, '-1 day'] +}`}}),pt=new x({props:{language:E,code:"const entity = await nymph.getEntity({ class: FoobarBaz });"}}),_t=new x({props:{language:E,code:`const entity = await nymph.getEntity({ + class: FoobarBaz, + reverse: true +});`}}),Ct=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz + }, + { + type: '&', + tag: 'baz' + } +);`}}),yt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz, + reverse: true, + limit: 5 + }, + { + type: '&', + tag: ['bar', 'baz'] + } +);`}}),xt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz, + reverse: true, + limit: 5, + sort: 'mdate' + }, + { + type: '&', + tag: ['bar', 'baz'] + } +);`}}),Et=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz, + limit: 5, + offset: 10, + sort: 'name' + }, + { + type: '&', + tag: ['baz'] + } +);`}}),Tt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz + }, + { + type: '&', + tag: 'baz', + defined: 'name' + } +);`}}),bt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz + }, + { + type: '&', + tag: 'baz', + '!defined': 'name' + } +);`}}),$t=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz + }, + { + type: '|', + selector: [ + { + type: '&', + tag: 'baz', + '!defined': 'name' + }, + { + type: '&', + tag: 'bar', + defined: 'name' + } + ] + } +);`}}),Dt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz + }, + { + type: '&', + tag: 'baz' + }, + { + type: '|', + defined: ['firstName', 'lastName'] + } +);`}}),wt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz + }, + { + type: '&', + tag: 'baz', + gt: ['cdate', null, '-1 day'] + } +);`}}),zt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { + class: FoobarBaz + }, + { type: '&', tag: 'baz', defined: 'name' }, + { + type: '!|', // at least one must be false + gte: ['age', 22], + gt: ['pay', 8] + } +);`}}),qt=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { class: FoobarBaz }, + { type: '&', tag: 'baz' }, + { + type: '|', + equal: [ + ['firstName', 'Clark'], + ['firstName', 'James'] + ], + match: [ + ['firstName', '^Chris(topher)?$'], + ['firstName', '^Ja(ke|cob)$'] + ] + } +);`}}),Ot=new x({props:{language:E,code:`const entities = await nymph.getEntities( + { class: FoobarBaz }, + { + type: '&', + tag: 'baz', + qref: [ + 'user', + [ + { class: User }, + { + type: '|', + like: [ + ['name', 'John %'], + ['name', 'James %'] + ] + } + ] + ] + } +);`}}),{c(){dt=new ti(!1),Le=Ws(),Ya=n(),r=e("section"),st=e("header"),st.innerHTML=Sl,an=n(),Ht=e("p"),Ht.textContent=Ul,nn=n(),it=e("header"),it.innerHTML=Jl,on=n(),Pt=e("p"),Pt.innerHTML=Ql,ln=n(),g(ht.$$.fragment),rn=n(),ct=e("header"),ct.innerHTML=Vl,dn=n(),Mt=e("p"),Mt.innerHTML=Wl,sn=n(),ft=e("div"),ft.innerHTML=Yl,hn=n(),Lt=e("p"),Lt.innerHTML=Xl,cn=n(),ut=e("div"),ut.innerHTML=Zl,fn=n(),Rt=e("p"),Rt.innerHTML=Kl,un=n(),Ft=e("div"),vt=e("table"),Bt=e("thead"),Bt.innerHTML=tr,vn=n(),c=e("tbody"),b=e("tr"),jt=e("td"),jt.textContent=er,gn=n(),Nt=e("td"),Nt.textContent=ar,mn=n(),Re=e("td"),Fe=e("code"),pn=f(nr),_n=n(),Be=e("td"),je=e("code"),Cn=f(or),yn=n(),$=e("tr"),At=e("td"),At.textContent=lr,xn=n(),Gt=e("td"),Gt.textContent=rr,En=n(),Ne=e("td"),Ae=e("code"),Tn=f(dr),bn=n(),Ge=e("td"),Ie=e("code"),$n=f(sr),Dn=n(),D=e("tr"),It=e("td"),It.textContent=ir,wn=n(),St=e("td"),St.textContent=hr,zn=n(),Se=e("td"),Ue=e("code"),qn=f(cr),On=n(),Je=e("td"),Qe=e("code"),kn=f(fr),Hn=n(),w=e("tr"),Ut=e("td"),Ut.textContent=ur,Pn=n(),Jt=e("td"),Jt.textContent=vr,Mn=n(),Ve=e("td"),We=e("code"),Ln=f(gr),Rn=n(),Ye=e("td"),Xe=e("code"),Fn=f(mr),Bn=n(),z=e("tr"),Qt=e("td"),Qt.textContent=pr,jn=n(),Vt=e("td"),Vt.textContent=_r,Nn=n(),Ze=e("td"),Ke=e("code"),An=f(Cr),Gn=n(),ta=e("td"),ea=e("code"),In=f(yr),Sn=n(),q=e("tr"),Wt=e("td"),Wt.textContent=xr,Un=n(),Yt=e("td"),Yt.textContent=Er,Jn=n(),aa=e("td"),na=e("code"),Qn=f(Tr),Vn=n(),oa=e("td"),la=e("code"),Wn=f(br),Yn=n(),O=e("tr"),Xt=e("td"),Xt.textContent=$r,Xn=n(),Zt=e("td"),Zt.textContent=Dr,Zn=n(),ra=e("td"),da=e("code"),Kn=f(wr),to=n(),sa=e("td"),ia=e("code"),eo=f(zr),ao=n(),k=e("tr"),Kt=e("td"),Kt.textContent=qr,no=n(),te=e("td"),te.textContent=Or,oo=n(),ha=e("td"),ca=e("code"),lo=f(kr),ro=n(),fa=e("td"),ua=e("code"),so=f(Hr),io=n(),H=e("tr"),ee=e("td"),ee.textContent=Pr,ho=n(),ae=e("td"),ae.textContent=Mr,co=n(),va=e("td"),ga=e("code"),fo=f(Lr),uo=n(),ma=e("td"),pa=e("code"),vo=f(Rr),go=n(),P=e("tr"),ne=e("td"),ne.textContent=Fr,mo=n(),oe=e("td"),oe.textContent=Br,po=n(),_a=e("td"),Ca=e("code"),_o=f(jr),Co=n(),ya=e("td"),xa=e("code"),yo=f(Nr),xo=n(),M=e("tr"),le=e("td"),le.textContent=Ar,Eo=n(),re=e("td"),re.textContent=Gr,To=n(),Ea=e("td"),Ta=e("code"),bo=f(Ir),$o=n(),ba=e("td"),$a=e("code"),Do=f(Sr),wo=n(),L=e("tr"),de=e("td"),de.textContent=Ur,zo=n(),se=e("td"),se.textContent=Jr,qo=n(),Da=e("td"),wa=e("code"),Oo=f(Qr),ko=n(),za=e("td"),qa=e("code"),Ho=f(Vr),Po=n(),R=e("tr"),ie=e("td"),ie.textContent=Wr,Mo=n(),he=e("td"),he.textContent=Yr,Lo=n(),Oa=e("td"),ka=e("code"),Ro=f(Xr),Fo=n(),Ha=e("td"),Pa=e("code"),Bo=f(Zr),jo=n(),F=e("tr"),ce=e("td"),ce.textContent=Kr,No=n(),fe=e("td"),fe.textContent=td,Ao=n(),Ma=e("td"),La=e("code"),Go=f(ed),Io=n(),Ra=e("td"),Fa=e("code"),So=f(ad),Uo=n(),B=e("tr"),ue=e("td"),ue.textContent=nd,Jo=n(),ve=e("td"),ve.textContent=od,Qo=n(),Ba=e("td"),ja=e("code"),Vo=f(ld),Wo=n(),Na=e("td"),Aa=e("code"),Yo=f(rd),Xo=n(),j=e("tr"),ge=e("td"),ge.textContent=dd,Zo=n(),me=e("td"),me.textContent=sd,Ko=n(),Ga=e("td"),Ia=e("code"),tl=f(id),el=n(),Sa=e("td"),Ua=e("code"),al=f(hd),nl=n(),N=e("tr"),pe=e("td"),pe.textContent=cd,ol=n(),_e=e("td"),_e.textContent=fd,ll=n(),Ja=e("td"),Qa=e("code"),rl=f(ud),dl=n(),Va=e("td"),Wa=e("code"),sl=f(vd),il=n(),Ce=e("p"),Ce.innerHTML=gd,hl=n(),g(gt.$$.fragment),cl=n(),mt=e("header"),mt.innerHTML=md,fl=n(),ye=e("p"),ye.textContent=pd,ul=n(),xe=e("p"),xe.textContent=_d,vl=n(),g(pt.$$.fragment),gl=n(),Ee=e("p"),Ee.textContent=Cd,ml=n(),g(_t.$$.fragment),pl=n(),Te=e("p"),Te.textContent=yd,_l=n(),g(Ct.$$.fragment),Cl=n(),be=e("p"),be.textContent=xd,yl=n(),g(yt.$$.fragment),xl=n(),$e=e("p"),$e.textContent=Ed,El=n(),g(xt.$$.fragment),Tl=n(),De=e("p"),De.textContent=Td,bl=n(),g(Et.$$.fragment),$l=n(),we=e("p"),we.textContent=bd,Dl=n(),g(Tt.$$.fragment),wl=n(),ze=e("p"),ze.textContent=$d,zl=n(),g(bt.$$.fragment),ql=n(),qe=e("p"),qe.textContent=Dd,Ol=n(),g($t.$$.fragment),kl=n(),Oe=e("p"),Oe.textContent=wd,Hl=n(),g(Dt.$$.fragment),Pl=n(),ke=e("p"),ke.textContent=zd,Ml=n(),g(wt.$$.fragment),Ll=n(),He=e("p"),He.textContent=qd,Rl=n(),g(zt.$$.fragment),Fl=n(),Pe=e("p"),Pe.textContent=Od,Bl=n(),g(qt.$$.fragment),jl=n(),Me=e("p"),Me.textContent=kd,Nl=n(),g(Ot.$$.fragment),Xa=n(),A=e("section"),G=e("a"),Al=f("Previous: Creating Entities"),Gl=n(),I=e("a"),Il=f("Next: Subscribing to Queries"),this.h()},l(h){const kt=ei("svelte-13nmepq",document.head);dt=ai(kt,!1),Le=Ws(),kt.forEach(l),Ya=o(h),r=a(h,"SECTION",{});var s=d(r);st=a(s,"HEADER",{class:!0,"data-svelte-h":!0}),i(st)!=="svelte-1icpcsf"&&(st.innerHTML=Sl),an=o(s),Ht=a(s,"P",{"data-svelte-h":!0}),i(Ht)!=="svelte-1fqfh7l"&&(Ht.textContent=Ul),nn=o(s),it=a(s,"HEADER",{class:!0,"data-svelte-h":!0}),i(it)!=="svelte-32rkd2"&&(it.innerHTML=Jl),on=o(s),Pt=a(s,"P",{"data-svelte-h":!0}),i(Pt)!=="svelte-573aj2"&&(Pt.innerHTML=Ql),ln=o(s),m(ht.$$.fragment,s),rn=o(s),ct=a(s,"HEADER",{class:!0,"data-svelte-h":!0}),i(ct)!=="svelte-1ueal5j"&&(ct.innerHTML=Vl),dn=o(s),Mt=a(s,"P",{"data-svelte-h":!0}),i(Mt)!=="svelte-3b2tnp"&&(Mt.innerHTML=Wl),sn=o(s),ft=a(s,"DIV",{class:!0,"data-svelte-h":!0}),i(ft)!=="svelte-dda39x"&&(ft.innerHTML=Yl),hn=o(s),Lt=a(s,"P",{"data-svelte-h":!0}),i(Lt)!=="svelte-rds32m"&&(Lt.innerHTML=Xl),cn=o(s),ut=a(s,"DIV",{class:!0,"data-svelte-h":!0}),i(ut)!=="svelte-c9fp49"&&(ut.innerHTML=Zl),fn=o(s),Rt=a(s,"P",{"data-svelte-h":!0}),i(Rt)!=="svelte-12ho7vi"&&(Rt.innerHTML=Kl),un=o(s),Ft=a(s,"DIV",{class:!0});var Hd=d(Ft);vt=a(Hd,"TABLE",{});var Ka=d(vt);Bt=a(Ka,"THEAD",{"data-svelte-h":!0}),i(Bt)!=="svelte-wlou51"&&(Bt.innerHTML=tr),vn=o(Ka),c=a(Ka,"TBODY",{});var v=d(c);b=a(v,"TR",{});var S=d(b);jt=a(S,"TD",{"data-svelte-h":!0}),i(jt)!=="svelte-zjrq6v"&&(jt.textContent=er),gn=o(S),Nt=a(S,"TD",{"data-svelte-h":!0}),i(Nt)!=="svelte-b3ee33"&&(Nt.textContent=ar),mn=o(S),Re=a(S,"TD",{});var Pd=d(Re);Fe=a(Pd,"CODE",{});var Md=d(Fe);pn=u(Md,nr),Md.forEach(l),Pd.forEach(l),_n=o(S),Be=a(S,"TD",{});var Ld=d(Be);je=a(Ld,"CODE",{});var Rd=d(je);Cn=u(Rd,or),Rd.forEach(l),Ld.forEach(l),S.forEach(l),yn=o(v),$=a(v,"TR",{});var U=d($);At=a(U,"TD",{"data-svelte-h":!0}),i(At)!=="svelte-utrf0q"&&(At.textContent=lr),xn=o(U),Gt=a(U,"TD",{"data-svelte-h":!0}),i(Gt)!=="svelte-zd5t41"&&(Gt.textContent=rr),En=o(U),Ne=a(U,"TD",{});var Fd=d(Ne);Ae=a(Fd,"CODE",{});var Bd=d(Ae);Tn=u(Bd,dr),Bd.forEach(l),Fd.forEach(l),bn=o(U),Ge=a(U,"TD",{});var jd=d(Ge);Ie=a(jd,"CODE",{});var Nd=d(Ie);$n=u(Nd,sr),Nd.forEach(l),jd.forEach(l),U.forEach(l),Dn=o(v),D=a(v,"TR",{});var J=d(D);It=a(J,"TD",{"data-svelte-h":!0}),i(It)!=="svelte-18x05u9"&&(It.textContent=ir),wn=o(J),St=a(J,"TD",{"data-svelte-h":!0}),i(St)!=="svelte-1sqmq84"&&(St.textContent=hr),zn=o(J),Se=a(J,"TD",{});var Ad=d(Se);Ue=a(Ad,"CODE",{});var Gd=d(Ue);qn=u(Gd,cr),Gd.forEach(l),Ad.forEach(l),On=o(J),Je=a(J,"TD",{});var Id=d(Je);Qe=a(Id,"CODE",{});var Sd=d(Qe);kn=u(Sd,fr),Sd.forEach(l),Id.forEach(l),J.forEach(l),Hn=o(v),w=a(v,"TR",{});var Q=d(w);Ut=a(Q,"TD",{"data-svelte-h":!0}),i(Ut)!=="svelte-q7284i"&&(Ut.textContent=ur),Pn=o(Q),Jt=a(Q,"TD",{"data-svelte-h":!0}),i(Jt)!=="svelte-10sz97g"&&(Jt.textContent=vr),Mn=o(Q),Ve=a(Q,"TD",{});var Ud=d(Ve);We=a(Ud,"CODE",{});var Jd=d(We);Ln=u(Jd,gr),Jd.forEach(l),Ud.forEach(l),Rn=o(Q),Ye=a(Q,"TD",{});var Qd=d(Ye);Xe=a(Qd,"CODE",{});var Vd=d(Xe);Fn=u(Vd,mr),Vd.forEach(l),Qd.forEach(l),Q.forEach(l),Bn=o(v),z=a(v,"TR",{});var V=d(z);Qt=a(V,"TD",{"data-svelte-h":!0}),i(Qt)!=="svelte-xyy646"&&(Qt.textContent=pr),jn=o(V),Vt=a(V,"TD",{"data-svelte-h":!0}),i(Vt)!=="svelte-1rng31s"&&(Vt.textContent=_r),Nn=o(V),Ze=a(V,"TD",{});var Wd=d(Ze);Ke=a(Wd,"CODE",{});var Yd=d(Ke);An=u(Yd,Cr),Yd.forEach(l),Wd.forEach(l),Gn=o(V),ta=a(V,"TD",{});var Xd=d(ta);ea=a(Xd,"CODE",{});var Zd=d(ea);In=u(Zd,yr),Zd.forEach(l),Xd.forEach(l),V.forEach(l),Sn=o(v),q=a(v,"TR",{});var W=d(q);Wt=a(W,"TD",{"data-svelte-h":!0}),i(Wt)!=="svelte-1dvad2e"&&(Wt.textContent=xr),Un=o(W),Yt=a(W,"TD",{"data-svelte-h":!0}),i(Yt)!=="svelte-15om4h9"&&(Yt.textContent=Er),Jn=o(W),aa=a(W,"TD",{});var Kd=d(aa);na=a(Kd,"CODE",{});var ts=d(na);Qn=u(ts,Tr),ts.forEach(l),Kd.forEach(l),Vn=o(W),oa=a(W,"TD",{});var es=d(oa);la=a(es,"CODE",{});var as=d(la);Wn=u(as,br),as.forEach(l),es.forEach(l),W.forEach(l),Yn=o(v),O=a(v,"TR",{});var Y=d(O);Xt=a(Y,"TD",{"data-svelte-h":!0}),i(Xt)!=="svelte-h38ctp"&&(Xt.textContent=$r),Xn=o(Y),Zt=a(Y,"TD",{"data-svelte-h":!0}),i(Zt)!=="svelte-1kk9bx5"&&(Zt.textContent=Dr),Zn=o(Y),ra=a(Y,"TD",{});var ns=d(ra);da=a(ns,"CODE",{});var os=d(da);Kn=u(os,wr),os.forEach(l),ns.forEach(l),to=o(Y),sa=a(Y,"TD",{});var ls=d(sa);ia=a(ls,"CODE",{});var rs=d(ia);eo=u(rs,zr),rs.forEach(l),ls.forEach(l),Y.forEach(l),ao=o(v),k=a(v,"TR",{});var X=d(k);Kt=a(X,"TD",{"data-svelte-h":!0}),i(Kt)!=="svelte-x6n2mu"&&(Kt.textContent=qr),no=o(X),te=a(X,"TD",{"data-svelte-h":!0}),i(te)!=="svelte-w9bvkk"&&(te.textContent=Or),oo=o(X),ha=a(X,"TD",{});var ds=d(ha);ca=a(ds,"CODE",{});var ss=d(ca);lo=u(ss,kr),ss.forEach(l),ds.forEach(l),ro=o(X),fa=a(X,"TD",{});var is=d(fa);ua=a(is,"CODE",{});var hs=d(ua);so=u(hs,Hr),hs.forEach(l),is.forEach(l),X.forEach(l),io=o(v),H=a(v,"TR",{});var Z=d(H);ee=a(Z,"TD",{"data-svelte-h":!0}),i(ee)!=="svelte-1kydywp"&&(ee.textContent=Pr),ho=o(Z),ae=a(Z,"TD",{"data-svelte-h":!0}),i(ae)!=="svelte-16sns6g"&&(ae.textContent=Mr),co=o(Z),va=a(Z,"TD",{});var cs=d(va);ga=a(cs,"CODE",{});var fs=d(ga);fo=u(fs,Lr),fs.forEach(l),cs.forEach(l),uo=o(Z),ma=a(Z,"TD",{});var us=d(ma);pa=a(us,"CODE",{});var vs=d(pa);vo=u(vs,Rr),vs.forEach(l),us.forEach(l),Z.forEach(l),go=o(v),P=a(v,"TR",{});var K=d(P);ne=a(K,"TD",{"data-svelte-h":!0}),i(ne)!=="svelte-1q4dvgq"&&(ne.textContent=Fr),mo=o(K),oe=a(K,"TD",{"data-svelte-h":!0}),i(oe)!=="svelte-qjzux9"&&(oe.textContent=Br),po=o(K),_a=a(K,"TD",{});var gs=d(_a);Ca=a(gs,"CODE",{});var ms=d(Ca);_o=u(ms,jr),ms.forEach(l),gs.forEach(l),Co=o(K),ya=a(K,"TD",{});var ps=d(ya);xa=a(ps,"CODE",{});var _s=d(xa);yo=u(_s,Nr),_s.forEach(l),ps.forEach(l),K.forEach(l),xo=o(v),M=a(v,"TR",{});var tt=d(M);le=a(tt,"TD",{"data-svelte-h":!0}),i(le)!=="svelte-q513jt"&&(le.textContent=Ar),Eo=o(tt),re=a(tt,"TD",{"data-svelte-h":!0}),i(re)!=="svelte-12almsc"&&(re.textContent=Gr),To=o(tt),Ea=a(tt,"TD",{});var Cs=d(Ea);Ta=a(Cs,"CODE",{});var ys=d(Ta);bo=u(ys,Ir),ys.forEach(l),Cs.forEach(l),$o=o(tt),ba=a(tt,"TD",{});var xs=d(ba);$a=a(xs,"CODE",{});var Es=d($a);Do=u(Es,Sr),Es.forEach(l),xs.forEach(l),tt.forEach(l),wo=o(v),L=a(v,"TR",{});var et=d(L);de=a(et,"TD",{"data-svelte-h":!0}),i(de)!=="svelte-1nllf6w"&&(de.textContent=Ur),zo=o(et),se=a(et,"TD",{"data-svelte-h":!0}),i(se)!=="svelte-1cr22em"&&(se.textContent=Jr),qo=o(et),Da=a(et,"TD",{});var Ts=d(Da);wa=a(Ts,"CODE",{});var bs=d(wa);Oo=u(bs,Qr),bs.forEach(l),Ts.forEach(l),ko=o(et),za=a(et,"TD",{});var $s=d(za);qa=a($s,"CODE",{});var Ds=d(qa);Ho=u(Ds,Vr),Ds.forEach(l),$s.forEach(l),et.forEach(l),Po=o(v),R=a(v,"TR",{});var at=d(R);ie=a(at,"TD",{"data-svelte-h":!0}),i(ie)!=="svelte-pznn9q"&&(ie.textContent=Wr),Mo=o(at),he=a(at,"TD",{"data-svelte-h":!0}),i(he)!=="svelte-f9fs8x"&&(he.textContent=Yr),Lo=o(at),Oa=a(at,"TD",{});var ws=d(Oa);ka=a(ws,"CODE",{});var zs=d(ka);Ro=u(zs,Xr),zs.forEach(l),ws.forEach(l),Fo=o(at),Ha=a(at,"TD",{});var qs=d(Ha);Pa=a(qs,"CODE",{});var Os=d(Pa);Bo=u(Os,Zr),Os.forEach(l),qs.forEach(l),at.forEach(l),jo=o(v),F=a(v,"TR",{});var nt=d(F);ce=a(nt,"TD",{"data-svelte-h":!0}),i(ce)!=="svelte-1noldbj"&&(ce.textContent=Kr),No=o(nt),fe=a(nt,"TD",{"data-svelte-h":!0}),i(fe)!=="svelte-1ys40pf"&&(fe.textContent=td),Ao=o(nt),Ma=a(nt,"TD",{});var ks=d(Ma);La=a(ks,"CODE",{});var Hs=d(La);Go=u(Hs,ed),Hs.forEach(l),ks.forEach(l),Io=o(nt),Ra=a(nt,"TD",{});var Ps=d(Ra);Fa=a(Ps,"CODE",{});var Ms=d(Fa);So=u(Ms,ad),Ms.forEach(l),Ps.forEach(l),nt.forEach(l),Uo=o(v),B=a(v,"TR",{});var ot=d(B);ue=a(ot,"TD",{"data-svelte-h":!0}),i(ue)!=="svelte-1f8pzwh"&&(ue.textContent=nd),Jo=o(ot),ve=a(ot,"TD",{"data-svelte-h":!0}),i(ve)!=="svelte-16nmna1"&&(ve.textContent=od),Qo=o(ot),Ba=a(ot,"TD",{});var Ls=d(Ba);ja=a(Ls,"CODE",{});var Rs=d(ja);Vo=u(Rs,ld),Rs.forEach(l),Ls.forEach(l),Wo=o(ot),Na=a(ot,"TD",{});var Fs=d(Na);Aa=a(Fs,"CODE",{});var Bs=d(Aa);Yo=u(Bs,rd),Bs.forEach(l),Fs.forEach(l),ot.forEach(l),Xo=o(v),j=a(v,"TR",{});var lt=d(j);ge=a(lt,"TD",{"data-svelte-h":!0}),i(ge)!=="svelte-qyl9gq"&&(ge.textContent=dd),Zo=o(lt),me=a(lt,"TD",{"data-svelte-h":!0}),i(me)!=="svelte-42cvq9"&&(me.textContent=sd),Ko=o(lt),Ga=a(lt,"TD",{});var js=d(Ga);Ia=a(js,"CODE",{});var Ns=d(Ia);tl=u(Ns,id),Ns.forEach(l),js.forEach(l),el=o(lt),Sa=a(lt,"TD",{});var As=d(Sa);Ua=a(As,"CODE",{});var Gs=d(Ua);al=u(Gs,hd),Gs.forEach(l),As.forEach(l),lt.forEach(l),nl=o(v),N=a(v,"TR",{});var rt=d(N);pe=a(rt,"TD",{"data-svelte-h":!0}),i(pe)!=="svelte-hxhsl7"&&(pe.textContent=cd),ol=o(rt),_e=a(rt,"TD",{"data-svelte-h":!0}),i(_e)!=="svelte-duos4g"&&(_e.textContent=fd),ll=o(rt),Ja=a(rt,"TD",{});var Is=d(Ja);Qa=a(Is,"CODE",{});var Ss=d(Qa);rl=u(Ss,ud),Ss.forEach(l),Is.forEach(l),dl=o(rt),Va=a(rt,"TD",{});var Us=d(Va);Wa=a(Us,"CODE",{});var Js=d(Wa);sl=u(Js,vd),Js.forEach(l),Us.forEach(l),rt.forEach(l),v.forEach(l),Ka.forEach(l),Hd.forEach(l),il=o(s),Ce=a(s,"P",{"data-svelte-h":!0}),i(Ce)!=="svelte-1kyrj43"&&(Ce.innerHTML=gd),hl=o(s),m(gt.$$.fragment,s),cl=o(s),mt=a(s,"HEADER",{class:!0,"data-svelte-h":!0}),i(mt)!=="svelte-jpfs90"&&(mt.innerHTML=md),fl=o(s),ye=a(s,"P",{"data-svelte-h":!0}),i(ye)!=="svelte-139klyl"&&(ye.textContent=pd),ul=o(s),xe=a(s,"P",{"data-svelte-h":!0}),i(xe)!=="svelte-1kgoqeo"&&(xe.textContent=_d),vl=o(s),m(pt.$$.fragment,s),gl=o(s),Ee=a(s,"P",{"data-svelte-h":!0}),i(Ee)!=="svelte-cp7oix"&&(Ee.textContent=Cd),ml=o(s),m(_t.$$.fragment,s),pl=o(s),Te=a(s,"P",{"data-svelte-h":!0}),i(Te)!=="svelte-359lmc"&&(Te.textContent=yd),_l=o(s),m(Ct.$$.fragment,s),Cl=o(s),be=a(s,"P",{"data-svelte-h":!0}),i(be)!=="svelte-y4dokz"&&(be.textContent=xd),yl=o(s),m(yt.$$.fragment,s),xl=o(s),$e=a(s,"P",{"data-svelte-h":!0}),i($e)!=="svelte-9ltm1a"&&($e.textContent=Ed),El=o(s),m(xt.$$.fragment,s),Tl=o(s),De=a(s,"P",{"data-svelte-h":!0}),i(De)!=="svelte-1earz9t"&&(De.textContent=Td),bl=o(s),m(Et.$$.fragment,s),$l=o(s),we=a(s,"P",{"data-svelte-h":!0}),i(we)!=="svelte-lhyg20"&&(we.textContent=bd),Dl=o(s),m(Tt.$$.fragment,s),wl=o(s),ze=a(s,"P",{"data-svelte-h":!0}),i(ze)!=="svelte-k44fog"&&(ze.textContent=$d),zl=o(s),m(bt.$$.fragment,s),ql=o(s),qe=a(s,"P",{"data-svelte-h":!0}),i(qe)!=="svelte-4jtw0z"&&(qe.textContent=Dd),Ol=o(s),m($t.$$.fragment,s),kl=o(s),Oe=a(s,"P",{"data-svelte-h":!0}),i(Oe)!=="svelte-1uwezc0"&&(Oe.textContent=wd),Hl=o(s),m(Dt.$$.fragment,s),Pl=o(s),ke=a(s,"P",{"data-svelte-h":!0}),i(ke)!=="svelte-1khclo2"&&(ke.textContent=zd),Ml=o(s),m(wt.$$.fragment,s),Ll=o(s),He=a(s,"P",{"data-svelte-h":!0}),i(He)!=="svelte-utkf3b"&&(He.textContent=qd),Rl=o(s),m(zt.$$.fragment,s),Fl=o(s),Pe=a(s,"P",{"data-svelte-h":!0}),i(Pe)!=="svelte-1sdwrs5"&&(Pe.textContent=Od),Bl=o(s),m(qt.$$.fragment,s),jl=o(s),Me=a(s,"P",{"data-svelte-h":!0}),i(Me)!=="svelte-1g02ke1"&&(Me.textContent=kd),Nl=o(s),m(Ot.$$.fragment,s),s.forEach(l),Xa=o(h),A=a(h,"SECTION",{class:!0});var tn=d(A);G=a(tn,"A",{href:!0,class:!0,style:!0});var Qs=d(G);Al=u(Qs,"Previous: Creating Entities"),Qs.forEach(l),Gl=o(tn),I=a(tn,"A",{href:!0,class:!0,style:!0});var Vs=d(I);Il=u(Vs,"Next: Subscribing to Queries"),Vs.forEach(l),tn.forEach(l),this.h()},h(){document.title="Entity Querying - User Guide - Nymph.js",dt.a=Le,T(st,"class","major"),T(it,"class","major"),T(ct,"class","major"),T(ft,"class","table-wrapper"),T(ut,"class","table-wrapper"),T(Ft,"class","table-wrapper"),T(mt,"class","major"),T(G,"href",Xs+"/user-guide/creating-entities"),T(G,"class","button"),Ys(G,"margin",".5em"),T(I,"href",Xs+"/user-guide/subscribing-to-queries"),T(I,"class","button"),Ys(I,"margin",".5em"),T(A,"class","page-steps")},m(h,kt){dt.m(ri,document.head),t(document.head,Le),en(h,Ya,kt),en(h,r,kt),t(r,st),t(r,an),t(r,Ht),t(r,nn),t(r,it),t(r,on),t(r,Pt),t(r,ln),p(ht,r,null),t(r,rn),t(r,ct),t(r,dn),t(r,Mt),t(r,sn),t(r,ft),t(r,hn),t(r,Lt),t(r,cn),t(r,ut),t(r,fn),t(r,Rt),t(r,un),t(r,Ft),t(Ft,vt),t(vt,Bt),t(vt,vn),t(vt,c),t(c,b),t(b,jt),t(b,gn),t(b,Nt),t(b,mn),t(b,Re),t(Re,Fe),t(Fe,pn),t(b,_n),t(b,Be),t(Be,je),t(je,Cn),t(c,yn),t(c,$),t($,At),t($,xn),t($,Gt),t($,En),t($,Ne),t(Ne,Ae),t(Ae,Tn),t($,bn),t($,Ge),t(Ge,Ie),t(Ie,$n),t(c,Dn),t(c,D),t(D,It),t(D,wn),t(D,St),t(D,zn),t(D,Se),t(Se,Ue),t(Ue,qn),t(D,On),t(D,Je),t(Je,Qe),t(Qe,kn),t(c,Hn),t(c,w),t(w,Ut),t(w,Pn),t(w,Jt),t(w,Mn),t(w,Ve),t(Ve,We),t(We,Ln),t(w,Rn),t(w,Ye),t(Ye,Xe),t(Xe,Fn),t(c,Bn),t(c,z),t(z,Qt),t(z,jn),t(z,Vt),t(z,Nn),t(z,Ze),t(Ze,Ke),t(Ke,An),t(z,Gn),t(z,ta),t(ta,ea),t(ea,In),t(c,Sn),t(c,q),t(q,Wt),t(q,Un),t(q,Yt),t(q,Jn),t(q,aa),t(aa,na),t(na,Qn),t(q,Vn),t(q,oa),t(oa,la),t(la,Wn),t(c,Yn),t(c,O),t(O,Xt),t(O,Xn),t(O,Zt),t(O,Zn),t(O,ra),t(ra,da),t(da,Kn),t(O,to),t(O,sa),t(sa,ia),t(ia,eo),t(c,ao),t(c,k),t(k,Kt),t(k,no),t(k,te),t(k,oo),t(k,ha),t(ha,ca),t(ca,lo),t(k,ro),t(k,fa),t(fa,ua),t(ua,so),t(c,io),t(c,H),t(H,ee),t(H,ho),t(H,ae),t(H,co),t(H,va),t(va,ga),t(ga,fo),t(H,uo),t(H,ma),t(ma,pa),t(pa,vo),t(c,go),t(c,P),t(P,ne),t(P,mo),t(P,oe),t(P,po),t(P,_a),t(_a,Ca),t(Ca,_o),t(P,Co),t(P,ya),t(ya,xa),t(xa,yo),t(c,xo),t(c,M),t(M,le),t(M,Eo),t(M,re),t(M,To),t(M,Ea),t(Ea,Ta),t(Ta,bo),t(M,$o),t(M,ba),t(ba,$a),t($a,Do),t(c,wo),t(c,L),t(L,de),t(L,zo),t(L,se),t(L,qo),t(L,Da),t(Da,wa),t(wa,Oo),t(L,ko),t(L,za),t(za,qa),t(qa,Ho),t(c,Po),t(c,R),t(R,ie),t(R,Mo),t(R,he),t(R,Lo),t(R,Oa),t(Oa,ka),t(ka,Ro),t(R,Fo),t(R,Ha),t(Ha,Pa),t(Pa,Bo),t(c,jo),t(c,F),t(F,ce),t(F,No),t(F,fe),t(F,Ao),t(F,Ma),t(Ma,La),t(La,Go),t(F,Io),t(F,Ra),t(Ra,Fa),t(Fa,So),t(c,Uo),t(c,B),t(B,ue),t(B,Jo),t(B,ve),t(B,Qo),t(B,Ba),t(Ba,ja),t(ja,Vo),t(B,Wo),t(B,Na),t(Na,Aa),t(Aa,Yo),t(c,Xo),t(c,j),t(j,ge),t(j,Zo),t(j,me),t(j,Ko),t(j,Ga),t(Ga,Ia),t(Ia,tl),t(j,el),t(j,Sa),t(Sa,Ua),t(Ua,al),t(c,nl),t(c,N),t(N,pe),t(N,ol),t(N,_e),t(N,ll),t(N,Ja),t(Ja,Qa),t(Qa,rl),t(N,dl),t(N,Va),t(Va,Wa),t(Wa,sl),t(r,il),t(r,Ce),t(r,hl),p(gt,r,null),t(r,cl),t(r,mt),t(r,fl),t(r,ye),t(r,ul),t(r,xe),t(r,vl),p(pt,r,null),t(r,gl),t(r,Ee),t(r,ml),p(_t,r,null),t(r,pl),t(r,Te),t(r,_l),p(Ct,r,null),t(r,Cl),t(r,be),t(r,yl),p(yt,r,null),t(r,xl),t(r,$e),t(r,El),p(xt,r,null),t(r,Tl),t(r,De),t(r,bl),p(Et,r,null),t(r,$l),t(r,we),t(r,Dl),p(Tt,r,null),t(r,wl),t(r,ze),t(r,zl),p(bt,r,null),t(r,ql),t(r,qe),t(r,Ol),p($t,r,null),t(r,kl),t(r,Oe),t(r,Hl),p(Dt,r,null),t(r,Pl),t(r,ke),t(r,Ml),p(wt,r,null),t(r,Ll),t(r,He),t(r,Rl),p(zt,r,null),t(r,Fl),t(r,Pe),t(r,Bl),p(qt,r,null),t(r,jl),t(r,Me),t(r,Nl),p(Ot,r,null),en(h,Xa,kt),en(h,A,kt),t(A,G),t(G,Al),t(A,Gl),t(A,I),t(I,Il),Za=!0},p:ni,i(h){Za||(_(ht.$$.fragment,h),_(gt.$$.fragment,h),_(pt.$$.fragment,h),_(_t.$$.fragment,h),_(Ct.$$.fragment,h),_(yt.$$.fragment,h),_(xt.$$.fragment,h),_(Et.$$.fragment,h),_(Tt.$$.fragment,h),_(bt.$$.fragment,h),_($t.$$.fragment,h),_(Dt.$$.fragment,h),_(wt.$$.fragment,h),_(zt.$$.fragment,h),_(qt.$$.fragment,h),_(Ot.$$.fragment,h),Za=!0)},o(h){C(ht.$$.fragment,h),C(gt.$$.fragment,h),C(pt.$$.fragment,h),C(_t.$$.fragment,h),C(Ct.$$.fragment,h),C(yt.$$.fragment,h),C(xt.$$.fragment,h),C(Et.$$.fragment,h),C(Tt.$$.fragment,h),C(bt.$$.fragment,h),C($t.$$.fragment,h),C(Dt.$$.fragment,h),C(wt.$$.fragment,h),C(zt.$$.fragment,h),C(qt.$$.fragment,h),C(Ot.$$.fragment,h),Za=!1},d(h){h&&(dt.d(),l(Ya),l(r),l(Xa),l(A)),l(Le),y(ht),y(gt),y(pt),y(_t),y(Ct),y(yt),y(xt),y(Et),y(Tt),y(bt),y($t),y(Dt),y(wt),y(zt),y(qt),y(Ot)}}}class ui extends oi{constructor(dt){super(),li(this,dt,null,di,Ks,{})}}export{ui as component}; diff --git a/docs/_app/immutable/nodes/22.49022b90.js b/docs/_app/immutable/nodes/22.49022b90.js deleted file mode 100644 index 1fee58f..0000000 --- a/docs/_app/immutable/nodes/22.49022b90.js +++ /dev/null @@ -1,40 +0,0 @@ -import{S as Ne,i as Pe,s as De,R as ke,e as ye,a as l,k as i,q as h,y as _e,F as Ce,T as Ae,h as t,c as p,l as s,m as r,r as m,z as Ee,p as ve,n as q,C as e,b as L,A as be,D as Ue,g as we,d as $e,B as Ie}from"../chunks/index.d7cc8d8b.js";import{H as Te,g as He}from"../chunks/github.df9008b1.js";import{t as Oe}from"../chunks/typescript.7dd1ec19.js";import{b as Se}from"../chunks/paths.d307dac8.js";function qe(le){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}const Le={name:"plaintext",register:qe},je=Le;function ze(le){let u,I,A,n,_,E,j,z,T,F,G,N,R,X,d,v,P,B,J,W,b,D,K,M,Q,w,k,V,Y,Z,g,ee,C,te,ae,x,U,c,f,ne,ie,H,O;return g=new Te({props:{language:Oe,code:`// Export entities to a file. -nymph.export(filename); - -// Export entities to the console. -nymph.exportPrint(); - -// Import entities from a file. -nymph.import(filename);`}}),x=new Te({props:{language:je,code:`#nex2 -# The above line must be the first thing in the file. -# Comments begin with # - # And can have white space before them. -# This defines a UID. -[5] -[8000] -# For UIDs, the name is in angle brackets (<>) and the value follows -# in square brackets ([]). -# This starts a new entity. -{1234abcd}[tag,list,with,commas] -# For entities, the GUID is in curly brackets ({}), then the etype in -# angle brackets, then the comma separated tag list follows in square -# brackets ([]). -# Properties are stored like this: -# propname=JSON.stringify(value) - abilities=["system/all"] - groups=[] - inheritAbilities=false - name="admin" -# White space before/after "=" and at beginning/end of line is ignored. - username = "admin" -{2}[tag,list] - another="This is another entity." - newline="\\n"`}}),{c(){u=new ke(!1),I=ye(),A=l(),n=i("section"),_=i("header"),E=i("h1"),j=h("Export and Import"),z=l(),T=i("p"),F=h(`Nymph provides a method for exporting and importing its entities and UIDs, - regardless of which driver is currently in use. This allows backup, restore, - duplication, or transferring an entire database, even with different - database drivers.`),G=l(),N=i("p"),R=h("Nymph has the following methods for exporting and importing entities."),X=l(),d=i("ul"),v=i("li"),P=i("code"),B=h("export"),J=h(" - Export entities to a file."),W=l(),b=i("li"),D=i("code"),K=h("exportPrint"),M=h(" - Export entities to the console."),Q=l(),w=i("li"),k=i("code"),V=h("import"),Y=h(" - Import entities from a file."),Z=l(),_e(g.$$.fragment),ee=l(),C=i("p"),te=h(`The format of a Nymph export file is simple, and readable by all drivers. - The file extension, nex, stands for Nymph Entity eXchange.`),ae=l(),_e(x.$$.fragment),U=l(),c=i("section"),f=i("a"),ne=h("Previous: Transactions"),ie=l(),H=i("span"),this.h()},l(a){const y=Ce("svelte-efizmr",document.head);u=Ae(y,!1),I=ye(),y.forEach(t),A=p(a),n=s(a,"SECTION",{});var o=r(n);_=s(o,"HEADER",{class:!0});var he=r(_);E=s(he,"H1",{style:!0});var pe=r(E);j=m(pe,"Export and Import"),pe.forEach(t),he.forEach(t),z=p(o),T=s(o,"P",{});var me=r(T);F=m(me,`Nymph provides a method for exporting and importing its entities and UIDs, - regardless of which driver is currently in use. This allows backup, restore, - duplication, or transferring an entire database, even with different - database drivers.`),me.forEach(t),G=p(o),N=s(o,"P",{});var de=r(N);R=m(de,"Nymph has the following methods for exporting and importing entities."),de.forEach(t),X=p(o),d=s(o,"UL",{});var $=r(d);v=s($,"LI",{});var se=r(v);P=s(se,"CODE",{});var ce=r(P);B=m(ce,"export"),ce.forEach(t),J=m(se," - Export entities to a file."),se.forEach(t),W=p($),b=s($,"LI",{});var re=r(b);D=s(re,"CODE",{});var fe=r(D);K=m(fe,"exportPrint"),fe.forEach(t),M=m(re," - Export entities to the console."),re.forEach(t),Q=p($),w=s($,"LI",{});var oe=r(w);k=s(oe,"CODE",{});var ue=r(k);V=m(ue,"import"),ue.forEach(t),Y=m(oe," - Import entities from a file."),oe.forEach(t),$.forEach(t),Z=p(o),Ee(g.$$.fragment,o),ee=p(o),C=s(o,"P",{});var ge=r(C);te=m(ge,`The format of a Nymph export file is simple, and readable by all drivers. - The file extension, nex, stands for Nymph Entity eXchange.`),ge.forEach(t),ae=p(o),Ee(x.$$.fragment,o),o.forEach(t),U=p(a),c=s(a,"SECTION",{class:!0});var S=r(c);f=s(S,"A",{href:!0,class:!0,style:!0});var xe=r(f);ne=m(xe,"Previous: Transactions"),xe.forEach(t),ie=p(S),H=s(S,"SPAN",{}),r(H).forEach(t),S.forEach(t),this.h()},h(){document.title="Export and Import - User Guide - Nymph.js",u.a=I,ve(E,"font-size","3em"),q(_,"class","major"),q(f,"href",Se+"/user-guide/transactions"),q(f,"class","button"),ve(f,"margin",".5em"),q(c,"class","page-steps")},m(a,y){u.m(He,document.head),e(document.head,I),L(a,A,y),L(a,n,y),e(n,_),e(_,E),e(E,j),e(n,z),e(n,T),e(T,F),e(n,G),e(n,N),e(N,R),e(n,X),e(n,d),e(d,v),e(v,P),e(P,B),e(v,J),e(d,W),e(d,b),e(b,D),e(D,K),e(b,M),e(d,Q),e(d,w),e(w,k),e(k,V),e(w,Y),e(n,Z),be(g,n,null),e(n,ee),e(n,C),e(C,te),e(n,ae),be(x,n,null),L(a,U,y),L(a,c,y),e(c,f),e(f,ne),e(c,ie),e(c,H),O=!0},p:Ue,i(a){O||(we(g.$$.fragment,a),we(x.$$.fragment,a),O=!0)},o(a){$e(g.$$.fragment,a),$e(x.$$.fragment,a),O=!1},d(a){t(I),a&&u.d(),a&&t(A),a&&t(n),Ie(g),Ie(x),a&&t(U),a&&t(c)}}}class Be extends Ne{constructor(u){super(),Pe(this,u,null,ze,De,{})}}export{Be as component}; diff --git a/docs/_app/immutable/nodes/22.e80f4bca.js b/docs/_app/immutable/nodes/22.e80f4bca.js new file mode 100644 index 0000000..739c846 --- /dev/null +++ b/docs/_app/immutable/nodes/22.e80f4bca.js @@ -0,0 +1,36 @@ +import{s as Z,I as ee,e as R,a as r,f as o,l as te,x as ne,J as ae,d as s,c as l,g as m,h as I,r as b,m as se,j as P,k as ie,u as n,i as H,v as re}from"../chunks/scheduler.d7e45cc8.js";import{S as oe,i as le,b as W,d as X,m as B,a as K,t as Q,e as V}from"../chunks/index.77720afb.js";import{H as Y,g as me}from"../chunks/github.64534d2c.js";import{t as he}from"../chunks/typescript.09c48802.js";import{b as pe}from"../chunks/paths.d4a6803e.js";function ce(L){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}const de={name:"plaintext",register:ce},fe=de;function ue(L){let p,y,$,e,c,M='

    Export and Import

    ',N,g,z=`Nymph provides a method for exporting and importing its entities and UIDs, + regardless of which driver is currently in use. This allows backup, restore, + duplication, or transferring an entire database, even with different + database drivers.`,k,x,O="Nymph has the following methods for exporting and importing entities.",A,_,F="
  • export - Export entities to a file.
  • exportPrint - Export entities to the console.
  • import - Import entities from a file.
  • ",S,d,U,v,G=`The format of a Nymph export file is simple, and readable by all drivers. + The file extension, nex, stands for Nymph Entity eXchange.`,j,f,E,i,h,q,D,T,C;return d=new Y({props:{language:he,code:`// Export entities to a file. +nymph.export(filename); + +// Export entities to the console. +nymph.exportPrint(); + +// Import entities from a file. +nymph.import(filename);`}}),f=new Y({props:{language:fe,code:`#nex2 +# The above line must be the first thing in the file. +# Comments begin with # + # And can have white space before them. +# This defines a UID. +[5] +[8000] +# For UIDs, the name is in angle brackets (<>) and the value follows +# in square brackets ([]). +# This starts a new entity. +{1234abcd}[tag,list,with,commas] +# For entities, the GUID is in curly brackets ({}), then the etype in +# angle brackets, then the comma separated tag list follows in square +# brackets ([]). +# Properties are stored like this: +# propname=JSON.stringify(value) + abilities=["system/all"] + groups=[] + inheritAbilities=false + name="admin" +# White space before/after "=" and at beginning/end of line is ignored. + username = "admin" +{2}[tag,list] + another="This is another entity." + newline="\\n"`}}),{c(){p=new ee(!1),y=R(),$=r(),e=o("section"),c=o("header"),c.innerHTML=M,N=r(),g=o("p"),g.textContent=z,k=r(),x=o("p"),x.textContent=O,A=r(),_=o("ul"),_.innerHTML=F,S=r(),W(d.$$.fragment),U=r(),v=o("p"),v.textContent=G,j=r(),W(f.$$.fragment),E=r(),i=o("section"),h=o("a"),q=te("Previous: Transactions"),D=r(),T=o("span"),this.h()},l(t){const u=ne("svelte-efizmr",document.head);p=ae(u,!1),y=R(),u.forEach(s),$=l(t),e=m(t,"SECTION",{});var a=I(e);c=m(a,"HEADER",{class:!0,"data-svelte-h":!0}),b(c)!=="svelte-1g2nrve"&&(c.innerHTML=M),N=l(a),g=m(a,"P",{"data-svelte-h":!0}),b(g)!=="svelte-1j8yzcq"&&(g.textContent=z),k=l(a),x=m(a,"P",{"data-svelte-h":!0}),b(x)!=="svelte-1mscffm"&&(x.textContent=O),A=l(a),_=m(a,"UL",{"data-svelte-h":!0}),b(_)!=="svelte-1rx3iut"&&(_.innerHTML=F),S=l(a),X(d.$$.fragment,a),U=l(a),v=m(a,"P",{"data-svelte-h":!0}),b(v)!=="svelte-q1go0x"&&(v.textContent=G),j=l(a),X(f.$$.fragment,a),a.forEach(s),E=l(t),i=m(t,"SECTION",{class:!0});var w=I(i);h=m(w,"A",{href:!0,class:!0,style:!0});var J=I(h);q=se(J,"Previous: Transactions"),J.forEach(s),D=l(w),T=m(w,"SPAN",{}),I(T).forEach(s),w.forEach(s),this.h()},h(){document.title="Export and Import - User Guide - Nymph.js",p.a=y,P(c,"class","major"),P(h,"href",pe+"/user-guide/transactions"),P(h,"class","button"),ie(h,"margin",".5em"),P(i,"class","page-steps")},m(t,u){p.m(me,document.head),n(document.head,y),H(t,$,u),H(t,e,u),n(e,c),n(e,N),n(e,g),n(e,k),n(e,x),n(e,A),n(e,_),n(e,S),B(d,e,null),n(e,U),n(e,v),n(e,j),B(f,e,null),H(t,E,u),H(t,i,u),n(i,h),n(h,q),n(i,D),n(i,T),C=!0},p:re,i(t){C||(K(d.$$.fragment,t),K(f.$$.fragment,t),C=!0)},o(t){Q(d.$$.fragment,t),Q(f.$$.fragment,t),C=!1},d(t){t&&(p.d(),s($),s(e),s(E),s(i)),s(y),V(d),V(f)}}}class be extends oe{constructor(p){super(),le(this,p,null,ue,Z,{})}}export{be as component}; diff --git a/docs/_app/immutable/nodes/23.d5661c6c.js b/docs/_app/immutable/nodes/23.d5661c6c.js deleted file mode 100644 index 268bc6f..0000000 --- a/docs/_app/immutable/nodes/23.d5661c6c.js +++ /dev/null @@ -1,67 +0,0 @@ -import{S as st,i as it,s as rt,a as d,k as i,q as n,F as ot,h as t,c as p,l as r,m as o,r as a,p as nt,n as y,b as z,C as e,D as xe}from"../chunks/index.d7cc8d8b.js";import{b as lt}from"../chunks/paths.d307dac8.js";function ht(at){let E,s,N,_,F,B,P,K,L,I,T,Q,V,h,Z,k,ee,te,S,ne,ae,g,se,ie,j,re,oe,U,le,he,ce,C,de,pe,x,ue,ye,q,me,fe,m,ge,G,ve,be,O,we,Ee,Ne,$,_e,Ie,H,De,Ae,D,R,Pe,Te,b,ke,w,Se,je,J,f,Y,Ue,v,Ce;return{c(){E=d(),s=i("section"),N=i("header"),_=i("h1"),F=n("Introduction"),B=d(),P=i("p"),K=n(`Nymph is an ORM for Node.js and the browser, written in TypeScript. Nymph - data objects, called entities, are accessed just like plain objects. Nymph - includes a REST server and a Publish/Subscribe server.`),L=d(),I=i("header"),T=i("h2"),Q=n("Understanding Nymph Applications"),V=d(),h=i("p"),Z=n("Data in Nymph is stored and manipulated in objects called "),k=i("strong"),ee=n("entities"),te=n(`. Entities can hold most types of data available in JavaScript, including - other entities. Entities are not strictly structured, so data of any type - can be added and saved just by assigning a property on the entity and - calling `),S=i("code"),ne=n("$save"),ae=n(`. This makes data manipulation and rapid - prototyping in Nymph very easy. Then when you're ready to launch to - production, you would use a validation library to enforce a schema for your - entities. - `),g=i("a"),se=n("Joi"),ie=n(` - is a good one. You can do this in the - `),j=i("code"),re=n("$save"),oe=n(` - method on your entities before calling - `),U=i("code"),le=n("return await super.$save();"),he=n(`. This means that during - development, you don't need to worry about managing schemas at all, but you - still get the benefit of strict checks in production.`),ce=d(),C=i("p"),de=n(`All entities are given a globally unique identifier (GUID), which is a - random, cryptographically secure, 12 byte integer, encoded in a 24 - character, lowercase HEX string. Since these are random and quite large, - there should never be any two entities in any Nymph installation with the - same GUIDs (unless that's done on purpose). Nymph also provides UIDs, which - are sequential and can be used to number entities (or anything else).`),pe=d(),x=i("p"),ue=n(`Using Nymph, nearly all of an app's business logic can be written on either - the client side or the server side, since you interact with data the same - way in each. Anything that relies on access control can be handled on the - server side where Tilmeld, Nymph's optional user/group manager, provides - access control.`),ye=d(),q=i("p"),me=n(`If an entity is referenced in another entity's property, the class name is - saved along with the GUID. When this referenced entity is awoken, Nymph will - retrieve it using the saved class.`),fe=d(),m=i("p"),ge=n(`When an entity containing a referenced entity is pulled from the database, - the referenced entity will exist in the data as a "sleeping reference". - Sleeping references have the right class and know their GUID, but other data - is not accessible until its pulled from the database. This happens when you - use the `),G=i("code"),ve=n("$wake"),be=n(" method on it, or the "),O=i("code"),we=n("$wakeAll"),Ee=n(` method - on its parent.`),Ne=d(),$=i("p"),_e=n(`When querying entities with Nymph, the ETYPE constant on the class - determines which database table(s) Nymph will look in.`),Ie=d(),H=i("p"),De=n(`Caution: When changing an entity's class name, any entities referencing it - must be resaved after setting the reference again using the new class name.`),Ae=d(),D=i("header"),R=i("h2"),Pe=n("API Docs"),Te=d(),b=i("p"),ke=n("If you want to really dive deep into Nymph, you can also browse the "),w=i("a"),Se=n("API docs"),je=n(", which covers every part of Nymph's API."),J=d(),f=i("section"),Y=i("span"),Ue=d(),v=i("a"),Ce=n("Next: Creating Entities"),this.h()},l(c){ot("svelte-6cxoo7",document.head).forEach(t),E=p(c),s=r(c,"SECTION",{});var l=o(s);N=r(l,"HEADER",{class:!0});var qe=o(N);_=r(qe,"H1",{style:!0});var Ge=o(_);F=a(Ge,"Introduction"),Ge.forEach(t),qe.forEach(t),B=p(l),P=r(l,"P",{});var Oe=o(P);K=a(Oe,`Nymph is an ORM for Node.js and the browser, written in TypeScript. Nymph - data objects, called entities, are accessed just like plain objects. Nymph - includes a REST server and a Publish/Subscribe server.`),Oe.forEach(t),L=p(l),I=r(l,"HEADER",{class:!0});var $e=o(I);T=r($e,"H2",{});var He=o(T);Q=a(He,"Understanding Nymph Applications"),He.forEach(t),$e.forEach(t),V=p(l),h=r(l,"P",{});var u=o(h);Z=a(u,"Data in Nymph is stored and manipulated in objects called "),k=r(u,"STRONG",{});var Re=o(k);ee=a(Re,"entities"),Re.forEach(t),te=a(u,`. Entities can hold most types of data available in JavaScript, including - other entities. Entities are not strictly structured, so data of any type - can be added and saved just by assigning a property on the entity and - calling `),S=r(u,"CODE",{});var We=o(S);ne=a(We,"$save"),We.forEach(t),ae=a(u,`. This makes data manipulation and rapid - prototyping in Nymph very easy. Then when you're ready to launch to - production, you would use a validation library to enforce a schema for your - entities. - `),g=r(u,"A",{href:!0,target:!0,rel:!0});var Je=o(g);se=a(Je,"Joi"),Je.forEach(t),ie=a(u,` - is a good one. You can do this in the - `),j=r(u,"CODE",{});var Ye=o(j);re=a(Ye,"$save"),Ye.forEach(t),oe=a(u,` - method on your entities before calling - `),U=r(u,"CODE",{});var Me=o(U);le=a(Me,"return await super.$save();"),Me.forEach(t),he=a(u,`. This means that during - development, you don't need to worry about managing schemas at all, but you - still get the benefit of strict checks in production.`),u.forEach(t),ce=p(l),C=r(l,"P",{});var Xe=o(C);de=a(Xe,`All entities are given a globally unique identifier (GUID), which is a - random, cryptographically secure, 12 byte integer, encoded in a 24 - character, lowercase HEX string. Since these are random and quite large, - there should never be any two entities in any Nymph installation with the - same GUIDs (unless that's done on purpose). Nymph also provides UIDs, which - are sequential and can be used to number entities (or anything else).`),Xe.forEach(t),pe=p(l),x=r(l,"P",{});var ze=o(x);ue=a(ze,`Using Nymph, nearly all of an app's business logic can be written on either - the client side or the server side, since you interact with data the same - way in each. Anything that relies on access control can be handled on the - server side where Tilmeld, Nymph's optional user/group manager, provides - access control.`),ze.forEach(t),ye=p(l),q=r(l,"P",{});var Fe=o(q);me=a(Fe,`If an entity is referenced in another entity's property, the class name is - saved along with the GUID. When this referenced entity is awoken, Nymph will - retrieve it using the saved class.`),Fe.forEach(t),fe=p(l),m=r(l,"P",{});var A=o(m);ge=a(A,`When an entity containing a referenced entity is pulled from the database, - the referenced entity will exist in the data as a "sleeping reference". - Sleeping references have the right class and know their GUID, but other data - is not accessible until its pulled from the database. This happens when you - use the `),G=r(A,"CODE",{});var Be=o(G);ve=a(Be,"$wake"),Be.forEach(t),be=a(A," method on it, or the "),O=r(A,"CODE",{});var Ke=o(O);we=a(Ke,"$wakeAll"),Ke.forEach(t),Ee=a(A,` method - on its parent.`),A.forEach(t),Ne=p(l),$=r(l,"P",{});var Le=o($);_e=a(Le,`When querying entities with Nymph, the ETYPE constant on the class - determines which database table(s) Nymph will look in.`),Le.forEach(t),Ie=p(l),H=r(l,"P",{});var Qe=o(H);De=a(Qe,`Caution: When changing an entity's class name, any entities referencing it - must be resaved after setting the reference again using the new class name.`),Qe.forEach(t),Ae=p(l),D=r(l,"HEADER",{class:!0});var Ve=o(D);R=r(Ve,"H2",{});var Ze=o(R);Pe=a(Ze,"API Docs"),Ze.forEach(t),Ve.forEach(t),Te=p(l),b=r(l,"P",{});var M=o(b);ke=a(M,"If you want to really dive deep into Nymph, you can also browse the "),w=r(M,"A",{href:!0,rel:!0});var et=o(w);Se=a(et,"API docs"),et.forEach(t),je=a(M,", which covers every part of Nymph's API."),M.forEach(t),l.forEach(t),J=p(c),f=r(c,"SECTION",{class:!0});var X=o(f);Y=r(X,"SPAN",{}),o(Y).forEach(t),Ue=p(X),v=r(X,"A",{href:!0,class:!0,style:!0});var tt=o(v);Ce=a(tt,"Next: Creating Entities"),tt.forEach(t),X.forEach(t),this.h()},h(){document.title="Introduction - User Guide - Nymph.js",nt(_,"font-size","3em"),y(N,"class","major"),y(I,"class","major"),y(g,"href","https://joi.dev/"),y(g,"target","_blank"),y(g,"rel","noreferrer"),y(D,"class","major"),y(w,"href","/api/latest/"),y(w,"rel","external"),y(v,"href",lt+"/user-guide/creating-entities"),y(v,"class","button"),nt(v,"margin",".5em"),y(f,"class","page-steps")},m(c,W){z(c,E,W),z(c,s,W),e(s,N),e(N,_),e(_,F),e(s,B),e(s,P),e(P,K),e(s,L),e(s,I),e(I,T),e(T,Q),e(s,V),e(s,h),e(h,Z),e(h,k),e(k,ee),e(h,te),e(h,S),e(S,ne),e(h,ae),e(h,g),e(g,se),e(h,ie),e(h,j),e(j,re),e(h,oe),e(h,U),e(U,le),e(h,he),e(s,ce),e(s,C),e(C,de),e(s,pe),e(s,x),e(x,ue),e(s,ye),e(s,q),e(q,me),e(s,fe),e(s,m),e(m,ge),e(m,G),e(G,ve),e(m,be),e(m,O),e(O,we),e(m,Ee),e(s,Ne),e(s,$),e($,_e),e(s,Ie),e(s,H),e(H,De),e(s,Ae),e(s,D),e(D,R),e(R,Pe),e(s,Te),e(s,b),e(b,ke),e(b,w),e(w,Se),e(b,je),z(c,J,W),z(c,f,W),e(f,Y),e(f,Ue),e(f,v),e(v,Ce)},p:xe,i:xe,o:xe,d(c){c&&t(E),c&&t(s),c&&t(J),c&&t(f)}}}class pt extends st{constructor(E){super(),it(this,E,null,ht,rt,{})}}export{pt as component}; diff --git a/docs/_app/immutable/nodes/23.e56d922d.js b/docs/_app/immutable/nodes/23.e56d922d.js new file mode 100644 index 0000000..bcf91ef --- /dev/null +++ b/docs/_app/immutable/nodes/23.e56d922d.js @@ -0,0 +1,34 @@ +import{s as I,a as g,f as c,l as j,x,d as n,c as f,g as d,r as T,h as b,m as S,j as v,k,i as p,u,v as w}from"../chunks/scheduler.d7e45cc8.js";import{S as A,i as U}from"../chunks/index.77720afb.js";import{b as q}from"../chunks/paths.d4a6803e.js";function C(E){let i,s,N=`

    Introduction

    Nymph is an ORM for Node.js and the browser, written in TypeScript. Nymph + data objects, called entities, are accessed just like plain objects. Nymph + includes a REST server and a Publish/Subscribe server.

    Understanding Nymph Applications

    Data in Nymph is stored and manipulated in objects called entities. Entities can hold most types of data available in JavaScript, including + other entities. Entities are not strictly structured, so data of any type + can be added and saved just by assigning a property on the entity and + calling $save. This makes data manipulation and rapid + prototyping in Nymph very easy. Then when you're ready to launch to + production, you would use a validation library to enforce a schema for your + entities. + Joi + is a good one. You can do this in the + $save + method on your entities before calling + return await super.$save();. This means that during + development, you don't need to worry about managing schemas at all, but you + still get the benefit of strict checks in production.

    All entities are given a globally unique identifier (GUID), which is a + random, cryptographically secure, 12 byte integer, encoded in a 24 + character, lowercase HEX string. Since these are random and quite large, + there should never be any two entities in any Nymph installation with the + same GUIDs (unless that's done on purpose). Nymph also provides UIDs, which + are sequential and can be used to number entities (or anything else).

    Using Nymph, nearly all of an app's business logic can be written on either + the client side or the server side, since you interact with data the same + way in each. Anything that relies on access control can be handled on the + server side where Tilmeld, Nymph's optional user/group manager, provides + access control.

    If an entity is referenced in another entity's property, the class name is + saved along with the GUID. When this referenced entity is awoken, Nymph will + retrieve it using the saved class.

    When an entity containing a referenced entity is pulled from the database, + the referenced entity will exist in the data as a "sleeping reference". + Sleeping references have the right class and know their GUID, but other data + is not accessible until its pulled from the database. This happens when you + use the $wake method on it, or the $wakeAll method + on its parent.

    When querying entities with Nymph, the ETYPE constant on the class + determines which database table(s) Nymph will look in.

    Caution: When changing an entity's class name, any entities referencing it + must be resaved after setting the reference again using the new class name.

    API Docs

    If you want to really dive deep into Nymph, you can also browse the API docs, which covers every part of Nymph's API.

    `,o,t,h,y,a,m;return{c(){i=g(),s=c("section"),s.innerHTML=N,o=g(),t=c("section"),h=c("span"),y=g(),a=c("a"),m=j("Next: Creating Entities"),this.h()},l(e){x("svelte-6cxoo7",document.head).forEach(n),i=f(e),s=d(e,"SECTION",{"data-svelte-h":!0}),T(s)!=="svelte-gi5e61"&&(s.innerHTML=N),o=f(e),t=d(e,"SECTION",{class:!0});var l=b(t);h=d(l,"SPAN",{}),b(h).forEach(n),y=f(l),a=d(l,"A",{href:!0,class:!0,style:!0});var _=b(a);m=S(_,"Next: Creating Entities"),_.forEach(n),l.forEach(n),this.h()},h(){document.title="Introduction - User Guide - Nymph.js",v(a,"href",q+"/user-guide/creating-entities"),v(a,"class","button"),k(a,"margin",".5em"),v(t,"class","page-steps")},m(e,r){p(e,i,r),p(e,s,r),p(e,o,r),p(e,t,r),u(t,h),u(t,y),u(t,a),u(a,m)},p:w,i:w,o:w,d(e){e&&(n(i),n(s),n(o),n(t))}}}class $ extends A{constructor(i){super(),U(this,i,null,C,I,{})}}export{$ as component}; diff --git a/docs/_app/immutable/nodes/24.82606410.js b/docs/_app/immutable/nodes/24.82606410.js new file mode 100644 index 0000000..46aeae4 --- /dev/null +++ b/docs/_app/immutable/nodes/24.82606410.js @@ -0,0 +1,98 @@ +import{s as Pe,I as Ce,e as xe,a as n,f as i,l as H,x as ke,J as qe,d as u,c as r,g as o,h as q,r as m,m as M,j as _,k as Ee,u as e,i as I,v as je}from"../chunks/scheduler.d7e45cc8.js";import{S as He,i as Me,b as z,d as Q,m as W,a as Y,t as B,e as O}from"../chunks/index.77720afb.js";import{H as G,g as Ue}from"../chunks/github.64534d2c.js";import{t as J}from"../chunks/typescript.09c48802.js";import{b as me}from"../chunks/paths.d4a6803e.js";function Ae(Te){let b,j,U,t,p,be='

    Subscribing to Queries

    ',R,$,pe=`Subscribing to a query lets you receive updates to that query. This is a + powerful tool for collaborative apps. It's also just as easy as making a + regular entity query.`,F,d,K,S,V,X,Z,x,de=`You can use the subscribeEntities method on PubSub to subscribe + to a query. It will return a function you can call to subscribe to the + query. That function accepts a resolve and reject callback, similar to a + promise. The resolve function will receive an update, which will at first be + an array of entities, then will be an update object with instructions that + updateArray uses to update the original array.`,ee,g,te,E,ge=`You can also receive a count of how many subscribers there are to that + query. The count is given to a third callback.`,ae,f,se,T,fe=`To unsubscribe from the query, use the unsubscribe method on + the + PubSubSubscription object returned by the function.`,ne,y,re,P,ye=`You can subscribe to changes to an entity with the subscribeWith + method. This method accepts the callbacks directly and returns a + PubSubSubscription + object.`,ie,v,oe,C,ve=`Warning: Subscriptions can lead to resource leaks if left open. Take care to + unsubscribe to every query you are no longer watching.`,ue,k,we=`Warning: The PubSub server is smart about removing entities that no longer + match when a new entity matches, but there are some queries that can have + changes in their matching entities without any change to the server (like + relative time queries). These queries won't necessarily be updated correctly + in due time by the PubSub server.`,A,l,c,le,ce,h,he,L;return g=new G({props:{language:J,code:`let smiths: (User & UserData)[] = []; +pubsub.subscribeEntities( + { + class: User + }, + { + type: '&', + like: ['name', '% Smith'] + } +)( + (update) => { + // This function will be called once initially with an array of + // entities, then again every time there's a change with an + // update object. + // The updateArray function will add any newly matching entities, + // update any existing entities that have changed, and remove any + // entities that no longer match (including deleted entities). + pubsub.updateArray(smiths, update); + }, + (e) => { + alert('Error: ' + e.textStatus); + } +);`}}),f=new G({props:{language:J,code:`let smiths: (User & UserData)[] = []; +pubsub.subscribeEntities( + { + class: User + }, + { + type: '&', + like: ['name', '% Smith'] + } +)( + (update) => { + pubsub.updateArray(smiths, update); + }, + (e) => { + alert('Error: ' + e.textStatus); + }, + (count) => { + // This function will be called each time the count of + // subscribers to this query changes. + console.log(\`There are now \${count} users watching the Smiths.\`); + } +);`}}),y=new G({props:{language:J,code:`let smiths: (User & UserData)[] = []; +let subscription = pubsub.subscribeEntities( + { + class: User + }, + { + type: '&', + like: ['name', '% Smith'] + } +)((update) => { + pubsub.updateArray(smiths, update); +}); + +onDestroy(() => { + subscription.unsubscribe(); +});`}}),v=new G({props:{language:J,code:`let subscription = pubsub.subscribeWith( + smithEntity, + () => { + if (smithEntity.guid == null) { + if (confirm('Someone deleted Mr. Smith! Do you want to restore him?')) { + smithEntity.$save(); + } + } else { + alert("Mr. Smith's entity has changed!"); + } + }, + (e) => { + alert('Error: ' + e.textStatus); + }, + (count) => { + console.log(\`There are now \${count} users watching Mr. Smith.\`); + } +); + +onDestroy(() => { + subscription.unsubscribe(); +});`}}),{c(){b=new Ce(!1),j=xe(),U=n(),t=i("section"),p=i("header"),p.innerHTML=be,R=n(),$=i("p"),$.textContent=pe,F=n(),d=i("p"),K=H("Before we get started, you can follow the "),S=i("a"),V=H("PubSub Server Package"),X=H(" page to set up a Nymph PubSub server."),Z=n(),x=i("p"),x.innerHTML=de,ee=n(),z(g.$$.fragment),te=n(),E=i("p"),E.textContent=ge,ae=n(),z(f.$$.fragment),se=n(),T=i("p"),T.innerHTML=fe,ne=n(),z(y.$$.fragment),re=n(),P=i("p"),P.innerHTML=ye,ie=n(),z(v.$$.fragment),oe=n(),C=i("p"),C.textContent=ve,ue=n(),k=i("p"),k.textContent=we,A=n(),l=i("section"),c=i("a"),le=H("Previous: Entity Querying"),ce=n(),h=i("a"),he=H("Next: Entity Class"),this.h()},l(s){const w=ke("svelte-4wlam7",document.head);b=qe(w,!1),j=xe(),w.forEach(u),U=r(s),t=o(s,"SECTION",{});var a=q(t);p=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),m(p)!=="svelte-1wxvjwc"&&(p.innerHTML=be),R=r(a),$=o(a,"P",{"data-svelte-h":!0}),m($)!=="svelte-zptfod"&&($.textContent=pe),F=r(a),d=o(a,"P",{});var D=q(d);K=M(D,"Before we get started, you can follow the "),S=o(D,"A",{href:!0});var _e=q(S);V=M(_e,"PubSub Server Package"),_e.forEach(u),X=M(D," page to set up a Nymph PubSub server."),D.forEach(u),Z=r(a),x=o(a,"P",{"data-svelte-h":!0}),m(x)!=="svelte-1nwoqjz"&&(x.innerHTML=de),ee=r(a),Q(g.$$.fragment,a),te=r(a),E=o(a,"P",{"data-svelte-h":!0}),m(E)!=="svelte-sbbhjn"&&(E.textContent=ge),ae=r(a),Q(f.$$.fragment,a),se=r(a),T=o(a,"P",{"data-svelte-h":!0}),m(T)!=="svelte-107lklx"&&(T.innerHTML=fe),ne=r(a),Q(y.$$.fragment,a),re=r(a),P=o(a,"P",{"data-svelte-h":!0}),m(P)!=="svelte-1hyvonj"&&(P.innerHTML=ye),ie=r(a),Q(v.$$.fragment,a),oe=r(a),C=o(a,"P",{"data-svelte-h":!0}),m(C)!=="svelte-1uz9efr"&&(C.textContent=ve),ue=r(a),k=o(a,"P",{"data-svelte-h":!0}),m(k)!=="svelte-1p6g7on"&&(k.textContent=we),a.forEach(u),A=r(s),l=o(s,"SECTION",{class:!0});var N=q(l);c=o(N,"A",{href:!0,class:!0,style:!0});var $e=q(c);le=M($e,"Previous: Entity Querying"),$e.forEach(u),ce=r(N),h=o(N,"A",{href:!0,class:!0,style:!0});var Se=q(h);he=M(Se,"Next: Entity Class"),Se.forEach(u),N.forEach(u),this.h()},h(){document.title="Subscribing to Queries - User Guide - Nymph.js",b.a=j,_(p,"class","major"),_(S,"href",me+"/packages/pubsub/"),_(c,"href",me+"/user-guide/entity-querying"),_(c,"class","button"),Ee(c,"margin",".5em"),_(h,"href",me+"/user-guide/entity-class"),_(h,"class","button"),Ee(h,"margin",".5em"),_(l,"class","page-steps")},m(s,w){b.m(Ue,document.head),e(document.head,j),I(s,U,w),I(s,t,w),e(t,p),e(t,R),e(t,$),e(t,F),e(t,d),e(d,K),e(d,S),e(S,V),e(d,X),e(t,Z),e(t,x),e(t,ee),W(g,t,null),e(t,te),e(t,E),e(t,ae),W(f,t,null),e(t,se),e(t,T),e(t,ne),W(y,t,null),e(t,re),e(t,P),e(t,ie),W(v,t,null),e(t,oe),e(t,C),e(t,ue),e(t,k),I(s,A,w),I(s,l,w),e(l,c),e(c,le),e(l,ce),e(l,h),e(h,he),L=!0},p:je,i(s){L||(Y(g.$$.fragment,s),Y(f.$$.fragment,s),Y(y.$$.fragment,s),Y(v.$$.fragment,s),L=!0)},o(s){B(g.$$.fragment,s),B(f.$$.fragment,s),B(y.$$.fragment,s),B(v.$$.fragment,s),L=!1},d(s){s&&(b.d(),u(U),u(t),u(A),u(l)),u(j),O(g),O(f),O(y),O(v)}}}class Qe extends He{constructor(b){super(),Me(this,b,null,Ae,Pe,{})}}export{Qe as component}; diff --git a/docs/_app/immutable/nodes/24.c4d2b8e8.js b/docs/_app/immutable/nodes/24.c4d2b8e8.js deleted file mode 100644 index c34b47e..0000000 --- a/docs/_app/immutable/nodes/24.c4d2b8e8.js +++ /dev/null @@ -1,116 +0,0 @@ -import{S as it,i as ot,s as ut,R as ct,e as rt,a as l,k as o,q as n,y as J,F as lt,T as ht,h as a,c as h,l as u,m as c,r as i,z as K,p as Qe,n as P,C as e,b as L,A as V,D as bt,g as X,d as Z,B as ee}from"../chunks/index.d7cc8d8b.js";import{H as te,g as dt}from"../chunks/github.df9008b1.js";import{t as ae}from"../chunks/typescript.7dd1ec19.js";import{b as Be}from"../chunks/paths.d307dac8.js";function pt(nt){let g,x,M,t,T,q,se,re,A,ne,ie,v,oe,k,ue,ce,le,b,he,U,be,de,O,pe,me,ye,w,fe,N,ge,ve,E,we,d,Ee,W,Se,_e,H,$e,Pe,Te,S,qe,p,ke,I,De,je,Y,Ce,xe,Ae,_,Ue,Q,Oe,Ne,B,We,z,m,y,He,Ie,f,Ye,R;return w=new te({props:{language:ae,code:`let smiths: (User & UserData)[] = []; -pubsub.subscribeEntities( - { - class: User - }, - { - type: '&', - like: ['name', '% Smith'] - } -)( - (update) => { - // This function will be called once initially with an array of - // entities, then again every time there's a change with an - // update object. - // The updateArray function will add any newly matching entities, - // update any existing entities that have changed, and remove any - // entities that no longer match (including deleted entities). - pubsub.updateArray(smiths, update); - }, - (e) => { - alert('Error: ' + e.textStatus); - } -);`}}),E=new te({props:{language:ae,code:`let smiths: (User & UserData)[] = []; -pubsub.subscribeEntities( - { - class: User - }, - { - type: '&', - like: ['name', '% Smith'] - } -)( - (update) => { - pubsub.updateArray(smiths, update); - }, - (e) => { - alert('Error: ' + e.textStatus); - }, - (count) => { - // This function will be called each time the count of - // subscribers to this query changes. - console.log(\`There are now \${count} users watching the Smiths.\`); - } -);`}}),S=new te({props:{language:ae,code:`let smiths: (User & UserData)[] = []; -let subscription = pubsub.subscribeEntities( - { - class: User - }, - { - type: '&', - like: ['name', '% Smith'] - } -)((update) => { - pubsub.updateArray(smiths, update); -}); - -onDestroy(() => { - subscription.unsubscribe(); -});`}}),_=new te({props:{language:ae,code:`let subscription = pubsub.subscribeWith( - smithEntity, - () => { - if (smithEntity.guid == null) { - if (confirm('Someone deleted Mr. Smith! Do you want to restore him?')) { - smithEntity.$save(); - } - } else { - alert("Mr. Smith's entity has changed!"); - } - }, - (e) => { - alert('Error: ' + e.textStatus); - }, - (count) => { - console.log(\`There are now \${count} users watching Mr. Smith.\`); - } -); - -onDestroy(() => { - subscription.unsubscribe(); -});`}}),{c(){g=new ct(!1),x=rt(),M=l(),t=o("section"),T=o("header"),q=o("h1"),se=n("Subscribing to Queries"),re=l(),A=o("p"),ne=n(`Subscribing to a query lets you receive updates to that query. This is a - powerful tool for collaborative apps. It's also just as easy as making a - regular entity query.`),ie=l(),v=o("p"),oe=n("Before we get started, you can follow the "),k=o("a"),ue=n("PubSub Server Package"),ce=n(" page to set up a Nymph PubSub server."),le=l(),b=o("p"),he=n("You can use the "),U=o("code"),be=n("subscribeEntities"),de=n(` method on PubSub to subscribe - to a query. It will return a function you can call to subscribe to the - query. That function accepts a resolve and reject callback, similar to a - promise. The resolve function will receive an update, which will at first be - an array of entities, then will be an update object with instructions that - `),O=o("code"),pe=n("updateArray"),me=n(" uses to update the original array."),ye=l(),J(w.$$.fragment),fe=l(),N=o("p"),ge=n(`You can also receive a count of how many subscribers there are to that - query. The count is given to a third callback.`),ve=l(),J(E.$$.fragment),we=l(),d=o("p"),Ee=n("To unsubscribe from the query, use the "),W=o("code"),Se=n("unsubscribe"),_e=n(` method on - the - `),H=o("code"),$e=n("PubSubSubscription"),Pe=n(" object returned by the function."),Te=l(),J(S.$$.fragment),qe=l(),p=o("p"),ke=n("You can subscribe to changes to an entity with the "),I=o("code"),De=n("subscribeWith"),je=n(` - method. This method accepts the callbacks directly and returns a - `),Y=o("code"),Ce=n("PubSubSubscription"),xe=n(` - object.`),Ae=l(),J(_.$$.fragment),Ue=l(),Q=o("p"),Oe=n(`Warning: Subscriptions can lead to resource leaks if left open. Take care to - unsubscribe to every query you are no longer watching.`),Ne=l(),B=o("p"),We=n(`Warning: The PubSub server is smart about removing entities that no longer - match when a new entity matches, but there are some queries that can have - changes in their matching entities without any change to the server (like - relative time queries). These queries won't necessarily be updated correctly - in due time by the PubSub server.`),z=l(),m=o("section"),y=o("a"),He=n("Previous: Entity Querying"),Ie=l(),f=o("a"),Ye=n("Next: Entity Class"),this.h()},l(r){const $=lt("svelte-4wlam7",document.head);g=ht($,!1),x=rt(),$.forEach(a),M=h(r),t=u(r,"SECTION",{});var s=c(t);T=u(s,"HEADER",{class:!0});var Me=c(T);q=u(Me,"H1",{style:!0});var ze=c(q);se=i(ze,"Subscribing to Queries"),ze.forEach(a),Me.forEach(a),re=h(s),A=u(s,"P",{});var Re=c(A);ne=i(Re,`Subscribing to a query lets you receive updates to that query. This is a - powerful tool for collaborative apps. It's also just as easy as making a - regular entity query.`),Re.forEach(a),ie=h(s),v=u(s,"P",{});var F=c(v);oe=i(F,"Before we get started, you can follow the "),k=u(F,"A",{href:!0});var Fe=c(k);ue=i(Fe,"PubSub Server Package"),Fe.forEach(a),ce=i(F," page to set up a Nymph PubSub server."),F.forEach(a),le=h(s),b=u(s,"P",{});var D=c(b);he=i(D,"You can use the "),U=u(D,"CODE",{});var Ge=c(U);be=i(Ge,"subscribeEntities"),Ge.forEach(a),de=i(D,` method on PubSub to subscribe - to a query. It will return a function you can call to subscribe to the - query. That function accepts a resolve and reject callback, similar to a - promise. The resolve function will receive an update, which will at first be - an array of entities, then will be an update object with instructions that - `),O=u(D,"CODE",{});var Je=c(O);pe=i(Je,"updateArray"),Je.forEach(a),me=i(D," uses to update the original array."),D.forEach(a),ye=h(s),K(w.$$.fragment,s),fe=h(s),N=u(s,"P",{});var Ke=c(N);ge=i(Ke,`You can also receive a count of how many subscribers there are to that - query. The count is given to a third callback.`),Ke.forEach(a),ve=h(s),K(E.$$.fragment,s),we=h(s),d=u(s,"P",{});var j=c(d);Ee=i(j,"To unsubscribe from the query, use the "),W=u(j,"CODE",{});var Le=c(W);Se=i(Le,"unsubscribe"),Le.forEach(a),_e=i(j,` method on - the - `),H=u(j,"CODE",{});var Ve=c(H);$e=i(Ve,"PubSubSubscription"),Ve.forEach(a),Pe=i(j," object returned by the function."),j.forEach(a),Te=h(s),K(S.$$.fragment,s),qe=h(s),p=u(s,"P",{});var C=c(p);ke=i(C,"You can subscribe to changes to an entity with the "),I=u(C,"CODE",{});var Xe=c(I);De=i(Xe,"subscribeWith"),Xe.forEach(a),je=i(C,` - method. This method accepts the callbacks directly and returns a - `),Y=u(C,"CODE",{});var Ze=c(Y);Ce=i(Ze,"PubSubSubscription"),Ze.forEach(a),xe=i(C,` - object.`),C.forEach(a),Ae=h(s),K(_.$$.fragment,s),Ue=h(s),Q=u(s,"P",{});var et=c(Q);Oe=i(et,`Warning: Subscriptions can lead to resource leaks if left open. Take care to - unsubscribe to every query you are no longer watching.`),et.forEach(a),Ne=h(s),B=u(s,"P",{});var tt=c(B);We=i(tt,`Warning: The PubSub server is smart about removing entities that no longer - match when a new entity matches, but there are some queries that can have - changes in their matching entities without any change to the server (like - relative time queries). These queries won't necessarily be updated correctly - in due time by the PubSub server.`),tt.forEach(a),s.forEach(a),z=h(r),m=u(r,"SECTION",{class:!0});var G=c(m);y=u(G,"A",{href:!0,class:!0,style:!0});var at=c(y);He=i(at,"Previous: Entity Querying"),at.forEach(a),Ie=h(G),f=u(G,"A",{href:!0,class:!0,style:!0});var st=c(f);Ye=i(st,"Next: Entity Class"),st.forEach(a),G.forEach(a),this.h()},h(){document.title="Subscribing to Queries - User Guide - Nymph.js",g.a=x,Qe(q,"font-size","3em"),P(T,"class","major"),P(k,"href",Be+"/packages/pubsub/"),P(y,"href",Be+"/user-guide/entity-querying"),P(y,"class","button"),Qe(y,"margin",".5em"),P(f,"href",Be+"/user-guide/entity-class"),P(f,"class","button"),Qe(f,"margin",".5em"),P(m,"class","page-steps")},m(r,$){g.m(dt,document.head),e(document.head,x),L(r,M,$),L(r,t,$),e(t,T),e(T,q),e(q,se),e(t,re),e(t,A),e(A,ne),e(t,ie),e(t,v),e(v,oe),e(v,k),e(k,ue),e(v,ce),e(t,le),e(t,b),e(b,he),e(b,U),e(U,be),e(b,de),e(b,O),e(O,pe),e(b,me),e(t,ye),V(w,t,null),e(t,fe),e(t,N),e(N,ge),e(t,ve),V(E,t,null),e(t,we),e(t,d),e(d,Ee),e(d,W),e(W,Se),e(d,_e),e(d,H),e(H,$e),e(d,Pe),e(t,Te),V(S,t,null),e(t,qe),e(t,p),e(p,ke),e(p,I),e(I,De),e(p,je),e(p,Y),e(Y,Ce),e(p,xe),e(t,Ae),V(_,t,null),e(t,Ue),e(t,Q),e(Q,Oe),e(t,Ne),e(t,B),e(B,We),L(r,z,$),L(r,m,$),e(m,y),e(y,He),e(m,Ie),e(m,f),e(f,Ye),R=!0},p:bt,i(r){R||(X(w.$$.fragment,r),X(E.$$.fragment,r),X(S.$$.fragment,r),X(_.$$.fragment,r),R=!0)},o(r){Z(w.$$.fragment,r),Z(E.$$.fragment,r),Z(S.$$.fragment,r),Z(_.$$.fragment,r),R=!1},d(r){a(x),r&&g.d(),r&&a(M),r&&a(t),ee(w),ee(E),ee(S),ee(_),r&&a(z),r&&a(m)}}}class vt extends it{constructor(g){super(),ot(this,g,null,pt,ut,{})}}export{vt as component}; diff --git a/docs/_app/immutable/nodes/25.0a00f3be.js b/docs/_app/immutable/nodes/25.0a00f3be.js new file mode 100644 index 0000000..6314b46 --- /dev/null +++ b/docs/_app/immutable/nodes/25.0a00f3be.js @@ -0,0 +1,151 @@ +import{s as ut,I as yt,e as lt,a as i,f as s,l as ct,x as ft,J as gt,d as c,c as r,g as o,h as j,r as l,m as ht,j as E,k as dt,u as e,i as I,v as vt}from"../chunks/scheduler.d7e45cc8.js";import{S as wt,i as $t,b as Tt,d as bt,m as xt,a as _t,t as Ct,e as Nt}from"../chunks/index.77720afb.js";import{H as Et,g as Ht}from"../chunks/github.64534d2c.js";import{t as Mt}from"../chunks/typescript.09c48802.js";import{b as mt}from"../chunks/paths.d4a6803e.js";function Pt(pt){let p,H,M,t,u,Q='

    Transactions

    ',D,g,B=`In Node.js, Nymph supports nested transactions. Nothing will be permanently + written to the database's storage, and no PubSub subscribers will be + notified, until the highest level transaction is committed. When a nested + transaction is rolled back, the database will be in the state where the + transaction above it started that nested transaction.`,J,v,K=`When you start a transaction, you give it a name, then you can commit or + roll back that transaction, by name. This means if you're doing transactions + recursively, you should use a counter in your name. Nymph uses internal + transactions that start with the "nymph-" prefix, so don't use that. You + should be sure to commit or rollback transactions in the reverse order that + they were started, or you might run into trouble.`,S,w,X="Nymph has the following methods for managing transactions.",q,$,Z="
  • startTransaction - Start a named transaction.
  • commit - Commit a named transaction.
  • rollback - Rollback a named transaction.
  • inTransaction - Check if Nymph is currently running within a transaction.
  • ",z,T,tt=`startTransaction will return a new instance of Nymph. For the rest + of the transaction, until it is committed or rolled back, you should use this + instance. It will be tied to a specific connection to the database.`,A,b,et=`The transaction instance of Nymph has its own set of classes. You can use + its getEntityClass method to get the proper classes for that instance + of Nymph.`,U,x,nt=`When you start a new transaction, entities retrieved from that transaction's + Nymph instance will have that instance within their static nymph + property and instance $nymph property. As long as the entity code + always uses these instances, every query and change should occur within that + transaction.`,Y,_,at=`Not all databases that Nymph supports (specifically, MySQL with an engine + that doesn't support transactions, like the MyISAM engine) can use + transactions. To ensure data consistency, it's highly recommended to use a + configuration that supports transactions.`,O,C,st=`Here is an example of a class that uses a transaction to delete all of its + children when it is deleted. If any of its children cannot be deleted, then + the transaction is rolled back, meaning none of its children get deleted.`,W,y,R,N,ot=`The $setNymph method is used to make sure the entity and all + referenced entities use the transactional Nymph instance. The + tnymph Nymph instance is used during the transaction, and the + children are retrieved using the proper class with + tnymph.getEntityClass(Todo).`,P,h,d,V,F,m,G,k;return y=new Et({props:{language:Mt,code:`import { EntityUniqueConstraintError, type Nymph } from '@nymphjs/nymph'; +import { Entity, nymphJoiProps } from '@nymphjs/nymph'; +import type { AccessControlData } from '@nymphjs/tilmeld'; +import { enforceTilmeld, tilmeldJoiProps } from '@nymphjs/tilmeld'; +import Joi from 'joi'; + +export type TodoData = { + name: string; + done: boolean; + parent?: Todo & TodoData; +} & AccessControlData; + +export class Todo extends Entity { + static ETYPE = 'todo'; + static class = 'Todo'; + + protected $clientEnabledMethods = []; + protected $allowlistData? = ['name', 'done', 'parent']; + protected $protectedTags = []; + protected $allowlistTags? = []; + + constructor() { + super(); + + this.$data.name = ''; + this.$data.done = false; + } + + async $getUniques() { + return [ + \`\${this.$data.user?.guid}:\${this.$data.parent?.guid}:\${this.$data.name}\`, + ]; + } + + /** + * Set a new Nymph instance on this and all contained entities. + */ + $setNymph(nymph: Nymph) { + this.$nymph = nymph; + if (!this.$asleep()) { + if (this.$data.user) { + this.$data.user.$setNymph(nymph); + } + if (this.$data.group) { + this.$data.group.$setNymph(nymph); + } + if (this.$data.parent) { + this.$data.parent.$setNymph(nymph); + } + } + } + + async $save() { + const tilmeld = enforceTilmeld(this); + if (!tilmeld.gatekeeper()) { + // Only allow logged in users to save. + throw new Error('You are not logged in.'); + } + + // Validate the entity's data. + Joi.attempt( + this.$getValidatable(), + Joi.object().keys({ + ...nymphJoiProps, + ...tilmeldJoiProps, + + name: Joi.string().trim(false).max(500, 'utf8').required(), + done: Joi.boolean().required(), + parent: Joi.object().instance(Todo), + }), + 'Invalid Todo: ', + ); + + try { + return await super.$save(); + } catch (e: any) { + if (e instanceof EntityUniqueConstraintError) { + throw new Error('There is already a todo for that.'); + } + throw e; + } + } + + async $delete() { + const transaction = 'todo-delete-' + this.guid; + const nymph = this.$nymph; + const tnymph = await nymph.startTransaction(transaction); + this.$setNymph(tnymph); + + try { + // Delete this todo's children. + const children = await tnymph.getEntities( + { + class: tnymph.getEntityClass(Todo), + skipAc: true, + }, + { + type: '&', + ref: ['parent', this], + }, + ); + + for (let child of children) { + if (!(await child.$delete())) { + throw new Error("Couldn't delete child todo."); + } + } + + // Delete todo. + let success = await super.$delete(); + if (success) { + success = await tnymph.commit(transaction); + } else { + await tnymph.rollback(transaction); + } + this.$setNymph(nymph); + return success; + } catch (e: any) { + await tnymph.rollback(transaction); + this.$setNymph(nymph); + throw e; + } + } +} +`}}),{c(){p=new yt(!1),H=lt(),M=i(),t=s("section"),u=s("header"),u.innerHTML=Q,D=i(),g=s("p"),g.textContent=B,J=i(),v=s("p"),v.textContent=K,S=i(),w=s("p"),w.innerHTML=X,q=i(),$=s("ul"),$.innerHTML=Z,z=i(),T=s("p"),T.innerHTML=tt,A=i(),b=s("p"),b.innerHTML=et,U=i(),x=s("p"),x.innerHTML=nt,Y=i(),_=s("p"),_.textContent=at,O=i(),C=s("p"),C.textContent=st,W=i(),Tt(y.$$.fragment),R=i(),N=s("p"),N.innerHTML=ot,P=i(),h=s("section"),d=s("a"),V=ct("Previous: UIDs"),F=i(),m=s("a"),G=ct("Next: Export and Import"),this.h()},l(a){const f=ft("svelte-10lzn9g",document.head);p=gt(f,!1),H=lt(),f.forEach(c),M=r(a),t=o(a,"SECTION",{});var n=j(t);u=o(n,"HEADER",{class:!0,"data-svelte-h":!0}),l(u)!=="svelte-av4w2r"&&(u.innerHTML=Q),D=r(n),g=o(n,"P",{"data-svelte-h":!0}),l(g)!=="svelte-1rsslgi"&&(g.textContent=B),J=r(n),v=o(n,"P",{"data-svelte-h":!0}),l(v)!=="svelte-12zk7dr"&&(v.textContent=K),S=r(n),w=o(n,"P",{"data-svelte-h":!0}),l(w)!=="svelte-cl7x23"&&(w.innerHTML=X),q=r(n),$=o(n,"UL",{"data-svelte-h":!0}),l($)!=="svelte-11h7zup"&&($.innerHTML=Z),z=r(n),T=o(n,"P",{"data-svelte-h":!0}),l(T)!=="svelte-1yvjz3q"&&(T.innerHTML=tt),A=r(n),b=o(n,"P",{"data-svelte-h":!0}),l(b)!=="svelte-19zzbn9"&&(b.innerHTML=et),U=r(n),x=o(n,"P",{"data-svelte-h":!0}),l(x)!=="svelte-grajno"&&(x.innerHTML=nt),Y=r(n),_=o(n,"P",{"data-svelte-h":!0}),l(_)!=="svelte-15godzb"&&(_.textContent=at),O=r(n),C=o(n,"P",{"data-svelte-h":!0}),l(C)!=="svelte-wfsavt"&&(C.textContent=st),W=r(n),bt(y.$$.fragment,n),R=r(n),N=o(n,"P",{"data-svelte-h":!0}),l(N)!=="svelte-8ttwld"&&(N.innerHTML=ot),n.forEach(c),P=r(a),h=o(a,"SECTION",{class:!0});var L=j(h);d=o(L,"A",{href:!0,class:!0,style:!0});var it=j(d);V=ht(it,"Previous: UIDs"),it.forEach(c),F=r(L),m=o(L,"A",{href:!0,class:!0,style:!0});var rt=j(m);G=ht(rt,"Next: Export and Import"),rt.forEach(c),L.forEach(c),this.h()},h(){document.title="Transactions - User Guide - Nymph.js",p.a=H,E(u,"class","major"),E(d,"href",mt+"/user-guide/uids"),E(d,"class","button"),dt(d,"margin",".5em"),E(m,"href",mt+"/user-guide/export-and-import"),E(m,"class","button"),dt(m,"margin",".5em"),E(h,"class","page-steps")},m(a,f){p.m(Ht,document.head),e(document.head,H),I(a,M,f),I(a,t,f),e(t,u),e(t,D),e(t,g),e(t,J),e(t,v),e(t,S),e(t,w),e(t,q),e(t,$),e(t,z),e(t,T),e(t,A),e(t,b),e(t,U),e(t,x),e(t,Y),e(t,_),e(t,O),e(t,C),e(t,W),xt(y,t,null),e(t,R),e(t,N),I(a,P,f),I(a,h,f),e(h,d),e(d,V),e(h,F),e(h,m),e(m,G),k=!0},p:vt,i(a){k||(_t(y.$$.fragment,a),k=!0)},o(a){Ct(y.$$.fragment,a),k=!1},d(a){a&&(p.d(),c(M),c(t),c(P),c(h)),c(H),Nt(y)}}}class Jt extends wt{constructor(p){super(),$t(this,p,null,Pt,ut,{})}}export{Jt as component}; diff --git a/docs/_app/immutable/nodes/25.73bae614.js b/docs/_app/immutable/nodes/25.73bae614.js deleted file mode 100644 index 9b7b39c..0000000 --- a/docs/_app/immutable/nodes/25.73bae614.js +++ /dev/null @@ -1,177 +0,0 @@ -import{S as De,i as Ie,s as Pe,R as xe,e as Te,a as h,k as s,q as a,y as Oe,F as Se,T as je,h as e,c as d,l as o,m as i,r as n,z as Ae,p as se,n as S,C as t,b as at,A as Je,D as qe,g as He,d as Le,B as Me}from"../chunks/index.d7cc8d8b.js";import{H as Ue,g as We}from"../chunks/github.df9008b1.js";import{t as Ye}from"../chunks/typescript.7dd1ec19.js";import{b as Ce}from"../chunks/paths.d307dac8.js";function Re(ke){let b,j,K,r,N,T,nt,st,A,ot,it,J,rt,lt,C,q,ct,ht,dt,m,k,H,mt,pt,ut,D,L,yt,ft,gt,I,M,Et,wt,bt,P,U,vt,_t,$t,x,W,Nt,Tt,Ct,v,kt,Y,Dt,It,Pt,u,xt,R,Ot,St,z,jt,At,Jt,F,qt,Ht,Q,Lt,Mt,_,Ut,p,Wt,V,Yt,Rt,B,zt,Ft,G,Qt,Vt,X,y,f,Bt,Gt,g,Kt,Z;return _=new Ue({props:{language:Ye,code:`import { EntityUniqueConstraintError, type Nymph } from '@nymphjs/nymph'; -import { Entity, nymphJoiProps } from '@nymphjs/nymph'; -import type { AccessControlData } from '@nymphjs/tilmeld'; -import { enforceTilmeld, tilmeldJoiProps } from '@nymphjs/tilmeld'; -import Joi from 'joi'; - -export type TodoData = { - name: string; - done: boolean; - parent?: Todo & TodoData; -} & AccessControlData; - -export class Todo extends Entity { - static ETYPE = 'todo'; - static class = 'Todo'; - - protected $clientEnabledMethods = []; - protected $allowlistData? = ['name', 'done', 'parent']; - protected $protectedTags = []; - protected $allowlistTags? = []; - - constructor() { - super(); - - this.$data.name = ''; - this.$data.done = false; - } - - async $getUniques() { - return [ - \`\${this.$data.user?.guid}:\${this.$data.parent?.guid}:\${this.$data.name}\`, - ]; - } - - /** - * Set a new Nymph instance on this and all contained entities. - */ - $setNymph(nymph: Nymph) { - this.$nymph = nymph; - if (!this.$asleep()) { - if (this.$data.user) { - this.$data.user.$setNymph(nymph); - } - if (this.$data.group) { - this.$data.group.$setNymph(nymph); - } - if (this.$data.parent) { - this.$data.parent.$setNymph(nymph); - } - } - } - - async $save() { - const tilmeld = enforceTilmeld(this); - if (!tilmeld.gatekeeper()) { - // Only allow logged in users to save. - throw new Error('You are not logged in.'); - } - - // Validate the entity's data. - Joi.attempt( - this.$getValidatable(), - Joi.object().keys({ - ...nymphJoiProps, - ...tilmeldJoiProps, - - name: Joi.string().trim(false).max(500, 'utf8').required(), - done: Joi.boolean().required(), - parent: Joi.object().instance(Todo), - }), - 'Invalid Todo: ', - ); - - try { - return await super.$save(); - } catch (e: any) { - if (e instanceof EntityUniqueConstraintError) { - throw new Error('There is already a todo for that.'); - } - throw e; - } - } - - async $delete() { - const transaction = 'todo-delete-' + this.guid; - const nymph = this.$nymph; - const tnymph = await nymph.startTransaction(transaction); - this.$setNymph(tnymph); - - try { - // Delete this todo's children. - const children = await tnymph.getEntities( - { - class: tnymph.getEntityClass(Todo), - skipAc: true, - }, - { - type: '&', - ref: ['parent', this], - }, - ); - - for (let child of children) { - if (!(await child.$delete())) { - throw new Error("Couldn't delete child todo."); - } - } - - // Delete todo. - let success = await super.$delete(); - if (success) { - success = await tnymph.commit(transaction); - } else { - await tnymph.rollback(transaction); - } - this.$setNymph(nymph); - return success; - } catch (e: any) { - await tnymph.rollback(transaction); - this.$setNymph(nymph); - throw e; - } - } -} -`}}),{c(){b=new xe(!1),j=Te(),K=h(),r=s("section"),N=s("header"),T=s("h1"),nt=a("Transactions"),st=h(),A=s("p"),ot=a(`In Node.js, Nymph supports nested transactions. Nothing will be permanently - written to the database's storage, and no PubSub subscribers will be - notified, until the highest level transaction is committed. When a nested - transaction is rolled back, the database will be in the state where the - transaction above it started that nested transaction.`),it=h(),J=s("p"),rt=a(`When you start a transaction, you give it a name, then you can commit or - roll back that transaction, by name. This means if you're doing transactions - recursively, you should use a counter in your name. Nymph uses internal - transactions that start with the "nymph-" prefix, so don't use that. You - should be sure to commit or rollback transactions in the reverse order that - they were started, or you might run into trouble.`),lt=h(),C=s("p"),q=s("code"),ct=a("Nymph"),ht=a(" has the following methods for managing transactions."),dt=h(),m=s("ul"),k=s("li"),H=s("code"),mt=a("startTransaction"),pt=a(" - Start a named transaction."),ut=h(),D=s("li"),L=s("code"),yt=a("commit"),ft=a(" - Commit a named transaction."),gt=h(),I=s("li"),M=s("code"),Et=a("rollback"),wt=a(" - Rollback a named transaction."),bt=h(),P=s("li"),U=s("code"),vt=a("inTransaction"),_t=a(" - Check if Nymph is currently running within a transaction."),$t=h(),x=s("p"),W=s("code"),Nt=a("startTransaction"),Tt=a(` will return a new instance of Nymph. For the rest - of the transaction, until it is committed or rolled back, you should use this - instance. It will be tied to a specific connection to the database.`),Ct=h(),v=s("p"),kt=a(`The transaction instance of Nymph has its own set of classes. You can use - its `),Y=s("code"),Dt=a("getEntityClass"),It=a(` method to get the proper classes for that instance - of Nymph.`),Pt=h(),u=s("p"),xt=a(`When you start a new transaction, entities retrieved from that transaction's - Nymph instance will have that instance within their static `),R=s("code"),Ot=a("nymph"),St=a(` - property and instance `),z=s("code"),jt=a("$nymph"),At=a(` property. As long as the entity code - always uses these instances, every query and change should occur within that - transaction.`),Jt=h(),F=s("p"),qt=a(`Not all databases that Nymph supports (specifically, MySQL with an engine - that doesn't support transactions, like the MyISAM engine) can use - transactions. To ensure data consistency, it's highly recommended to use a - configuration that supports transactions.`),Ht=h(),Q=s("p"),Lt=a(`Here is an example of a class that uses a transaction to delete all of its - children when it is deleted. If any of its children cannot be deleted, then - the transaction is rolled back, meaning none of its children get deleted.`),Mt=h(),Oe(_.$$.fragment),Ut=h(),p=s("p"),Wt=a("The "),V=s("code"),Yt=a("$setNymph"),Rt=a(` method is used to make sure the entity and all - referenced entities use the transactional Nymph instance. The - `),B=s("code"),zt=a("tnymph"),Ft=a(` Nymph instance is used during the transaction, and the - children are retrieved using the proper class with - `),G=s("code"),Qt=a("tnymph.getEntityClass(Todo)"),Vt=a("."),X=h(),y=s("section"),f=s("a"),Bt=a("Previous: UIDs"),Gt=h(),g=s("a"),Kt=a("Next: Export and Import"),this.h()},l(c){const $=Se("svelte-10lzn9g",document.head);b=je($,!1),j=Te(),$.forEach(e),K=d(c),r=o(c,"SECTION",{});var l=i(r);N=o(l,"HEADER",{class:!0});var oe=i(N);T=o(oe,"H1",{style:!0});var ie=i(T);nt=n(ie,"Transactions"),ie.forEach(e),oe.forEach(e),st=d(l),A=o(l,"P",{});var re=i(A);ot=n(re,`In Node.js, Nymph supports nested transactions. Nothing will be permanently - written to the database's storage, and no PubSub subscribers will be - notified, until the highest level transaction is committed. When a nested - transaction is rolled back, the database will be in the state where the - transaction above it started that nested transaction.`),re.forEach(e),it=d(l),J=o(l,"P",{});var le=i(J);rt=n(le,`When you start a transaction, you give it a name, then you can commit or - roll back that transaction, by name. This means if you're doing transactions - recursively, you should use a counter in your name. Nymph uses internal - transactions that start with the "nymph-" prefix, so don't use that. You - should be sure to commit or rollback transactions in the reverse order that - they were started, or you might run into trouble.`),le.forEach(e),lt=d(l),C=o(l,"P",{});var Xt=i(C);q=o(Xt,"CODE",{});var ce=i(q);ct=n(ce,"Nymph"),ce.forEach(e),ht=n(Xt," has the following methods for managing transactions."),Xt.forEach(e),dt=d(l),m=o(l,"UL",{});var E=i(m);k=o(E,"LI",{});var Zt=i(k);H=o(Zt,"CODE",{});var he=i(H);mt=n(he,"startTransaction"),he.forEach(e),pt=n(Zt," - Start a named transaction."),Zt.forEach(e),ut=d(E),D=o(E,"LI",{});var te=i(D);L=o(te,"CODE",{});var de=i(L);yt=n(de,"commit"),de.forEach(e),ft=n(te," - Commit a named transaction."),te.forEach(e),gt=d(E),I=o(E,"LI",{});var ee=i(I);M=o(ee,"CODE",{});var me=i(M);Et=n(me,"rollback"),me.forEach(e),wt=n(ee," - Rollback a named transaction."),ee.forEach(e),bt=d(E),P=o(E,"LI",{});var ae=i(P);U=o(ae,"CODE",{});var pe=i(U);vt=n(pe,"inTransaction"),pe.forEach(e),_t=n(ae," - Check if Nymph is currently running within a transaction."),ae.forEach(e),E.forEach(e),$t=d(l),x=o(l,"P",{});var ne=i(x);W=o(ne,"CODE",{});var ue=i(W);Nt=n(ue,"startTransaction"),ue.forEach(e),Tt=n(ne,` will return a new instance of Nymph. For the rest - of the transaction, until it is committed or rolled back, you should use this - instance. It will be tied to a specific connection to the database.`),ne.forEach(e),Ct=d(l),v=o(l,"P",{});var tt=i(v);kt=n(tt,`The transaction instance of Nymph has its own set of classes. You can use - its `),Y=o(tt,"CODE",{});var ye=i(Y);Dt=n(ye,"getEntityClass"),ye.forEach(e),It=n(tt,` method to get the proper classes for that instance - of Nymph.`),tt.forEach(e),Pt=d(l),u=o(l,"P",{});var O=i(u);xt=n(O,`When you start a new transaction, entities retrieved from that transaction's - Nymph instance will have that instance within their static `),R=o(O,"CODE",{});var fe=i(R);Ot=n(fe,"nymph"),fe.forEach(e),St=n(O,` - property and instance `),z=o(O,"CODE",{});var ge=i(z);jt=n(ge,"$nymph"),ge.forEach(e),At=n(O,` property. As long as the entity code - always uses these instances, every query and change should occur within that - transaction.`),O.forEach(e),Jt=d(l),F=o(l,"P",{});var Ee=i(F);qt=n(Ee,`Not all databases that Nymph supports (specifically, MySQL with an engine - that doesn't support transactions, like the MyISAM engine) can use - transactions. To ensure data consistency, it's highly recommended to use a - configuration that supports transactions.`),Ee.forEach(e),Ht=d(l),Q=o(l,"P",{});var we=i(Q);Lt=n(we,`Here is an example of a class that uses a transaction to delete all of its - children when it is deleted. If any of its children cannot be deleted, then - the transaction is rolled back, meaning none of its children get deleted.`),we.forEach(e),Mt=d(l),Ae(_.$$.fragment,l),Ut=d(l),p=o(l,"P",{});var w=i(p);Wt=n(w,"The "),V=o(w,"CODE",{});var be=i(V);Yt=n(be,"$setNymph"),be.forEach(e),Rt=n(w,` method is used to make sure the entity and all - referenced entities use the transactional Nymph instance. The - `),B=o(w,"CODE",{});var ve=i(B);zt=n(ve,"tnymph"),ve.forEach(e),Ft=n(w,` Nymph instance is used during the transaction, and the - children are retrieved using the proper class with - `),G=o(w,"CODE",{});var _e=i(G);Qt=n(_e,"tnymph.getEntityClass(Todo)"),_e.forEach(e),Vt=n(w,"."),w.forEach(e),l.forEach(e),X=d(c),y=o(c,"SECTION",{class:!0});var et=i(y);f=o(et,"A",{href:!0,class:!0,style:!0});var $e=i(f);Bt=n($e,"Previous: UIDs"),$e.forEach(e),Gt=d(et),g=o(et,"A",{href:!0,class:!0,style:!0});var Ne=i(g);Kt=n(Ne,"Next: Export and Import"),Ne.forEach(e),et.forEach(e),this.h()},h(){document.title="Transactions - User Guide - Nymph.js",b.a=j,se(T,"font-size","3em"),S(N,"class","major"),S(f,"href",Ce+"/user-guide/uids"),S(f,"class","button"),se(f,"margin",".5em"),S(g,"href",Ce+"/user-guide/export-and-import"),S(g,"class","button"),se(g,"margin",".5em"),S(y,"class","page-steps")},m(c,$){b.m(We,document.head),t(document.head,j),at(c,K,$),at(c,r,$),t(r,N),t(N,T),t(T,nt),t(r,st),t(r,A),t(A,ot),t(r,it),t(r,J),t(J,rt),t(r,lt),t(r,C),t(C,q),t(q,ct),t(C,ht),t(r,dt),t(r,m),t(m,k),t(k,H),t(H,mt),t(k,pt),t(m,ut),t(m,D),t(D,L),t(L,yt),t(D,ft),t(m,gt),t(m,I),t(I,M),t(M,Et),t(I,wt),t(m,bt),t(m,P),t(P,U),t(U,vt),t(P,_t),t(r,$t),t(r,x),t(x,W),t(W,Nt),t(x,Tt),t(r,Ct),t(r,v),t(v,kt),t(v,Y),t(Y,Dt),t(v,It),t(r,Pt),t(r,u),t(u,xt),t(u,R),t(R,Ot),t(u,St),t(u,z),t(z,jt),t(u,At),t(r,Jt),t(r,F),t(F,qt),t(r,Ht),t(r,Q),t(Q,Lt),t(r,Mt),Je(_,r,null),t(r,Ut),t(r,p),t(p,Wt),t(p,V),t(V,Yt),t(p,Rt),t(p,B),t(B,zt),t(p,Ft),t(p,G),t(G,Qt),t(p,Vt),at(c,X,$),at(c,y,$),t(y,f),t(f,Bt),t(y,Gt),t(y,g),t(g,Kt),Z=!0},p:qe,i(c){Z||(He(_.$$.fragment,c),Z=!0)},o(c){Le(_.$$.fragment,c),Z=!1},d(c){e(j),c&&b.d(),c&&e(K),c&&e(r),Me(_),c&&e(X),c&&e(y)}}}class Be extends De{constructor(b){super(),Ie(this,b,null,Re,Pe,{})}}export{Be as component}; diff --git a/docs/_app/immutable/nodes/26.5aa95251.js b/docs/_app/immutable/nodes/26.5aa95251.js deleted file mode 100644 index 820726e..0000000 --- a/docs/_app/immutable/nodes/26.5aa95251.js +++ /dev/null @@ -1,30 +0,0 @@ -import{S as Ke,i as Me,s as Qe,R as Ve,e as Be,a as d,k as a,q as o,y as We,F as Xe,T as Ze,h as t,c as h,l as n,m as s,r as i,z as et,p as ke,n as k,C as e,b as F,A as tt,D as at,g as nt,d as st,B as ot}from"../chunks/index.d7cc8d8b.js";import{H as it,g as rt}from"../chunks/github.df9008b1.js";import{t as lt}from"../chunks/typescript.7dd1ec19.js";import{b as Fe}from"../chunks/paths.d307dac8.js";function ut(Je){let y,P,R,l,U,_,J,K,S,M,Q,j,V,W,c,w,N,X,Z,ee,E,O,te,ae,ne,b,$,se,oe,ie,q,x,re,le,ue,T,A,ce,de,he,v,fe,m,me,G,Ie,De,H,pe,ye,ve,L,ge,Y,I,D,Ue,_e,p,we,z;return v=new it({props:{language:lt,code:`let entity = await Post.factory(); - -entity.id = await nymph.newUID('Blog/Post'); -await entity.$save();`}}),{c(){y=new Ve(!1),P=Be(),R=d(),l=a("section"),U=a("header"),_=a("h1"),J=o("UIDs"),K=d(),S=a("p"),M=o(`UIDs, or unique IDs, provide an easier way for users to identify entities. - UIDs are just sequential numbers and can be used for anything you like, not - just entities. As opposed to a GUID, which is a unique ID for all entities, - a UID is only unique for its own sequence. Therefore, they are more visually - appealing to be used as an ID. (Think Sale #615 vs Sale - #790219d8fb67a1357707b71d.)`),Q=d(),j=a("p"),V=o("Nymph has the following methods for handling UIDs:"),W=d(),c=a("ul"),w=a("li"),N=a("code"),X=o("deleteUID"),Z=o(" - Delete a unique ID from the system."),ee=d(),E=a("li"),O=a("code"),te=o("getUID"),ae=o(" - Get the current value of a unique ID."),ne=d(),b=a("li"),$=a("code"),se=o("newUID"),oe=o(" - Increment or create a unique ID and return the new value."),ie=d(),q=a("li"),x=a("code"),re=o("renameUID"),le=o(" - Rename a unique ID."),ue=d(),T=a("li"),A=a("code"),ce=o("setUID"),de=o(" - Set the value of a unique ID."),he=d(),We(v.$$.fragment),fe=d(),m=a("p"),me=o(`You probably don't want to allow any UIDs from the client. Then a malicious - user can mess with the UID. Instead, from the server side, you can create a - UID when the entity is saved. You can also gate UIDs using abilities like - "uid/get/nameofuid", "uid/new/nameofuid", and "uid/set/nameofuid". These - abilities are `),G=a("strong"),Ie=o("only"),De=o(` checked for client queries. If you're - using UIDs from Node.js and want to gate them, use the - `),H=a("code"),pe=o("checkClientUIDPermissions"),ye=o(" method on Tilmeld."),ve=d(),L=a("p"),ge=o(`Caution: If a UID is incremented, and the entity you're using it on can't be - saved, there is no safe way to decrement the UID back to its previous value. - It's much better to just throw away that UID.`),Y=d(),I=a("section"),D=a("a"),Ue=o("Previous: Defining Entities"),_e=d(),p=a("a"),we=o("Next: Transactions"),this.h()},l(r){const g=Xe("svelte-qnlra6",document.head);y=Ze(g,!1),P=Be(),g.forEach(t),R=h(r),l=n(r,"SECTION",{});var u=s(l);U=n(u,"HEADER",{class:!0});var Pe=s(U);_=n(Pe,"H1",{style:!0});var Se=s(_);J=i(Se,"UIDs"),Se.forEach(t),Pe.forEach(t),K=h(u),S=n(u,"P",{});var je=s(S);M=i(je,`UIDs, or unique IDs, provide an easier way for users to identify entities. - UIDs are just sequential numbers and can be used for anything you like, not - just entities. As opposed to a GUID, which is a unique ID for all entities, - a UID is only unique for its own sequence. Therefore, they are more visually - appealing to be used as an ID. (Think Sale #615 vs Sale - #790219d8fb67a1357707b71d.)`),je.forEach(t),Q=h(u),j=n(u,"P",{});var Ne=s(j);V=i(Ne,"Nymph has the following methods for handling UIDs:"),Ne.forEach(t),W=h(u),c=n(u,"UL",{});var f=s(c);w=n(f,"LI",{});var Ee=s(w);N=n(Ee,"CODE",{});var Oe=s(N);X=i(Oe,"deleteUID"),Oe.forEach(t),Z=i(Ee," - Delete a unique ID from the system."),Ee.forEach(t),ee=h(f),E=n(f,"LI",{});var be=s(E);O=n(be,"CODE",{});var $e=s(O);te=i($e,"getUID"),$e.forEach(t),ae=i(be," - Get the current value of a unique ID."),be.forEach(t),ne=h(f),b=n(f,"LI",{});var qe=s(b);$=n(qe,"CODE",{});var xe=s($);se=i(xe,"newUID"),xe.forEach(t),oe=i(qe," - Increment or create a unique ID and return the new value."),qe.forEach(t),ie=h(f),q=n(f,"LI",{});var Te=s(q);x=n(Te,"CODE",{});var Ae=s(x);re=i(Ae,"renameUID"),Ae.forEach(t),le=i(Te," - Rename a unique ID."),Te.forEach(t),ue=h(f),T=n(f,"LI",{});var Ce=s(T);A=n(Ce,"CODE",{});var Ge=s(A);ce=i(Ge,"setUID"),Ge.forEach(t),de=i(Ce," - Set the value of a unique ID."),Ce.forEach(t),f.forEach(t),he=h(u),et(v.$$.fragment,u),fe=h(u),m=n(u,"P",{});var C=s(m);me=i(C,`You probably don't want to allow any UIDs from the client. Then a malicious - user can mess with the UID. Instead, from the server side, you can create a - UID when the entity is saved. You can also gate UIDs using abilities like - "uid/get/nameofuid", "uid/new/nameofuid", and "uid/set/nameofuid". These - abilities are `),G=n(C,"STRONG",{});var He=s(G);Ie=i(He,"only"),He.forEach(t),De=i(C,` checked for client queries. If you're - using UIDs from Node.js and want to gate them, use the - `),H=n(C,"CODE",{});var Le=s(H);pe=i(Le,"checkClientUIDPermissions"),Le.forEach(t),ye=i(C," method on Tilmeld."),C.forEach(t),ve=h(u),L=n(u,"P",{});var Re=s(L);ge=i(Re,`Caution: If a UID is incremented, and the entity you're using it on can't be - saved, there is no safe way to decrement the UID back to its previous value. - It's much better to just throw away that UID.`),Re.forEach(t),u.forEach(t),Y=h(r),I=n(r,"SECTION",{class:!0});var B=s(I);D=n(B,"A",{href:!0,class:!0,style:!0});var Ye=s(D);Ue=i(Ye,"Previous: Defining Entities"),Ye.forEach(t),_e=h(B),p=n(B,"A",{href:!0,class:!0,style:!0});var ze=s(p);we=i(ze,"Next: Transactions"),ze.forEach(t),B.forEach(t),this.h()},h(){document.title="UIDs - User Guide - Nymph.js",y.a=P,ke(_,"font-size","3em"),k(U,"class","major"),k(D,"href",Fe+"/user-guide/defining-entities"),k(D,"class","button"),ke(D,"margin",".5em"),k(p,"href",Fe+"/user-guide/transactions"),k(p,"class","button"),ke(p,"margin",".5em"),k(I,"class","page-steps")},m(r,g){y.m(rt,document.head),e(document.head,P),F(r,R,g),F(r,l,g),e(l,U),e(U,_),e(_,J),e(l,K),e(l,S),e(S,M),e(l,Q),e(l,j),e(j,V),e(l,W),e(l,c),e(c,w),e(w,N),e(N,X),e(w,Z),e(c,ee),e(c,E),e(E,O),e(O,te),e(E,ae),e(c,ne),e(c,b),e(b,$),e($,se),e(b,oe),e(c,ie),e(c,q),e(q,x),e(x,re),e(q,le),e(c,ue),e(c,T),e(T,A),e(A,ce),e(T,de),e(l,he),tt(v,l,null),e(l,fe),e(l,m),e(m,me),e(m,G),e(G,Ie),e(m,De),e(m,H),e(H,pe),e(m,ye),e(l,ve),e(l,L),e(L,ge),F(r,Y,g),F(r,I,g),e(I,D),e(D,Ue),e(I,_e),e(I,p),e(p,we),z=!0},p:at,i(r){z||(nt(v.$$.fragment,r),z=!0)},o(r){st(v.$$.fragment,r),z=!1},d(r){t(P),r&&y.d(),r&&t(R),r&&t(l),ot(v),r&&t(Y),r&&t(I)}}}class mt extends Ke{constructor(y){super(),Me(this,y,null,ut,Qe,{})}}export{mt as component}; diff --git a/docs/_app/immutable/nodes/26.8d2d7854.js b/docs/_app/immutable/nodes/26.8d2d7854.js new file mode 100644 index 0000000..ef7ebb8 --- /dev/null +++ b/docs/_app/immutable/nodes/26.8d2d7854.js @@ -0,0 +1,17 @@ +import{s as Z,I as ee,e as F,a as r,f as s,l as K,x as te,J as ne,d as i,c as u,g as o,h as T,r as _,m as Q,j as U,k as V,u as t,i as E,v as ae}from"../chunks/scheduler.d7e45cc8.js";import{S as se,i as ie,b as oe,d as le,m as re,a as ue,t as ce,e as de}from"../chunks/index.77720afb.js";import{H as he,g as me}from"../chunks/github.64534d2c.js";import{t as fe}from"../chunks/typescript.09c48802.js";import{b as W}from"../chunks/paths.d4a6803e.js";function pe(X){let h,q,b,e,m,A='

    UIDs

    ',H,g,G=`UIDs, or unique IDs, provide an easier way for users to identify entities. + UIDs are just sequential numbers and can be used for anything you like, not + just entities. As opposed to a GUID, which is a unique ID for all entities, + a UID is only unique for its own sequence. Therefore, they are more visually + appealing to be used as an ID. (Think Sale #615 vs Sale + #790219d8fb67a1357707b71d.)`,P,I,O="Nymph has the following methods for handling UIDs:",$,v,R="
  • deleteUID - Delete a unique ID from the system.
  • getUID - Get the current value of a unique ID.
  • newUID - Increment or create a unique ID and return the new value.
  • renameUID - Rename a unique ID.
  • setUID - Set the value of a unique ID.
  • ",j,f,k,y,Y=`You probably don't want to allow any UIDs from the client. Then a malicious + user can mess with the UID. Instead, from the server side, you can create a + UID when the entity is saved. You can also gate UIDs using abilities like + "uid/get/nameofuid", "uid/new/nameofuid", and "uid/set/nameofuid". These + abilities are only checked for client queries. If you're + using UIDs from Node.js and want to gate them, use the + checkClientUIDPermissions method on Tilmeld.`,L,D,z=`Caution: If a UID is incremented, and the entity you're using it on can't be + saved, there is no safe way to decrement the UID back to its previous value. + It's much better to just throw away that UID.`,w,l,c,N,S,d,M,x;return f=new he({props:{language:fe,code:`let entity = await Post.factory(); + +entity.id = await nymph.newUID('Blog/Post'); +await entity.$save();`}}),{c(){h=new ee(!1),q=F(),b=r(),e=s("section"),m=s("header"),m.innerHTML=A,H=r(),g=s("p"),g.textContent=G,P=r(),I=s("p"),I.textContent=O,$=r(),v=s("ul"),v.innerHTML=R,j=r(),oe(f.$$.fragment),k=r(),y=s("p"),y.innerHTML=Y,L=r(),D=s("p"),D.textContent=z,w=r(),l=s("section"),c=s("a"),N=K("Previous: Defining Entities"),S=r(),d=s("a"),M=K("Next: Transactions"),this.h()},l(n){const p=te("svelte-qnlra6",document.head);h=ne(p,!1),q=F(),p.forEach(i),b=u(n),e=o(n,"SECTION",{});var a=T(e);m=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),_(m)!=="svelte-1qo2qmx"&&(m.innerHTML=A),H=u(a),g=o(a,"P",{"data-svelte-h":!0}),_(g)!=="svelte-4vobrc"&&(g.textContent=G),P=u(a),I=o(a,"P",{"data-svelte-h":!0}),_(I)!=="svelte-dtbas7"&&(I.textContent=O),$=u(a),v=o(a,"UL",{"data-svelte-h":!0}),_(v)!=="svelte-ltuvp2"&&(v.innerHTML=R),j=u(a),le(f.$$.fragment,a),k=u(a),y=o(a,"P",{"data-svelte-h":!0}),_(y)!=="svelte-1o1nq16"&&(y.innerHTML=Y),L=u(a),D=o(a,"P",{"data-svelte-h":!0}),_(D)!=="svelte-unb6h4"&&(D.textContent=z),a.forEach(i),w=u(n),l=o(n,"SECTION",{class:!0});var C=T(l);c=o(C,"A",{href:!0,class:!0,style:!0});var B=T(c);N=Q(B,"Previous: Defining Entities"),B.forEach(i),S=u(C),d=o(C,"A",{href:!0,class:!0,style:!0});var J=T(d);M=Q(J,"Next: Transactions"),J.forEach(i),C.forEach(i),this.h()},h(){document.title="UIDs - User Guide - Nymph.js",h.a=q,U(m,"class","major"),U(c,"href",W+"/user-guide/defining-entities"),U(c,"class","button"),V(c,"margin",".5em"),U(d,"href",W+"/user-guide/transactions"),U(d,"class","button"),V(d,"margin",".5em"),U(l,"class","page-steps")},m(n,p){h.m(me,document.head),t(document.head,q),E(n,b,p),E(n,e,p),t(e,m),t(e,H),t(e,g),t(e,P),t(e,I),t(e,$),t(e,v),t(e,j),re(f,e,null),t(e,k),t(e,y),t(e,L),t(e,D),E(n,w,p),E(n,l,p),t(l,c),t(c,N),t(l,S),t(l,d),t(d,M),x=!0},p:ae,i(n){x||(ue(f.$$.fragment,n),x=!0)},o(n){ce(f.$$.fragment,n),x=!1},d(n){n&&(h.d(),i(b),i(e),i(w),i(l)),i(q),de(f)}}}class _e extends se{constructor(h){super(),ie(this,h,null,pe,Z,{})}}export{_e as component}; diff --git a/docs/_app/immutable/nodes/3.1d509ff4.js b/docs/_app/immutable/nodes/3.1d509ff4.js new file mode 100644 index 0000000..822f76e --- /dev/null +++ b/docs/_app/immutable/nodes/3.1d509ff4.js @@ -0,0 +1,71 @@ +import{s as he,I as de,e as Z,a as l,f as a,l as $,x as ue,J as ce,d as h,c as d,g as r,h as j,r as y,m as H,j as k,u as e,i as ee,v as me}from"../chunks/scheduler.d7e45cc8.js";import{S as pe,i as be,b as te,d as se,m as ne,a as oe,t as ae,e as re}from"../chunks/index.77720afb.js";import{H as ie,g as fe}from"../chunks/github.64534d2c.js";import{b as ye}from"../chunks/bash.7e4226ac.js";import{t as ge}from"../chunks/typescript.09c48802.js";import{b as ve}from"../chunks/paths.d4a6803e.js";function Te(le){let u,C,N,t,c,G='

    Client

    ',M,g,W=`The Nymph Client allows you to query and push data to a Nymph REST server + from the browser. You can also subscribe to entities and queries on a Nymph + PubSub server and be notified of changes.`,P,m,J="

    Installation

    ",D,p,O,o,A,v,B="dist",I,T,F="src",L,x,_,R,U,q,b,K="

    Usage

    ",Y,w,Q="Here's an overview:",z,f,S;return p=new ie({props:{language:ye,code:"npm install --save @nymphjs/client"}}),f=new ie({props:{language:ge,code:`import { Nymph, PubSub } from '@nymphjs/client'; +import TodoClass from 'Todo'; + +const nymphOptions = { + restUrl: 'https://yournymphrestserver/path/to/your/endpoint', + pubsubUrl: 'wss://yournymphpubsubserver', +}; +const nymph = new Nymph(nymphOptions); +const pubsub = new PubSub(nymphOptions, nymph); +const Todo = nymph.addEntityClass(TodoClass); + +// Now you can use Nymph and PubSub. +const myTodo = new Todo(); +myTodo.name = 'This is a new todo!'; +myTodo.done = false; +await myTodo.$save(); + +let allMyTodos = await nymph.getEntities({ class: Todo }); + +let subscription = pubsub.subscribeWith(myTodo, () => { + // When this is called, the entity will already contain new data from the + // publish event. If the entity is deleted, the GUID will be set to null. + if (myTodo.guid != null) { + alert('Somebody touched my todo!'); + } else { + alert('Somebody deleted my todo!'); + subscription.unsubscribe(); + } +}); + +// ... + +// Subscribing to a query. +let todos = []; +let userCount = 0; +let subscription = pubsub.subscribeEntities( + { + class: Todo.class, + }, + { + type: '&', + '!tag': 'archived', + }, +)( + (update) => { + // The first time this is called, \`update\` will be an array of Todo + // entities. After that, \`update\` will be a publish event object. + + // This takes an existing array of entities and either updates it to match + // another array, or performs actions from a publish event object to update + // it. + pubsub.updateArray(todos, update); + + // \`todos\` is now up to date with the latest publishes from the server. + }, + (err) => alert(err), + (count) => { + // If you provide this callback, the server will send updates of how many + // clients are subscribed to this query. + userCount = count; + }, +); + +// ... + +// Remember to clean up your subscriptions when you no longer need them. +subscription.unsubscribe();`}}),{c(){u=new de(!1),C=Z(),N=l(),t=a("section"),c=a("header"),c.innerHTML=G,M=l(),g=a("p"),g.textContent=W,P=l(),m=a("header"),m.innerHTML=J,D=l(),te(p.$$.fragment),O=l(),o=a("p"),A=$("This package is the Nymph client for browsers. You can find UMD in "),v=a("code"),v.textContent=B,I=$(", or TS source in "),T=a("code"),T.textContent=F,L=$(`. There is also a + `),x=a("strong"),_=a("a"),R=$("Node.js client"),U=$("."),q=l(),b=a("header"),b.innerHTML=K,Y=l(),w=a("p"),w.textContent=Q,z=l(),te(f.$$.fragment),this.h()},l(n){const E=ue("svelte-1dn8mvk",document.head);u=ce(E,!1),C=Z(),E.forEach(h),N=d(n),t=r(n,"SECTION",{});var s=j(t);c=r(s,"HEADER",{class:!0,"data-svelte-h":!0}),y(c)!=="svelte-1hokosp"&&(c.innerHTML=G),M=d(s),g=r(s,"P",{"data-svelte-h":!0}),y(g)!=="svelte-1xf6204"&&(g.textContent=W),P=d(s),m=r(s,"HEADER",{class:!0,"data-svelte-h":!0}),y(m)!=="svelte-1hx9pnb"&&(m.innerHTML=J),D=d(s),se(p.$$.fragment,s),O=d(s),o=r(s,"P",{});var i=j(o);A=H(i,"This package is the Nymph client for browsers. You can find UMD in "),v=r(i,"CODE",{"data-svelte-h":!0}),y(v)!=="svelte-14vfyz8"&&(v.textContent=B),I=H(i,", or TS source in "),T=r(i,"CODE",{"data-svelte-h":!0}),y(T)!=="svelte-1fkgjes"&&(T.textContent=F),L=H(i,`. There is also a + `),x=r(i,"STRONG",{});var V=j(x);_=r(V,"A",{href:!0});var X=j(_);R=H(X,"Node.js client"),X.forEach(h),V.forEach(h),U=H(i,"."),i.forEach(h),q=d(s),b=r(s,"HEADER",{class:!0,"data-svelte-h":!0}),y(b)!=="svelte-n87w0o"&&(b.innerHTML=K),Y=d(s),w=r(s,"P",{"data-svelte-h":!0}),y(w)!=="svelte-deeya8"&&(w.textContent=Q),z=d(s),se(f.$$.fragment,s),s.forEach(h),this.h()},h(){document.title="Client - Packages - Nymph.js",u.a=C,k(c,"class","major"),k(m,"class","major"),k(_,"href",ve+"/packages/client-node"),k(b,"class","major")},m(n,E){u.m(fe,document.head),e(document.head,C),ee(n,N,E),ee(n,t,E),e(t,c),e(t,M),e(t,g),e(t,P),e(t,m),e(t,D),ne(p,t,null),e(t,O),e(t,o),e(o,A),e(o,v),e(o,I),e(o,T),e(o,L),e(o,x),e(x,_),e(_,R),e(o,U),e(t,q),e(t,b),e(t,Y),e(t,w),e(t,z),ne(f,t,null),S=!0},p:me,i(n){S||(oe(p.$$.fragment,n),oe(f.$$.fragment,n),S=!0)},o(n){ae(p.$$.fragment,n),ae(f.$$.fragment,n),S=!1},d(n){n&&(u.d(),h(N),h(t)),h(C),re(p),re(f)}}}class He extends pe{constructor(u){super(),be(this,u,null,Te,he,{})}}export{He as component}; diff --git a/docs/_app/immutable/nodes/3.40567583.js b/docs/_app/immutable/nodes/3.40567583.js deleted file mode 100644 index 0ad523a..0000000 --- a/docs/_app/immutable/nodes/3.40567583.js +++ /dev/null @@ -1,73 +0,0 @@ -import{S as Te,i as we,s as Ee,R as Ne,e as ce,a as u,k as n,q as l,y as ue,F as $e,T as Se,h as s,c as m,l as r,m as i,r as h,z as me,p as Ce,n as q,C as e,b as pe,A as be,D as He,g as fe,d as ye,B as ge}from"../chunks/index.d7cc8d8b.js";import{H as ve,g as je}from"../chunks/github.df9008b1.js";import{b as Pe}from"../chunks/bash.2b754df6.js";import{t as De}from"../chunks/typescript.7dd1ec19.js";import{b as ke}from"../chunks/paths.d307dac8.js";function qe(_e){let p,w,D,t,y,g,R,A,E,O,U,v,N,x,I,b,Y,d,M,$,z,G,S,W,B,C,_,F,J,K,T,H,L,Q,j,V,X,f,k;return b=new ve({props:{language:Pe,code:"npm install --save @nymphjs/client"}}),f=new ve({props:{language:De,code:`import { Nymph, PubSub } from '@nymphjs/client'; -import TodoClass from 'Todo'; - -const nymphOptions = { - restUrl: 'https://yournymphrestserver/path/to/your/endpoint', - pubsubUrl: 'wss://yournymphpubsubserver', -}; -const nymph = new Nymph(nymphOptions); -const pubsub = new PubSub(nymphOptions, nymph); -const Todo = nymph.addEntityClass(TodoClass); - -// Now you can use Nymph and PubSub. -const myTodo = new Todo(); -myTodo.name = 'This is a new todo!'; -myTodo.done = false; -await myTodo.$save(); - -let allMyTodos = await nymph.getEntities({ class: Todo }); - -let subscription = pubsub.subscribeWith(myTodo, () => { - // When this is called, the entity will already contain new data from the - // publish event. If the entity is deleted, the GUID will be set to null. - if (myTodo.guid != null) { - alert('Somebody touched my todo!'); - } else { - alert('Somebody deleted my todo!'); - subscription.unsubscribe(); - } -}); - -// ... - -// Subscribing to a query. -let todos = []; -let userCount = 0; -let subscription = pubsub.subscribeEntities( - { - class: Todo.class, - }, - { - type: '&', - '!tag': 'archived', - }, -)( - (update) => { - // The first time this is called, \`update\` will be an array of Todo - // entities. After that, \`update\` will be a publish event object. - - // This takes an existing array of entities and either updates it to match - // another array, or performs actions from a publish event object to update - // it. - pubsub.updateArray(todos, update); - - // \`todos\` is now up to date with the latest publishes from the server. - }, - (err) => alert(err), - (count) => { - // If you provide this callback, the server will send updates of how many - // clients are subscribed to this query. - userCount = count; - }, -); - -// ... - -// Remember to clean up your subscriptions when you no longer need them. -subscription.unsubscribe();`}}),{c(){p=new Ne(!1),w=ce(),D=u(),t=n("section"),y=n("header"),g=n("h1"),R=l("Client"),A=u(),E=n("p"),O=l(`The Nymph Client allows you to query and push data to a Nymph REST server - from the browser. You can also subscribe to entities and queries on a Nymph - PubSub server and be notified of changes.`),U=u(),v=n("header"),N=n("h2"),x=l("Installation"),I=u(),ue(b.$$.fragment),Y=u(),d=n("p"),M=l("This package is the Nymph client for browsers. You can find UMD in "),$=n("code"),z=l("dist"),G=l(", or TS source in "),S=n("code"),W=l("src"),B=l(`. There is also a - `),C=n("strong"),_=n("a"),F=l("Node.js client"),J=l("."),K=u(),T=n("header"),H=n("h2"),L=l("Usage"),Q=u(),j=n("p"),V=l("Here's an overview:"),X=u(),ue(f.$$.fragment),this.h()},l(a){const P=$e("svelte-1dn8mvk",document.head);p=Se(P,!1),w=ce(),P.forEach(s),D=m(a),t=r(a,"SECTION",{});var o=i(t);y=r(o,"HEADER",{class:!0});var Z=i(y);g=r(Z,"H1",{style:!0});var ee=i(g);R=h(ee,"Client"),ee.forEach(s),Z.forEach(s),A=m(o),E=r(o,"P",{});var te=i(E);O=h(te,`The Nymph Client allows you to query and push data to a Nymph REST server - from the browser. You can also subscribe to entities and queries on a Nymph - PubSub server and be notified of changes.`),te.forEach(s),U=m(o),v=r(o,"HEADER",{class:!0});var se=i(v);N=r(se,"H2",{});var oe=i(N);x=h(oe,"Installation"),oe.forEach(s),se.forEach(s),I=m(o),me(b.$$.fragment,o),Y=m(o),d=r(o,"P",{});var c=i(d);M=h(c,"This package is the Nymph client for browsers. You can find UMD in "),$=r(c,"CODE",{});var ae=i($);z=h(ae,"dist"),ae.forEach(s),G=h(c,", or TS source in "),S=r(c,"CODE",{});var ne=i(S);W=h(ne,"src"),ne.forEach(s),B=h(c,`. There is also a - `),C=r(c,"STRONG",{});var re=i(C);_=r(re,"A",{href:!0});var ie=i(_);F=h(ie,"Node.js client"),ie.forEach(s),re.forEach(s),J=h(c,"."),c.forEach(s),K=m(o),T=r(o,"HEADER",{class:!0});var le=i(T);H=r(le,"H2",{});var he=i(H);L=h(he,"Usage"),he.forEach(s),le.forEach(s),Q=m(o),j=r(o,"P",{});var de=i(j);V=h(de,"Here's an overview:"),de.forEach(s),X=m(o),me(f.$$.fragment,o),o.forEach(s),this.h()},h(){document.title="Client - Packages - Nymph.js",p.a=w,Ce(g,"font-size","3em"),q(y,"class","major"),q(v,"class","major"),q(_,"href",ke+"/packages/client-node"),q(T,"class","major")},m(a,P){p.m(je,document.head),e(document.head,w),pe(a,D,P),pe(a,t,P),e(t,y),e(y,g),e(g,R),e(t,A),e(t,E),e(E,O),e(t,U),e(t,v),e(v,N),e(N,x),e(t,I),be(b,t,null),e(t,Y),e(t,d),e(d,M),e(d,$),e($,z),e(d,G),e(d,S),e(S,W),e(d,B),e(d,C),e(C,_),e(_,F),e(d,J),e(t,K),e(t,T),e(T,H),e(H,L),e(t,Q),e(t,j),e(j,V),e(t,X),be(f,t,null),k=!0},p:He,i(a){k||(fe(b.$$.fragment,a),fe(f.$$.fragment,a),k=!0)},o(a){ye(b.$$.fragment,a),ye(f.$$.fragment,a),k=!1},d(a){s(w),a&&p.d(),a&&s(D),a&&s(t),ge(b),ge(f)}}}class Ie extends Te{constructor(p){super(),we(this,p,null,qe,Ee,{})}}export{Ie as component}; diff --git a/docs/_app/immutable/nodes/4.3360583b.js b/docs/_app/immutable/nodes/4.3360583b.js new file mode 100644 index 0000000..6dcb4ca --- /dev/null +++ b/docs/_app/immutable/nodes/4.3360583b.js @@ -0,0 +1,10 @@ +import{s as ye,I as _e,e as ue,a as l,f as s,l as S,x as xe,J as Ce,d as p,c as i,g as o,h as L,r as h,m as k,j as M,u as e,i as fe,v as be}from"../chunks/scheduler.d7e45cc8.js";import{S as $e,i as Te,b as Q,d as V,m as X,a as Z,t as ee,e as te}from"../chunks/index.77720afb.js";import{H as ne,g as Ne}from"../chunks/github.64534d2c.js";import{b as He}from"../chunks/bash.7e4226ac.js";import{t as ge}from"../chunks/typescript.09c48802.js";import{b as Ee}from"../chunks/paths.d4a6803e.js";function je(ve){let c,H,w,t,d,ae='

    Node Client

    ',O,_,se=`The Nymph Node Client lets you do everything the Nymph Client does, but from + Node.JS instead of the browser.`,q,u,oe="

    Installation

    ",D,f,A,r,J,x,re="dist",R,C,le="src",I,E,b,U,z,Y,$,ie=`This package provides fetch and WebSocket ponyfills to Nymph and handles + Tilmeld auth tokens.`,G,g,he="

    Usage

    ",W,T,me="To use, require it instead of @nymphjs/client:",B,v,F,N,pe="Then set up Nymph and PubSub like normal:",K,y,P;return f=new ne({props:{language:He,code:"npm install --save @nymphjs/client-node"}}),v=new ne({props:{language:ge,code:"const { Nymph, PubSub } = require('@nymphjs/client-node');"}}),y=new ne({props:{language:ge,code:`const nymphOptions = { + restUrl: 'https://yournymphrestserver/path/to/your/endpoint', + pubsubUrl: 'wss://yournymphpubsubserver', +}; +const nymph = new Nymph(nymphOptions); +const pubsub = new PubSub(nymphOptions, nymph);`}}),{c(){c=new _e(!1),H=ue(),w=l(),t=s("section"),d=s("header"),d.innerHTML=ae,O=l(),_=s("p"),_.textContent=se,q=l(),u=s("header"),u.innerHTML=oe,D=l(),Q(f.$$.fragment),A=l(),r=s("p"),J=S("This package is the Nymph client for Node.js. You can find CJS in "),x=s("code"),x.textContent=re,R=S(", or TS source in "),C=s("code"),C.textContent=le,I=S(`. There is also a + `),E=s("strong"),b=s("a"),U=S("browser client"),z=S("."),Y=l(),$=s("p"),$.textContent=ie,G=l(),g=s("header"),g.innerHTML=he,W=l(),T=s("p"),T.innerHTML=me,B=l(),Q(v.$$.fragment),F=l(),N=s("p"),N.textContent=pe,K=l(),Q(y.$$.fragment),this.h()},l(a){const j=xe("svelte-1vkc5se",document.head);c=Ce(j,!1),H=ue(),j.forEach(p),w=i(a),t=o(a,"SECTION",{});var n=L(t);d=o(n,"HEADER",{class:!0,"data-svelte-h":!0}),h(d)!=="svelte-kq687x"&&(d.innerHTML=ae),O=i(n),_=o(n,"P",{"data-svelte-h":!0}),h(_)!=="svelte-3yk1jg"&&(_.textContent=se),q=i(n),u=o(n,"HEADER",{class:!0,"data-svelte-h":!0}),h(u)!=="svelte-1hx9pnb"&&(u.innerHTML=oe),D=i(n),V(f.$$.fragment,n),A=i(n),r=o(n,"P",{});var m=L(r);J=k(m,"This package is the Nymph client for Node.js. You can find CJS in "),x=o(m,"CODE",{"data-svelte-h":!0}),h(x)!=="svelte-14vfyz8"&&(x.textContent=re),R=k(m,", or TS source in "),C=o(m,"CODE",{"data-svelte-h":!0}),h(C)!=="svelte-1fkgjes"&&(C.textContent=le),I=k(m,`. There is also a + `),E=o(m,"STRONG",{});var ce=L(E);b=o(ce,"A",{href:!0});var de=L(b);U=k(de,"browser client"),de.forEach(p),ce.forEach(p),z=k(m,"."),m.forEach(p),Y=i(n),$=o(n,"P",{"data-svelte-h":!0}),h($)!=="svelte-1qaxaoa"&&($.textContent=ie),G=i(n),g=o(n,"HEADER",{class:!0,"data-svelte-h":!0}),h(g)!=="svelte-n87w0o"&&(g.innerHTML=he),W=i(n),T=o(n,"P",{"data-svelte-h":!0}),h(T)!=="svelte-vwsf9r"&&(T.innerHTML=me),B=i(n),V(v.$$.fragment,n),F=i(n),N=o(n,"P",{"data-svelte-h":!0}),h(N)!=="svelte-1xojua4"&&(N.textContent=pe),K=i(n),V(y.$$.fragment,n),n.forEach(p),this.h()},h(){document.title="Node Client - Packages - Nymph.js",c.a=H,M(d,"class","major"),M(u,"class","major"),M(b,"href",Ee+"/packages/client"),M(g,"class","major")},m(a,j){c.m(Ne,document.head),e(document.head,H),fe(a,w,j),fe(a,t,j),e(t,d),e(t,O),e(t,_),e(t,q),e(t,u),e(t,D),X(f,t,null),e(t,A),e(t,r),e(r,J),e(r,x),e(r,R),e(r,C),e(r,I),e(r,E),e(E,b),e(b,U),e(r,z),e(t,Y),e(t,$),e(t,G),e(t,g),e(t,W),e(t,T),e(t,B),X(v,t,null),e(t,F),e(t,N),e(t,K),X(y,t,null),P=!0},p:be,i(a){P||(Z(f.$$.fragment,a),Z(v.$$.fragment,a),Z(y.$$.fragment,a),P=!0)},o(a){ee(f.$$.fragment,a),ee(v.$$.fragment,a),ee(y.$$.fragment,a),P=!1},d(a){a&&(c.d(),p(w),p(t)),p(H),te(f),te(v),te(y)}}}class Oe extends $e{constructor(c){super(),Te(this,c,null,je,ye,{})}}export{Oe as component}; diff --git a/docs/_app/immutable/nodes/4.a6408b4a.js b/docs/_app/immutable/nodes/4.a6408b4a.js deleted file mode 100644 index c6884e0..0000000 --- a/docs/_app/immutable/nodes/4.a6408b4a.js +++ /dev/null @@ -1,12 +0,0 @@ -import{S as Ae,i as Re,s as Je,R as Ue,e as Oe,a as d,k as o,q as h,y as de,F as Ie,T as ze,h as s,c as p,l as r,m as l,r as i,z as pe,p as We,n as J,C as e,b as De,A as me,D as Ye,g as fe,d as ue,B as ge}from"../chunks/index.d7cc8d8b.js";import{H as ye,g as Be}from"../chunks/github.df9008b1.js";import{b as Fe}from"../chunks/bash.2b754df6.js";import{t as qe}from"../chunks/typescript.7dd1ec19.js";import{b as Ge}from"../chunks/paths.d307dac8.js";function Ke(xe){let f,T,x,t,b,E,U,I,S,z,W,v,C,Y,B,u,F,c,G,k,K,L,w,M,Q,P,N,V,X,Z,j,ee,te,$,H,ae,se,g,ne,O,oe,re,le,y,he,D,ie,ce,_,A;return u=new ye({props:{language:Fe,code:"npm install --save @nymphjs/client-node"}}),y=new ye({props:{language:qe,code:"const { Nymph, PubSub } = require('@nymphjs/client-node');"}}),_=new ye({props:{language:qe,code:`const nymphOptions = { - restUrl: 'https://yournymphrestserver/path/to/your/endpoint', - pubsubUrl: 'wss://yournymphpubsubserver', -}; -const nymph = new Nymph(nymphOptions); -const pubsub = new PubSub(nymphOptions, nymph);`}}),{c(){f=new Ue(!1),T=Oe(),x=d(),t=o("section"),b=o("header"),E=o("h1"),U=h("Node Client"),I=d(),S=o("p"),z=h(`The Nymph Node Client lets you do everything the Nymph Client does, but from - Node.JS instead of the browser.`),W=d(),v=o("header"),C=o("h2"),Y=h("Installation"),B=d(),de(u.$$.fragment),F=d(),c=o("p"),G=h("This package is the Nymph client for Node.js. You can find CJS in "),k=o("code"),K=h("dist"),L=h(", or TS source in "),w=o("code"),M=h("src"),Q=h(`. There is also a - `),P=o("strong"),N=o("a"),V=h("browser client"),X=h("."),Z=d(),j=o("p"),ee=h(`This package provides fetch and WebSocket ponyfills to Nymph and handles - Tilmeld auth tokens.`),te=d(),$=o("header"),H=o("h2"),ae=h("Usage"),se=d(),g=o("p"),ne=h("To use, require it instead of "),O=o("code"),oe=h("@nymphjs/client"),re=h(":"),le=d(),de(y.$$.fragment),he=d(),D=o("p"),ie=h("Then set up Nymph and PubSub like normal:"),ce=d(),de(_.$$.fragment),this.h()},l(n){const q=Ie("svelte-1vkc5se",document.head);f=ze(q,!1),T=Oe(),q.forEach(s),x=p(n),t=r(n,"SECTION",{});var a=l(t);b=r(a,"HEADER",{class:!0});var _e=l(b);E=r(_e,"H1",{style:!0});var be=l(E);U=i(be,"Node Client"),be.forEach(s),_e.forEach(s),I=p(a),S=r(a,"P",{});var Ee=l(S);z=i(Ee,`The Nymph Node Client lets you do everything the Nymph Client does, but from - Node.JS instead of the browser.`),Ee.forEach(s),W=p(a),v=r(a,"HEADER",{class:!0});var ve=l(v);C=r(ve,"H2",{});var Ne=l(C);Y=i(Ne,"Installation"),Ne.forEach(s),ve.forEach(s),B=p(a),pe(u.$$.fragment,a),F=p(a),c=r(a,"P",{});var m=l(c);G=i(m,"This package is the Nymph client for Node.js. You can find CJS in "),k=r(m,"CODE",{});var $e=l(k);K=i($e,"dist"),$e.forEach(s),L=i(m,", or TS source in "),w=r(m,"CODE",{});var Te=l(w);M=i(Te,"src"),Te.forEach(s),Q=i(m,`. There is also a - `),P=r(m,"STRONG",{});var Se=l(P);N=r(Se,"A",{href:!0});var Ce=l(N);V=i(Ce,"browser client"),Ce.forEach(s),Se.forEach(s),X=i(m,"."),m.forEach(s),Z=p(a),j=r(a,"P",{});var ke=l(j);ee=i(ke,`This package provides fetch and WebSocket ponyfills to Nymph and handles - Tilmeld auth tokens.`),ke.forEach(s),te=p(a),$=r(a,"HEADER",{class:!0});var we=l($);H=r(we,"H2",{});var Pe=l(H);ae=i(Pe,"Usage"),Pe.forEach(s),we.forEach(s),se=p(a),g=r(a,"P",{});var R=l(g);ne=i(R,"To use, require it instead of "),O=r(R,"CODE",{});var je=l(O);oe=i(je,"@nymphjs/client"),je.forEach(s),re=i(R,":"),R.forEach(s),le=p(a),pe(y.$$.fragment,a),he=p(a),D=r(a,"P",{});var He=l(D);ie=i(He,"Then set up Nymph and PubSub like normal:"),He.forEach(s),ce=p(a),pe(_.$$.fragment,a),a.forEach(s),this.h()},h(){document.title="Node Client - Packages - Nymph.js",f.a=T,We(E,"font-size","3em"),J(b,"class","major"),J(v,"class","major"),J(N,"href",Ge+"/packages/client"),J($,"class","major")},m(n,q){f.m(Be,document.head),e(document.head,T),De(n,x,q),De(n,t,q),e(t,b),e(b,E),e(E,U),e(t,I),e(t,S),e(S,z),e(t,W),e(t,v),e(v,C),e(C,Y),e(t,B),me(u,t,null),e(t,F),e(t,c),e(c,G),e(c,k),e(k,K),e(c,L),e(c,w),e(w,M),e(c,Q),e(c,P),e(P,N),e(N,V),e(c,X),e(t,Z),e(t,j),e(j,ee),e(t,te),e(t,$),e($,H),e(H,ae),e(t,se),e(t,g),e(g,ne),e(g,O),e(O,oe),e(g,re),e(t,le),me(y,t,null),e(t,he),e(t,D),e(D,ie),e(t,ce),me(_,t,null),A=!0},p:Ye,i(n){A||(fe(u.$$.fragment,n),fe(y.$$.fragment,n),fe(_.$$.fragment,n),A=!0)},o(n){ue(u.$$.fragment,n),ue(y.$$.fragment,n),ue(_.$$.fragment,n),A=!1},d(n){s(T),n&&f.d(),n&&s(x),n&&s(t),ge(u),ge(y),ge(_)}}}class Ze extends Ae{constructor(f){super(),Re(this,f,null,Ke,Je,{})}}export{Ze as component}; diff --git a/docs/_app/immutable/nodes/5.0b26b696.js b/docs/_app/immutable/nodes/5.0b26b696.js new file mode 100644 index 0000000..cb29641 --- /dev/null +++ b/docs/_app/immutable/nodes/5.0b26b696.js @@ -0,0 +1,15 @@ +import{s as W,I as X,e as I,a as s,f as o,x as Y,J as Z,d as H,c as r,g as l,h as ee,r as f,j as $,u as a,i as z,v as te}from"../chunks/scheduler.d7e45cc8.js";import{S as ae,i as ne,b as O,d as J,m as U,a as B,t as F,e as G}from"../chunks/index.77720afb.js";import{H as K,g as se}from"../chunks/github.64534d2c.js";import{b as re}from"../chunks/bash.7e4226ac.js";import{t as oe}from"../chunks/typescript.09c48802.js";function le(V){let i,_,L,e,h,q='

    MySQL Driver

    ',C,y,N=`The MySQL driver lets you configure Nymph to query and save data to a MySQL + database.`,T,m,Q="

    Installation

    ",w,c,b,d,A="

    Usage

    ",j,g,P=`Supply an instance of this driver with its configuration to Nymph's + constructor.`,E,p,S,u,k="

    Options

    ",D,v,R='See the config declaration file.',M;return c=new K({props:{language:re,code:"npm install --save @nymphjs/driver-mysql"}}),p=new K({props:{language:oe,code:`import { Nymph } from '@nymphjs/nymph'; +import MySQLDriver from '@nymphjs/driver-mysql'; + +const mysqlConfig = { + host: 'your_db_host', + database: 'your_database', + user: 'your_user', + password: 'your_password', +}; + +const nymph = new Nymph({}, new MySQLDriver(mysqlConfig)); + +// All done. Nymph is ready to use.`}}),{c(){i=new X(!1),_=I(),L=s(),e=o("section"),h=o("header"),h.innerHTML=q,C=s(),y=o("p"),y.textContent=N,T=s(),m=o("header"),m.innerHTML=Q,w=s(),O(c.$$.fragment),b=s(),d=o("header"),d.innerHTML=A,j=s(),g=o("p"),g.textContent=P,E=s(),O(p.$$.fragment),S=s(),u=o("header"),u.innerHTML=k,D=s(),v=o("p"),v.innerHTML=R,this.h()},l(n){const x=Y("svelte-vuwwx9",document.head);i=Z(x,!1),_=I(),x.forEach(H),L=r(n),e=l(n,"SECTION",{});var t=ee(e);h=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),f(h)!=="svelte-npnixk"&&(h.innerHTML=q),C=r(t),y=l(t,"P",{"data-svelte-h":!0}),f(y)!=="svelte-l950z0"&&(y.textContent=N),T=r(t),m=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),f(m)!=="svelte-1hx9pnb"&&(m.innerHTML=Q),w=r(t),J(c.$$.fragment,t),b=r(t),d=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),f(d)!=="svelte-n87w0o"&&(d.innerHTML=A),j=r(t),g=l(t,"P",{"data-svelte-h":!0}),f(g)!=="svelte-11ejrn5"&&(g.textContent=P),E=r(t),J(p.$$.fragment,t),S=r(t),u=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),f(u)!=="svelte-1v13hnh"&&(u.innerHTML=k),D=r(t),v=l(t,"P",{"data-svelte-h":!0}),f(v)!=="svelte-10vpxnw"&&(v.innerHTML=R),t.forEach(H),this.h()},h(){document.title="MySQL Driver - Packages - Nymph.js",i.a=_,$(h,"class","major"),$(m,"class","major"),$(d,"class","major"),$(u,"class","major")},m(n,x){i.m(se,document.head),a(document.head,_),z(n,L,x),z(n,e,x),a(e,h),a(e,C),a(e,y),a(e,T),a(e,m),a(e,w),U(c,e,null),a(e,b),a(e,d),a(e,j),a(e,g),a(e,E),U(p,e,null),a(e,S),a(e,u),a(e,D),a(e,v),M=!0},p:te,i(n){M||(B(c.$$.fragment,n),B(p.$$.fragment,n),M=!0)},o(n){F(c.$$.fragment,n),F(p.$$.fragment,n),M=!1},d(n){n&&(i.d(),H(L),H(e)),H(_),G(c),G(p)}}}class pe extends ae{constructor(i){super(),ne(this,i,null,le,W,{})}}export{pe as component}; diff --git a/docs/_app/immutable/nodes/5.1b2c12d8.js b/docs/_app/immutable/nodes/5.1b2c12d8.js deleted file mode 100644 index c9de077..0000000 --- a/docs/_app/immutable/nodes/5.1b2c12d8.js +++ /dev/null @@ -1,17 +0,0 @@ -import{S as _e,i as ge,s as ve,R as Ee,e as le,a as h,k as o,q as i,y as he,F as Se,T as $e,h as r,c,l as n,m as l,r as m,z as ie,p as He,n as _,C as e,b as ce,A as me,D as be,g as de,d as pe,B as fe}from"../chunks/index.d7cc8d8b.js";import{H as ue,g as we}from"../chunks/github.df9008b1.js";import{b as De}from"../chunks/bash.2b754df6.js";import{t as je}from"../chunks/typescript.7dd1ec19.js";function qe(ye){let p,H,M,t,g,v,x,A,b,C,P,E,w,R,T,f,k,S,D,I,O,j,z,U,u,B,$,q,F,G,y,J,d,K,V,N;return f=new ue({props:{language:De,code:"npm install --save @nymphjs/driver-mysql"}}),u=new ue({props:{language:je,code:`import { Nymph } from '@nymphjs/nymph'; -import MySQLDriver from '@nymphjs/driver-mysql'; - -const mysqlConfig = { - host: 'your_db_host', - database: 'your_database', - user: 'your_user', - password: 'your_password', -}; - -const nymph = new Nymph({}, new MySQLDriver(mysqlConfig)); - -// All done. Nymph is ready to use.`}}),{c(){p=new Ee(!1),H=le(),M=h(),t=o("section"),g=o("header"),v=o("h1"),x=i("MySQL Driver"),A=h(),b=o("p"),C=i(`The MySQL driver lets you configure Nymph to query and save data to a MySQL - database.`),P=h(),E=o("header"),w=o("h2"),R=i("Installation"),T=h(),he(f.$$.fragment),k=h(),S=o("header"),D=o("h2"),I=i("Usage"),O=h(),j=o("p"),z=i(`Supply an instance of this driver with its configuration to Nymph's - constructor.`),U=h(),he(u.$$.fragment),B=h(),$=o("header"),q=o("h2"),F=i("Options"),G=h(),y=o("p"),J=i("See the "),d=o("a"),K=i("config declaration file"),V=i("."),this.h()},l(s){const L=Se("svelte-vuwwx9",document.head);p=$e(L,!1),H=le(),L.forEach(r),M=c(s),t=n(s,"SECTION",{});var a=l(t);g=n(a,"HEADER",{class:!0});var W=l(g);v=n(W,"H1",{style:!0});var X=l(v);x=m(X,"MySQL Driver"),X.forEach(r),W.forEach(r),A=c(a),b=n(a,"P",{});var Y=l(b);C=m(Y,`The MySQL driver lets you configure Nymph to query and save data to a MySQL - database.`),Y.forEach(r),P=c(a),E=n(a,"HEADER",{class:!0});var Z=l(E);w=n(Z,"H2",{});var ee=l(w);R=m(ee,"Installation"),ee.forEach(r),Z.forEach(r),T=c(a),ie(f.$$.fragment,a),k=c(a),S=n(a,"HEADER",{class:!0});var te=l(S);D=n(te,"H2",{});var ae=l(D);I=m(ae,"Usage"),ae.forEach(r),te.forEach(r),O=c(a),j=n(a,"P",{});var re=l(j);z=m(re,`Supply an instance of this driver with its configuration to Nymph's - constructor.`),re.forEach(r),U=c(a),ie(u.$$.fragment,a),B=c(a),$=n(a,"HEADER",{class:!0});var se=l($);q=n(se,"H2",{});var oe=l(q);F=m(oe,"Options"),oe.forEach(r),se.forEach(r),G=c(a),y=n(a,"P",{});var Q=l(y);J=m(Q,"See the "),d=n(Q,"A",{href:!0,target:!0,rel:!0});var ne=l(d);K=m(ne,"config declaration file"),ne.forEach(r),V=m(Q,"."),Q.forEach(r),a.forEach(r),this.h()},h(){document.title="MySQL Driver - Packages - Nymph.js",p.a=H,He(v,"font-size","3em"),_(g,"class","major"),_(E,"class","major"),_(S,"class","major"),_($,"class","major"),_(d,"href","https://github.com/sciactive/nymphjs/tree/master/packages/driver-mysql/src/conf/d.ts"),_(d,"target","_blank"),_(d,"rel","external")},m(s,L){p.m(we,document.head),e(document.head,H),ce(s,M,L),ce(s,t,L),e(t,g),e(g,v),e(v,x),e(t,A),e(t,b),e(b,C),e(t,P),e(t,E),e(E,w),e(w,R),e(t,T),me(f,t,null),e(t,k),e(t,S),e(S,D),e(D,I),e(t,O),e(t,j),e(j,z),e(t,U),me(u,t,null),e(t,B),e(t,$),e($,q),e(q,F),e(t,G),e(t,y),e(y,J),e(y,d),e(d,K),e(y,V),N=!0},p:be,i(s){N||(de(f.$$.fragment,s),de(u.$$.fragment,s),N=!0)},o(s){pe(f.$$.fragment,s),pe(u.$$.fragment,s),N=!1},d(s){r(H),s&&p.d(),s&&r(M),s&&r(t),fe(f),fe(u)}}}class xe extends _e{constructor(p){super(),ge(this,p,null,qe,ve,{})}}export{xe as component}; diff --git a/docs/_app/immutable/nodes/6.e58e9779.js b/docs/_app/immutable/nodes/6.e58e9779.js new file mode 100644 index 0000000..5d4d1af --- /dev/null +++ b/docs/_app/immutable/nodes/6.e58e9779.js @@ -0,0 +1,15 @@ +import{s as W,I as X,e as I,a as n,f as o,x as Y,J as Z,d as H,c as r,g as l,h as ee,r as u,j as L,u as a,i as z,v as te}from"../chunks/scheduler.d7e45cc8.js";import{S as ae,i as se,b as O,d as J,m as U,a as B,t as F,e as G}from"../chunks/index.77720afb.js";import{H as K,g as ne}from"../chunks/github.64534d2c.js";import{b as re}from"../chunks/bash.7e4226ac.js";import{t as oe}from"../chunks/typescript.09c48802.js";function le(V){let i,y,$,e,h,q='

    PostgreSQL Driver

    ',T,f,D=`The PostgreSQL driver lets you configure Nymph to query and save data to a + Postgres database.`,b,m,N="

    Installation

    ",j,p,E,c,A="

    Usage

    ",P,_,Q=`Supply an instance of this driver with its configuration to Nymph's + constructor.`,M,d,S,g,k="

    Options

    ",w,v,R='See the config declaration file.',C;return p=new K({props:{language:re,code:"npm install --save @nymphjs/driver-postgresql"}}),d=new K({props:{language:oe,code:`import { Nymph } from '@nymphjs/nymph'; +import PostgreSQLDriver from '@nymphjs/driver-postgresql'; + +const postgresqlConfig = { + host: 'your_db_host', + database: 'your_database', + user: 'your_user', + password: 'your_password', +}; + +const nymph = new Nymph({}, new PostgreSQLDriver(postgresqlConfig)); + +// All done. Nymph is ready to use.`}}),{c(){i=new X(!1),y=I(),$=n(),e=o("section"),h=o("header"),h.innerHTML=q,T=n(),f=o("p"),f.textContent=D,b=n(),m=o("header"),m.innerHTML=N,j=n(),O(p.$$.fragment),E=n(),c=o("header"),c.innerHTML=A,P=n(),_=o("p"),_.textContent=Q,M=n(),O(d.$$.fragment),S=n(),g=o("header"),g.innerHTML=k,w=n(),v=o("p"),v.innerHTML=R,this.h()},l(s){const x=Y("svelte-xt0lgh",document.head);i=Z(x,!1),y=I(),x.forEach(H),$=r(s),e=l(s,"SECTION",{});var t=ee(e);h=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(h)!=="svelte-poi6su"&&(h.innerHTML=q),T=r(t),f=l(t,"P",{"data-svelte-h":!0}),u(f)!=="svelte-1c4exqz"&&(f.textContent=D),b=r(t),m=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(m)!=="svelte-1hx9pnb"&&(m.innerHTML=N),j=r(t),J(p.$$.fragment,t),E=r(t),c=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(c)!=="svelte-n87w0o"&&(c.innerHTML=A),P=r(t),_=l(t,"P",{"data-svelte-h":!0}),u(_)!=="svelte-11ejrn5"&&(_.textContent=Q),M=r(t),J(d.$$.fragment,t),S=r(t),g=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(g)!=="svelte-1v13hnh"&&(g.innerHTML=k),w=r(t),v=l(t,"P",{"data-svelte-h":!0}),u(v)!=="svelte-d54xk8"&&(v.innerHTML=R),t.forEach(H),this.h()},h(){document.title="PostgreSQL Driver - Packages - Nymph.js",i.a=y,L(h,"class","major"),L(m,"class","major"),L(c,"class","major"),L(g,"class","major")},m(s,x){i.m(ne,document.head),a(document.head,y),z(s,$,x),z(s,e,x),a(e,h),a(e,T),a(e,f),a(e,b),a(e,m),a(e,j),U(p,e,null),a(e,E),a(e,c),a(e,P),a(e,_),a(e,M),U(d,e,null),a(e,S),a(e,g),a(e,w),a(e,v),C=!0},p:te,i(s){C||(B(p.$$.fragment,s),B(d.$$.fragment,s),C=!0)},o(s){F(p.$$.fragment,s),F(d.$$.fragment,s),C=!1},d(s){s&&(i.d(),H($),H(e)),H(y),G(p),G(d)}}}class de extends ae{constructor(i){super(),se(this,i,null,le,W,{})}}export{de as component}; diff --git a/docs/_app/immutable/nodes/6.f5c121f7.js b/docs/_app/immutable/nodes/6.f5c121f7.js deleted file mode 100644 index 84044f2..0000000 --- a/docs/_app/immutable/nodes/6.f5c121f7.js +++ /dev/null @@ -1,17 +0,0 @@ -import{S as _e,i as ye,s as ve,R as Ee,e as le,a as h,k as o,q as i,y as he,F as $e,T as Pe,h as r,c,l as n,m as l,r as m,z as ie,p as Se,n as _,C as e,b as ce,A as me,D as He,g as de,d as pe,B as fe}from"../chunks/index.d7cc8d8b.js";import{H as ge,g as be}from"../chunks/github.df9008b1.js";import{b as De}from"../chunks/bash.2b754df6.js";import{t as je}from"../chunks/typescript.7dd1ec19.js";function qe(ue){let p,S,N,t,y,v,L,Q,H,C,R,E,b,T,k,f,I,$,D,O,z,j,U,B,g,F,P,q,G,J,u,K,d,M,V,x;return f=new ge({props:{language:De,code:"npm install --save @nymphjs/driver-postgresql"}}),g=new ge({props:{language:je,code:`import { Nymph } from '@nymphjs/nymph'; -import PostgreSQLDriver from '@nymphjs/driver-postgresql'; - -const postgresqlConfig = { - host: 'your_db_host', - database: 'your_database', - user: 'your_user', - password: 'your_password', -}; - -const nymph = new Nymph({}, new PostgreSQLDriver(postgresqlConfig)); - -// All done. Nymph is ready to use.`}}),{c(){p=new Ee(!1),S=le(),N=h(),t=o("section"),y=o("header"),v=o("h1"),L=i("PostgreSQL Driver"),Q=h(),H=o("p"),C=i(`The PostgreSQL driver lets you configure Nymph to query and save data to a - Postgres database.`),R=h(),E=o("header"),b=o("h2"),T=i("Installation"),k=h(),he(f.$$.fragment),I=h(),$=o("header"),D=o("h2"),O=i("Usage"),z=h(),j=o("p"),U=i(`Supply an instance of this driver with its configuration to Nymph's - constructor.`),B=h(),he(g.$$.fragment),F=h(),P=o("header"),q=o("h2"),G=i("Options"),J=h(),u=o("p"),K=i("See the "),d=o("a"),M=i("config declaration file"),V=i("."),this.h()},l(s){const w=$e("svelte-xt0lgh",document.head);p=Pe(w,!1),S=le(),w.forEach(r),N=c(s),t=n(s,"SECTION",{});var a=l(t);y=n(a,"HEADER",{class:!0});var W=l(y);v=n(W,"H1",{style:!0});var X=l(v);L=m(X,"PostgreSQL Driver"),X.forEach(r),W.forEach(r),Q=c(a),H=n(a,"P",{});var Y=l(H);C=m(Y,`The PostgreSQL driver lets you configure Nymph to query and save data to a - Postgres database.`),Y.forEach(r),R=c(a),E=n(a,"HEADER",{class:!0});var Z=l(E);b=n(Z,"H2",{});var ee=l(b);T=m(ee,"Installation"),ee.forEach(r),Z.forEach(r),k=c(a),ie(f.$$.fragment,a),I=c(a),$=n(a,"HEADER",{class:!0});var te=l($);D=n(te,"H2",{});var ae=l(D);O=m(ae,"Usage"),ae.forEach(r),te.forEach(r),z=c(a),j=n(a,"P",{});var re=l(j);U=m(re,`Supply an instance of this driver with its configuration to Nymph's - constructor.`),re.forEach(r),B=c(a),ie(g.$$.fragment,a),F=c(a),P=n(a,"HEADER",{class:!0});var se=l(P);q=n(se,"H2",{});var oe=l(q);G=m(oe,"Options"),oe.forEach(r),se.forEach(r),J=c(a),u=n(a,"P",{});var A=l(u);K=m(A,"See the "),d=n(A,"A",{href:!0,target:!0,rel:!0});var ne=l(d);M=m(ne,"config declaration file"),ne.forEach(r),V=m(A,"."),A.forEach(r),a.forEach(r),this.h()},h(){document.title="PostgreSQL Driver - Packages - Nymph.js",p.a=S,Se(v,"font-size","3em"),_(y,"class","major"),_(E,"class","major"),_($,"class","major"),_(P,"class","major"),_(d,"href","https://github.com/sciactive/nymphjs/tree/master/packages/driver-postgresql/src/conf/d.ts"),_(d,"target","_blank"),_(d,"rel","external")},m(s,w){p.m(be,document.head),e(document.head,S),ce(s,N,w),ce(s,t,w),e(t,y),e(y,v),e(v,L),e(t,Q),e(t,H),e(H,C),e(t,R),e(t,E),e(E,b),e(b,T),e(t,k),me(f,t,null),e(t,I),e(t,$),e($,D),e(D,O),e(t,z),e(t,j),e(j,U),e(t,B),me(g,t,null),e(t,F),e(t,P),e(P,q),e(q,G),e(t,J),e(t,u),e(u,K),e(u,d),e(d,M),e(u,V),x=!0},p:He,i(s){x||(de(f.$$.fragment,s),de(g.$$.fragment,s),x=!0)},o(s){pe(f.$$.fragment,s),pe(g.$$.fragment,s),x=!1},d(s){r(S),s&&p.d(),s&&r(N),s&&r(t),fe(f),fe(g)}}}class Le extends _e{constructor(p){super(),ye(this,p,null,qe,ve,{})}}export{Le as component}; diff --git a/docs/_app/immutable/nodes/7.ba2eca6e.js b/docs/_app/immutable/nodes/7.ba2eca6e.js new file mode 100644 index 0000000..8e7b990 --- /dev/null +++ b/docs/_app/immutable/nodes/7.ba2eca6e.js @@ -0,0 +1,12 @@ +import{s as W,I as X,e as I,a as s,f as i,x as Y,J as Z,d as H,c as r,g as l,h as ee,r as u,j as C,u as a,i as O,v as te}from"../chunks/scheduler.d7e45cc8.js";import{S as ae,i as ne,b as z,d as J,m as U,a as B,t as F,e as G}from"../chunks/index.77720afb.js";import{H as K,g as se}from"../chunks/github.64534d2c.js";import{b as re}from"../chunks/bash.7e4226ac.js";import{t as ie}from"../chunks/typescript.09c48802.js";function le(V){let o,y,L,e,h,q='

    SQLite3 Driver

    ',b,g,N=`The SQLite3 driver lets you configure Nymph to query and save data to a + SQLite3 database. This includes an in memory SQLite3 database.`,j,m,Q="

    Installation

    ",T,c,S,d,A="

    Usage

    ",E,v,P=`Supply an instance of this driver with its configuration to Nymph's + constructor.`,M,p,w,f,k="

    Options

    ",D,_,R='See the config declaration file.',$;return c=new K({props:{language:re,code:"npm install --save @nymphjs/driver-sqlite3"}}),p=new K({props:{language:ie,code:`import { Nymph } from '@nymphjs/nymph'; +import SQLite3Driver from '@nymphjs/driver-sqlite3'; + +const sqliteConfig = { + filename: __dirname + '/mydatabase.db', +}; + +const nymph = new Nymph({}, new SQLite3Driver(sqliteConfig)); + +// All done. Nymph is ready to use.`}}),{c(){o=new X(!1),y=I(),L=s(),e=i("section"),h=i("header"),h.innerHTML=q,b=s(),g=i("p"),g.textContent=N,j=s(),m=i("header"),m.innerHTML=Q,T=s(),z(c.$$.fragment),S=s(),d=i("header"),d.innerHTML=A,E=s(),v=i("p"),v.textContent=P,M=s(),z(p.$$.fragment),w=s(),f=i("header"),f.innerHTML=k,D=s(),_=i("p"),_.innerHTML=R,this.h()},l(n){const x=Y("svelte-iu1j96",document.head);o=Z(x,!1),y=I(),x.forEach(H),L=r(n),e=l(n,"SECTION",{});var t=ee(e);h=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(h)!=="svelte-briojb"&&(h.innerHTML=q),b=r(t),g=l(t,"P",{"data-svelte-h":!0}),u(g)!=="svelte-1lwbj46"&&(g.textContent=N),j=r(t),m=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(m)!=="svelte-1hx9pnb"&&(m.innerHTML=Q),T=r(t),J(c.$$.fragment,t),S=r(t),d=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(d)!=="svelte-n87w0o"&&(d.innerHTML=A),E=r(t),v=l(t,"P",{"data-svelte-h":!0}),u(v)!=="svelte-11ejrn5"&&(v.textContent=P),M=r(t),J(p.$$.fragment,t),w=r(t),f=l(t,"HEADER",{class:!0,"data-svelte-h":!0}),u(f)!=="svelte-1v13hnh"&&(f.innerHTML=k),D=r(t),_=l(t,"P",{"data-svelte-h":!0}),u(_)!=="svelte-1kg643x"&&(_.innerHTML=R),t.forEach(H),this.h()},h(){document.title="SQLite3 Driver - Packages - Nymph.js",o.a=y,C(h,"class","major"),C(m,"class","major"),C(d,"class","major"),C(f,"class","major")},m(n,x){o.m(se,document.head),a(document.head,y),O(n,L,x),O(n,e,x),a(e,h),a(e,b),a(e,g),a(e,j),a(e,m),a(e,T),U(c,e,null),a(e,S),a(e,d),a(e,E),a(e,v),a(e,M),U(p,e,null),a(e,w),a(e,f),a(e,D),a(e,_),$=!0},p:te,i(n){$||(B(c.$$.fragment,n),B(p.$$.fragment,n),$=!0)},o(n){F(c.$$.fragment,n),F(p.$$.fragment,n),$=!1},d(n){n&&(o.d(),H(L),H(e)),H(y),G(c),G(p)}}}class pe extends ae{constructor(o){super(),ne(this,o,null,le,W,{})}}export{pe as component}; diff --git a/docs/_app/immutable/nodes/7.c51626ed.js b/docs/_app/immutable/nodes/7.c51626ed.js deleted file mode 100644 index 6c4dbd9..0000000 --- a/docs/_app/immutable/nodes/7.c51626ed.js +++ /dev/null @@ -1,14 +0,0 @@ -import{S as _e,i as ye,s as ve,R as Ee,e as ie,a as l,k as n,q as h,y as le,F as Se,T as $e,h as r,c,l as o,m as i,r as m,z as he,p as be,n as _,C as e,b as ce,A as me,D as He,g as de,d as pe,B as fe}from"../chunks/index.d7cc8d8b.js";import{H as ue,g as Le}from"../chunks/github.df9008b1.js";import{b as Qe}from"../chunks/bash.2b754df6.js";import{t as je}from"../chunks/typescript.7dd1ec19.js";function De(ge){let p,b,N,t,y,v,T,x,H,C,P,E,L,R,k,f,I,S,Q,O,z,j,U,B,u,F,$,D,G,J,g,K,d,M,V,w;return f=new ue({props:{language:Qe,code:"npm install --save @nymphjs/driver-sqlite3"}}),u=new ue({props:{language:je,code:`import { Nymph } from '@nymphjs/nymph'; -import SQLite3Driver from '@nymphjs/driver-sqlite3'; - -const sqliteConfig = { - filename: __dirname + '/mydatabase.db', -}; - -const nymph = new Nymph({}, new SQLite3Driver(sqliteConfig)); - -// All done. Nymph is ready to use.`}}),{c(){p=new Ee(!1),b=ie(),N=l(),t=n("section"),y=n("header"),v=n("h1"),T=h("SQLite3 Driver"),x=l(),H=n("p"),C=h(`The SQLite3 driver lets you configure Nymph to query and save data to a - SQLite3 database. This includes an in memory SQLite3 database.`),P=l(),E=n("header"),L=n("h2"),R=h("Installation"),k=l(),le(f.$$.fragment),I=l(),S=n("header"),Q=n("h2"),O=h("Usage"),z=l(),j=n("p"),U=h(`Supply an instance of this driver with its configuration to Nymph's - constructor.`),B=l(),le(u.$$.fragment),F=l(),$=n("header"),D=n("h2"),G=h("Options"),J=l(),g=n("p"),K=h("See the "),d=n("a"),M=h("config declaration file"),V=h("."),this.h()},l(s){const q=Se("svelte-iu1j96",document.head);p=$e(q,!1),b=ie(),q.forEach(r),N=c(s),t=o(s,"SECTION",{});var a=i(t);y=o(a,"HEADER",{class:!0});var W=i(y);v=o(W,"H1",{style:!0});var X=i(v);T=m(X,"SQLite3 Driver"),X.forEach(r),W.forEach(r),x=c(a),H=o(a,"P",{});var Y=i(H);C=m(Y,`The SQLite3 driver lets you configure Nymph to query and save data to a - SQLite3 database. This includes an in memory SQLite3 database.`),Y.forEach(r),P=c(a),E=o(a,"HEADER",{class:!0});var Z=i(E);L=o(Z,"H2",{});var ee=i(L);R=m(ee,"Installation"),ee.forEach(r),Z.forEach(r),k=c(a),he(f.$$.fragment,a),I=c(a),S=o(a,"HEADER",{class:!0});var te=i(S);Q=o(te,"H2",{});var ae=i(Q);O=m(ae,"Usage"),ae.forEach(r),te.forEach(r),z=c(a),j=o(a,"P",{});var re=i(j);U=m(re,`Supply an instance of this driver with its configuration to Nymph's - constructor.`),re.forEach(r),B=c(a),he(u.$$.fragment,a),F=c(a),$=o(a,"HEADER",{class:!0});var se=i($);D=o(se,"H2",{});var ne=i(D);G=m(ne,"Options"),ne.forEach(r),se.forEach(r),J=c(a),g=o(a,"P",{});var A=i(g);K=m(A,"See the "),d=o(A,"A",{href:!0,target:!0,rel:!0});var oe=i(d);M=m(oe,"config declaration file"),oe.forEach(r),V=m(A,"."),A.forEach(r),a.forEach(r),this.h()},h(){document.title="SQLite3 Driver - Packages - Nymph.js",p.a=b,be(v,"font-size","3em"),_(y,"class","major"),_(E,"class","major"),_(S,"class","major"),_($,"class","major"),_(d,"href","https://github.com/sciactive/nymphjs/tree/master/packages/driver-sqlite3/src/conf/d.ts"),_(d,"target","_blank"),_(d,"rel","external")},m(s,q){p.m(Le,document.head),e(document.head,b),ce(s,N,q),ce(s,t,q),e(t,y),e(y,v),e(v,T),e(t,x),e(t,H),e(H,C),e(t,P),e(t,E),e(E,L),e(L,R),e(t,k),me(f,t,null),e(t,I),e(t,S),e(S,Q),e(Q,O),e(t,z),e(t,j),e(j,U),e(t,B),me(u,t,null),e(t,F),e(t,$),e($,D),e(D,G),e(t,J),e(t,g),e(g,K),e(g,d),e(d,M),e(g,V),w=!0},p:He,i(s){w||(de(f.$$.fragment,s),de(u.$$.fragment,s),w=!0)},o(s){pe(f.$$.fragment,s),pe(u.$$.fragment,s),w=!1},d(s){r(b),s&&p.d(),s&&r(N),s&&r(t),fe(f),fe(u)}}}class Te extends _e{constructor(p){super(),ye(this,p,null,De,ve,{})}}export{Te as component}; diff --git a/docs/_app/immutable/nodes/8.5d0fa90b.js b/docs/_app/immutable/nodes/8.5d0fa90b.js new file mode 100644 index 0000000..7493aef --- /dev/null +++ b/docs/_app/immutable/nodes/8.5d0fa90b.js @@ -0,0 +1,27 @@ +import{s as J,I as O,e as U,a as m,f,x as Q,J as F,d as x,c,g as p,h as K,r as b,j,u as n,i as L,v as V}from"../chunks/scheduler.d7e45cc8.js";import{S as W,i as X,b as q,d as A,m as M,a as P,t as N,e as R}from"../chunks/index.77720afb.js";import{H as z,g as Y}from"../chunks/github.64534d2c.js";import{b as Z}from"../chunks/bash.7e4226ac.js";import{t as ee}from"../chunks/typescript.09c48802.js";function te(B){let s,g,T,e,r,S='

    GUID / Unique Code Generator

    ',v,d,D=`The GUID and unique code generators are used to generate new GUIDs for Nymph + objects and various random unique strings.`,$,o,E="

    Installation

    ",w,i,C,l,k="

    Usage

    ",H,u,G="There are a few functions for generating different kinds of strings.",I,h,y;return i=new z({props:{language:Z,code:"npm install --save @nymphjs/guid"}}),h=new z({props:{language:ee,code:`import { + guid, + makeTableSuffix, + humanSecret, + nanoid, + customAlphabet, +} from '@nymphjs/guid'; + +// This generates a GUID. It will be 24 characters long, and the first four +// characters will be the same during a whole week. (This helps make DB index +// paging more efficient.) +const myGuid = guid(); + +// This can be used as a table suffix in SQL queries. It will be 20 characters +// long and alphanumeric. +const myTableSuffix = makeTableSuffix(); + +// This will be a human readable secret code. It will be 10 characters long and +// use the nolookalikesSafe dictionary from nanoid-dictionary. +const mySecretCode = humanSecret(); + +// This is the nanoid library's main export. It is exported in commonjs format. +const id = nanoid(); + +// This is the nanoid library's customAlphabet export. +const customId = customAlphabet('abc', 20)();`}}),{c(){s=new O(!1),g=U(),T=m(),e=f("section"),r=f("header"),r.innerHTML=S,v=m(),d=f("p"),d.textContent=D,$=m(),o=f("header"),o.innerHTML=E,w=m(),q(i.$$.fragment),C=m(),l=f("header"),l.innerHTML=k,H=m(),u=f("p"),u.textContent=G,I=m(),q(h.$$.fragment),this.h()},l(a){const _=Q("svelte-p5hhxe",document.head);s=F(_,!1),g=U(),_.forEach(x),T=c(a),e=p(a,"SECTION",{});var t=K(e);r=p(t,"HEADER",{class:!0,"data-svelte-h":!0}),b(r)!=="svelte-e0a8jf"&&(r.innerHTML=S),v=c(t),d=p(t,"P",{"data-svelte-h":!0}),b(d)!=="svelte-1xcs6hj"&&(d.textContent=D),$=c(t),o=p(t,"HEADER",{class:!0,"data-svelte-h":!0}),b(o)!=="svelte-1hx9pnb"&&(o.innerHTML=E),w=c(t),A(i.$$.fragment,t),C=c(t),l=p(t,"HEADER",{class:!0,"data-svelte-h":!0}),b(l)!=="svelte-n87w0o"&&(l.innerHTML=k),H=c(t),u=p(t,"P",{"data-svelte-h":!0}),b(u)!=="svelte-ng0n9w"&&(u.textContent=G),I=c(t),A(h.$$.fragment,t),t.forEach(x),this.h()},h(){document.title="GUID / Unique Code Generator - Packages - Nymph.js",s.a=g,j(r,"class","major"),j(o,"class","major"),j(l,"class","major")},m(a,_){s.m(Y,document.head),n(document.head,g),L(a,T,_),L(a,e,_),n(e,r),n(e,v),n(e,d),n(e,$),n(e,o),n(e,w),M(i,e,null),n(e,C),n(e,l),n(e,H),n(e,u),n(e,I),M(h,e,null),y=!0},p:V,i(a){y||(P(i.$$.fragment,a),P(h.$$.fragment,a),y=!0)},o(a){N(i.$$.fragment,a),N(h.$$.fragment,a),y=!1},d(a){a&&(s.d(),x(T),x(e)),x(g),R(i),R(h)}}}class ie extends W{constructor(s){super(),X(this,s,null,te,J,{})}}export{ie as component}; diff --git a/docs/_app/immutable/nodes/8.9957d705.js b/docs/_app/immutable/nodes/8.9957d705.js deleted file mode 100644 index 4c2c1f9..0000000 --- a/docs/_app/immutable/nodes/8.9957d705.js +++ /dev/null @@ -1,28 +0,0 @@ -import{S as ne,i as se,s as re,R as oe,e as K,a as d,k as r,q as $,y as M,F as ie,T as le,h as s,c as m,l as o,m as i,r as v,z as V,p as he,n as P,C as e,b as W,A as X,D as ce,g as Y,d as Z,B as ee}from"../chunks/index.d7cc8d8b.js";import{H as ae,g as de}from"../chunks/github.df9008b1.js";import{b as me}from"../chunks/bash.2b754df6.js";import{t as ue}from"../chunks/typescript.7dd1ec19.js";function fe(te){let l,_,w,a,u,f,D,U,b,G,S,g,y,k,q,h,H,p,E,j,A,I,C,N,c,x;return h=new ae({props:{language:me,code:"npm install --save @nymphjs/guid"}}),c=new ae({props:{language:ue,code:`import { - guid, - makeTableSuffix, - humanSecret, - nanoid, - customAlphabet, -} from '@nymphjs/guid'; - -// This generates a GUID. It will be 24 characters long, and the first four -// characters will be the same during a whole week. (This helps make DB index -// paging more efficient.) -const myGuid = guid(); - -// This can be used as a table suffix in SQL queries. It will be 20 characters -// long and alphanumeric. -const myTableSuffix = makeTableSuffix(); - -// This will be a human readable secret code. It will be 10 characters long and -// use the nolookalikesSafe dictionary from nanoid-dictionary. -const mySecretCode = humanSecret(); - -// This is the nanoid library's main export. It is exported in commonjs format. -const id = nanoid(); - -// This is the nanoid library's customAlphabet export. -const customId = customAlphabet('abc', 20)();`}}),{c(){l=new oe(!1),_=K(),w=d(),a=r("section"),u=r("header"),f=r("h1"),D=$("GUID / Unique Code Generator"),U=d(),b=r("p"),G=$(`The GUID and unique code generators are used to generate new GUIDs for Nymph - objects and various random unique strings.`),S=d(),g=r("header"),y=r("h2"),k=$("Installation"),q=d(),M(h.$$.fragment),H=d(),p=r("header"),E=r("h2"),j=$("Usage"),A=d(),I=r("p"),C=$("There are a few functions for generating different kinds of strings."),N=d(),M(c.$$.fragment),this.h()},l(t){const T=ie("svelte-p5hhxe",document.head);l=le(T,!1),_=K(),T.forEach(s),w=m(t),a=o(t,"SECTION",{});var n=i(a);u=o(n,"HEADER",{class:!0});var R=i(u);f=o(R,"H1",{style:!0});var z=i(f);D=v(z,"GUID / Unique Code Generator"),z.forEach(s),R.forEach(s),U=m(n),b=o(n,"P",{});var B=i(b);G=v(B,`The GUID and unique code generators are used to generate new GUIDs for Nymph - objects and various random unique strings.`),B.forEach(s),S=m(n),g=o(n,"HEADER",{class:!0});var F=i(g);y=o(F,"H2",{});var L=i(y);k=v(L,"Installation"),L.forEach(s),F.forEach(s),q=m(n),V(h.$$.fragment,n),H=m(n),p=o(n,"HEADER",{class:!0});var O=i(p);E=o(O,"H2",{});var Q=i(E);j=v(Q,"Usage"),Q.forEach(s),O.forEach(s),A=m(n),I=o(n,"P",{});var J=i(I);C=v(J,"There are a few functions for generating different kinds of strings."),J.forEach(s),N=m(n),V(c.$$.fragment,n),n.forEach(s),this.h()},h(){document.title="GUID / Unique Code Generator - Packages - Nymph.js",l.a=_,he(f,"font-size","3em"),P(u,"class","major"),P(g,"class","major"),P(p,"class","major")},m(t,T){l.m(de,document.head),e(document.head,_),W(t,w,T),W(t,a,T),e(a,u),e(u,f),e(f,D),e(a,U),e(a,b),e(b,G),e(a,S),e(a,g),e(g,y),e(y,k),e(a,q),X(h,a,null),e(a,H),e(a,p),e(p,E),e(E,j),e(a,A),e(a,I),e(I,C),e(a,N),X(c,a,null),x=!0},p:ce,i(t){x||(Y(h.$$.fragment,t),Y(c.$$.fragment,t),x=!0)},o(t){Z(h.$$.fragment,t),Z(c.$$.fragment,t),x=!1},d(t){s(_),t&&l.d(),t&&s(w),t&&s(a),ee(h),ee(c)}}}class ye extends ne{constructor(l){super(),se(this,l,null,fe,re,{})}}export{ye as component}; diff --git a/docs/_app/immutable/nodes/9.b2d1d902.js b/docs/_app/immutable/nodes/9.b2d1d902.js deleted file mode 100644 index bfc7258..0000000 --- a/docs/_app/immutable/nodes/9.b2d1d902.js +++ /dev/null @@ -1,75 +0,0 @@ -import{S as Be,i as Ue,s as Ye,R as Fe,e as Oe,a as d,k as r,q as h,y as ye,F as Ge,T as We,h as s,c,l as o,m as n,r as l,z as ue,p as Je,n as p,C as e,b as Ie,A as ge,D as Ke,g as ve,d as _e,B as Ee}from"../chunks/index.d7cc8d8b.js";import{H as $e,g as Ve}from"../chunks/github.df9008b1.js";import{b as Xe}from"../chunks/bash.2b754df6.js";import{t as Me}from"../chunks/typescript.7dd1ec19.js";import{b as Te}from"../chunks/paths.d307dac8.js";function Ze(ze){let u,S,R,t,$,T,M,z,q,B,U,w,C,Y,F,g,G,b,P,W,J,m,K,N,V,X,H,Z,ee,x,te,ae,se,j,A,re,oe,k,ne,ie,v,he,_,le,D,L,de,ce,E,me,f,pe,fe,O;return g=new $e({props:{language:Xe,code:"npm install --save @nymphjs/nymph"}}),v=new $e({props:{language:Me,code:`// main.ts -import { Nymph } from '@nymphjs/nymph'; -import MySQLDriver from '@nymphjs/driver-mysql'; -import TodoClass from './Todo'; - -const mysqlConfig = { - host: 'your_db_host', - database: 'your_database', - user: 'your_user', - password: 'your_password', -}; - -// Create a new instance of Nymph. -const nymph = new Nymph({}, new MySQLDriver(mysqlConfig)); -// addEntityClass returns the class you should use for this instance of Nymph. -const Todo = nymph.addEntityClass(TodoClass); - -// You are set up. Now you can use entity classes like \`Todo\` to store data, -// and Nymph's query methods like \`getEntities\` to retrieve them. - -async function run() { - const myEntity = await Todo.factory(); - myEntity.text = 'Get it done!'; - await myEntity.$save(); - - const otherPendingTodos = await nymph.getEntities( - { class: Todo }, - { type: '&', '!guid': myEntity.guid, equal: ['done', false] }, - ); - - const total = otherPendingTodos.length; - const single = total === 1; - console.log( - \`Besides the one I just created, there \${ - single ? 'is' : 'are' - } \${total} pending todo\${single ? '' : 's'} in the database.\`, - ); -}`}}),_=new $e({props:{language:Me,code:`// Todo.ts -import { Entity } from '@nymphjs/nymph'; - -export type TodoData = { - text: string; - done: boolean; -}; - -export default class Todo extends Entity { - static ETYPE = 'todo'; // This is used for the table name(s) in the DB. - static class = 'Todo'; // This is used to map references to their class. - - constructor() { - super(); - - // Within the methods of an entity, you will use \`this.$data\` to access - // its data. Outside, you don't need the $data part. - this.$data.text = ''; - this.$data.done = false; - } - - async $getOtherTodos() { - // this.$nymph (or this.nymph in a static function) is the instance of Nymph - // this entity was loaded with. Creating transactions will create a new - // instance of Nymph, so it could be a transactional instance. - const otherTodos = await this.$nymph.getEntities( - { class: Todo }, - { type: '!&', guid: this.guid }, - ); - return otherTodos; - } -}`}}),{c(){u=new Fe(!1),S=Oe(),R=d(),t=r("section"),$=r("header"),T=r("h1"),M=h("Nymph"),z=d(),q=r("p"),B=h(`The Nymph core provides the base level classes and utilities to query the - database, save data to it, and define different data types.`),U=d(),w=r("header"),C=r("h2"),Y=h("Installation"),F=d(),ye(g.$$.fragment),G=d(),b=r("header"),P=r("h2"),W=h("Drivers"),J=d(),m=r("p"),K=h("To use Nymph, you need a database driver. Nymph.js provides a "),N=r("a"),V=h("MySQL driver"),X=h(", "),H=r("a"),Z=h("PostgreSQL driver"),ee=h(`, and a - `),x=r("a"),te=h("SQLite3 driver"),ae=h(`. They all - provide the exact same functionality.`),se=d(),j=r("header"),A=r("h2"),re=h("Usage"),oe=d(),k=r("p"),ne=h("Here's an overview:"),ie=d(),ye(v.$$.fragment),he=d(),ye(_.$$.fragment),le=d(),D=r("header"),L=r("h2"),de=h("Options"),ce=d(),E=r("p"),me=h("See the "),f=r("a"),pe=h("config declaration file"),fe=h("."),this.h()},l(i){const Q=Ge("svelte-lxz0w1",document.head);u=We(Q,!1),S=Oe(),Q.forEach(s),R=c(i),t=o(i,"SECTION",{});var a=n(t);$=o(a,"HEADER",{class:!0});var we=n($);T=o(we,"H1",{style:!0});var be=n(T);M=l(be,"Nymph"),be.forEach(s),we.forEach(s),z=c(a),q=o(a,"P",{});var Ne=n(q);B=l(Ne,`The Nymph core provides the base level classes and utilities to query the - database, save data to it, and define different data types.`),Ne.forEach(s),U=c(a),w=o(a,"HEADER",{class:!0});var He=n(w);C=o(He,"H2",{});var xe=n(C);Y=l(xe,"Installation"),xe.forEach(s),He.forEach(s),F=c(a),ue(g.$$.fragment,a),G=c(a),b=o(a,"HEADER",{class:!0});var je=n(b);P=o(je,"H2",{});var De=n(P);W=l(De,"Drivers"),De.forEach(s),je.forEach(s),J=c(a),m=o(a,"P",{});var y=n(m);K=l(y,"To use Nymph, you need a database driver. Nymph.js provides a "),N=o(y,"A",{href:!0});var Se=n(N);V=l(Se,"MySQL driver"),Se.forEach(s),X=l(y,", "),H=o(y,"A",{href:!0});var qe=n(H);Z=l(qe,"PostgreSQL driver"),qe.forEach(s),ee=l(y,`, and a - `),x=o(y,"A",{href:!0});var Ce=n(x);te=l(Ce,"SQLite3 driver"),Ce.forEach(s),ae=l(y,`. They all - provide the exact same functionality.`),y.forEach(s),se=c(a),j=o(a,"HEADER",{class:!0});var Pe=n(j);A=o(Pe,"H2",{});var Ae=n(A);re=l(Ae,"Usage"),Ae.forEach(s),Pe.forEach(s),oe=c(a),k=o(a,"P",{});var ke=n(k);ne=l(ke,"Here's an overview:"),ke.forEach(s),ie=c(a),ue(v.$$.fragment,a),he=c(a),ue(_.$$.fragment,a),le=c(a),D=o(a,"HEADER",{class:!0});var Le=n(D);L=o(Le,"H2",{});var Qe=n(L);de=l(Qe,"Options"),Qe.forEach(s),Le.forEach(s),ce=c(a),E=o(a,"P",{});var I=n(E);me=l(I,"See the "),f=o(I,"A",{href:!0,target:!0,rel:!0});var Re=n(f);pe=l(Re,"config declaration file"),Re.forEach(s),fe=l(I,"."),I.forEach(s),a.forEach(s),this.h()},h(){document.title="Nymph - Packages - Nymph.js",u.a=S,Je(T,"font-size","3em"),p($,"class","major"),p(w,"class","major"),p(b,"class","major"),p(N,"href",Te+"/packages/driver-mysql"),p(H,"href",Te+"/packages/driver-postgresql"),p(x,"href",Te+"/packages/driver-sqlite3"),p(j,"class","major"),p(D,"class","major"),p(f,"href","https://github.com/sciactive/nymphjs/tree/master/packages/nymph/src/conf/d.ts"),p(f,"target","_blank"),p(f,"rel","external noreferrer")},m(i,Q){u.m(Ve,document.head),e(document.head,S),Ie(i,R,Q),Ie(i,t,Q),e(t,$),e($,T),e(T,M),e(t,z),e(t,q),e(q,B),e(t,U),e(t,w),e(w,C),e(C,Y),e(t,F),ge(g,t,null),e(t,G),e(t,b),e(b,P),e(P,W),e(t,J),e(t,m),e(m,K),e(m,N),e(N,V),e(m,X),e(m,H),e(H,Z),e(m,ee),e(m,x),e(x,te),e(m,ae),e(t,se),e(t,j),e(j,A),e(A,re),e(t,oe),e(t,k),e(k,ne),e(t,ie),ge(v,t,null),e(t,he),ge(_,t,null),e(t,le),e(t,D),e(D,L),e(L,de),e(t,ce),e(t,E),e(E,me),e(E,f),e(f,pe),e(E,fe),O=!0},p:Ke,i(i){O||(ve(g.$$.fragment,i),ve(v.$$.fragment,i),ve(_.$$.fragment,i),O=!0)},o(i){_e(g.$$.fragment,i),_e(v.$$.fragment,i),_e(_.$$.fragment,i),O=!1},d(i){s(S),i&&u.d(),i&&s(R),i&&s(t),Ee(g),Ee(v),Ee(_)}}}class ot extends Be{constructor(u){super(),Ue(this,u,null,Ze,Ye,{})}}export{ot as component}; diff --git a/docs/_app/immutable/nodes/9.dd3d7b3a.js b/docs/_app/immutable/nodes/9.dd3d7b3a.js new file mode 100644 index 0000000..c1bef68 --- /dev/null +++ b/docs/_app/immutable/nodes/9.dd3d7b3a.js @@ -0,0 +1,74 @@ +import{s as xe,I as Ee,e as ve,a as r,f as n,l as x,x as be,J as we,d as h,c as i,g as o,h as S,r as m,m as E,j as c,u as e,i as Te,v as Ce}from"../chunks/scheduler.d7e45cc8.js";import{S as He,i as Le,b as Z,d as ee,m as te,a as ae,t as se,e as ne}from"../chunks/index.77720afb.js";import{H as oe,g as Ne}from"../chunks/github.64534d2c.js";import{b as Me}from"../chunks/bash.7e4226ac.js";import{t as _e}from"../chunks/typescript.09c48802.js";import{b as re}from"../chunks/paths.d4a6803e.js";function je($e){let p,M,D,t,y,ie='

    Nymph

    ',q,b,le=`The Nymph core provides the base level classes and utilities to query the + database, save data to it, and define different data types.`,k,u,he="

    Installation

    ",A,f,Q,g,de="

    Drivers

    ",R,l,I,w,O,z,C,B,Y,H,G,J,U,v,me="

    Usage

    ",W,L,ce="Here's an overview:",F,T,K,_,V,$,pe="

    Options

    ",X,N,ye='See the config declaration file.',P;return f=new oe({props:{language:Me,code:"npm install --save @nymphjs/nymph"}}),T=new oe({props:{language:_e,code:`// main.ts +import { Nymph } from '@nymphjs/nymph'; +import MySQLDriver from '@nymphjs/driver-mysql'; +import TodoClass from './Todo'; + +const mysqlConfig = { + host: 'your_db_host', + database: 'your_database', + user: 'your_user', + password: 'your_password', +}; + +// Create a new instance of Nymph. +const nymph = new Nymph({}, new MySQLDriver(mysqlConfig)); +// addEntityClass returns the class you should use for this instance of Nymph. +const Todo = nymph.addEntityClass(TodoClass); + +// You are set up. Now you can use entity classes like \`Todo\` to store data, +// and Nymph's query methods like \`getEntities\` to retrieve them. + +async function run() { + const myEntity = await Todo.factory(); + myEntity.text = 'Get it done!'; + await myEntity.$save(); + + const otherPendingTodos = await nymph.getEntities( + { class: Todo }, + { type: '&', '!guid': myEntity.guid, equal: ['done', false] }, + ); + + const total = otherPendingTodos.length; + const single = total === 1; + console.log( + \`Besides the one I just created, there \${ + single ? 'is' : 'are' + } \${total} pending todo\${single ? '' : 's'} in the database.\`, + ); +}`}}),_=new oe({props:{language:_e,code:`// Todo.ts +import { Entity } from '@nymphjs/nymph'; + +export type TodoData = { + text: string; + done: boolean; +}; + +export default class Todo extends Entity { + static ETYPE = 'todo'; // This is used for the table name(s) in the DB. + static class = 'Todo'; // This is used to map references to their class. + + constructor() { + super(); + + // Within the methods of an entity, you will use \`this.$data\` to access + // its data. Outside, you don't need the $data part. + this.$data.text = ''; + this.$data.done = false; + } + + async $getOtherTodos() { + // this.$nymph (or this.nymph in a static function) is the instance of Nymph + // this entity was loaded with. Creating transactions will create a new + // instance of Nymph, so it could be a transactional instance. + const otherTodos = await this.$nymph.getEntities( + { class: Todo }, + { type: '!&', guid: this.guid }, + ); + return otherTodos; + } +}`}}),{c(){p=new Ee(!1),M=ve(),D=r(),t=n("section"),y=n("header"),y.innerHTML=ie,q=r(),b=n("p"),b.textContent=le,k=r(),u=n("header"),u.innerHTML=he,A=r(),Z(f.$$.fragment),Q=r(),g=n("header"),g.innerHTML=de,R=r(),l=n("p"),I=x("To use Nymph, you need a database driver. Nymph.js provides a "),w=n("a"),O=x("MySQL driver"),z=x(", "),C=n("a"),B=x("PostgreSQL driver"),Y=x(`, and a + `),H=n("a"),G=x("SQLite3 driver"),J=x(`. They all + provide the exact same functionality.`),U=r(),v=n("header"),v.innerHTML=me,W=r(),L=n("p"),L.textContent=ce,F=r(),Z(T.$$.fragment),K=r(),Z(_.$$.fragment),V=r(),$=n("header"),$.innerHTML=pe,X=r(),N=n("p"),N.innerHTML=ye,this.h()},l(s){const j=be("svelte-lxz0w1",document.head);p=we(j,!1),M=ve(),j.forEach(h),D=i(s),t=o(s,"SECTION",{});var a=S(t);y=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),m(y)!=="svelte-1di4y0e"&&(y.innerHTML=ie),q=i(a),b=o(a,"P",{"data-svelte-h":!0}),m(b)!=="svelte-dbikd5"&&(b.textContent=le),k=i(a),u=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),m(u)!=="svelte-1hx9pnb"&&(u.innerHTML=he),A=i(a),ee(f.$$.fragment,a),Q=i(a),g=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),m(g)!=="svelte-174az1o"&&(g.innerHTML=de),R=i(a),l=o(a,"P",{});var d=S(l);I=E(d,"To use Nymph, you need a database driver. Nymph.js provides a "),w=o(d,"A",{href:!0});var ue=S(w);O=E(ue,"MySQL driver"),ue.forEach(h),z=E(d,", "),C=o(d,"A",{href:!0});var fe=S(C);B=E(fe,"PostgreSQL driver"),fe.forEach(h),Y=E(d,`, and a + `),H=o(d,"A",{href:!0});var ge=S(H);G=E(ge,"SQLite3 driver"),ge.forEach(h),J=E(d,`. They all + provide the exact same functionality.`),d.forEach(h),U=i(a),v=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),m(v)!=="svelte-n87w0o"&&(v.innerHTML=me),W=i(a),L=o(a,"P",{"data-svelte-h":!0}),m(L)!=="svelte-deeya8"&&(L.textContent=ce),F=i(a),ee(T.$$.fragment,a),K=i(a),ee(_.$$.fragment,a),V=i(a),$=o(a,"HEADER",{class:!0,"data-svelte-h":!0}),m($)!=="svelte-1v13hnh"&&($.innerHTML=pe),X=i(a),N=o(a,"P",{"data-svelte-h":!0}),m(N)!=="svelte-1ox4sbb"&&(N.innerHTML=ye),a.forEach(h),this.h()},h(){document.title="Nymph - Packages - Nymph.js",p.a=M,c(y,"class","major"),c(u,"class","major"),c(g,"class","major"),c(w,"href",re+"/packages/driver-mysql"),c(C,"href",re+"/packages/driver-postgresql"),c(H,"href",re+"/packages/driver-sqlite3"),c(v,"class","major"),c($,"class","major")},m(s,j){p.m(Ne,document.head),e(document.head,M),Te(s,D,j),Te(s,t,j),e(t,y),e(t,q),e(t,b),e(t,k),e(t,u),e(t,A),te(f,t,null),e(t,Q),e(t,g),e(t,R),e(t,l),e(l,I),e(l,w),e(w,O),e(l,z),e(l,C),e(C,B),e(l,Y),e(l,H),e(H,G),e(l,J),e(t,U),e(t,v),e(t,W),e(t,L),e(t,F),te(T,t,null),e(t,K),te(_,t,null),e(t,V),e(t,$),e(t,X),e(t,N),P=!0},p:Ce,i(s){P||(ae(f.$$.fragment,s),ae(T.$$.fragment,s),ae(_.$$.fragment,s),P=!0)},o(s){se(f.$$.fragment,s),se(T.$$.fragment,s),se(_.$$.fragment,s),P=!1},d(s){s&&(p.d(),h(D),h(t)),h(M),ne(f),ne(T),ne(_)}}}class Qe extends He{constructor(p){super(),Le(this,p,null,je,xe,{})}}export{Qe as component}; diff --git a/docs/_app/version.json b/docs/_app/version.json index 76c1c17..0d03c91 100644 --- a/docs/_app/version.json +++ b/docs/_app/version.json @@ -1 +1 @@ -{"version":"1718486797719"} \ No newline at end of file +{"version":"1727506483559"} \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/.nojekyll b/docs/api/1.0.0-beta.81/.nojekyll new file mode 100644 index 0000000..e2ac661 --- /dev/null +++ b/docs/api/1.0.0-beta.81/.nojekyll @@ -0,0 +1 @@ +TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false. \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/assets/highlight.css b/docs/api/1.0.0-beta.81/assets/highlight.css new file mode 100644 index 0000000..9de0902 --- /dev/null +++ b/docs/api/1.0.0-beta.81/assets/highlight.css @@ -0,0 +1,134 @@ +:root { + --light-hl-0: #795E26; + --dark-hl-0: #DCDCAA; + --light-hl-1: #000000; + --dark-hl-1: #D4D4D4; + --light-hl-2: #A31515; + --dark-hl-2: #CE9178; + --light-hl-3: #0000FF; + --dark-hl-3: #569CD6; + --light-hl-4: #000000; + --dark-hl-4: #C8C8C8; + --light-hl-5: #008000; + --dark-hl-5: #6A9955; + --light-hl-6: #AF00DB; + --dark-hl-6: #C586C0; + --light-hl-7: #001080; + --dark-hl-7: #9CDCFE; + --light-hl-8: #0070C1; + --dark-hl-8: #4FC1FF; + --light-hl-9: #098658; + --dark-hl-9: #B5CEA8; + --light-hl-10: #000000FF; + --dark-hl-10: #D4D4D4; + --light-hl-11: #267F99; + --dark-hl-11: #4EC9B0; + --light-hl-12: #EE0000; + --dark-hl-12: #D7BA7D; + --light-hl-13: #800000; + --dark-hl-13: #808080; + --light-hl-14: #800000; + --dark-hl-14: #569CD6; + --light-hl-15: #E50000; + --dark-hl-15: #9CDCFE; + --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); + --hl-14: var(--light-hl-14); + --hl-15: var(--light-hl-15); + --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); + --hl-14: var(--dark-hl-14); + --hl-15: var(--dark-hl-15); + --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); + --hl-14: var(--light-hl-14); + --hl-15: var(--light-hl-15); + --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); + --hl-14: var(--dark-hl-14); + --hl-15: var(--dark-hl-15); + --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); } +.hl-14 { color: var(--hl-14); } +.hl-15 { color: var(--hl-15); } +pre, code { background: var(--code-background); } diff --git a/docs/api/1.0.0-beta.81/assets/icons.js b/docs/api/1.0.0-beta.81/assets/icons.js new file mode 100644 index 0000000..b79c9e8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/assets/icons.js @@ -0,0 +1,15 @@ +(function(svg) { + svg.innerHTML = ``; + svg.style.display = 'none'; + if (location.protocol === 'file:') { + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateUseElements); + else updateUseElements() + function updateUseElements() { + document.querySelectorAll('use').forEach(el => { + if (el.getAttribute('href').includes('#icon-')) { + el.setAttribute('href', el.getAttribute('href').replace(/.*#/, '#')); + } + }); + } + } +})(document.body.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))) \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/assets/icons.svg b/docs/api/1.0.0-beta.81/assets/icons.svg new file mode 100644 index 0000000..7dead61 --- /dev/null +++ b/docs/api/1.0.0-beta.81/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/assets/main.js b/docs/api/1.0.0-beta.81/assets/main.js new file mode 100644 index 0000000..d6f1388 --- /dev/null +++ b/docs/api/1.0.0-beta.81/assets/main.js @@ -0,0 +1,59 @@ +"use strict"; +"use strict";(()=>{var Ce=Object.create;var ne=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Ce(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),y=s.str.charAt(1),p;y in s.node.edges?p=s.node.edges[y]:(p=new t.TokenSet,s.node.edges[y]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(console.log("Show page"),document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){console.log("Scorlling");let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ve(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ne(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ve(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let y=document.createElement("li");y.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,y.append(p),e.appendChild(y)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ne(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var He={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>He[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",fe="mousemove",H="mouseup",J={x:0,y:0},pe=!1,ee=!1,Be=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",fe="touchmove",H="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ee=!1});document.addEventListener("click",t=>{pe&&(t.preventDefault(),t.stopImmediatePropagation(),pe=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ye=document.head.appendChild(document.createElement("style"));ye.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ye.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ve(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ve(t.value)})}function ve(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +/*! Bundled license information: + +lunr/lunr.js: + (** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + *) + (*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + *) + (*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + *) + (*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + *) +*/ diff --git a/docs/api/1.0.0-beta.81/assets/navigation.js b/docs/api/1.0.0-beta.81/assets/navigation.js new file mode 100644 index 0000000..f9a8eff --- /dev/null +++ b/docs/api/1.0.0-beta.81/assets/navigation.js @@ -0,0 +1 @@ +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/assets/search.js b/docs/api/1.0.0-beta.81/assets/search.js new file mode 100644 index 0000000..5a8f21d --- /dev/null +++ b/docs/api/1.0.0-beta.81/assets/search.js @@ -0,0 +1 @@ +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/assets/style.css b/docs/api/1.0.0-beta.81/assets/style.css new file mode 100644 index 0000000..778b949 --- /dev/null +++ b/docs/api/1.0.0-beta.81/assets/style.css @@ -0,0 +1,1412 @@ +:root { + /* Light */ + --light-color-background: #f2f4f8; + --light-color-background-secondary: #eff0f1; + --light-color-warning-text: #222; + --light-color-background-warning: #e6e600; + --light-color-icon-background: var(--light-color-background); + --light-color-accent: #c5c7c9; + --light-color-active-menu-item: var(--light-color-accent); + --light-color-text: #222; + --light-color-text-aside: #6e6e6e; + --light-color-link: #1f70c2; + + --light-color-ts-keyword: #056bd6; + --light-color-ts-project: #b111c9; + --light-color-ts-module: var(--light-color-ts-project); + --light-color-ts-namespace: var(--light-color-ts-project); + --light-color-ts-enum: #7e6f15; + --light-color-ts-enum-member: var(--light-color-ts-enum); + --light-color-ts-variable: #4760ec; + --light-color-ts-function: #572be7; + --light-color-ts-class: #1f70c2; + --light-color-ts-interface: #108024; + --light-color-ts-constructor: var(--light-color-ts-class); + --light-color-ts-property: var(--light-color-ts-variable); + --light-color-ts-method: var(--light-color-ts-function); + --light-color-ts-call-signature: var(--light-color-ts-method); + --light-color-ts-index-signature: var(--light-color-ts-property); + --light-color-ts-constructor-signature: var(--light-color-ts-constructor); + --light-color-ts-parameter: var(--light-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --light-color-ts-type-parameter: #a55c0e; + --light-color-ts-accessor: var(--light-color-ts-property); + --light-color-ts-get-signature: var(--light-color-ts-accessor); + --light-color-ts-set-signature: var(--light-color-ts-accessor); + --light-color-ts-type-alias: #d51270; + /* reference not included as links will be colored with the kind that it points to */ + + --light-external-icon: url("data:image/svg+xml;utf8,"); + --light-color-scheme: light; + + /* Dark */ + --dark-color-background: #2b2e33; + --dark-color-background-secondary: #1e2024; + --dark-color-background-warning: #bebe00; + --dark-color-warning-text: #222; + --dark-color-icon-background: var(--dark-color-background-secondary); + --dark-color-accent: #9096a2; + --dark-color-active-menu-item: #5d5d6a; + --dark-color-text: #f5f5f5; + --dark-color-text-aside: #dddddd; + --dark-color-link: #00aff4; + + --dark-color-ts-keyword: #3399ff; + --dark-color-ts-project: #e358ff; + --dark-color-ts-module: var(--dark-color-ts-project); + --dark-color-ts-namespace: var(--dark-color-ts-project); + --dark-color-ts-enum: #f4d93e; + --dark-color-ts-enum-member: var(--dark-color-ts-enum); + --dark-color-ts-variable: #798dff; + --dark-color-ts-function: #a280ff; + --dark-color-ts-class: #8ac4ff; + --dark-color-ts-interface: #6cff87; + --dark-color-ts-constructor: var(--dark-color-ts-class); + --dark-color-ts-property: var(--dark-color-ts-variable); + --dark-color-ts-method: var(--dark-color-ts-function); + --dark-color-ts-call-signature: var(--dark-color-ts-method); + --dark-color-ts-index-signature: var(--dark-color-ts-property); + --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); + --dark-color-ts-parameter: var(--dark-color-ts-variable); + /* type literal not included as links will never be generated to it */ + --dark-color-ts-type-parameter: #e07d13; + --dark-color-ts-accessor: var(--dark-color-ts-property); + --dark-color-ts-get-signature: var(--dark-color-ts-accessor); + --dark-color-ts-set-signature: var(--dark-color-ts-accessor); + --dark-color-ts-type-alias: #ff6492; + /* reference not included as links will be colored with the kind that it points to */ + + --dark-external-icon: url("data:image/svg+xml;utf8,"); + --dark-color-scheme: dark; +} + +@media (prefers-color-scheme: light) { + :root { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); + } +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); + } +} + +html { + color-scheme: var(--color-scheme); +} + +body { + margin: 0; +} + +:root[data-theme="light"] { + --color-background: var(--light-color-background); + --color-background-secondary: var(--light-color-background-secondary); + --color-background-warning: var(--light-color-background-warning); + --color-warning-text: var(--light-color-warning-text); + --color-icon-background: var(--light-color-icon-background); + --color-accent: var(--light-color-accent); + --color-active-menu-item: var(--light-color-active-menu-item); + --color-text: var(--light-color-text); + --color-text-aside: var(--light-color-text-aside); + --color-link: var(--light-color-link); + + --color-ts-keyword: var(--light-color-ts-keyword); + --color-ts-module: var(--light-color-ts-module); + --color-ts-namespace: var(--light-color-ts-namespace); + --color-ts-enum: var(--light-color-ts-enum); + --color-ts-enum-member: var(--light-color-ts-enum-member); + --color-ts-variable: var(--light-color-ts-variable); + --color-ts-function: var(--light-color-ts-function); + --color-ts-class: var(--light-color-ts-class); + --color-ts-interface: var(--light-color-ts-interface); + --color-ts-constructor: var(--light-color-ts-constructor); + --color-ts-property: var(--light-color-ts-property); + --color-ts-method: var(--light-color-ts-method); + --color-ts-call-signature: var(--light-color-ts-call-signature); + --color-ts-index-signature: var(--light-color-ts-index-signature); + --color-ts-constructor-signature: var( + --light-color-ts-constructor-signature + ); + --color-ts-parameter: var(--light-color-ts-parameter); + --color-ts-type-parameter: var(--light-color-ts-type-parameter); + --color-ts-accessor: var(--light-color-ts-accessor); + --color-ts-get-signature: var(--light-color-ts-get-signature); + --color-ts-set-signature: var(--light-color-ts-set-signature); + --color-ts-type-alias: var(--light-color-ts-type-alias); + + --external-icon: var(--light-external-icon); + --color-scheme: var(--light-color-scheme); +} + +:root[data-theme="dark"] { + --color-background: var(--dark-color-background); + --color-background-secondary: var(--dark-color-background-secondary); + --color-background-warning: var(--dark-color-background-warning); + --color-warning-text: var(--dark-color-warning-text); + --color-icon-background: var(--dark-color-icon-background); + --color-accent: var(--dark-color-accent); + --color-active-menu-item: var(--dark-color-active-menu-item); + --color-text: var(--dark-color-text); + --color-text-aside: var(--dark-color-text-aside); + --color-link: var(--dark-color-link); + + --color-ts-keyword: var(--dark-color-ts-keyword); + --color-ts-module: var(--dark-color-ts-module); + --color-ts-namespace: var(--dark-color-ts-namespace); + --color-ts-enum: var(--dark-color-ts-enum); + --color-ts-enum-member: var(--dark-color-ts-enum-member); + --color-ts-variable: var(--dark-color-ts-variable); + --color-ts-function: var(--dark-color-ts-function); + --color-ts-class: var(--dark-color-ts-class); + --color-ts-interface: var(--dark-color-ts-interface); + --color-ts-constructor: var(--dark-color-ts-constructor); + --color-ts-property: var(--dark-color-ts-property); + --color-ts-method: var(--dark-color-ts-method); + --color-ts-call-signature: var(--dark-color-ts-call-signature); + --color-ts-index-signature: var(--dark-color-ts-index-signature); + --color-ts-constructor-signature: var( + --dark-color-ts-constructor-signature + ); + --color-ts-parameter: var(--dark-color-ts-parameter); + --color-ts-type-parameter: var(--dark-color-ts-type-parameter); + --color-ts-accessor: var(--dark-color-ts-accessor); + --color-ts-get-signature: var(--dark-color-ts-get-signature); + --color-ts-set-signature: var(--dark-color-ts-set-signature); + --color-ts-type-alias: var(--dark-color-ts-type-alias); + + --external-icon: var(--dark-external-icon); + --color-scheme: var(--dark-color-scheme); +} + +.always-visible, +.always-visible .tsd-signatures { + display: inherit !important; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + line-height: 1.2; +} + +h1 > a:not(.link), +h2 > a:not(.link), +h3 > a:not(.link), +h4 > a:not(.link), +h5 > a:not(.link), +h6 > a:not(.link) { + text-decoration: none; + color: var(--color-text); +} + +h1 { + font-size: 1.875rem; + margin: 0.67rem 0; +} + +h2 { + font-size: 1.5rem; + margin: 0.83rem 0; +} + +h3 { + font-size: 1.25rem; + margin: 1rem 0; +} + +h4 { + font-size: 1.05rem; + margin: 1.33rem 0; +} + +h5 { + font-size: 1rem; + margin: 1.5rem 0; +} + +h6 { + font-size: 0.875rem; + margin: 2.33rem 0; +} + +.uppercase { + text-transform: uppercase; +} + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +.container { + max-width: 1700px; + padding: 0 2rem; +} + +/* Footer */ +footer { + border-top: 1px solid var(--color-accent); + padding-top: 1rem; + padding-bottom: 1rem; + max-height: 3.5rem; +} +.tsd-generator { + margin: 0 1em; +} + +.container-main { + margin: 0 auto; + /* toolbar, footer, margin */ + min-height: calc(100vh - 41px - 56px - 4rem); +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +a.external[target="_blank"] { + background-image: var(--external-icon); + background-position: top 3px right; + background-repeat: no-repeat; + padding-right: 13px; +} + +code, +pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 0.875rem; + border-radius: 0.8em; +} + +pre { + position: relative; + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; + padding: 10px; + border: 1px solid var(--color-accent); +} +pre code { + padding: 0; + font-size: 100%; +} +pre > button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; + transition: opacity 0.1s; + box-sizing: border-box; +} +pre:hover > button, +pre > button.visible { + opacity: 1; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography .tsd-index-panel h3, +.tsd-index-panel .tsd-typography h3, +.tsd-typography h4, +.tsd-typography h5, +.tsd-typography h6 { + font-size: 1em; +} +.tsd-typography h5, +.tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, +.tsd-typography ul, +.tsd-typography ol { + margin: 1em 0; +} +.tsd-typography table { + border-collapse: collapse; + border: none; +} +.tsd-typography td, +.tsd-typography th { + padding: 6px 13px; + border: 1px solid var(--color-accent); +} +.tsd-typography thead, +.tsd-typography tr:nth-child(even) { + background-color: var(--color-background-secondary); +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +.tsd-comment-tags { + display: flex; + flex-direction: column; +} +dl.tsd-comment-tag-group { + display: flex; + align-items: center; + overflow: hidden; + margin: 0.5em 0; +} +dl.tsd-comment-tag-group dt { + display: flex; + margin-right: 0.5em; + font-size: 0.875em; + font-weight: normal; +} +dl.tsd-comment-tag-group dd { + margin: 0; +} +code.tsd-tag { + padding: 0.25em 0.4em; + border: 0.1em solid var(--color-accent); + margin-right: 0.25em; + font-size: 70%; +} +h1 code.tsd-tag:first-of-type { + margin-left: 0.25em; +} + +dl.tsd-comment-tag-group dd:before, +dl.tsd-comment-tag-group dd:after { + content: " "; +} +dl.tsd-comment-tag-group dd pre, +dl.tsd-comment-tag-group dd:after { + clear: both; +} +dl.tsd-comment-tag-group p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.tsd-filter-visibility h4 { + font-size: 1rem; + padding-top: 0.75rem; + padding-bottom: 0.5rem; + margin: 0; +} +.tsd-filter-item:not(:last-child) { + margin-bottom: 0.5rem; +} +.tsd-filter-input { + display: flex; + width: fit-content; + width: -moz-fit-content; + align-items: center; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: pointer; +} +.tsd-filter-input input[type="checkbox"] { + cursor: pointer; + position: absolute; + width: 1.5em; + height: 1.5em; + opacity: 0; +} +.tsd-filter-input input[type="checkbox"]:disabled { + pointer-events: none; +} +.tsd-filter-input svg { + cursor: pointer; + width: 1.5em; + height: 1.5em; + margin-right: 0.5em; + border-radius: 0.33em; + /* Leaving this at full opacity breaks event listeners on Firefox. + Don't remove unless you know what you're doing. */ + opacity: 0.99; +} +.tsd-filter-input input[type="checkbox"]:focus + svg { + transform: scale(0.95); +} +.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg { + transform: scale(1); +} +.tsd-checkbox-background { + fill: var(--color-accent); +} +input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { + stroke: var(--color-text); +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background { + fill: var(--color-background); + stroke: var(--color-accent); + stroke-width: 0.25rem; +} +.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark { + stroke: var(--color-accent); +} + +.tsd-theme-toggle { + padding-top: 0.75rem; +} +.tsd-theme-toggle > h4 { + display: inline; + vertical-align: middle; + margin-right: 0.75rem; +} + +.tsd-hierarchy { + list-style: square; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + +.tsd-panel-group.tsd-index-group { + margin-bottom: 0; +} +.tsd-index-panel .tsd-index-list { + list-style: none; + line-height: 1.333em; + margin: 0; + padding: 0.25rem 0 0 0; + overflow: hidden; + display: grid; + grid-template-columns: repeat(3, 1fr); + column-gap: 1rem; + grid-template-rows: auto; +} +@media (max-width: 1024px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(2, 1fr); + } +} +@media (max-width: 768px) { + .tsd-index-panel .tsd-index-list { + grid-template-columns: repeat(1, 1fr); + } +} +.tsd-index-panel .tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} + +.tsd-flag { + display: inline-block; + padding: 0.25em 0.4em; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 75%; + line-height: 1; + font-weight: normal; +} + +.tsd-anchor { + position: relative; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + display: flex; + align-items: center; + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} + +.tsd-navigation.settings { + margin: 1rem 0; +} +.tsd-navigation > a, +.tsd-navigation .tsd-accordion-summary { + width: calc(100% - 0.25rem); + display: flex; + align-items: center; +} +.tsd-navigation a, +.tsd-navigation summary > span, +.tsd-page-navigation a { + display: flex; + width: calc(100% - 0.25rem); + align-items: center; + padding: 0.25rem; + color: var(--color-text); + text-decoration: none; + box-sizing: border-box; +} +.tsd-navigation a.current, +.tsd-page-navigation a.current { + background: var(--color-active-menu-item); +} +.tsd-navigation a:hover, +.tsd-page-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul, +.tsd-page-navigation ul { + margin-top: 0; + margin-bottom: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li, +.tsd-page-navigation li { + padding: 0; + max-width: 100%; +} +.tsd-nested-navigation { + margin-left: 3rem; +} +.tsd-nested-navigation > li > details { + margin-left: -1.5rem; +} +.tsd-small-nested-navigation { + margin-left: 1.5rem; +} +.tsd-small-nested-navigation > li > details { + margin-left: -1.5rem; +} + +.tsd-page-navigation ul { + padding-left: 1.75rem; +} + +#tsd-sidebar-links a { + margin-top: 0; + margin-bottom: 0.5rem; + line-height: 1.25rem; +} +#tsd-sidebar-links a:last-of-type { + margin-bottom: 0; +} + +a.tsd-index-link { + padding: 0.25rem 0 !important; + font-size: 1rem; + line-height: 1.25rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} +.tsd-accordion-summary { + list-style-type: none; /* hide marker on non-safari */ + outline: none; /* broken on safari, so just hide it */ +} +.tsd-accordion-summary::-webkit-details-marker { + display: none; /* hide marker on safari */ +} +.tsd-accordion-summary, +.tsd-accordion-summary a { + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + + cursor: pointer; +} +.tsd-accordion-summary a { + width: calc(100% - 1.5rem); +} +.tsd-accordion-summary > * { + margin-top: 0; + margin-bottom: 0; + padding-top: 0; + padding-bottom: 0; +} +.tsd-index-accordion .tsd-accordion-summary > svg { + margin-left: 0.25rem; +} +.tsd-index-content > :not(:first-child) { + margin-top: 0.75rem; +} +.tsd-index-heading { + margin-top: 1.5rem; + margin-bottom: 0.75rem; +} + +.tsd-kind-icon { + margin-right: 0.5rem; + width: 1.25rem; + height: 1.25rem; + min-width: 1.25rem; + min-height: 1.25rem; +} +.tsd-kind-icon path { + transform-origin: center; + transform: scale(1.1); +} +.tsd-signature > .tsd-kind-icon { + margin-right: 0.8rem; +} + +.tsd-panel { + margin-bottom: 2.5rem; +} +.tsd-panel.tsd-member { + margin-bottom: 4rem; +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, +.tsd-panel > h2, +.tsd-panel > h3 { + margin: 1.5rem -1.5rem 0.75rem -1.5rem; + padding: 0 1.5rem 0.75rem 1.5rem; +} +.tsd-panel > h1.tsd-before-signature, +.tsd-panel > h2.tsd-before-signature, +.tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: none; +} + +.tsd-panel-group { + margin: 4rem 0; +} +.tsd-panel-group.tsd-index-group { + margin: 2rem 0; +} +.tsd-panel-group.tsd-index-group details { + margin: 2rem 0; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 2.5rem; + height: 100%; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title, +#tsd-toolbar-links a { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + background-color: var(--color-background); + line-height: initial; + padding: 4px; +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-background-secondary); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current:not(.no-results), +#tsd-search .results li:hover:not(.no-results) { + background-color: var(--color-accent); +} +#tsd-search .results a { + display: flex; + align-items: center; + padding: 0.25rem; + box-sizing: border-box; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-accent); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title, +#tsd-search.has-focus #tsd-toolbar-links a { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +#tsd-toolbar-links { + position: absolute; + top: 0; + right: 2rem; + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; +} +#tsd-toolbar-links a { + margin-left: 1.5rem; +} +#tsd-toolbar-links a:hover { + text-decoration: underline; +} + +.tsd-signature { + margin: 0 0 1rem 0; + padding: 1rem 0.5rem; + border: 1px solid var(--color-accent); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} + +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + list-style-type: none; +} +.tsd-signatures .tsd-signature { + margin: 0; + border-color: var(--color-accent); + border-width: 1px 0; + transition: background-color 0.1s; +} +.tsd-description .tsd-signatures .tsd-signature { + border-width: 1px; +} + +ul.tsd-parameter-list, +ul.tsd-type-parameter-list { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameter-list > li.tsd-parameter-signature, +ul.tsd-type-parameter-list > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameter-list h5, +ul.tsd-type-parameter-list h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +.tsd-sources { + margin-top: 1rem; + font-size: 0.875em; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: sticky; + z-index: 1; + top: 0; + left: 0; + width: 100%; + color: var(--color-text); + background: var(--color-background-secondary); + border-bottom: 1px var(--color-accent) solid; + transition: transform 0.3s ease-in-out; +} +.tsd-page-toolbar a { + color: var(--color-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .tsd-toolbar-contents { + display: flex; + justify-content: space-between; + height: 2.5rem; + margin: 0 auto; +} +.tsd-page-toolbar .table-cell { + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} +.tsd-page-toolbar .tsd-toolbar-icon { + box-sizing: border-box; + line-height: 0; + padding: 12px 0; +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.8; + height: 40px; + transition: + opacity 0.1s, + background-color 0.2s; + vertical-align: bottom; + cursor: pointer; +} +.tsd-widget:hover { + opacity: 0.9; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-accent); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} + +.tsd-widget.options, +.tsd-widget.menu { + display: none; +} +input[type="checkbox"] + .tsd-widget:before { + background-position: -120px 0; +} +input[type="checkbox"]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +img { + max-width: 100%; +} + +.tsd-anchor-icon { + display: inline-flex; + align-items: center; + margin-left: 0.5rem; + vertical-align: middle; + color: var(--color-text); +} + +.tsd-anchor-icon svg { + width: 1em; + height: 1em; + visibility: hidden; +} + +.tsd-anchor-link:hover > .tsd-anchor-icon svg { + visibility: visible; +} + +.deprecated { + text-decoration: line-through !important; +} + +.warning { + padding: 1rem; + color: var(--color-warning-text); + background: var(--color-background-warning); +} + +.tsd-kind-project { + color: var(--color-ts-project); +} +.tsd-kind-module { + color: var(--color-ts-module); +} +.tsd-kind-namespace { + color: var(--color-ts-namespace); +} +.tsd-kind-enum { + color: var(--color-ts-enum); +} +.tsd-kind-enum-member { + color: var(--color-ts-enum-member); +} +.tsd-kind-variable { + color: var(--color-ts-variable); +} +.tsd-kind-function { + color: var(--color-ts-function); +} +.tsd-kind-class { + color: var(--color-ts-class); +} +.tsd-kind-interface { + color: var(--color-ts-interface); +} +.tsd-kind-constructor { + color: var(--color-ts-constructor); +} +.tsd-kind-property { + color: var(--color-ts-property); +} +.tsd-kind-method { + color: var(--color-ts-method); +} +.tsd-kind-call-signature { + color: var(--color-ts-call-signature); +} +.tsd-kind-index-signature { + color: var(--color-ts-index-signature); +} +.tsd-kind-constructor-signature { + color: var(--color-ts-constructor-signature); +} +.tsd-kind-parameter { + color: var(--color-ts-parameter); +} +.tsd-kind-type-literal { + color: var(--color-ts-type-literal); +} +.tsd-kind-type-parameter { + color: var(--color-ts-type-parameter); +} +.tsd-kind-accessor { + color: var(--color-ts-accessor); +} +.tsd-kind-get-signature { + color: var(--color-ts-get-signature); +} +.tsd-kind-set-signature { + color: var(--color-ts-set-signature); +} +.tsd-kind-type-alias { + color: var(--color-ts-type-alias); +} + +/* if we have a kind icon, don't color the text by kind */ +.tsd-kind-icon ~ span { + color: var(--color-text); +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--color-accent) var(--color-icon-background); +} + +*::-webkit-scrollbar { + width: 0.75rem; +} + +*::-webkit-scrollbar-track { + background: var(--color-icon-background); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--color-accent); + border-radius: 999rem; + border: 0.25rem solid var(--color-icon-background); +} + +/* mobile */ +@media (max-width: 769px) { + .tsd-widget.options, + .tsd-widget.menu { + display: inline-block; + } + + .container-main { + display: flex; + } + html .col-content { + float: none; + max-width: 100%; + width: 100%; + } + html .col-sidebar { + position: fixed !important; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + padding: 1.5rem 1.5rem 0 0; + width: 75vw; + visibility: hidden; + background-color: var(--color-background); + transform: translate(100%, 0); + } + html .col-sidebar > *:last-child { + padding-bottom: 20px; + } + html .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + + .to-has-menu .overlay { + animation: fade-in 0.4s; + } + + .to-has-menu .col-sidebar { + animation: pop-in-from-right 0.4s; + } + + .from-has-menu .overlay { + animation: fade-out 0.4s; + } + + .from-has-menu .col-sidebar { + animation: pop-out-to-right 0.4s; + } + + .has-menu body { + overflow: hidden; + } + .has-menu .overlay { + visibility: visible; + } + .has-menu .col-sidebar { + visibility: visible; + transform: translate(0, 0); + display: flex; + flex-direction: column; + gap: 1.5rem; + max-height: 100vh; + padding: 1rem 2rem; + } + .has-menu .tsd-navigation { + max-height: 100%; + } +} + +/* one sidebar */ +@media (min-width: 770px) { + .container-main { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); + grid-template-areas: "sidebar content"; + margin: 2rem auto; + } + + .col-sidebar { + grid-area: sidebar; + } + .col-content { + grid-area: content; + padding: 0 1rem; + } +} +@media (min-width: 770px) and (max-width: 1399px) { + .col-sidebar { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + padding-top: 1rem; + } + .site-menu { + margin-top: 1rem; + } +} + +/* two sidebars */ +@media (min-width: 1200px) { + .container-main { + grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem); + grid-template-areas: "sidebar content toc"; + } + + .col-sidebar { + display: contents; + } + + .page-menu { + grid-area: toc; + padding-left: 1rem; + } + .site-menu { + grid-area: sidebar; + } + + .site-menu { + margin-top: 1rem 0; + } + + .page-menu, + .site-menu { + max-height: calc(100vh - 2rem - 42px); + overflow: auto; + position: sticky; + top: 42px; + } +} diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ClassNotAvailableError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ClassNotAvailableError.html new file mode 100644 index 0000000..37f4b18 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ClassNotAvailableError.html @@ -0,0 +1,11 @@ +ClassNotAvailableError | Nymph.js 1.0.0-beta.81

    Hierarchy

    • Error
      • ClassNotAvailableError

    Constructors

    Properties

    message: string
    name: string
    stack?: string
    prepareStackTrace?: ((err, stackTraces) => any)

    Optional override for formatting stack traces

    +

    Type declaration

      • (err, stackTraces): any
      • Parameters

        • err: Error
        • stackTraces: CallSite[]

        Returns any

    stackTraceLimit: number

    Methods

    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • Optional constructorOpt: Function

      Returns void

    \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ClientError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ClientError.html new file mode 100644 index 0000000..ba524c3 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ClientError.html @@ -0,0 +1,13 @@ +ClientError | Nymph.js 1.0.0-beta.81

    Hierarchy (view full)

    Constructors

    Properties

    message: string
    name: string
    stack?: string
    status: number
    statusText: string
    prepareStackTrace?: ((err, stackTraces) => any)

    Optional override for formatting stack traces

    +

    Type declaration

      • (err, stackTraces): any
      • Parameters

        • err: Error
        • stackTraces: CallSite[]

        Returns any

    stackTraceLimit: number

    Methods

    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • Optional constructorOpt: Function

      Returns void

    \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ConnectionClosedUnexpectedlyError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ConnectionClosedUnexpectedlyError.html new file mode 100644 index 0000000..1ebf50f --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ConnectionClosedUnexpectedlyError.html @@ -0,0 +1,11 @@ +ConnectionClosedUnexpectedlyError | Nymph.js 1.0.0-beta.81

    Hierarchy

    • Error
      • ConnectionClosedUnexpectedlyError

    Constructors

    Properties

    message: string
    name: string
    stack?: string
    prepareStackTrace?: ((err, stackTraces) => any)

    Optional override for formatting stack traces

    +

    Type declaration

      • (err, stackTraces): any
      • Parameters

        • err: Error
        • stackTraces: CallSite[]

        Returns any

    stackTraceLimit: number

    Methods

    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • Optional constructorOpt: Function

      Returns void

    \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ConnectionError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ConnectionError.html new file mode 100644 index 0000000..44658d5 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ConnectionError.html @@ -0,0 +1,11 @@ +ConnectionError | Nymph.js 1.0.0-beta.81

    Hierarchy

    • Error
      • ConnectionError

    Constructors

    Properties

    message: string
    name: string
    stack?: string
    prepareStackTrace?: ((err, stackTraces) => any)

    Optional override for formatting stack traces

    +

    Type declaration

      • (err, stackTraces): any
      • Parameters

        • err: Error
        • stackTraces: CallSite[]

        Returns any

    stackTraceLimit: number

    Methods

    • Create .stack property on a target object

      +

      Parameters

      • targetObject: object
      • Optional constructorOpt: Function

      Returns void

    \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.Entity.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.Entity.html new file mode 100644 index 0000000..ce165a2 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.Entity.html @@ -0,0 +1,135 @@ +Entity | Nymph.js 1.0.0-beta.81

    Entity interface.

    +

    Type Parameters

    Hierarchy

    • Entity

      Implements

      Constructors

      Properties

      $data: T

      The data proxy object.

      +
      $dataHandler: Object

      The data proxy handler.

      +
      $dataStore: T

      The actual data store.

      +
      $dirty: {
          [k: string]: boolean;
      } = {}

      A map of props to whether they're dirty (for patch).

      +

      Type declaration

      • [k: string]: boolean
      $isASleepingReference: boolean = false

      Whether this instance is a sleeping reference.

      +
      $nymph: Nymph

      The instance of Nymph to use for queries.

      +
      $originalTags: string[] = []

      Array of the entity's original tags (for patch).

      +
      $sleepingReference: null | EntityReference = null

      The reference to use to wake.

      +
      $wakePromise: null | Promise<Entity<T>> = null

      A promise that resolved when the entity's data is wake.

      +
      cdate: null | number = null

      The creation date of the entity as a high precision Unix timestamp.

      +
      guid: null | string = null

      The entity's Globally Unique ID.

      +
      mdate: null | number = null

      The modified date of the entity as a high precision Unix timestamp.

      +
      tags: string[] = []

      Array of the entity's tags.

      +
      class: string = 'Entity'

      The lookup name for this entity.

      +

      This is used for reference arrays (and sleeping references) and server +requests.

      +
      nymph: Nymph = ...

      The instance of Nymph to use for queries.

      +

      Methods

      • Search the array for this object and return the corresponding index.

        +

        If strict is false, is() is used to compare. If strict is true, +equals() is used.

        +

        Parameters

        • array: any[]

          The array to search.

          +
        • strict: boolean = false

          Whether to use stronger comparison.

          +

        Returns number

        The index if the object is in the array, -1 if it isn't.

        +
      • Check whether this object is in an array.

        +

        If strict is false, is() is used to compare. If strict is true, +equals() is used.

        +

        Parameters

        • array: any[]

          The array to search.

          +
        • strict: boolean = false

          Whether to use stronger comparison.

          +

        Returns boolean

        True if the object is in the array, false if it isn't.

        +
      • Refresh the object from storage. (Bypasses Nymph's cache.)

        +

        If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

        +

        Returns Promise<boolean | 0>

        False if the data has not been saved, 0 if it can't be refreshed, true on success.

        +
      • Call an instance method on the server version of this entity.

        +

        The entity's data will be sent up to the server as well, so the server's +state can match the client's state. It won't be propagated into the DB, +though.

        +

        Parameters

        • method: string

          The name of the method.

          +
        • params: Iterable<any>

          The parameters to call the method with.

          +
        • stateless: boolean = false

          Whether the server should return, and the client update, the data in the entity after the method has run.

          +

        Returns Promise<any>

        The value that the method on the server returned.

        +
      • Ready this entity's data, and the data of entity's within this one's.

        +

        Parameters

        • Optional level: number

          The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

          +

        Returns Promise<Entity<T>>

        The entity.

        +
      • Call a static method on the server version of this entity.

        +

        Parameters

        • method: string

          The name of the method.

          +
        • params: Iterable<any>

          The parameters to call the method with.

          +

        Returns Promise<any>

        The value that the method on the server returned.

        +
      • Call a static iterator method on the server version of this entity.

        +

        Parameters

        • method: string

          The name of the method.

          +
        • params: Iterable<any>

          The parameters to call the method with.

          +

        Returns Promise<AbortableAsyncIterator<any>>

        An iterator that iterates over values that the method on the server yields.

        +
      \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.EntityIsSleepingReferenceError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.EntityIsSleepingReferenceError.html new file mode 100644 index 0000000..4451d5c --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.EntityIsSleepingReferenceError.html @@ -0,0 +1,11 @@ +EntityIsSleepingReferenceError | Nymph.js 1.0.0-beta.81

      Hierarchy

      • Error
        • EntityIsSleepingReferenceError

      Constructors

      Properties

      message: string
      name: string
      stack?: string
      prepareStackTrace?: ((err, stackTraces) => any)

      Optional override for formatting stack traces

      +

      Type declaration

        • (err, stackTraces): any
        • Parameters

          • err: Error
          • stackTraces: CallSite[]

          Returns any

      stackTraceLimit: number

      Methods

      • Create .stack property on a target object

        +

        Parameters

        • targetObject: object
        • Optional constructorOpt: Function

        Returns void

      \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.HttpError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.HttpError.html new file mode 100644 index 0000000..cf88a9d --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.HttpError.html @@ -0,0 +1,13 @@ +HttpError | Nymph.js 1.0.0-beta.81

      Hierarchy (view full)

      Constructors

      Properties

      message: string
      name: string
      stack?: string
      status: number
      statusText: string
      prepareStackTrace?: ((err, stackTraces) => any)

      Optional override for formatting stack traces

      +

      Type declaration

        • (err, stackTraces): any
        • Parameters

          • err: Error
          • stackTraces: CallSite[]

          Returns any

      stackTraceLimit: number

      Methods

      • Create .stack property on a target object

        +

        Parameters

        • targetObject: object
        • Optional constructorOpt: Function

        Returns void

      \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InformationalError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InformationalError.html new file mode 100644 index 0000000..8e0748b --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InformationalError.html @@ -0,0 +1,13 @@ +InformationalError | Nymph.js 1.0.0-beta.81

      Hierarchy (view full)

      Constructors

      Properties

      message: string
      name: string
      stack?: string
      status: number
      statusText: string
      prepareStackTrace?: ((err, stackTraces) => any)

      Optional override for formatting stack traces

      +

      Type declaration

        • (err, stackTraces): any
        • Parameters

          • err: Error
          • stackTraces: CallSite[]

          Returns any

      stackTraceLimit: number

      Methods

      • Create .stack property on a target object

        +

        Parameters

        • targetObject: object
        • Optional constructorOpt: Function

        Returns void

      \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidRequestError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidRequestError.html new file mode 100644 index 0000000..590b748 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidRequestError.html @@ -0,0 +1,11 @@ +InvalidRequestError | Nymph.js 1.0.0-beta.81

      Hierarchy

      • Error
        • InvalidRequestError

      Constructors

      Properties

      message: string
      name: string
      stack?: string
      prepareStackTrace?: ((err, stackTraces) => any)

      Optional override for formatting stack traces

      +

      Type declaration

        • (err, stackTraces): any
        • Parameters

          • err: Error
          • stackTraces: CallSite[]

          Returns any

      stackTraceLimit: number

      Methods

      • Create .stack property on a target object

        +

        Parameters

        • targetObject: object
        • Optional constructorOpt: Function

        Returns void

      \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidResponseError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidResponseError.html new file mode 100644 index 0000000..2551677 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidResponseError.html @@ -0,0 +1,11 @@ +InvalidResponseError | Nymph.js 1.0.0-beta.81

      Hierarchy

      • Error
        • InvalidResponseError

      Constructors

      Properties

      message: string
      name: string
      stack?: string
      prepareStackTrace?: ((err, stackTraces) => any)

      Optional override for formatting stack traces

      +

      Type declaration

        • (err, stackTraces): any
        • Parameters

          • err: Error
          • stackTraces: CallSite[]

          Returns any

      stackTraceLimit: number

      Methods

      • Create .stack property on a target object

        +

        Parameters

        • targetObject: object
        • Optional constructorOpt: Function

        Returns void

      \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidStateError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidStateError.html new file mode 100644 index 0000000..b83ba70 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.InvalidStateError.html @@ -0,0 +1,11 @@ +InvalidStateError | Nymph.js 1.0.0-beta.81

      Hierarchy

      • Error
        • InvalidStateError

      Constructors

      Properties

      message: string
      name: string
      stack?: string
      prepareStackTrace?: ((err, stackTraces) => any)

      Optional override for formatting stack traces

      +

      Type declaration

        • (err, stackTraces): any
        • Parameters

          • err: Error
          • stackTraces: CallSite[]

          Returns any

      stackTraceLimit: number

      Methods

      • Create .stack property on a target object

        +

        Parameters

        • targetObject: object
        • Optional constructorOpt: Function

        Returns void

      \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.Nymph.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.Nymph.html new file mode 100644 index 0000000..3ea83d4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.Nymph.html @@ -0,0 +1,48 @@ +Nymph | Nymph.js 1.0.0-beta.81

      Hierarchy

      • Nymph

        Constructors

        Properties

        Entity: typeof Entity

        The entity class for this instance of Nymph.

        +
        cache: default = ...

        The entity cache.

        +
        entityClasses: {
            [k: string]: EntityConstructor;
        } = {}

        A simple map of names to Entity classes.

        +

        Type declaration

        headers: {
            [k: string]: string;
        } = {}

        Headers that will be sent with every request.

        +

        These are used by Tilmeld for authentication.

        +

        Type declaration

        • [k: string]: string
        pubsub: undefined | PubSub = undefined

        And optional PubSub client instance.

        +
        requestCallbacks: RequestCallback[] = []
        responseCallbacks: ResponseCallback[] = []
        restUrl: string = ''
        weakCache: boolean = false

        Methods

        • Add your class to this instance.

          +

          This will create a class that extends your class within this instance of +Nymph and return it. You can then use this class's constructor and methods, +which will use this instance of Nymph.

          +

          Because this creates a subclass, don't use the class +returned from getEntityClass to check with instanceof.

          +

          Type Parameters

          Parameters

          • entityClass: T

          Returns T

        • Type Parameters

          Parameters

          • entity: T
          • method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
          • data: {
                [k: string]: any;
            }
            • [k: string]: any
          • plural: false

          Returns Promise<T>

        • Type Parameters

          Parameters

          • entity: T[]
          • method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
          • data: {
                [k: string]: any;
            }
            • [k: string]: any
          • plural: true

          Returns Promise<T[]>

        • Parameters

          • className: string
          • method: string
          • params: any[]

          Returns Promise<any>

        \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.PubSub.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.PubSub.html new file mode 100644 index 0000000..9dc9682 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.PubSub.html @@ -0,0 +1,43 @@ +PubSub | Nymph.js 1.0.0-beta.81

        Hierarchy

        • PubSub

          Constructors

          Properties

          WebSocket: {
              CLOSED: 3;
              CLOSING: 2;
              CONNECTING: 0;
              OPEN: 1;
              prototype: WebSocket;
              new (url, protocols?): WebSocket;
          }

          Type declaration

            • new (url, protocols?): WebSocket
            • Parameters

              • url: string | URL
              • Optional protocols: string | string[]

              Returns WebSocket

          • Readonly CLOSED: 3
          • Readonly CLOSING: 2
          • Readonly CONNECTING: 0
          • Readonly OPEN: 1
          • prototype: WebSocket
          authToken: null | string = null
          connectCallbacks: PubSubConnectCallback[] = []
          connection: undefined | WebSocket
          disconnectCallbacks: PubSubDisconnectCallback[] = []
          errorCallbacks: PubSubErrorCallback[] = []
          noConsole: boolean = false
          nymph: Nymph
          pubsubUrl: undefined | string
          subscriptions: {
              queries: {
                  [k: string]: PubSubCallbacks<any>[];
              };
              uids: {
                  [k: string]: PubSubCallbacks<number>[];
              };
          } = ...

          Type declaration

          switchToken: null | string = null
          waitForConnectionTimeout: undefined | Timeout

          Methods

          • Parameters

            • authToken: null | string
            • switchToken: null | string = null

            Returns void

          • Parameters

            • name: string

            Returns ((resolve?, reject?, count?) => {
                unsubscribe: (() => void);
            })

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.PubSubSubscription.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.PubSubSubscription.html new file mode 100644 index 0000000..e1363d3 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.PubSubSubscription.html @@ -0,0 +1,5 @@ +PubSubSubscription | Nymph.js 1.0.0-beta.81

          Type Parameters

          • T

          Constructors

          Properties

          Constructors

          Properties

          callbacks: PubSubCallbacks<T>
          query: string
          unsubscribe: (() => void)

          Type declaration

            • (): void
            • Returns void

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.RedirectError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.RedirectError.html new file mode 100644 index 0000000..f22d081 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.RedirectError.html @@ -0,0 +1,13 @@ +RedirectError | Nymph.js 1.0.0-beta.81

          Hierarchy (view full)

          Constructors

          Properties

          message: string
          name: string
          stack?: string
          status: number
          statusText: string
          prepareStackTrace?: ((err, stackTraces) => any)

          Optional override for formatting stack traces

          +

          Type declaration

            • (err, stackTraces): any
            • Parameters

              • err: Error
              • stackTraces: CallSite[]

              Returns any

          stackTraceLimit: number

          Methods

          • Create .stack property on a target object

            +

            Parameters

            • targetObject: object
            • Optional constructorOpt: Function

            Returns void

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ServerError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ServerError.html new file mode 100644 index 0000000..4c683be --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.ServerError.html @@ -0,0 +1,13 @@ +ServerError | Nymph.js 1.0.0-beta.81

          Hierarchy (view full)

          Constructors

          Properties

          message: string
          name: string
          stack?: string
          status: number
          statusText: string
          prepareStackTrace?: ((err, stackTraces) => any)

          Optional override for formatting stack traces

          +

          Type declaration

            • (err, stackTraces): any
            • Parameters

              • err: Error
              • stackTraces: CallSite[]

              Returns any

          stackTraceLimit: number

          Methods

          • Create .stack property on a target object

            +

            Parameters

            • targetObject: object
            • Optional constructorOpt: Function

            Returns void

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client.SuccessError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.SuccessError.html new file mode 100644 index 0000000..30bc7f4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client.SuccessError.html @@ -0,0 +1,13 @@ +SuccessError | Nymph.js 1.0.0-beta.81

          Hierarchy (view full)

          Constructors

          Properties

          message: string
          name: string
          stack?: string
          status: number
          statusText: string
          prepareStackTrace?: ((err, stackTraces) => any)

          Optional override for formatting stack traces

          +

          Type declaration

            • (err, stackTraces): any
            • Parameters

              • err: Error
              • stackTraces: CallSite[]

              Returns any

          stackTraceLimit: number

          Methods

          • Create .stack property on a target object

            +

            Parameters

            • targetObject: object
            • Optional constructorOpt: Function

            Returns void

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client_node.Nymph.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client_node.Nymph.html new file mode 100644 index 0000000..da39fcd --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client_node.Nymph.html @@ -0,0 +1,41 @@ +Nymph | Nymph.js 1.0.0-beta.81

          Hierarchy (view full)

          Constructors

          Properties

          Entity: typeof Entity

          The entity class for this instance of Nymph.

          +
          cache: default

          The entity cache.

          +
          headers: {
              [k: string]: string;
          }

          Headers that will be sent with every request.

          +

          These are used by Tilmeld for authentication.

          +

          Type declaration

          • [k: string]: string
          pubsub: undefined | PubSub

          And optional PubSub client instance.

          +

          Methods

          • Add your class to this instance.

            +

            This will create a class that extends your class within this instance of +Nymph and return it. You can then use this class's constructor and methods, +which will use this instance of Nymph.

            +

            Because this creates a subclass, don't use the class +returned from getEntityClass to check with instanceof.

            +

            Type Parameters

            Parameters

            • entityClass: T

            Returns T

          • Parameters

            • name: string

            Returns Promise<any>

          • Parameters

            • name: string

            Returns Promise<number>

          • Type Parameters

            • T extends unknown

            Parameters

            • item: T

            Returns T

          • Parameters

            • name: string

            Returns Promise<number>

          • Type Parameters

            Parameters

            Returns boolean

          • Type Parameters

            Parameters

            Returns (() => boolean)

              • (): boolean
              • Returns boolean

          • Parameters

            • className: string
            • method: string
            • params: any[]

            Returns Promise<any>

          • Parameters

            • name: string
            • value: number

            Returns Promise<any>

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_client_node.PubSub.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_client_node.PubSub.html new file mode 100644 index 0000000..58221ca --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_client_node.PubSub.html @@ -0,0 +1,15 @@ +PubSub | Nymph.js 1.0.0-beta.81

          Hierarchy (view full)

          Constructors

          Methods

          • Parameters

            • authToken: null | string
            • Optional switchToken: null | string

            Returns void

          • Returns void

          • Returns void

          • Returns boolean

          • Returns boolean

          • Parameters

            • name: string

            Returns ((resolve?, reject?, count?) => {
                unsubscribe: (() => void);
            })

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_mysql.MySQLDriver.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_mysql.MySQLDriver.html new file mode 100644 index 0000000..10f931e --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_mysql.MySQLDriver.html @@ -0,0 +1,106 @@ +MySQLDriver | Nymph.js 1.0.0-beta.81

          The MySQL Nymph database driver.

          +

          Hierarchy (view full)

          Constructors

          Properties

          connected: boolean = false
          entityCache: {
              [k: string]: {
                  cdate: number;
                  data: EntityData;
                  mdate: number;
                  sdata: SerializedEntityData;
                  tags: string[];
              };
          }

          A cache to make entity retrieval faster.

          +

          Type declaration

          entityCount: {
              [k: string]: number;
          }

          A counter for the entity cache to determine the most accessed entities.

          +

          Type declaration

          • [k: string]: number
          link: Pool
          mysqlConfig: PoolOptions
          nymph: Nymph
          prefix: string
          transaction: null | MySQLDriverTransaction = null

          Methods

          • Remove all copies of an entity from the cache.

            +

            Parameters

            • guid: string

              The GUID of the entity to remove.

              +

            Returns void

          • Create entity tables in the database.

            +

            Parameters

            • etype: null | string = null

              The entity type to create a table for. If this is blank, the default tables are created.

              +

            Returns Promise<boolean>

            True on success, false on failure.

            +
          • Parameters

            • filename: string

            Returns Promise<boolean>

          • Returns AsyncGenerator<{
                content: string;
                type: "comment" | "uid" | "entity";
            }, void, undefined | false>

          • Returns Promise<boolean>

          • Parameters

            • svalue: string

            Returns string[]

          • Type Parameters

            Parameters

            • options: Options<T> & {
                  return: "count";
              }
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => number | Error);
                result: any;
            }

            • process: (() => number | Error)
                • (): number | Error
                • Returns number | Error

            • result: any
          • Type Parameters

            Parameters

            • options: Options<T> & {
                  return: "guid";
              }
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => Error | string[]);
                result: any;
            }

            • process: (() => Error | string[])
                • (): Error | string[]
                • Returns Error | string[]

            • result: any
          • Type Parameters

            Parameters

            • options: Options<T>
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => Error | EntityInstanceType<T>[]);
                result: any;
            }

          • Parameters

            • filename: string
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Parameters

            • text: string
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Parameters

            • lines: Iterable<string>
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Initialize the Nymph driver.

            +

            This is meant to be called internally by Nymph. Don't call this directly.

            +

            Parameters

            • nymph: Nymph

              The Nymph instance.

              +

            Returns void

          • Parameters

            • selectors: FormattedSelector[]
            • callback: ((data) => string)
                • (data): string
                • Parameters

                  • data: {
                        key: string;
                        typeIsNot: boolean;
                        typeIsOr: boolean;
                        value: any;
                    }
                    • key: string
                    • typeIsNot: boolean
                    • typeIsOr: boolean
                    • value: any

                  Returns string

            Returns string[]

          • Generate the MySQL query.

            +

            Parameters

            • options: Options

              The options array.

              +
            • formattedSelectors: FormattedSelector[]

              The formatted selector array.

              +
            • etype: string
            • count: {
                  i: number;
              } = ...

              Used to track internal params.

              +
              • i: number
            • params: {
                  [k: string]: any;
              } = {}

              Used to store internal params.

              +
              • [k: string]: any
            • subquery: boolean = false

              Whether only a subquery should be returned.

              +
            • tableSuffix: string = ''
            • etypes: string[] = []
            • guidSelector: undefined | string = undefined

            Returns {
                etypes: string[];
                params: {
                    [k: string]: any;
                };
                query: string;
            }

            The SQL query.

            +
            • etypes: string[]
            • params: {
                  [k: string]: any;
              }
              • [k: string]: any
            • query: string
          • Detect whether the database needs to be migrated.

            +

            If true, the database should be exported with an old version of Nymph, then +imported into a fresh database with this version.

            +

            Returns Promise<boolean>

          • Parameters

            • pattern: string
            • subject: string
            • Optional caseInsensitive: boolean

            Returns boolean

          • Pull an entity from the cache.

            +

            Type Parameters

            Parameters

            • guid: string

              The entity's GUID.

              +
            • className: string

              The entity's class.

              +
            • Optional useSkipAc: boolean

              Whether to tell the entity to use skip_ac.

              +

            Returns null | T

            The entity or null if it's not cached.

            +
          • Push an entity onto the cache.

            +

            Parameters

            • guid: string

              The entity's GUID.

              +
            • cdate: number

              The entity's cdate.

              +
            • mdate: number

              The entity's mdate.

              +
            • tags: string[]

              The entity's tags.

              +
            • data: EntityData

              The entity's data.

              +
            • sdata: SerializedEntityData

              The entity's sdata.

              +

            Returns void

          • Type Parameters

            • T extends (() => any)

            Parameters

            • runQuery: T
            • query: string
            • etypes: string[] = []

            Returns ReturnType<T>

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns Promise<any>

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns Promise<any>

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns Promise<{
                changes: any;
            }>

          • Parameters

            • entity: EntityInterface
            • saveNewEntityCallback: ((data) => Promise<boolean>)
            • saveExistingEntityCallback: ((data) => Promise<boolean>)
            • Optional startTransactionCallback: null | (() => Promise<void>)
            • Optional commitTransactionCallback: null | ((success) => Promise<boolean>)

            Returns Promise<boolean>

          • Parameters

            • origQuery: string
            • origParams: {
                  [k: string]: any;
              }
              • [k: string]: any

            Returns {
                params: any[];
                query: string;
            }

            • params: any[]
            • query: string
          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_postgresql.PostgreSQLDriver.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_postgresql.PostgreSQLDriver.html new file mode 100644 index 0000000..d8b31ec --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_postgresql.PostgreSQLDriver.html @@ -0,0 +1,110 @@ +PostgreSQLDriver | Nymph.js 1.0.0-beta.81

          The PostgreSQL Nymph database driver.

          +

          Hierarchy (view full)

          Constructors

          Properties

          connected: boolean = false
          entityCache: {
              [k: string]: {
                  cdate: number;
                  data: EntityData;
                  mdate: number;
                  sdata: SerializedEntityData;
                  tags: string[];
              };
          }

          A cache to make entity retrieval faster.

          +

          Type declaration

          entityCount: {
              [k: string]: number;
          }

          A counter for the entity cache to determine the most accessed entities.

          +

          Type declaration

          • [k: string]: number
          link: Pool
          nymph: Nymph
          postgresqlConfig: PoolConfig
          prefix: string
          transaction: null | PostgreSQLDriverTransaction = null

          Methods

          • Remove all copies of an entity from the cache.

            +

            Parameters

            • guid: string

              The GUID of the entity to remove.

              +

            Returns void

          • Create entity tables in the database.

            +

            Parameters

            • etype: null | string = null

              The entity type to create a table for. If this is blank, the default tables are created.

              +

            Returns Promise<boolean>

            True on success, false on failure.

            +
          • Parameters

            • filename: string

            Returns Promise<boolean>

          • Returns Promise<boolean>

          • Parameters

            • svalue: string

            Returns string[]

          • Type Parameters

            Parameters

            • options: Options<T> & {
                  return: "count";
              }
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => number | Error);
                result: any;
            }

            • process: (() => number | Error)
                • (): number | Error
                • Returns number | Error

            • result: any
          • Type Parameters

            Parameters

            • options: Options<T> & {
                  return: "guid";
              }
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => string[] | Error);
                result: any;
            }

            • process: (() => string[] | Error)
                • (): string[] | Error
                • Returns string[] | Error

            • result: any
          • Type Parameters

            Parameters

            • options: Options<T>
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => Error | EntityInstanceType<T>[]);
                result: any;
            }

          • Parameters

            • filename: string
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Parameters

            • text: string
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Parameters

            • lines: Iterable<string>
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Initialize the Nymph driver.

            +

            This is meant to be called internally by Nymph. Don't call this directly.

            +

            Parameters

            • nymph: Nymph

              The Nymph instance.

              +

            Returns void

          • Parameters

            • selectors: FormattedSelector[]
            • callback: ((data) => string)
                • (data): string
                • Parameters

                  • data: {
                        key: string;
                        typeIsNot: boolean;
                        typeIsOr: boolean;
                        value: any;
                    }
                    • key: string
                    • typeIsNot: boolean
                    • typeIsOr: boolean
                    • value: any

                  Returns string

            Returns string[]

          • Generate the PostgreSQL query.

            +

            Parameters

            • options: Options

              The options array.

              +
            • formattedSelectors: FormattedSelector[]

              The formatted selector array.

              +
            • etype: string
            • count: {
                  i: number;
              } = ...

              Used to track internal params.

              +
              • i: number
            • params: {
                  [k: string]: any;
              } = {}

              Used to store internal params.

              +
              • [k: string]: any
            • subquery: boolean = false

              Whether only a subquery should be returned.

              +
            • tableSuffix: string = ''
            • etypes: string[] = []
            • guidSelector: undefined | string = undefined

            Returns {
                etypes: string[];
                params: {
                    [k: string]: any;
                };
                query: string;
            }

            The SQL query.

            +
            • etypes: string[]
            • params: {
                  [k: string]: any;
              }
              • [k: string]: any
            • query: string
          • Parameters

            • pattern: string
            • subject: string
            • Optional caseInsensitive: boolean

            Returns boolean

          • Pull an entity from the cache.

            +

            Type Parameters

            Parameters

            • guid: string

              The entity's GUID.

              +
            • className: string

              The entity's class.

              +
            • Optional useSkipAc: boolean

              Whether to tell the entity to use skip_ac.

              +

            Returns null | T

            The entity or null if it's not cached.

            +
          • Push an entity onto the cache.

            +

            Parameters

            • guid: string

              The entity's GUID.

              +
            • cdate: number

              The entity's cdate.

              +
            • mdate: number

              The entity's mdate.

              +
            • tags: string[]

              The entity's tags.

              +
            • data: EntityData

              The entity's data.

              +
            • sdata: SerializedEntityData

              The entity's sdata.

              +

            Returns void

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns Promise<any>

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns Promise<any[]>

          • Parameters

            • query: string
            • __namedParameters: {
                  connection?: PostgreSQLDriverConnection;
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional connection?: PostgreSQLDriverConnection
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns Promise<{
                rowCount: number;
            }>

          • Parameters

            • entity: EntityInterface
            • saveNewEntityCallback: ((data) => Promise<boolean>)
            • saveExistingEntityCallback: ((data) => Promise<boolean>)
            • Optional startTransactionCallback: null | (() => Promise<void>)
            • Optional commitTransactionCallback: null | ((success) => Promise<boolean>)

            Returns Promise<boolean>

          • Parameters

            • origQuery: string
            • origParams: {
                  [k: string]: any;
              }
              • [k: string]: any

            Returns {
                params: any[];
                query: string;
            }

            • params: any[]
            • query: string
          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_sqlite3.SQLite3Driver.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_sqlite3.SQLite3Driver.html new file mode 100644 index 0000000..7e932ce --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_driver_sqlite3.SQLite3Driver.html @@ -0,0 +1,100 @@ +SQLite3Driver | Nymph.js 1.0.0-beta.81

          The SQLite3 Nymph database driver.

          +

          Hierarchy (view full)

          Constructors

          Properties

          entityCache: {
              [k: string]: {
                  cdate: number;
                  data: EntityData;
                  mdate: number;
                  sdata: SerializedEntityData;
                  tags: string[];
              };
          }

          A cache to make entity retrieval faster.

          +

          Type declaration

          entityCount: {
              [k: string]: number;
          }

          A counter for the entity cache to determine the most accessed entities.

          +

          Type declaration

          • [k: string]: number
          nymph: Nymph
          prefix: string
          store: InternalStore

          Methods

          • Remove all copies of an entity from the cache.

            +

            Parameters

            • guid: string

              The GUID of the entity to remove.

              +

            Returns void

          • Create entity tables in the database.

            +

            Parameters

            • etype: null | string = null

              The entity type to create a table for. If this is blank, the default tables are created.

              +

            Returns boolean

          • Parameters

            • filename: string

            Returns Promise<boolean>

          • Returns AsyncGenerator<{
                content: string;
                type: "comment" | "uid" | "entity";
            }, void, undefined | false>

          • Returns Promise<boolean>

          • Parameters

            • svalue: string

            Returns string[]

          • Type Parameters

            Parameters

            • options: Options<T> & {
                  return: "count";
              }
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => number | Error);
                result: any;
            }

            • process: (() => number | Error)
                • (): number | Error
                • Returns number | Error

            • result: any
          • Type Parameters

            Parameters

            • options: Options<T> & {
                  return: "guid";
              }
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => string[] | Error);
                result: any;
            }

            • process: (() => string[] | Error)
                • (): string[] | Error
                • Returns string[] | Error

            • result: any
          • Type Parameters

            Parameters

            • options: Options<T>
            • selectors: Selector[]
            • performQueryCallback: ((data) => {
                  result: any;
              })
            • rowFetchCallback: (() => any)
                • (): any
                • Returns any

            • freeResultCallback: (() => void)
                • (): void
                • Returns void

            • getCountCallback: ((row) => number)
                • (row): number
                • Parameters

                  • row: any

                  Returns number

            • getGUIDCallback: ((row) => string)
                • (row): string
                • Parameters

                  • row: any

                  Returns string

            • getTagsAndDatesCallback: ((row) => {
                  cdate: number;
                  mdate: number;
                  tags: string[];
              })
                • (row): {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }
                • Parameters

                  • row: any

                  Returns {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  }

                  • cdate: number
                  • mdate: number
                  • tags: string[]
            • getDataNameAndSValueCallback: ((row) => {
                  name: string;
                  svalue: string;
              })
                • (row): {
                      name: string;
                      svalue: string;
                  }
                • Parameters

                  • row: any

                  Returns {
                      name: string;
                      svalue: string;
                  }

                  • name: string
                  • svalue: string

            Returns {
                process: (() => Error | EntityInstanceType<T>[]);
                result: any;
            }

          • Parameters

            • filename: string
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Parameters

            • text: string
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Parameters

            • lines: Iterable<string>
            • Optional transaction: boolean

            Returns Promise<boolean>

          • Initialize the Nymph driver.

            +

            This is meant to be called internally by Nymph. Don't call this directly.

            +

            Parameters

            • nymph: Nymph

              The Nymph instance.

              +

            Returns void

          • Parameters

            • selectors: FormattedSelector[]
            • callback: ((data) => string)
                • (data): string
                • Parameters

                  • data: {
                        key: string;
                        typeIsNot: boolean;
                        typeIsOr: boolean;
                        value: any;
                    }
                    • key: string
                    • typeIsNot: boolean
                    • typeIsOr: boolean
                    • value: any

                  Returns string

            Returns string[]

          • Generate the SQLite3 query.

            +

            Parameters

            • options: Options

              The options array.

              +
            • formattedSelectors: FormattedSelector[]

              The formatted selector array.

              +
            • etype: string
            • count: {
                  i: number;
              } = ...

              Used to track internal params.

              +
              • i: number
            • params: {
                  [k: string]: any;
              } = {}

              Used to store internal params.

              +
              • [k: string]: any
            • subquery: boolean = false

              Whether only a subquery should be returned.

              +
            • tableSuffix: string = ''
            • etypes: string[] = []
            • guidSelector: undefined | string = undefined

            Returns {
                etypes: string[];
                params: {
                    [k: string]: any;
                };
                query: string;
            }

            The SQL query.

            +
            • etypes: string[]
            • params: {
                  [k: string]: any;
              }
              • [k: string]: any
            • query: string
          • Parameters

            • pattern: string
            • subject: string
            • Optional caseInsensitive: boolean

            Returns boolean

          • Pull an entity from the cache.

            +

            Type Parameters

            Parameters

            • guid: string

              The entity's GUID.

              +
            • className: string

              The entity's class.

              +
            • Optional useSkipAc: boolean

              Whether to tell the entity to use skip_ac.

              +

            Returns null | T

            The entity or null if it's not cached.

            +
          • Push an entity onto the cache.

            +

            Parameters

            • guid: string

              The entity's GUID.

              +
            • cdate: number

              The entity's cdate.

              +
            • mdate: number

              The entity's mdate.

              +
            • tags: string[]

              The entity's tags.

              +
            • data: EntityData

              The entity's data.

              +
            • sdata: SerializedEntityData

              The entity's sdata.

              +

            Returns void

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns unknown

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns IterableIterator<unknown>

          • Parameters

            • query: string
            • __namedParameters: {
                  etypes?: string[];
                  params?: {
                      [k: string]: any;
                  };
              } = {}
              • Optional etypes?: string[]
              • Optional params?: {
                    [k: string]: any;
                }
                • [k: string]: any

            Returns RunResult

          • Parameters

            • entity: EntityInterface
            • saveNewEntityCallback: ((data) => Promise<boolean>)
            • saveExistingEntityCallback: ((data) => Promise<boolean>)
            • Optional startTransactionCallback: null | (() => Promise<void>)
            • Optional commitTransactionCallback: null | ((success) => Promise<boolean>)

            Returns Promise<boolean>

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.ClassNotAvailableError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.ClassNotAvailableError.html new file mode 100644 index 0000000..31d6324 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.ClassNotAvailableError.html @@ -0,0 +1,12 @@ +ClassNotAvailableError | Nymph.js 1.0.0-beta.81

          Hierarchy

          • Error
            • ClassNotAvailableError

          Constructors

          Properties

          cause?: unknown
          message: string
          name: string
          stack?: string
          prepareStackTrace?: ((err, stackTraces) => any)

          Optional override for formatting stack traces

          +

          Type declaration

            • (err, stackTraces): any
            • Parameters

              • err: Error
              • stackTraces: CallSite[]

              Returns any

          stackTraceLimit: number

          Methods

          • Create .stack property on a target object

            +

            Parameters

            • targetObject: object
            • Optional constructorOpt: Function

            Returns void

          \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.Entity.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.Entity.html new file mode 100644 index 0000000..59e576b --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.Entity.html @@ -0,0 +1,314 @@ +Entity | Nymph.js 1.0.0-beta.81

          Database abstraction object.

          +

          Provides a way to access, manipulate, and store data in Nymph.

          +

          The GUID is not set until the entity is saved. GUIDs must be unique forever, +even after deletion. It's the job of the Nymph DB driver to make sure no two +entities ever have the same GUID. This is generally done by using a large +randomly generated ID.

          +

          Each entity class has an etype that determines which table(s) in the database +it belongs to. If two entity classes have the same etype, their data will be +stored in the same table(s). This isn't a good idea, however, because +references to an entity store a class name, not an etype.

          +

          Tags are used to classify entities. Where an etype is used to separate data +by tables, tags can be used to separate entities within a table. You can +define specific tags to be protected, meaning they cannot be added/removed +from the client. It can be useful to allow user defined tags, such as for +blog posts.

          +

          Simply calling $delete() will not unset the entity. It will still take up +memory. Likewise, simply calling unset will not delete the entity from the +DB.

          +

          Some notes about $equals() and $is(), the replacements for "==":

          +

          The == operator will likely not give you the result you want, since two +instances of the same entity will fail that check, even though they represent +the same data in the database.

          +

          $equals() performs a more strict comparison of the entity to another. Use +$equals() instead of the == operator when you want to check both the entities +they represent, and the data inside them. In order to return true for +$equals(), the entity and object must meet the following criteria:

          +
            +
          • They must be entities.
          • +
          • They must have equal GUIDs, or both must have no GUID.
          • +
          • Their data and tags must be equal.
          • +
          +

          $is() performs a less strict comparison of the entity to another. Use $is() +instead of the == operator when the entity's data may have been changed, but +you only care if they represent the same entity. In order to return true, the +entity and object must meet the following criteria:

          +
            +
          • They must be entities.
          • +
          • They must have equal GUIDs, or both must have no GUID.
          • +
          • If they have no GUIDs, their data and tags must be equal.
          • +
          +

          Some notes about saving entities in other entity's properties:

          +

          Entities use references in the DB to store an entity in their properties. The +reference is stored as an array with the values:

          +
            +
          • 0 => The string 'nymph_entity_reference'
          • +
          • 1 => The referenced entity's GUID.
          • +
          • 2 => The referenced entity's class name.
          • +
          +

          Since the referenced entity's class name (meaning the class static +property, not the name of the class itself) is stored in the reference on the +parent entity, if you change the class name in an update, you need to +reassign all referenced entities of that class and resave.

          +

          When an entity is loaded, it does not request its referenced entities from +Nymph. Instead, it creates instances without data called sleeping references. +When you first access an entity's data, if it is a sleeping reference, it +will fill its data from the DB. You can call clearCache() to turn all the +entities back into sleeping references.

          +

          Type Parameters

          Hierarchy

          • Entity

            Implements

            Constructors

            Properties

            $allowlistData?: string[]

            If this is defined, then it lists the only properties that will be +accepted from incoming JSON. Any other properties will be ignored.

            +

            If you use an allowlist, you don't need to use protectedData, since you +can simply leave those entries out of allowlistData.

            +
            $allowlistTags?: string[]

            If this is defined, then it lists the only tags that will be accepted from +incoming JSON. Any other tags will be ignored.

            +
            $clientEnabledMethods: string[] = []

            The names of methods allowed to be called by the frontend with serverCall.

            +
            $data: T

            The data proxy object.

            +
            $dataHandler: Object

            The data proxy handler.

            +
            $dataStore: T

            The actual data store.

            +
            $isASleepingReference: boolean = false

            Whether this instance is a sleeping reference.

            +
            $nymph: Nymph

            The instance of Nymph to use for queries.

            +
            $originalAcValues: null | ACProperties = null

            The AC properties' values when the entity was loaded.

            +
            $privateData: string[] = []

            Properties that will not be serialized into JSON with toJSON(). This +can be considered a denylist, because these properties will not be set +with incoming JSON.

            +

            Clients CAN still determine what is in these properties, unless they are +also listed in searchRestrictedData.

            +
            $protectedData: string[] = []

            Properties that can only be modified by server side code. They will still +be visible on the frontend, unlike $privateData, but any changes to them +that come from the frontend will be ignored.

            +

            In addition to what's listed here, all of the access control properties +will be included when Tilmeld is being used. These are:

            +
              +
            • acUser
            • +
            • acGroup
            • +
            • acOther
            • +
            • acRead
            • +
            • acWrite
            • +
            • acFull
            • +
            • user
            • +
            • group
            • +
            +

            You should modify these through client enabled methods or the $save method +instead, for safety.

            +
            $protectedTags: string[] = []

            Tags that can only be added/removed by server side code. They will still be +visible on the frontend, but any changes to them that come from the +frontend will be ignored.

            +

            The actual sdata store.

            +
            $skipAc: boolean = false

            Whether to use "skipAc" when accessing entity references.

            +
            $sleepingReference: null | EntityReference = null

            The reference to use to wake.

            +
            $wakePromise: null | Promise<Entity<T>> = null

            A promise that resolved when the entity's data is wake.

            +
            cdate: null | number = null

            The creation date of the entity as a Unix timestamp in milliseconds.

            +
            guid: null | string = null

            The entity's Globally Unique ID.

            +

            This is a 12 byte number represented as a lower case HEX string (24 +characters).

            +
            mdate: null | number = null

            The modified date of the entity as a Unix timestamp in milliseconds.

            +
            tags: string[] = []

            Array of the entity's tags.

            +
            ETYPE: string = 'entity'

            A unique name for this type of entity used to separate its data from other +types of entities in the database.

            +
            class: string = 'Entity'

            The lookup name for this entity.

            +

            This is used for reference arrays (and sleeping references) and client +requests.

            +
            clientEnabledStaticMethods: string[] = []

            The names of static methods allowed to be called by the frontend with +serverCallStatic.

            +
            nymph: Nymph = ...

            The instance of Nymph to use for queries.

            +
            pubSubEnabled: boolean = true

            Whether this entity should publish changes to PubSub servers.

            +
            restEnabled: boolean = true

            Whether this entity should be accessible on the frontend through the REST +server.

            +

            If this is false, any request from the client that attempts to use this +entity will fail.

            +
            searchRestrictedData: string[] = []

            Properties that will not be searchable from the frontend. If the frontend +includes any of these properties in any of their clauses, they will be +filtered out before the search is executed.

            +

            Methods

            • Search the array for this object and return the corresponding index.

              +

              If strict is false, is() is used to compare. If strict is true, +equals() is used.

              +

              Parameters

              • array: any[]

                The array to search.

                +
              • strict: boolean = false

                Whether to use stronger comparison.

                +

              Returns number

              The index if the object is in the array, -1 if it isn't.

              +
            • Replace any referenced entities in the data with sleeping references.

              +

              Calling this function ensures that the next time a referenced entity is +accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

              +

              Returns void

            • Used to retrieve the data object.

              +

              This should only be used by Nymph to save the data into storage.

              +

              Parameters

              • includeSData: boolean = false

                Whether to include the serialized data as well.

                +

              Returns any

              The entity's data object.

              +
            • Get an array of strings that must be unique across the current etype.

              +

              When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

              +

              The default implementation of this method returns an empty array, meaning +there are no uniqueness constraints applied to its etype.

              +

              Returns Promise<string[]>

              Resolves to an array of entity's unique constraint strings.

              +
            • Check whether this object is in an array.

              +

              If strict is false, is() is used to compare. If strict is true, +equals() is used.

              +

              Parameters

              • array: any[]

                The array to search.

                +
              • strict: boolean = false

                Whether to use stronger comparison.

                +

              Returns boolean

              True if the object is in the array, false if it isn't.

              +
            • Accept JSON data from the client.

              +

              This function uses the security protection lists:

              +
                +
              • $protectedTags
              • +
              • $protectedData
              • +
              • $allowlistTags
              • +
              • $allowlistData
              • +
              +

              Parameters

              • input: EntityJson

                The input data. Please note, this will be modified (destroyed).

                +
              • allowConflict: boolean = false

                Allow to accept data that is older than the current data.

                +

              Returns void

            • Accept JSON patch from the client.

              +

              This function uses the security protection lists:

              +
                +
              • $protectedTags
              • +
              • $protectedData
              • +
              • $allowlistTags
              • +
              • $allowlistData
              • +
              +

              Parameters

              • patch: EntityPatch

                The patch data. Please note, this will be modified (destroyed).

                +
              • allowConflict: boolean = false

                Allow to accept data that is older than the current data.

                +

              Returns void

            • Refresh the object from storage. (Bypasses Nymph's cache.)

              +

              If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

              +

              Returns Promise<boolean | 0>

              False if the data has not been saved, 0 if it can't be refreshed, true on success.

              +
            • Alter the options for a query for this entity.

              +

              Type Parameters

              Parameters

              • options: T

                The current options.

                +

              Returns T

              The altered options.

              +
            • Get an array of strings that must be unique across the current etype.

              +

              When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

              +

              The default implementation of this static method instantiates the entity, +assigns all of the given data, then calls $getUniques and returns its +output. This can have a performance impact if a lot of extra processing +happens during any of these steps. You can override this method to +calculate the unique strings faster, but you must return the same strings +that would be returned by $getUniques.

              +

              Parameters

              • __namedParameters: {
                    cdate?: number;
                    data: EntityData;
                    guid?: string;
                    mdate?: number;
                    sdata?: SerializedEntityData;
                    tags: string[];
                }

              Returns Promise<string[]>

              Resolves to an array of entity's unique constraint strings.

              +
            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityConflictError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityConflictError.html new file mode 100644 index 0000000..51ca4a3 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityConflictError.html @@ -0,0 +1,12 @@ +EntityConflictError | Nymph.js 1.0.0-beta.81

            Hierarchy

            • Error
              • EntityConflictError

            Constructors

            Properties

            cause?: unknown
            message: string
            name: string
            stack?: string
            prepareStackTrace?: ((err, stackTraces) => any)

            Optional override for formatting stack traces

            +

            Type declaration

              • (err, stackTraces): any
              • Parameters

                • err: Error
                • stackTraces: CallSite[]

                Returns any

            stackTraceLimit: number

            Methods

            • Create .stack property on a target object

              +

              Parameters

              • targetObject: object
              • Optional constructorOpt: Function

              Returns void

            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityInvalidDataError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityInvalidDataError.html new file mode 100644 index 0000000..fb62018 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityInvalidDataError.html @@ -0,0 +1,18 @@ +EntityInvalidDataError | Nymph.js 1.0.0-beta.81

            EntityInvalidDataError.

            +

            This exception is meant to be thrown when an attempt to save an entity is +made, and validation on the data of that entity fails.

            +

            Hierarchy

            • Error
              • EntityInvalidDataError

            Constructors

            Properties

            cause?: unknown
            fields: string[] = []
            message: string
            name: string
            stack?: string
            prepareStackTrace?: ((err, stackTraces) => any)

            Optional override for formatting stack traces

            +

            Type declaration

              • (err, stackTraces): any
              • Parameters

                • err: Error
                • stackTraces: CallSite[]

                Returns any

            stackTraceLimit: number

            Methods

            • Create .stack property on a target object

              +

              Parameters

              • targetObject: object
              • Optional constructorOpt: Function

              Returns void

            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityIsSleepingReferenceError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityIsSleepingReferenceError.html new file mode 100644 index 0000000..1c29767 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityIsSleepingReferenceError.html @@ -0,0 +1,12 @@ +EntityIsSleepingReferenceError | Nymph.js 1.0.0-beta.81

            Hierarchy

            • Error
              • EntityIsSleepingReferenceError

            Constructors

            Properties

            cause?: unknown
            message: string
            name: string
            stack?: string
            prepareStackTrace?: ((err, stackTraces) => any)

            Optional override for formatting stack traces

            +

            Type declaration

              • (err, stackTraces): any
              • Parameters

                • err: Error
                • stackTraces: CallSite[]

                Returns any

            stackTraceLimit: number

            Methods

            • Create .stack property on a target object

              +

              Parameters

              • targetObject: object
              • Optional constructorOpt: Function

              Returns void

            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityUniqueConstraintError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityUniqueConstraintError.html new file mode 100644 index 0000000..063ff06 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.EntityUniqueConstraintError.html @@ -0,0 +1,12 @@ +EntityUniqueConstraintError | Nymph.js 1.0.0-beta.81

            Hierarchy

            • Error
              • EntityUniqueConstraintError

            Constructors

            Properties

            cause?: unknown
            message: string
            name: string
            stack?: string
            prepareStackTrace?: ((err, stackTraces) => any)

            Optional override for formatting stack traces

            +

            Type declaration

              • (err, stackTraces): any
              • Parameters

                • err: Error
                • stackTraces: CallSite[]

                Returns any

            stackTraceLimit: number

            Methods

            • Create .stack property on a target object

              +

              Parameters

              • targetObject: object
              • Optional constructorOpt: Function

              Returns void

            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.InvalidParametersError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.InvalidParametersError.html new file mode 100644 index 0000000..f26f893 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.InvalidParametersError.html @@ -0,0 +1,12 @@ +InvalidParametersError | Nymph.js 1.0.0-beta.81

            Hierarchy

            • Error
              • InvalidParametersError

            Constructors

            Properties

            cause?: unknown
            message: string
            name: string
            stack?: string
            prepareStackTrace?: ((err, stackTraces) => any)

            Optional override for formatting stack traces

            +

            Type declaration

              • (err, stackTraces): any
              • Parameters

                • err: Error
                • stackTraces: CallSite[]

                Returns any

            stackTraceLimit: number

            Methods

            • Create .stack property on a target object

              +

              Parameters

              • targetObject: object
              • Optional constructorOpt: Function

              Returns void

            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.InvalidStateError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.InvalidStateError.html new file mode 100644 index 0000000..7361c6d --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.InvalidStateError.html @@ -0,0 +1,12 @@ +InvalidStateError | Nymph.js 1.0.0-beta.81

            Hierarchy

            • Error
              • InvalidStateError

            Constructors

            Properties

            cause?: unknown
            message: string
            name: string
            stack?: string
            prepareStackTrace?: ((err, stackTraces) => any)

            Optional override for formatting stack traces

            +

            Type declaration

              • (err, stackTraces): any
              • Parameters

                • err: Error
                • stackTraces: CallSite[]

                Returns any

            stackTraceLimit: number

            Methods

            • Create .stack property on a target object

              +

              Parameters

              • targetObject: object
              • Optional constructorOpt: Function

              Returns void

            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.NotConfiguredError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.NotConfiguredError.html new file mode 100644 index 0000000..b9dbc97 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.NotConfiguredError.html @@ -0,0 +1,12 @@ +NotConfiguredError | Nymph.js 1.0.0-beta.81

            Hierarchy

            • Error
              • NotConfiguredError

            Constructors

            Properties

            cause?: unknown
            message: string
            name: string
            stack?: string
            prepareStackTrace?: ((err, stackTraces) => any)

            Optional override for formatting stack traces

            +

            Type declaration

              • (err, stackTraces): any
              • Parameters

                • err: Error
                • stackTraces: CallSite[]

                Returns any

            stackTraceLimit: number

            Methods

            • Create .stack property on a target object

              +

              Parameters

              • targetObject: object
              • Optional constructorOpt: Function

              Returns void

            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.Nymph.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.Nymph.html new file mode 100644 index 0000000..1eeb945 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.Nymph.html @@ -0,0 +1,283 @@ +Nymph | Nymph.js 1.0.0-beta.81

            An object relational mapper for Node.js.

            +

            Written by Hunter Perrin for SciActive.

            +

            Author

            Hunter Perrin hperrin@gmail.com

            +

            Copyright

            SciActive Inc

            +

            See

            http://nymph.io/

            +

            Constructors

            • Initialize Nymph.

              +

              Parameters

              • config: Partial<Config>

                The Nymph configuration.

                +
              • driver: NymphDriver

                The Nymph database driver.

                +
              • Optional tilmeld: TilmeldInterface

                The Tilmeld user/group manager instance, if you want to use it.

                +
              • Optional parent: Nymph

                Used internally by Nymph. Don't set this.

                +

              Returns Nymph

            Properties

            Entity: typeof Entity

            The entity class for this instance of Nymph.

            +
            afterCommitTransactionCallbacks: NymphAfterCommitTransactionCallback[] = []
            afterDeleteEntityByIDCallbacks: NymphAfterDeleteEntityByIDCallback[] = []
            afterDeleteEntityCallbacks: NymphAfterDeleteEntityCallback[] = []
            afterDeleteUIDCallbacks: NymphAfterDeleteUIDCallback[] = []
            afterNewUIDCallbacks: NymphAfterNewUIDCallback[] = []
            afterRenameUIDCallbacks: NymphAfterRenameUIDCallback[] = []
            afterRollbackTransactionCallbacks: NymphAfterRollbackTransactionCallback[] = []
            afterSaveEntityCallbacks: NymphAfterSaveEntityCallback[] = []
            afterSetUIDCallbacks: NymphAfterSetUIDCallback[] = []
            afterStartTransactionCallbacks: NymphAfterStartTransactionCallback[] = []
            beforeCommitTransactionCallbacks: NymphBeforeCommitTransactionCallback[] = []
            beforeDeleteEntityByIDCallbacks: NymphBeforeDeleteEntityByIDCallback[] = []
            beforeDeleteEntityCallbacks: NymphBeforeDeleteEntityCallback[] = []
            beforeDeleteUIDCallbacks: NymphBeforeDeleteUIDCallback[] = []
            beforeGetEntitiesCallbacks: NymphBeforeGetEntitiesCallback[] = []
            beforeGetEntityCallbacks: NymphBeforeGetEntityCallback[] = []
            beforeNewUIDCallbacks: NymphBeforeNewUIDCallback[] = []
            beforeRenameUIDCallbacks: NymphBeforeRenameUIDCallback[] = []
            beforeRollbackTransactionCallbacks: NymphBeforeRollbackTransactionCallback[] = []
            beforeSaveEntityCallbacks: NymphBeforeSaveEntityCallback[] = []
            beforeSetUIDCallbacks: NymphBeforeSetUIDCallback[] = []
            beforeStartTransactionCallbacks: NymphBeforeStartTransactionCallback[] = []
            config: Config

            The Nymph config.

            +
            connectCallbacks: NymphConnectCallback[] = []
            disconnectCallbacks: NymphDisconnectCallback[] = []
            driver: NymphDriver

            The Nymph database driver.

            +
            entityClasses: {
                [k: string]: EntityConstructor;
            } = {}

            A simple map of names to Entity classes.

            +

            Type declaration

            failedDeleteEntityByIDCallbacks: NymphFailedDeleteEntityByIDCallback[] = []
            failedDeleteEntityCallbacks: NymphFailedDeleteEntityCallback[] = []
            failedDeleteUIDCallbacks: NymphFailedDeleteUIDCallback[] = []
            failedNewUIDCallbacks: NymphFailedNewUIDCallback[] = []
            failedRenameUIDCallbacks: NymphFailedRenameUIDCallback[] = []
            failedSaveEntityCallbacks: NymphFailedSaveEntityCallback[] = []
            failedSetUIDCallbacks: NymphFailedSetUIDCallback[] = []
            parent: null | Nymph

            The Nymph instance that this one was cloned from, or null if it's not a +clone.

            +
            queryCallbacks: NymphQueryCallback[] = []
            tilmeld?: TilmeldInterface = undefined

            An optional Tilmeld user/group manager instance.

            +

            Methods

            • Add your class to this instance.

              +

              This will create a class that extends your class within this instance of +Nymph and return it. You can then use this class's constructor and methods, +which will use this instance of Nymph.

              +

              Because this creates a subclass, don't use the class +returned from getEntityClass to check with instanceof.

              +

              Type Parameters

              Parameters

              • EntityClass: T

              Returns T

            • Commit the named transaction.

              +

              After this is called, the transaction instance should be discarded.

              +

              Parameters

              • name: string

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Connect to the database.

              +

              Returns Promise<boolean>

              Whether the instance is connected to the database.

              +
            • Delete an entity from the database by its GUID.

              +

              Parameters

              • guid: string

                The entity's GUID.

                +
              • Optional className: string

                The entity's class name.

                +

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Delete a unique ID.

              +

              Parameters

              • name: string

                The UID's name.

                +

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Disconnect from the database.

              +

              Returns Promise<boolean>

              Whether the instance is connected to the database.

              +
            • Export entities to a local file.

              +

              This is the file format:

              +
              #nex2
              # The above line must be the first thing in the file.
              # Comments begin with #
              # And can have white space before them.
              # This defines a UID.
              <name/of/uid>[5]
              <another uid>[8000]
              # For UIDs, the name is in angle brackets (<>) and the value follows
              # in square brackets ([]).
              # This starts a new entity.
              {1234abcd}<etype>[tag,list,with,commas]
              # For entities, the GUID is in curly brackets ({}), then the etype in
              # angle brackets, then the comma separated tag list follows in square
              # brackets ([]).
              # Properties are stored like this:
              # propname=JSON.stringify(value)
              abilities=["system/admin"]
              groups=[]
              inheritAbilities=false
              name="admin"
              # White space before/after "=" and at beginning/end of line is ignored.
              username = "admin"
              {2}<etype>[tag,list]
              another="This is another entity."
              newline="\n" +
              +

              Parameters

              • filename: string

                The file to export to.

                +

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Export entities to the console.

              +

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Get an array of entities.

              +

              options is an object, which contains any of the following settings:

              +
                +
              • class - The class to create each entity with.
              • +
              • limit - The limit of entities to be returned.
              • +
              • offset - The offset from the oldest matching entity to start retrieving.
              • +
              • reverse - If true, entities will be retrieved from newest to oldest. +Therefore, offset will be from the newest entity.
              • +
              • sort - How to sort the entities. Accepts "cdate", "mdate", or the name of +a top-level property. The method of sorting properties other than cdate +and mdate is driver dependent. The only hard rule is that numbers should +be sorted numerically (2 before 10). Defaults to "cdate".
              • +
              • return - What to return. "entity", "guid", or "count". Defaults to +"entity".
              • +
              • source - Will be 'client' if the query came from a REST call.
              • +
              • skipCache - If true, Nymph will skip the cache and retrieve the entity +from the DB.
              • +
              • skipAc - If true, Tilmeld will not filter returned entities according to +access controls. (If Tilmeld is installed.) (This is always set to +false by the REST server.)
              • +
              +

              If a class is specified, it must have a factory() static method that +returns a new instance.

              +

              Selectors are objects. Any amount of selectors can be provided. Empty +selectors will be ignored. The type property of a selector is required +and can be one of the following strings:

              +
                +
              • & - (and) All values in the selector must be true.
              • +
              • | - (or) At least one value in the selector must be true.
              • +
              • !& - (not and) All values in the selector must be false.
              • +
              • !| - (not or) At least one value in the selector must be false.
              • +
              +

              The rest of the properties in the selectors are called selector clauses, +which can be any of the following (in the form selector.name = value, or +selector.name = [value1, value2,...]):

              +
                +
              • guid - A GUID. True if the entity's GUID is equal.
              • +
              • tag - A tag. True if the entity has the tag.
              • +
              • defined - A name. True if the named property exists.
              • +
              • truthy - A name. True if the named property is defined and truthy.
              • +
              • equal - An array with a name, then value. True if the named property is +defined and equal (their JSON strings are identical).
              • +
              • contain - An array with a name, then value. True if the named property +contains the value (its JSON string is found within the property's JSON +string).
              • +
              • match - An array with a name, then regular expression. True if the +named property matches. Uses POSIX RegExp. Case sensitive. Must not be +surrounded by any delimiters.
              • +
              • imatch - An array with a name, then regular expression. True if the +named property matches. Uses POSIX RegExp. Case insensitive. Must not +be surrounded by any delimiters.
              • +
              • like - An array with a name, then pattern. True if the named property +matches. Uses % for variable length wildcard and _ for single character +wildcard. Case sensitive.
              • +
              • ilike - An array with a name, then pattern. True if the named property +matches. Uses % for variable length wildcard and _ for single character +wildcard. Case insensitive.
              • +
              • gt - An array with a name, then value. True if the named property is +greater than the value.
              • +
              • gte - An array with a name, then value. True if the named property is +greater than or equal to the value.
              • +
              • lt - An array with a name, then value. True if the named property is +less than the value.
              • +
              • lte - An array with a name, then value. True if the named property is +less than or equal to the value.
              • +
              • ref - An array with a name, then either an entity, or a GUID. True if +the named property is the entity or contains the entity.
              • +
              • qref - An array with a name, then a full query (including options) in an +array. True if the named property is an entity that matches the query or +contains an entity that matches the query.
              • +
              • selector - A selector. (Keep in mind, you can also use an array of these, +just like any other clause.)
              • +
              +

              These clauses can all be negated, by prefixing them with an exclamation +point, such as "!truthy" to mean falsy (or undefined).

              +

              Any clause that accepts an array of name and value can also accept a third +element. If value is null and the third element is a string, the third +element will be used with Locutus' strtotime function to set value to a +relative timestamp. For example, the following selector will look for all +entities that were created in the last day:

              +
              {
              type: '&',
              gte: ['cdate', null, '-1 day']
              } +
              +

              Locutus' implementation: https://locutus.io/php/datetime/strtotime/ +PHP's documentation: https://www.php.net/manual/en/function.strtotime.php

              +

              This example will retrieve the last two entities where:

              +
                +
              • It has 'person' tag.
              • +
              • spouse is defined.
              • +
              • gender is male and lname is Smith.
              • +
              • warnings is not an integer 0.
              • +
              • It has 'level1' and 'level2' tags, or it has 'access1' and 'access2' +tags.
              • +
              • It has either 'employee' or 'manager' tag.
              • +
              • name is either Clark, James, Chris, Christopher, Jake, or Jacob.
              • +
              • If age is 22 or more, then pay is not greater than 8.
              • +
              +
              const entities = Nymph.getEntities(
              { class: Entity, reverse: true, limit: 2 },
              {
              type: '&', // all must be true
              tag: 'person',
              defined: 'spouse',
              equal: [
              ['gender', 'male'],
              ['lname', 'Smith']
              ],
              '!equal': ['warnings', 0]
              },
              {
              type: '|', // at least one of the selectors in this must match
              selector: [
              {
              type: '&',
              tag: ['level1', 'level2']
              },
              {
              type: '&',
              tag: ['access1', 'access2']
              }
              ]
              },
              {
              type: '|', // at least one must be true
              tag: ['employee', 'manager']
              },
              {
              type: '|',
              equal: [
              ['name', 'Clark'],
              ['name', 'James']
              ],
              match: [
              ['name', 'Chris(topher)?'],
              ['name', 'Ja(ke|cob)']
              ]
              },
              {
              type: '!|', // at least one must be false
              gte: ['age', 22],
              gt: ['pay', 8]
              }
              ); +
              +

              Type Parameters

              Parameters

              • options: Options<T> & {
                    return: "count";
                }

                The options.

                +
              • Rest ...selectors: Selector[]

                Unlimited optional selectors to search for. If none are given, all entities are retrieved for the given options.

                +

              Returns Promise<number>

              An array of entities or guids, or a count.

              +

              Todo

              Use an asterisk to specify any variable.

              +
            • Type Parameters

              Parameters

              Returns Promise<string[]>

            • Type Parameters

              Parameters

              Returns Promise<EntityInstanceType<T>[]>

            • Get the class that uses the specified etype.

              +

              Note that it is fine, though unusual, for two classes to use the same +etype. However, this can lead to very hard to diagnose bugs, so is +generally discouraged.

              +

              Parameters

              • etype: string

              Returns EntityConstructor

            • Get the current value of a unique ID.

              +

              Parameters

              • name: string

                The UID's name.

                +

              Returns Promise<null | number>

              The UID's value, or null on failure and if it doesn't exist.

              +
            • Import entities from a file.

              +

              Parameters

              • filename: string

                The file to import from.

                +

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Check if there is any open transaction.

              +

              Returns Promise<boolean>

              True if there is a transaction.

              +
            • Detect whether the database needs to be migrated.

              +

              If true, the database should be exported with an old version of Nymph, then +imported into a fresh database with this version.

              +

              Returns Promise<boolean>

            • Increment or create a unique ID and return the new value.

              +

              Unique IDs, or UIDs are similar to GUIDs, but numeric and sequential.

              +

              A UID can be used to identify an object when the GUID doesn't suffice. On +a system where a new entity is created many times per second, referring +to something by its GUID may be unintuitive. However, the component +designer is responsible for assigning UIDs to the component's entities. +Beware that if a UID is incremented for an entity, and the entity cannot +be saved, there is no safe, and therefore, no recommended way to +decrement the UID back to its previous value.

              +

              If newUID() is passed the name of a UID which does not exist yet, one +will be created with that name, and assigned the value 1. If the UID +already exists, its value will be incremented. The new value will be +returned.

              +

              Parameters

              • name: string

                The UID's name.

                +

              Returns Promise<null | number>

              The UID's new value, or null on failure.

              +
            • Type Parameters

              Parameters

              • event: T
              • callback: T extends "connect"
                    ? NymphConnectCallback
                    : T extends "disconnect"
                        ? NymphDisconnectCallback
                        : T extends "query"
                            ? NymphQueryCallback
                            : T extends "beforeGetEntity"
                                ? NymphBeforeGetEntityCallback
                                : T extends "beforeGetEntities"
                                    ? NymphBeforeGetEntitiesCallback
                                    : T extends "beforeSaveEntity"
                                        ? NymphBeforeSaveEntityCallback
                                        : T extends "afterSaveEntity"
                                            ? NymphAfterSaveEntityCallback
                                            : T extends "failedSaveEntity"
                                                ? NymphFailedSaveEntityCallback
                                                : T extends "beforeDeleteEntity"
                                                    ? NymphBeforeDeleteEntityCallback
                                                    : T extends "afterDeleteEntity"
                                                        ? NymphAfterDeleteEntityCallback
                                                        : (...) extends (...)
                                                            ? (...)
                                                            : (...)

              Returns boolean

            • Type Parameters

              Parameters

              • event: T
              • callback: T extends "connect"
                    ? NymphConnectCallback
                    : T extends "disconnect"
                        ? NymphDisconnectCallback
                        : T extends "query"
                            ? NymphQueryCallback
                            : T extends "beforeGetEntity"
                                ? NymphBeforeGetEntityCallback
                                : T extends "beforeGetEntities"
                                    ? NymphBeforeGetEntitiesCallback
                                    : T extends "beforeSaveEntity"
                                        ? NymphBeforeSaveEntityCallback
                                        : T extends "afterSaveEntity"
                                            ? NymphAfterSaveEntityCallback
                                            : T extends "failedSaveEntity"
                                                ? NymphFailedSaveEntityCallback
                                                : T extends "beforeDeleteEntity"
                                                    ? NymphBeforeDeleteEntityCallback
                                                    : T extends "afterDeleteEntity"
                                                        ? NymphAfterDeleteEntityCallback
                                                        : (...) extends (...)
                                                            ? (...)
                                                            : (...)

              Returns (() => boolean)

                • (): boolean
                • Returns boolean

            • Rename a unique ID.

              +

              Parameters

              • oldName: string

                The old name.

                +
              • newName: string

                The new name.

                +

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Rollback the named transaction.

              +

              After this is called, the transaction instance should be discarded.

              +

              Parameters

              • name: string

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Save an entity to the database.

              +

              If the entity has never been saved (has no GUID), a variable "cdate" +is set on it with the current Unix timestamp.

              +

              The variable "mdate" is set to the current Unix timestamp.

              +

              Parameters

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Set the value of a UID.

              +

              Parameters

              • name: string

                The UID's name.

                +
              • value: number

                The value.

                +

              Returns Promise<boolean>

              True on success, false on failure.

              +
            • Start an atomic transaction and returns a new instance of Nymph.

              +

              All proceeding changes using this new instance will wait to be written to +the database's permanent storage until commit() is called. You can also +undo all the changes since this function ran with rollback().

              +

              Transactions will nest as long as every name is unique. Internally, Nymph +uses names prefixed with "nymph-".

              +

              Parameters

              • name: string

              Returns Promise<Nymph>

              A new instance of Nymph that should be used for the transaction.

              +
            \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.NymphDriver.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.NymphDriver.html new file mode 100644 index 0000000..981a190 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.NymphDriver.html @@ -0,0 +1,77 @@ +NymphDriver | Nymph.js 1.0.0-beta.81

            A Nymph database driver.

            +

            Hierarchy

            • NymphDriver

              Constructors

              Properties

              entityCache: {
                  [k: string]: {
                      cdate: number;
                      data: EntityData;
                      mdate: number;
                      sdata: SerializedEntityData;
                      tags: string[];
                  };
              } = {}

              A cache to make entity retrieval faster.

              +

              Type declaration

              entityCount: {
                  [k: string]: number;
              } = {}

              A counter for the entity cache to determine the most accessed entities.

              +

              Type declaration

              • [k: string]: number
              nymph: Nymph = ...
              putDataCounter: number = 0

              Protect against infinite loops.

              +

              Methods

              • Returns AsyncGenerator<{
                    content: string;
                    type: "entity" | "comment" | "uid";
                }, void, undefined | false>

              • Type Parameters

                Parameters

                • options: Options<T> & {
                      return: "count";
                  }
                • selectors: Selector[]
                • performQueryCallback: ((data) => {
                      result: any;
                  })
                • rowFetchCallback: (() => any)
                    • (): any
                    • Returns any

                • freeResultCallback: (() => void)
                    • (): void
                    • Returns void

                • getCountCallback: ((row) => number)
                    • (row): number
                    • Parameters

                      • row: any

                      Returns number

                • getGUIDCallback: ((row) => string)
                    • (row): string
                    • Parameters

                      • row: any

                      Returns string

                • getTagsAndDatesCallback: ((row) => {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  })
                    • (row): {
                          cdate: number;
                          mdate: number;
                          tags: string[];
                      }
                    • Parameters

                      • row: any

                      Returns {
                          cdate: number;
                          mdate: number;
                          tags: string[];
                      }

                      • cdate: number
                      • mdate: number
                      • tags: string[]
                • getDataNameAndSValueCallback: ((row) => {
                      name: string;
                      svalue: string;
                  })
                    • (row): {
                          name: string;
                          svalue: string;
                      }
                    • Parameters

                      • row: any

                      Returns {
                          name: string;
                          svalue: string;
                      }

                      • name: string
                      • svalue: string

                Returns {
                    process: (() => number | Error);
                    result: any;
                }

                • process: (() => number | Error)
                    • (): number | Error
                    • Returns number | Error

                • result: any
              • Type Parameters

                Parameters

                • options: Options<T> & {
                      return: "guid";
                  }
                • selectors: Selector[]
                • performQueryCallback: ((data) => {
                      result: any;
                  })
                • rowFetchCallback: (() => any)
                    • (): any
                    • Returns any

                • freeResultCallback: (() => void)
                    • (): void
                    • Returns void

                • getCountCallback: ((row) => number)
                    • (row): number
                    • Parameters

                      • row: any

                      Returns number

                • getGUIDCallback: ((row) => string)
                    • (row): string
                    • Parameters

                      • row: any

                      Returns string

                • getTagsAndDatesCallback: ((row) => {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  })
                    • (row): {
                          cdate: number;
                          mdate: number;
                          tags: string[];
                      }
                    • Parameters

                      • row: any

                      Returns {
                          cdate: number;
                          mdate: number;
                          tags: string[];
                      }

                      • cdate: number
                      • mdate: number
                      • tags: string[]
                • getDataNameAndSValueCallback: ((row) => {
                      name: string;
                      svalue: string;
                  })
                    • (row): {
                          name: string;
                          svalue: string;
                      }
                    • Parameters

                      • row: any

                      Returns {
                          name: string;
                          svalue: string;
                      }

                      • name: string
                      • svalue: string

                Returns {
                    process: (() => Error | string[]);
                    result: any;
                }

                • process: (() => Error | string[])
                    • (): Error | string[]
                    • Returns Error | string[]

                • result: any
              • Type Parameters

                Parameters

                • options: Options<T>
                • selectors: Selector[]
                • performQueryCallback: ((data) => {
                      result: any;
                  })
                • rowFetchCallback: (() => any)
                    • (): any
                    • Returns any

                • freeResultCallback: (() => void)
                    • (): void
                    • Returns void

                • getCountCallback: ((row) => number)
                    • (row): number
                    • Parameters

                      • row: any

                      Returns number

                • getGUIDCallback: ((row) => string)
                    • (row): string
                    • Parameters

                      • row: any

                      Returns string

                • getTagsAndDatesCallback: ((row) => {
                      cdate: number;
                      mdate: number;
                      tags: string[];
                  })
                    • (row): {
                          cdate: number;
                          mdate: number;
                          tags: string[];
                      }
                    • Parameters

                      • row: any

                      Returns {
                          cdate: number;
                          mdate: number;
                          tags: string[];
                      }

                      • cdate: number
                      • mdate: number
                      • tags: string[]
                • getDataNameAndSValueCallback: ((row) => {
                      name: string;
                      svalue: string;
                  })
                    • (row): {
                          name: string;
                          svalue: string;
                      }
                    • Parameters

                      • row: any

                      Returns {
                          name: string;
                          svalue: string;
                      }

                      • name: string
                      • svalue: string

                Returns {
                    process: (() => Error | EntityInstanceType<T>[]);
                    result: any;
                }

              • Parameters

                • selectors: FormattedSelector[]
                • callback: ((data) => string)
                    • (data): string
                    • Parameters

                      • data: {
                            key: string;
                            typeIsNot: boolean;
                            typeIsOr: boolean;
                            value: any;
                        }
                        • key: string
                        • typeIsNot: boolean
                        • typeIsOr: boolean
                        • value: any

                      Returns string

                Returns string[]

              • Detect whether the database needs to be migrated.

                +

                If true, the database should be exported with an old version of Nymph, then +imported into a fresh database with this version.

                +

                Returns Promise<boolean>

              • Pull an entity from the cache.

                +

                Type Parameters

                Parameters

                • guid: string

                  The entity's GUID.

                  +
                • className: string

                  The entity's class.

                  +
                • useSkipAc: boolean = false

                  Whether to tell the entity to use skip_ac.

                  +

                Returns null | T

                The entity or null if it's not cached.

                +
              • Push an entity onto the cache.

                +

                Parameters

                • guid: string

                  The entity's GUID.

                  +
                • cdate: number

                  The entity's cdate.

                  +
                • mdate: number

                  The entity's mdate.

                  +
                • tags: string[]

                  The entity's tags.

                  +
                • data: EntityData

                  The entity's data.

                  +
                • sdata: SerializedEntityData

                  The entity's sdata.

                  +

                Returns void

              • Parameters

                • entity: EntityInterface
                • saveNewEntityCallback: ((data) => Promise<boolean>)
                • saveExistingEntityCallback: ((data) => Promise<boolean>)
                • startTransactionCallback: null | (() => Promise<void>) = null
                • commitTransactionCallback: null | ((success) => Promise<boolean>) = null

                Returns Promise<boolean>

              \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.QueryFailedError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.QueryFailedError.html new file mode 100644 index 0000000..6a5dd2b --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.QueryFailedError.html @@ -0,0 +1,15 @@ +QueryFailedError | Nymph.js 1.0.0-beta.81

              Hierarchy

              • Error
                • QueryFailedError

              Constructors

              Properties

              cause?: unknown
              message: string
              name: string
              query?: string
              stack?: string
              prepareStackTrace?: ((err, stackTraces) => any)

              Optional override for formatting stack traces

              +

              Type declaration

                • (err, stackTraces): any
                • Parameters

                  • err: Error
                  • stackTraces: CallSite[]

                  Returns any

              stackTraceLimit: number

              Methods

              • Create .stack property on a target object

                +

                Parameters

                • targetObject: object
                • Optional constructorOpt: Function

                Returns void

              \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.UnableToConnectError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.UnableToConnectError.html new file mode 100644 index 0000000..688cb9a --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_nymph.UnableToConnectError.html @@ -0,0 +1,12 @@ +UnableToConnectError | Nymph.js 1.0.0-beta.81

              Hierarchy

              • Error
                • UnableToConnectError

              Constructors

              Properties

              cause?: unknown
              message: string
              name: string
              stack?: string
              prepareStackTrace?: ((err, stackTraces) => any)

              Optional override for formatting stack traces

              +

              Type declaration

                • (err, stackTraces): any
                • Parameters

                  • err: Error
                  • stackTraces: CallSite[]

                  Returns any

              stackTraceLimit: number

              Methods

              • Create .stack property on a target object

                +

                Parameters

                • targetObject: object
                • Optional constructorOpt: Function

                Returns void

              \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_pubsub.PubSub.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_pubsub.PubSub.html new file mode 100644 index 0000000..2203447 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_pubsub.PubSub.html @@ -0,0 +1,52 @@ +PubSub | Nymph.js 1.0.0-beta.81

              A publish/subscribe server for Nymph.

              +

              Written by Hunter Perrin for SciActive.

              +

              Author

              Hunter Perrin hperrin@gmail.com

              +

              Copyright

              SciActive Inc

              +

              See

              http://nymph.io/

              +

              Constructors

              • Initialize Nymph PubSub.

                +

                Parameters

                • config: Partial<Config>

                  The PubSub configuration.

                  +
                • nymph: Nymph
                • server: server

                Returns PubSub

              Properties

              config: Config

              The PubSub config.

              +
              nymph: Nymph

              The Nymph instance.

              +
              querySubs: {
                  [etype: string]: {
                      [query: string]: Map<connection, QuerySubscriptionData>;
                  };
              } = {}

              Type declaration

              server: server

              The WebSocket server.

              +
              sessions: Map<connection, {
                  authToken: string;
                  switchToken?: string;
              }> = ...

              Type declaration

              • authToken: string
              • Optional switchToken?: string
              uidSubs: {
                  [uidName: string]: Map<connection, {
                      count: boolean;
                  }>;
              } = {}

              Type declaration

              • [uidName: string]: Map<connection, {
                    count: boolean;
                }>
              transactionPublishes: {
                  config: Config;
                  nymph: Nymph;
                  payload: string;
              }[] = []

              Type declaration

              Methods

              • Handle a publish from a client.

                +

                Parameters

                Returns Promise<void>

              • Handle a UID publish from a client.

                +

                Parameters

                Returns Promise<void>

              • Parameters

                • request: request

                Returns void

              • Handle a subscribe or unsubscribe from a client.

                +

                Parameters

                Returns Promise<void>

              • Handle a subscribe or unsubscribe for a query from a client.

                +

                Parameters

                • from: connection
                • data: QuerySubscribeMessageData
                • Optional qrefParent: {
                      etype: string;
                      query: string;
                  }
                  • etype: string
                  • query: string

                Returns Promise<void>

              • Handle a subscribe or unsubscribe for a UID from a client.

                +

                Parameters

                Returns Promise<void>

              • Clean up after users who leave.

                +

                Parameters

                • conn: connection
                • description: string

                Returns void

              • Parameters

                • conn: connection
                • e: Error

                Returns void

              • Handle a message from a client.

                +

                Parameters

                • from: connection
                • msg: Message

                Returns Promise<void>

              • Relay publish data to other servers.

                +

                Parameters

                • message: Message

                Returns void

              • This translates qref selectors into ref selectors using the "current" GUID +list in the existing subscriptions.

                +

                Parameters

                Returns Selector[]

              • Parameters

                Returns void

              • Parameters

                Returns Promise<void>

              • Parameters

                Returns void

              \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_server.ForbiddenClassError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_server.ForbiddenClassError.html new file mode 100644 index 0000000..c06d19c --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_server.ForbiddenClassError.html @@ -0,0 +1,12 @@ +ForbiddenClassError | Nymph.js 1.0.0-beta.81

              Hierarchy

              • Error
                • ForbiddenClassError

              Constructors

              Properties

              cause?: unknown
              message: string
              name: string
              stack?: string
              prepareStackTrace?: ((err, stackTraces) => any)

              Optional override for formatting stack traces

              +

              Type declaration

                • (err, stackTraces): any
                • Parameters

                  • err: Error
                  • stackTraces: CallSite[]

                  Returns any

              stackTraceLimit: number

              Methods

              • Create .stack property on a target object

                +

                Parameters

                • targetObject: object
                • Optional constructorOpt: Function

                Returns void

              \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_server.HttpError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_server.HttpError.html new file mode 100644 index 0000000..a7b428b --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_server.HttpError.html @@ -0,0 +1,14 @@ +HttpError | Nymph.js 1.0.0-beta.81

              Hierarchy

              • Error
                • HttpError

                Constructors

                Properties

                cause?: unknown
                message: string
                name: string
                stack?: string
                status?: number
                statusText?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_sorter.Sorter.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_sorter.Sorter.html new file mode 100644 index 0000000..57634db --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_sorter.Sorter.html @@ -0,0 +1,26 @@ +Sorter | Nymph.js 1.0.0-beta.81

                Entity Array Sorter

                +

                Sorting functions sort the array in place and also return the sorted array.

                +

                Type Parameters

                • Entity extends Object

                Constructors

                Properties

                array: (Entity & {
                    [k: string]: any;
                })[]
                collator: Collator = ...
                comparator: undefined | ((a, b) => number) = undefined

                Type declaration

                  • (a, b): number
                  • Parameters

                    • a: any
                    • b: any

                    Returns number

                sortParent: null | string = null
                sortProperty: null | string = null

                Methods

                • Parameters

                  • a: Entity & {
                        [k: string]: any;
                    }
                  • b: Entity & {
                        [k: string]: any;
                    }

                  Returns number

                • Sort an array of entities hierarchically by a specified property's value.

                  +

                  Entities will be placed immediately after their parents. The +parentProperty property, if present, should hold either null, undefined, +or the entity's parent.

                  +

                  Parameters

                  • property: string

                    The name of the property to sort entities by.

                    +
                  • parentProperty: string

                    The name of the property which holds the parent of the entity.

                    +
                  • __namedParameters: SortOptions = {}

                  Returns Entity[]

                • Sort an array of entities by parent and a specified property's value.

                  +

                  Entities' will be sorted by their parents' properties, then the entities' +properties.

                  +

                  Parameters

                  • property: string

                    The name of the property to sort entities by.

                    +
                  • parentProperty: string

                    The name of the property which holds the parent of the entity.

                    +
                  • __namedParameters: SortOptions = {}

                  Returns Entity[]

                • Sort an array of entities by a specified property's value.

                  +

                  Parameters

                  • property: string

                    The name of the property to sort entities by.

                    +
                  • __namedParameters: SortOptions = {}

                  Returns Entity[]

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.AbleObject.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.AbleObject.html new file mode 100644 index 0000000..755497f --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.AbleObject.html @@ -0,0 +1,261 @@ +AbleObject | Nymph.js 1.0.0-beta.81

                AbleObject abstract class.

                +

                Used in entities which support abilities, such as users and groups.

                +

                Type Parameters

                • T extends {
                      abilities?: string[];
                  }

                Hierarchy (view full)

                Constructors

                • Initialize an entity.

                  +

                  Type Parameters

                  • T extends {
                        abilities?: string[];
                    }

                  Parameters

                  • Rest ..._rest: any[]

                  Returns AbleObject<T>

                Properties

                $allowlistData?: string[]

                If this is defined, then it lists the only properties that will be +accepted from incoming JSON. Any other properties will be ignored.

                +

                If you use an allowlist, you don't need to use protectedData, since you +can simply leave those entries out of allowlistData.

                +
                $allowlistTags?: string[]

                If this is defined, then it lists the only tags that will be accepted from +incoming JSON. Any other tags will be ignored.

                +
                $clientEnabledMethods: string[]

                The names of methods allowed to be called by the frontend with serverCall.

                +
                $data: T

                The data proxy object.

                +
                $dataHandler: Object

                The data proxy handler.

                +
                $dataStore: T

                The actual data store.

                +
                $isASleepingReference: boolean

                Whether this instance is a sleeping reference.

                +
                $nymph: Nymph

                The instance of Nymph to use for queries.

                +
                $privateData: string[]

                Properties that will not be serialized into JSON with toJSON(). This +can be considered a denylist, because these properties will not be set +with incoming JSON.

                +

                Clients CAN still determine what is in these properties, unless they are +also listed in searchRestrictedData.

                +
                $protectedData: string[]

                Properties that can only be modified by server side code. They will still +be visible on the frontend, unlike $privateData, but any changes to them +that come from the frontend will be ignored.

                +

                In addition to what's listed here, all of the access control properties +will be included when Tilmeld is being used. These are:

                +
                  +
                • acUser
                • +
                • acGroup
                • +
                • acOther
                • +
                • acRead
                • +
                • acWrite
                • +
                • acFull
                • +
                • user
                • +
                • group
                • +
                +

                You should modify these through client enabled methods or the $save method +instead, for safety.

                +
                $protectedTags: string[]

                Tags that can only be added/removed by server side code. They will still be +visible on the frontend, but any changes to them that come from the +frontend will be ignored.

                +

                The actual sdata store.

                +
                $sleepingReference: null | EntityReference

                The reference to use to wake.

                +
                $wakePromise: null | Promise<Entity<T>>

                A promise that resolved when the entity's data is wake.

                +
                cdate: null | number

                The creation date of the entity as a Unix timestamp in milliseconds.

                +
                guid: null | string

                The entity's Globally Unique ID.

                +

                This is a 12 byte number represented as a lower case HEX string (24 +characters).

                +
                mdate: null | number

                The modified date of the entity as a Unix timestamp in milliseconds.

                +
                tags: string[]

                Array of the entity's tags.

                +
                ETYPE: string

                A unique name for this type of entity used to separate its data from other +types of entities in the database.

                +
                class: string

                The lookup name for this entity.

                +

                This is used for reference arrays (and sleeping references) and client +requests.

                +
                clientEnabledStaticMethods: string[]

                The names of static methods allowed to be called by the frontend with +serverCallStatic.

                +
                nymph: Nymph

                The instance of Nymph to use for queries.

                +
                pubSubEnabled: boolean

                Whether this entity should publish changes to PubSub servers.

                +
                restEnabled: boolean

                Whether this entity should be accessible on the frontend through the REST +server.

                +

                If this is false, any request from the client that attempts to use this +entity will fail.

                +
                searchRestrictedData: string[]

                Properties that will not be searchable from the frontend. If the frontend +includes any of these properties in any of their clauses, they will be +filtered out before the search is executed.

                +

                Methods

                • Add one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Check if this is a sleeping reference.

                  +

                  Returns boolean

                • Check if this is a sleeping reference and throw an error if so.

                  +

                  Returns void

                • Replace any referenced entities in the data with sleeping references.

                  +

                  Calling this function ensures that the next time a referenced entity is +accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                  +

                  Returns void

                • Delete the object from storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Perform a more strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Returns null | (null | string)[]

                • Returns any

                • Returns null | (null | string)[]

                • Returns any

                • Returns null | (null | string)[]

                • Get the client enabled methods.

                  +

                  Returns string[]

                  The names of methods allowed to be called by the frontend with serverCall.

                  +
                • Used to retrieve the data object.

                  +

                  This should only be used by Nymph to save the data into storage.

                  +

                  Parameters

                  • Optional includeSData: boolean

                    Whether to include the serialized data as well.

                    +

                  Returns any

                  The entity's data object.

                  +
                • Used to retrieve the serialized data object.

                  +

                  This should only be used by Nymph to save the data object into storage.

                  +

                  This method is used by Nymph to avoid unserializing data that hasn't been +requested yet.

                  +

                  It should always be called after getData().

                  +

                  Returns SerializedEntityData

                  The entity's serialized data object.

                  +
                • Get the entity's tags.

                  +

                  Using this instead of accessing the tags prop directly will wake sleeping +references.

                  +

                  Returns string[]

                  The entity's tags.

                  +
                • Get an array of strings that must be unique across the current etype.

                  +

                  When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

                  +

                  The default implementation of this method returns an empty array, meaning +there are no uniqueness constraints applied to its etype.

                  +

                  Returns Promise<string[]>

                  Resolves to an array of entity's unique constraint strings.

                  +
                • Get an object that holds the same data as the entity.

                  +

                  This provides an object that can be validated.

                  +

                  Returns any

                  A pure object representation of the entity.

                  +
                • Check that the entity has all of the given tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Perform a less strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Accept JSON data from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • input: EntityJson

                    The input data. Please note, this will be modified (destroyed).

                    +
                  • Optional allowConflict: boolean

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Accept JSON patch from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • patch: EntityPatch

                    The patch data. Please note, this will be modified (destroyed).

                    +
                  • Optional allowConflict: boolean

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Used to set the data.

                  +

                  This should only be used by Nymph to push the data from storage.

                  +

                  sdata is used by Nymph to avoid unserializing data that hasn't been +requested yet.

                  +

                  Parameters

                  Returns void

                • Set up a sleeping reference.

                  +

                  Parameters

                  Returns void

                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                • Remove one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Save the object to storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Return a Nymph Entity Reference for this entity.

                  +

                  If the entity hasn't been saved yet (and has no GUID), it will be +returned instead.

                  +

                  Returns AbleObject<T> | EntityReference

                  A Nymph Entity Reference array as an unsaved entity.

                  +
                • Set whether to use "skipAc" when accessing entity references.

                  +

                  Parameters

                  • skipAc: boolean

                    True or false, whether to use it.

                    +

                  Returns void

                • Wake from a sleeping reference.

                  +

                  Returns Promise<Entity<T>>

                • Parameters

                  • Optional level: number

                  Returns Promise<Entity<T>>

                • Alter the options for a query for this entity.

                  +

                  Type Parameters

                  Parameters

                  • options: T

                    The current options.

                    +

                  Returns T

                  The altered options.

                  +
                • Create or retrieve a new entity instance.

                  +

                  Note that this will always return an entity, even if the GUID is not found.

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • Optional guid: string

                    An optional GUID to retrieve.

                    +

                  Returns Promise<E & EntityDataType<E>>

                • Create a new sleeping reference instance.

                  +

                  Sleeping references won't retrieve their data from the database until they +are readied with $wake() or a parent's $wakeAll().

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • reference: EntityReference

                    The Nymph Entity Reference to use to wake.

                    +

                  Returns E & EntityDataType<E>

                  The new instance.

                  +
                • Get an array of strings that must be unique across the current etype.

                  +

                  When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

                  +

                  The default implementation of this static method instantiates the entity, +assigns all of the given data, then calls $getUniques and returns its +output. This can have a performance impact if a lot of extra processing +happens during any of these steps. You can override this method to +calculate the unique strings faster, but you must return the same strings +that would be returned by $getUniques.

                  +

                  Parameters

                  • __namedParameters: {
                        cdate?: number;
                        data: EntityData;
                        guid?: string;
                        mdate?: number;
                        sdata?: SerializedEntityData;
                        tags: string[];
                    }

                  Returns Promise<string[]>

                  Resolves to an array of entity's unique constraint strings.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.AccessControlError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.AccessControlError.html new file mode 100644 index 0000000..991d7b0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.AccessControlError.html @@ -0,0 +1,14 @@ +AccessControlError | Nymph.js 1.0.0-beta.81

                Hierarchy (view full)

                Constructors

                Properties

                cause?: unknown
                message: string
                name: string
                stack?: string
                status?: number
                statusText?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadDataError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadDataError.html new file mode 100644 index 0000000..cabd55c --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadDataError.html @@ -0,0 +1,14 @@ +BadDataError | Nymph.js 1.0.0-beta.81

                Hierarchy (view full)

                Constructors

                Properties

                cause?: unknown
                message: string
                name: string
                stack?: string
                status?: number
                statusText?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadEmailError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadEmailError.html new file mode 100644 index 0000000..467474c --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadEmailError.html @@ -0,0 +1,14 @@ +BadEmailError | Nymph.js 1.0.0-beta.81

                Hierarchy (view full)

                Constructors

                Properties

                cause?: unknown
                message: string
                name: string
                stack?: string
                status?: number
                statusText?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadUsernameError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadUsernameError.html new file mode 100644 index 0000000..8de7a9f --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.BadUsernameError.html @@ -0,0 +1,14 @@ +BadUsernameError | Nymph.js 1.0.0-beta.81

                Hierarchy (view full)

                Constructors

                Properties

                cause?: unknown
                message: string
                name: string
                stack?: string
                status?: number
                statusText?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.CouldNotChangeDefaultPrimaryGroupError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.CouldNotChangeDefaultPrimaryGroupError.html new file mode 100644 index 0000000..e192b6e --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.CouldNotChangeDefaultPrimaryGroupError.html @@ -0,0 +1,12 @@ +CouldNotChangeDefaultPrimaryGroupError | Nymph.js 1.0.0-beta.81

                Hierarchy

                • Error
                  • CouldNotChangeDefaultPrimaryGroupError

                Constructors

                Properties

                cause?: unknown
                message: string
                name: string
                stack?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.EmailChangeRateLimitExceededError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.EmailChangeRateLimitExceededError.html new file mode 100644 index 0000000..097f28d --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.EmailChangeRateLimitExceededError.html @@ -0,0 +1,12 @@ +EmailChangeRateLimitExceededError | Nymph.js 1.0.0-beta.81

                Hierarchy

                • Error
                  • EmailChangeRateLimitExceededError

                Constructors

                Properties

                cause?: unknown
                message: string
                name: string
                stack?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.Group.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.Group.html new file mode 100644 index 0000000..31a3170 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.Group.html @@ -0,0 +1,319 @@ +Group | Nymph.js 1.0.0-beta.81

                A user group data model.

                +

                Written by Hunter Perrin for SciActive.

                +

                Author

                Hunter Perrin hperrin@gmail.com

                +

                Copyright

                SciActive Inc

                +

                See

                http://nymph.io/

                +

                Hierarchy (view full)

                Constructors

                Properties

                $allowlistData?: string[] = ...

                If this is defined, then it lists the only properties that will be +accepted from incoming JSON. Any other properties will be ignored.

                +

                If you use an allowlist, you don't need to use protectedData, since you +can simply leave those entries out of allowlistData.

                +
                $allowlistTags?: string[] = []

                If this is defined, then it lists the only tags that will be accepted from +incoming JSON. Any other tags will be ignored.

                +
                $clientEnabledMethods: string[] = ...

                The names of methods allowed to be called by the frontend with serverCall.

                +
                $data: GroupData

                The data proxy object.

                +
                $dataHandler: Object

                The data proxy handler.

                +
                $dataStore: GroupData

                The actual data store.

                +
                $isASleepingReference: boolean

                Whether this instance is a sleeping reference.

                +
                $nymph: Nymph

                The instance of Nymph to use for queries.

                +
                $privateData: string[] = ...

                Properties that will not be serialized into JSON with toJSON(). This +can be considered a denylist, because these properties will not be set +with incoming JSON.

                +

                Clients CAN still determine what is in these properties, unless they are +also listed in searchRestrictedData.

                +
                $protectedData: string[]

                Properties that can only be modified by server side code. They will still +be visible on the frontend, unlike $privateData, but any changes to them +that come from the frontend will be ignored.

                +

                In addition to what's listed here, all of the access control properties +will be included when Tilmeld is being used. These are:

                +
                  +
                • acUser
                • +
                • acGroup
                • +
                • acOther
                • +
                • acRead
                • +
                • acWrite
                • +
                • acFull
                • +
                • user
                • +
                • group
                • +
                +

                You should modify these through client enabled methods or the $save method +instead, for safety.

                +
                $protectedTags: string[]

                Tags that can only be added/removed by server side code. They will still be +visible on the frontend, but any changes to them that come from the +frontend will be ignored.

                +

                The actual sdata store.

                +
                $skipAcWhenDeleting: boolean = false

                This should only be used by the backend.

                +
                $skipAcWhenSaving: boolean = false

                This should only be used by the backend.

                +
                $sleepingReference: null | EntityReference

                The reference to use to wake.

                +
                $tags: never[] = []
                $wakePromise: null | Promise<Entity<GroupData>>

                A promise that resolved when the entity's data is wake.

                +
                cdate: null | number

                The creation date of the entity as a Unix timestamp in milliseconds.

                +
                guid: null | string

                The entity's Globally Unique ID.

                +

                This is a 12 byte number represented as a lower case HEX string (24 +characters).

                +
                mdate: null | number

                The modified date of the entity as a Unix timestamp in milliseconds.

                +
                tags: string[]

                Array of the entity's tags.

                +
                DEFAULT_ALLOWLIST_DATA: string[] = []
                DEFAULT_PRIVATE_DATA: string[] = ...
                ETYPE: string = 'tilmeld_group'

                The instance of Tilmeld to use for queries.

                +
                class: string = 'Group'

                The lookup name for this entity.

                +

                This is used for reference arrays (and sleeping references) and client +requests.

                +
                clientEnabledStaticMethods: string[] = ...

                The names of static methods allowed to be called by the frontend with +serverCallStatic.

                +
                nymph: Nymph

                The instance of Nymph to use for queries.

                +
                pubSubEnabled: boolean

                Whether this entity should publish changes to PubSub servers.

                +
                restEnabled: boolean

                Whether this entity should be accessible on the frontend through the REST +server.

                +

                If this is false, any request from the client that attempts to use this +entity will fail.

                +
                searchRestrictedData: string[] = ...

                Properties that will not be searchable from the frontend. If the frontend +includes any of these properties in any of their clauses, they will be +filtered out before the search is executed.

                +

                Methods

                • Add one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Check if this is a sleeping reference.

                  +

                  Returns boolean

                • Check if this is a sleeping reference and throw an error if so.

                  +

                  Returns void

                • Check that an email is unique.

                  +

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Check that a groupname is valid.

                  +

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Replace any referenced entities in the data with sleeping references.

                  +

                  Calling this function ensures that the next time a referenced entity is +accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                  +

                  Returns void

                • Perform a more strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Returns null | (null | string)[]

                • Returns any

                • Returns null | (null | string)[]

                • Returns any

                • Returns null | (null | string)[]

                • Get the client enabled methods.

                  +

                  Returns string[]

                  The names of methods allowed to be called by the frontend with serverCall.

                  +
                • Used to retrieve the data object.

                  +

                  This should only be used by Nymph to save the data into storage.

                  +

                  Parameters

                  • Optional includeSData: boolean

                    Whether to include the serialized data as well.

                    +

                  Returns any

                  The entity's data object.

                  +
                • Get the number of parents the group has.

                  +

                  If the group is a top level group, this will return 0. If it is a child of +a top level group, this will return 1. If it is a grandchild of a top level +group, this will return 2, and so on.

                  +

                  Levels will max out at 1024 to avoid recursive loops.

                  +

                  Returns Promise<number>

                  The level of the group.

                  +
                • Used to retrieve the serialized data object.

                  +

                  This should only be used by Nymph to save the data object into storage.

                  +

                  This method is used by Nymph to avoid unserializing data that hasn't been +requested yet.

                  +

                  It should always be called after getData().

                  +

                  Returns SerializedEntityData

                  The entity's serialized data object.

                  +
                • Get the entity's tags.

                  +

                  Using this instead of accessing the tags prop directly will wake sleeping +references.

                  +

                  Returns string[]

                  The entity's tags.

                  +
                • Get an array of strings that must be unique across the current etype.

                  +

                  When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

                  +

                  The default implementation of this method returns an empty array, meaning +there are no uniqueness constraints applied to its etype.

                  +

                  Returns Promise<string[]>

                  Resolves to an array of entity's unique constraint strings.

                  +
                • Gets an array of users in the group.

                  +

                  Parameters

                  • descendants: boolean = false

                    Include users in all descendant groups too.

                    +
                  • Optional limit: number

                    The limit for the query.

                    +
                  • Optional offset: number

                    The offset for the query.

                    +

                  Returns Promise<(User & UserData)[]>

                  An array of users.

                  +
                • Get an object that holds the same data as the entity.

                  +

                  This provides an object that can be validated.

                  +

                  Returns any

                  A pure object representation of the entity.

                  +
                • Check that the entity has all of the given tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Perform a less strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Accept JSON data from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • input: EntityJson

                    The input data. Please note, this will be modified (destroyed).

                    +
                  • allowConflict: boolean = false

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Accept JSON patch from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • patch: EntityPatch

                    The patch data. Please note, this will be modified (destroyed).

                    +
                  • allowConflict: boolean = false

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                • Remove one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Return a Nymph Entity Reference for this entity.

                  +

                  If the entity hasn't been saved yet (and has no GUID), it will be +returned instead.

                  +

                  Returns Group | EntityReference

                  A Nymph Entity Reference array as an unsaved entity.

                  +
                • Update the data protection arrays for a user.

                  +

                  Parameters

                  • Optional givenUser: User & UserData

                    User to update protection for. If undefined, will use the currently logged in user.

                    +

                  Returns void

                • Set whether to use "skipAc" when accessing entity references.

                  +

                  Parameters

                  • skipAc: boolean

                    True or false, whether to use it.

                    +

                  Returns void

                • Alter the options for a query for this entity.

                  +

                  Type Parameters

                  Parameters

                  • options: T

                    The current options.

                    +

                  Returns T

                  The altered options.

                  +
                • Create or retrieve a new entity instance.

                  +

                  Note that this will always return an entity, even if the GUID is not found.

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • Optional guid: string

                    An optional GUID to retrieve.

                    +

                  Returns Promise<E & EntityDataType<E>>

                • Create a new sleeping reference instance.

                  +

                  Sleeping references won't retrieve their data from the database until they +are readied with $wake() or a parent's $wakeAll().

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • reference: EntityReference

                    The Nymph Entity Reference to use to wake.

                    +

                  Returns E & EntityDataType<E>

                  The new instance.

                  +
                • Get all the groups that can be assigned as primary groups.

                  +

                  Parameters

                  • Optional options: Options

                    The options for an optional search query.

                    +
                  • Optional selectors: Selector[]

                    The selectors for an optional search query.

                    +

                  Returns Promise<(Group & GroupData)[]>

                  An array of the assignable primary groups.

                  +
                • Get all the groups that can be assigned as secondary groups.

                  +

                  Parameters

                  • Optional options: Options

                    The options for an optional search query.

                    +
                  • Optional selectors: Selector[]

                    The selectors for an optional search query.

                    +

                  Returns Promise<(Group & GroupData)[]>

                  An array of the assignable secondary groups.

                  +
                • Get an array of strings that must be unique across the current etype.

                  +

                  When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

                  +

                  The default implementation of this static method instantiates the entity, +assigns all of the given data, then calls $getUniques and returns its +output. This can have a performance impact if a lot of extra processing +happens during any of these steps. You can override this method to +calculate the unique strings faster, but you must return the same strings +that would be returned by $getUniques.

                  +

                  Parameters

                  • __namedParameters: {
                        cdate?: number;
                        data: EntityData;
                        guid?: string;
                        mdate?: number;
                        sdata?: SerializedEntityData;
                        tags: string[];
                    }

                  Returns Promise<string[]>

                  Resolves to an array of entity's unique constraint strings.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.Tilmeld.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.Tilmeld.html new file mode 100644 index 0000000..fd2a8d8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.Tilmeld.html @@ -0,0 +1,171 @@ +Tilmeld | Nymph.js 1.0.0-beta.81

                A user and group system for Nymph.js.

                +

                Written by Hunter Perrin for SciActive.

                +

                Author

                Hunter Perrin hperrin@gmail.com

                +

                Copyright

                SciActive Inc

                +

                See

                http://nymph.io/

                +

                Implements

                Constructors

                Properties

                Group: typeof Group = Group

                The group class for this instance of Tilmeld.

                +
                User: typeof User = User

                The user class for this instance of Tilmeld.

                +
                alreadyLoggedOutSwitch: boolean = false

                Used to avoid infinite loop.

                +
                config: Config

                The Tilmeld config.

                +
                currentUser: null | User & UserData = null

                The currently logged in user.

                +
                gatekeeperCache: null | {
                    [k: string]: true;
                } = null

                Gatekeeper ability cache.

                +

                Gatekeeper will cache the user's abilities that it calculates, so it can +check faster if that user has been checked before.

                +

                Type declaration

                • [k: string]: true
                nymph: Nymph = ...

                The Nymph instance.

                +
                request: null | Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>> = null

                If you will be performing authentication functions (logging in/out), you +should set these so Tilmeld can read and write cookies and headers.

                +

                If you want the user to be authenticated with the cookie and/or header they +provide, you should set at least the request. It's better to set both, so +the JWT can be updated if needed.

                +

                After you set these, call authenticate() to read user authentication data +from them and fill the user's session.

                +

                If you want to support cookie based authentication (which still requires an +XSRF token for security), you should enable the cookie parser middleware.

                +
                response: null | Response<any, Record<string, any>> = null

                Methods

                • Check for TILMELDAUTH and TILMELDSWITCH tokens, and, if set, authenticate +from it/them.

                  +

                  You can also call this function after setting response.locals.user to the +user you want to authenticate. You should check for user.enabled before +setting this variable, unless you explicitly want to log in as a disabled +user. (The user must be an instance of the User class for this Tilmeld +instance.)

                  +

                  This function will set response.locals.user to the logged in user on +successful authentication.

                  +

                  Parameters

                  • skipXsrfToken: boolean = false

                    Skip the XSRF token check.

                    +
                  • skipRenew: boolean = false

                    Skip the token renewal step, even if the token is close to expiration.

                    +

                  Returns Promise<boolean>

                  True if a user was authenticated, false on any failure.

                  +
                • Check a UID's permissions for a user.

                  +

                  THIS ONLY CHECKS AUTOMATICALLY FOR CLIENT REQUESTS.

                  UID functions on the Node.js side are not checked automatically. This +function is only run automatically for UID functions run from the client. +You should call this function manually if you're running a UID function on +the Node.js side and you want it gated.

                  +

                  This will check the Tilmeld config and the user's abilities.

                  +
                    +
                  • READ_ACCESS, the UID is listed in clientReadableUIDs or the user has the +"uid/get/nameofuid" ability.
                  • +
                  • WRITE_ACCESS, the UID is listed in clientEnabledUIDs or the user has the +"uid/new/nameofuid" ability.
                  • +
                  • FULL_ACCESS, the UID is listed in clientSetabledUIDs or the user has the +"uid/set/nameofuid" ability.
                  • +
                  +

                  Parameters

                  • name: string

                    The UID to check.

                    +
                  • type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS

                    The lowest level of permission to consider a pass.

                    +
                  • Optional user: false | User & UserData

                    The user to check permissions for. If null, uses the current user. If false, checks for public access.

                    +

                  Returns Promise<boolean>

                  Whether the current user has at least type permission for the UID.

                  +
                • Check an entity's permissions for a user.

                  +

                  This will check the AC (Access Control) properties of the entity. These +include the following properties:

                  +
                    +
                  • acUser
                  • +
                  • acGroup
                  • +
                  • acOther
                  • +
                  • acRead
                  • +
                  • acWrite
                  • +
                  • acFull
                  • +
                  +

                  "acUser" refers to the entity's owner, "acGroup" refers to all users in the +entity's group and all ancestor groups, and "acOther" refers to any user +who doesn't fit these descriptions.

                  +

                  Each of these properties should be either NO_ACCESS, READ_ACCESS, +WRITE_ACCESS, or FULL_ACCESS.

                  +
                    +
                  • NO_ACCESS - the user has no access to the entity.
                  • +
                  • READ_ACCESS, the user has read access to the entity.
                  • +
                  • WRITE_ACCESS, the user has read and write access to the entity, but can't +delete it, change its access controls, or change its ownership.
                  • +
                  • FULL_ACCESS, the user has read, write, and delete access to the entity, +as well as being able to manage its access controls and ownership.
                  • +
                  +

                  These properties default to:

                  +
                    +
                  • acUser = TilmeldAccessLevels.FULL_ACCESS
                  • +
                  • acGroup = TilmeldAccessLevels.READ_ACCESS
                  • +
                  • acOther = TilmeldAccessLevels.NO_ACCESS
                  • +
                  +

                  "acRead", "acWrite", and "acFull" are arrays of users and/or groups that +also have those permissions.

                  +

                  Only users with FULL_ACCESS have the ability to change any of the ac*, +user, and group properties.

                  +

                  The following conditions will result in different checks, which determine +whether the check passes:

                  +
                    +
                  • It is a user or group. (True for READ_ACCESS or Tilmeld admins.)
                  • +
                  • No user is logged in. (Check other AC.)
                  • +
                  • The entity is the user. (Always true.)
                  • +
                  • It is the user's primary group. (True for READ_ACCESS.)
                  • +
                  • The user or its groups are listed in "acRead". (True for READ_ACCESS.)
                  • +
                  • The user or its groups are listed in "acWrite". (True for READ_ACCESS and +WRITE_ACCESS.)
                  • +
                  • The user or its groups are listed in "acFull". (Always true.)
                  • +
                  • Its "user" is the user. (It is owned by the user.) (Check user AC.)
                  • +
                  • Its "group" is the user's primary group. (Check group AC.)
                  • +
                  • Its "group" is one of the user's secondary groups. (Check group AC.)
                  • +
                  • Its "group" is a descendant of one of the user's groups. (Check group +AC.)
                  • +
                  • None of the above. (Check other AC.)
                  • +
                  +

                  Parameters

                  • entity: EntityInterface

                    The entity to check.

                    +
                  • type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS

                    The lowest level of permission to consider a pass.

                    +
                  • Optional user: false | User & UserData

                    The user to check permissions for. If null, uses the current user. If false, checks for public access.

                    +
                  • Optional acProperties: ACProperties

                    The acProperties to use instead of getting them from the entity.

                    +

                  Returns boolean

                  Whether the current user has at least type permission for the entity.

                  +
                • Check to see if the current user has an ability.

                  +

                  If ability is undefined, it will check to see if a user is currently +logged in.

                  +

                  Parameters

                  • Optional ability: string

                    The ability.

                    +

                  Returns boolean

                  Whether the user has the given ability.

                  +
                • Logs the given user into the system.

                  +

                  Parameters

                  • user: User & UserData

                    The user.

                    +
                  • sendAuthHeader: boolean

                    Send the auth token as a custom header.

                    +
                  • sendCookie: boolean = true

                    Send the auth token as a cookie.

                    +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Adds a switch auth token for the given user.

                  +

                  This effectively logs the current user in to the system as the given user.

                  +

                  Parameters

                  • user: User & UserData

                    The user.

                    +
                  • sendAuthHeader: boolean

                    Send the auth token as a custom header.

                    +
                  • sendCookie: boolean = true

                    Send the auth token as a cookie.

                    +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Logs the current user out of the system.

                  +

                  Parameters

                  • clearCookie: boolean = true

                    Clear the auth cookie. (Also send a header.)

                    +

                  Returns Promise<void>

                • Clears the switch user out of the system.

                  +

                  Parameters

                  • clearCookie: boolean = true

                    Clear the auth cookie. (Also send a header.)

                    +

                  Returns Promise<void>

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.User.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.User.html new file mode 100644 index 0000000..b53e39c --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld.User.html @@ -0,0 +1,394 @@ +User | Nymph.js 1.0.0-beta.81

                A user data model.

                +

                Written by Hunter Perrin for SciActive.

                +

                Author

                Hunter Perrin hperrin@gmail.com

                +

                Copyright

                SciActive Inc

                +

                See

                http://nymph.io/

                +

                Hierarchy (view full)

                Constructors

                Properties

                Methods

                Constructors

                Properties

                $allowlistData?: string[] = ...

                If this is defined, then it lists the only properties that will be +accepted from incoming JSON. Any other properties will be ignored.

                +

                If you use an allowlist, you don't need to use protectedData, since you +can simply leave those entries out of allowlistData.

                +
                $allowlistTags?: string[] = []

                If this is defined, then it lists the only tags that will be accepted from +incoming JSON. Any other tags will be ignored.

                +
                $clientEnabledMethods: string[] = ...

                The names of methods allowed to be called by the frontend with serverCall.

                +
                $data: UserData

                The data proxy object.

                +
                $dataHandler: Object

                The data proxy handler.

                +
                $dataStore: UserData

                The actual data store.

                +
                $descendantGroups?: (Group & GroupData)[]

                The user's group descendants.

                +
                $gatekeeperCache?: {
                    [k: string]: true;
                }

                Gatekeeper ability cache.

                +

                Gatekeeper will cache the user's abilities that it calculates, so it can +check faster if that user has been checked before.

                +

                Type declaration

                • [k: string]: true
                $isASleepingReference: boolean

                Whether this instance is a sleeping reference.

                +
                $nymph: Nymph

                The instance of Nymph to use for queries.

                +
                $originalEmail?: string

                Used to save the current email address to send verification if it changes +from the frontend.

                +

                If you are changing a user's email address and want to bypass email +verification, don't set this.

                +
                $privateData: string[] = ...

                Properties that will not be serialized into JSON with toJSON(). This +can be considered a denylist, because these properties will not be set +with incoming JSON.

                +

                Clients CAN still determine what is in these properties, unless they are +also listed in searchRestrictedData.

                +
                $protectedData: string[]

                Properties that can only be modified by server side code. They will still +be visible on the frontend, unlike $privateData, but any changes to them +that come from the frontend will be ignored.

                +

                In addition to what's listed here, all of the access control properties +will be included when Tilmeld is being used. These are:

                +
                  +
                • acUser
                • +
                • acGroup
                • +
                • acOther
                • +
                • acRead
                • +
                • acWrite
                • +
                • acFull
                • +
                • user
                • +
                • group
                • +
                +

                You should modify these through client enabled methods or the $save method +instead, for safety.

                +
                $protectedTags: string[]

                Tags that can only be added/removed by server side code. They will still be +visible on the frontend, but any changes to them that come from the +frontend will be ignored.

                +

                The actual sdata store.

                +
                $skipAcWhenDeleting: boolean = false

                This should only be used by the backend.

                +
                $skipAcWhenSaving: boolean = false

                This should only be used by the backend.

                +
                $sleepingReference: null | EntityReference

                The reference to use to wake.

                +
                $wakePromise: null | Promise<Entity<UserData>>

                A promise that resolved when the entity's data is wake.

                +
                cdate: null | number

                The creation date of the entity as a Unix timestamp in milliseconds.

                +
                guid: null | string

                The entity's Globally Unique ID.

                +

                This is a 12 byte number represented as a lower case HEX string (24 +characters).

                +
                mdate: null | number

                The modified date of the entity as a Unix timestamp in milliseconds.

                +
                tags: string[]

                Array of the entity's tags.

                +
                DEFAULT_ALLOWLIST_DATA: string[] = []
                DEFAULT_CLIENT_ENABLED_METHODS: string[] = ...
                DEFAULT_PRIVATE_DATA: string[] = ...
                ETYPE: string = 'tilmeld_user'

                The instance of Tilmeld to use for queries.

                +
                afterLoginCallbacks: TilmeldAfterLoginCallback[] = []
                afterLogoutCallbacks: TilmeldAfterLogoutCallback[] = []
                afterRegisterCallbacks: TilmeldAfterRegisterCallback[] = []
                beforeLoginCallbacks: TilmeldBeforeLoginCallback[] = []
                beforeLogoutCallbacks: TilmeldBeforeLogoutCallback[] = []
                beforeRegisterCallbacks: TilmeldBeforeRegisterCallback[] = []
                checkUsernameCallbacks: TilmeldCheckUsernameCallback[] = []
                class: string = 'User'

                The lookup name for this entity.

                +

                This is used for reference arrays (and sleeping references) and client +requests.

                +
                clientEnabledStaticMethods: string[] = ...

                The names of static methods allowed to be called by the frontend with +serverCallStatic.

                +
                nymph: Nymph

                The instance of Nymph to use for queries.

                +
                pubSubEnabled: boolean

                Whether this entity should publish changes to PubSub servers.

                +
                restEnabled: boolean

                Whether this entity should be accessible on the frontend through the REST +server.

                +

                If this is false, any request from the client that attempts to use this +entity will fail.

                +
                searchRestrictedData: string[] = ...

                Properties that will not be searchable from the frontend. If the frontend +includes any of these properties in any of their clauses, they will be +filtered out before the search is executed.

                +

                Methods

                • Add one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Check if this is a sleeping reference.

                  +

                  Returns boolean

                • A frontend accessible method to change the user's password.

                  +

                  Parameters

                  • data: {
                        currentPassword: string;
                        newPassword: string;
                        revokeCurrentTokens?: boolean;
                    }

                    The input data from the client.

                    +
                    • currentPassword: string
                    • newPassword: string
                    • Optional revokeCurrentTokens?: boolean

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Check if this is a sleeping reference and throw an error if so.

                  +

                  Returns void

                • Check that an email is unique.

                  +

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Check the given password against the user's.

                  +

                  Parameters

                  • password: string

                    The password in question.

                    +

                  Returns boolean

                  True if the passwords match, otherwise false.

                  +
                • Check that a phone number is unique.

                  +

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Check the given code against the user's TOTP secret.

                  +

                  Parameters

                  • code: string

                    The code in question.

                    +

                  Returns boolean

                  True if the code is valid, otherwise false.

                  +
                • Check that a username is valid.

                  +

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Replace any referenced entities in the data with sleeping references.

                  +

                  Calling this function ensures that the next time a referenced entity is +accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                  +

                  Returns void

                • Perform a more strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check to see if a user has an ability.

                  +

                  This function will check both user and group abilities, if the user is +marked to inherit the abilities of its group.

                  +

                  If ability is undefined, it will check to see if the user is currently +logged in.

                  +

                  If the user has the "system/admin" ability, this function will return true.

                  +

                  Parameters

                  • Optional ability: string

                    The ability.

                    +

                  Returns Promise<boolean>

                  True or false.

                  +
                • Returns null | (null | string)[]

                • Returns any

                • Returns null | (null | string)[]

                • Returns any

                • Returns null | (null | string)[]

                • Get the client enabled methods.

                  +

                  Returns string[]

                  The names of methods allowed to be called by the frontend with serverCall.

                  +
                • Used to retrieve the data object.

                  +

                  This should only be used by Nymph to save the data into storage.

                  +

                  Parameters

                  • Optional includeSData: boolean

                    Whether to include the serialized data as well.

                    +

                  Returns any

                  The entity's data object.

                  +
                • Build a gatekeeper cache object.

                  +

                  Returns Promise<{
                      [k: string]: T;
                  }>

                • A frontend accessible method to generate a new TOTP secret.

                  +

                  Returns Promise<{
                      qrcode: string;
                      secret: string;
                      uri: string;
                  }>

                  An object with 'uri', 'qrcode', and 'secret'.

                  +
                • Used to retrieve the serialized data object.

                  +

                  This should only be used by Nymph to save the data object into storage.

                  +

                  This method is used by Nymph to avoid unserializing data that hasn't been +requested yet.

                  +

                  It should always be called after getData().

                  +

                  Returns SerializedEntityData

                  The entity's serialized data object.

                  +
                • Get the entity's tags.

                  +

                  Using this instead of accessing the tags prop directly will wake sleeping +references.

                  +

                  Returns string[]

                  The entity's tags.

                  +
                • Get an array of strings that must be unique across the current etype.

                  +

                  When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

                  +

                  The default implementation of this method returns an empty array, meaning +there are no uniqueness constraints applied to its etype.

                  +

                  Returns Promise<string[]>

                  Resolves to an array of entity's unique constraint strings.

                  +
                • Get an object that holds the same data as the entity.

                  +

                  This provides an object that can be validated.

                  +

                  Returns any

                  A pure object representation of the entity.

                  +
                • Check that the entity has all of the given tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Check whether the user is in a (primary or secondary) group.

                  +

                  Parameters

                  Returns Promise<boolean>

                  True or false.

                  +
                • Perform a less strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether the user is a descendant of a group.

                  +

                  Parameters

                  Returns Promise<boolean>

                  True or false.

                  +
                • Accept JSON data from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • input: EntityJson

                    The input data. Please note, this will be modified (destroyed).

                    +
                  • allowConflict: boolean = false

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Accept JSON patch from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • patch: EntityPatch

                    The patch data. Please note, this will be modified (destroyed).

                    +
                  • allowConflict: boolean = false

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Parameters

                  • data: {
                        additionalData?: {
                            [k: string]: any;
                        };
                        code?: string;
                        password: string;
                        username: string;
                    }
                    • Optional additionalData?: {
                          [k: string]: any;
                      }
                      • [k: string]: any
                    • Optional code?: string
                    • password: string
                    • username: string

                  Returns Promise<{
                      message: string;
                      needTOTP: boolean;
                      result: boolean;
                  } | {
                      message: any;
                      needTOTP?: undefined;
                      result: boolean;
                  }>

                • Log a user out of the system.

                  +

                  Returns Promise<{
                      message: any;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Change the user's password.

                  +

                  Parameters

                  • password: string

                    The new password.

                    +

                  Returns string

                  The resulting password or hash which is stored in the entity.

                  +
                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                • Parameters

                  • data: {
                        additionalData?: {
                            [k: string]: any;
                        };
                        password: string;
                    }
                    • Optional additionalData?: {
                          [k: string]: any;
                      }
                      • [k: string]: any
                    • password: string

                  Returns Promise<{
                      loggedin: boolean;
                      message: string;
                      result: boolean;
                  }>

                • A frontend accessible method to remove the TOTP secret from the user's +account.

                  +

                  Parameters

                  • Optional data: {
                        code: string;
                        password: string;
                    }

                    The input data from the client.

                    +
                    • code: string
                    • password: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Remove one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • A frontend accessible method to revoke all currently issued tokens.

                  +

                  Parameters

                  • data: {
                        password: string;
                    }

                    The input data from the client.

                    +
                    • password: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • A frontend accessible method to save a TOTP secret into the user's account.

                  +

                  Parameters

                  • data: {
                        code: string;
                        password: string;
                        secret: string;
                    }

                    The input data from the client.

                    +
                    • code: string
                    • password: string
                    • secret: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Send the user email verification/change/cancellation links.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Parameters

                  • Optional data: {
                        additionalData?: {
                            [k: string]: any;
                        };
                    }
                    • Optional additionalData?: {
                          [k: string]: any;
                      }
                      • [k: string]: any

                  Returns Promise<{
                      message: any;
                      result: boolean;
                  }>

                • Return a Nymph Entity Reference for this entity.

                  +

                  If the entity hasn't been saved yet (and has no GUID), it will be +returned instead.

                  +

                  Returns User | EntityReference

                  A Nymph Entity Reference array as an unsaved entity.

                  +
                • Update the data protection arrays for a user.

                  +

                  Parameters

                  • Optional givenUser: User & UserData

                    User to update protection for. If undefined, will use the currently logged in user.

                    +

                  Returns void

                • Set whether to use "skipAc" when accessing entity references.

                  +

                  Parameters

                  • skipAc: boolean

                    True or false, whether to use it.

                    +

                  Returns void

                • Alter the options for a query for this entity.

                  +

                  Type Parameters

                  Parameters

                  • options: T

                    The current options.

                    +

                  Returns T

                  The altered options.

                  +
                • Create or retrieve a new entity instance.

                  +

                  Note that this will always return an entity, even if the GUID is not found.

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • Optional guid: string

                    An optional GUID to retrieve.

                    +

                  Returns Promise<E & EntityDataType<E>>

                • Create a new sleeping reference instance.

                  +

                  Sleeping references won't retrieve their data from the database until they +are readied with $wake() or a parent's $wakeAll().

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • reference: EntityReference

                    The Nymph Entity Reference to use to wake.

                    +

                  Returns E & EntityDataType<E>

                  The new instance.

                  +
                • Returns {
                      allowRegistration: boolean;
                      allowUsernameChange: boolean;
                      emailUsernames: boolean;
                      pwRecovery: boolean;
                      regFields: string[];
                      unverifiedAccess: boolean;
                      userFields: string[];
                      verifyEmail: boolean;
                  }

                  • allowRegistration: boolean
                  • allowUsernameChange: boolean
                  • emailUsernames: boolean
                  • pwRecovery: boolean
                  • regFields: string[]
                  • unverifiedAccess: boolean
                  • userFields: string[]
                  • verifyEmail: boolean
                • Get an array of strings that must be unique across the current etype.

                  +

                  When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

                  +

                  The default implementation of this static method instantiates the entity, +assigns all of the given data, then calls $getUniques and returns its +output. This can have a performance impact if a lot of extra processing +happens during any of these steps. You can override this method to +calculate the unique strings faster, but you must return the same strings +that would be returned by $getUniques.

                  +

                  Parameters

                  • __namedParameters: {
                        cdate?: number;
                        data: EntityData;
                        guid?: string;
                        mdate?: number;
                        sdata?: SerializedEntityData;
                        tags: string[];
                    }

                  Returns Promise<string[]>

                  Resolves to an array of entity's unique constraint strings.

                  +
                • Parameters

                  • data: {
                        additionalData?: {
                            [k: string]: any;
                        };
                        code?: string;
                        password: string;
                        username: string;
                    }
                    • Optional additionalData?: {
                          [k: string]: any;
                      }
                      • [k: string]: any
                    • Optional code?: string
                    • password: string
                    • username: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                      user?: User & UserData;
                  }>

                • Recover account details.

                  +

                  Parameters

                  • data: {
                        password: string;
                        secret: string;
                        username: string;
                    }

                    The input data from the client.

                    +
                    • password: string
                    • secret: string
                    • username: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                • Send an account recovery link.

                  +

                  Parameters

                  • data: {
                        account: string;
                        recoveryType: "password" | "username";
                    }

                    The input data from the client.

                    +
                    • account: string
                    • recoveryType: "password" | "username"

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                  An object with a boolean 'result' entry and a 'message' entry.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.Group.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.Group.html new file mode 100644 index 0000000..b00c33e --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.Group.html @@ -0,0 +1,144 @@ +Group | Nymph.js 1.0.0-beta.81

                Entity interface.

                +

                Hierarchy (view full)

                Constructors

                Properties

                $data: GroupData

                The data proxy object.

                +
                $dataHandler: Object

                The data proxy handler.

                +
                $dataStore: GroupData

                The actual data store.

                +
                $dirty: {
                    [k: string]: boolean;
                }

                A map of props to whether they're dirty (for patch).

                +

                Type declaration

                • [k: string]: boolean
                $isASleepingReference: boolean

                Whether this instance is a sleeping reference.

                +
                $nymph: Nymph

                The instance of Nymph to use for queries.

                +
                $originalTags: string[]

                Array of the entity's original tags (for patch).

                +
                $sleepingReference: null | EntityReference

                The reference to use to wake.

                +
                $wakePromise: null | Promise<Entity<GroupData>>

                A promise that resolved when the entity's data is wake.

                +
                cdate: null | number

                The creation date of the entity as a high precision Unix timestamp.

                +
                guid: null | string

                The entity's Globally Unique ID.

                +
                mdate: null | number

                The modified date of the entity as a high precision Unix timestamp.

                +
                tags: string[]

                Array of the entity's tags.

                +
                class: string = 'Group'

                The lookup name for this entity.

                +

                This is used for reference arrays (and sleeping references) and server +requests.

                +
                nymph: Nymph

                The instance of Nymph to use for queries.

                +

                Methods

                • Add one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Check if this is a sleeping reference.

                  +

                  Returns boolean

                • Check if this is a sleeping reference and throw an error if so.

                  +

                  Returns void

                • Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Delete the object from storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Perform a more strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Get a patch of this entity's dirty data to be applied on the server.

                  +

                  Returns EntityPatch

                • Check that the entity has all of the given tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Perform a less strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Save the object's dirty data to storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                • Remove one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Save the object to storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Call an instance method on the server version of this entity.

                  +

                  The entity's data will be sent up to the server as well, so the server's +state can match the client's state. It won't be propagated into the DB, +though.

                  +

                  Parameters

                  • method: string

                    The name of the method.

                    +
                  • params: Iterable<any>

                    The parameters to call the method with.

                    +
                  • Optional stateless: boolean

                    Whether the server should return, and the client update, the data in the entity after the method has run.

                    +

                  Returns Promise<any>

                  The value that the method on the server returned.

                  +
                • Ready this entity's data, and the data of entity's within this one's.

                  +

                  Parameters

                  • Optional level: number

                    The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                    +

                  Returns Promise<Entity<GroupData>>

                  The entity.

                  +
                • Create or retrieve a new entity instance.

                  +

                  Note that this will always return an entity, even if the GUID is not found.

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • Optional guid: string

                    An optional GUID to retrieve.

                    +

                  Returns Promise<E & EntityDataType<E>>

                • Create a new sleeping reference instance.

                  +

                  Sleeping references won't retrieve their data from the server until they +are readied with $wake() or a parent's $wakeAll().

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • reference: EntityReference

                    The Nymph Entity Reference to use to wake.

                    +

                  Returns E & EntityDataType<E>

                  The new instance.

                  +
                • Call a static method on the server version of this entity.

                  +

                  Parameters

                  • method: string

                    The name of the method.

                    +
                  • params: Iterable<any>

                    The parameters to call the method with.

                    +

                  Returns Promise<any>

                  The value that the method on the server returned.

                  +
                • Call a static iterator method on the server version of this entity.

                  +

                  Parameters

                  • method: string

                    The name of the method.

                    +
                  • params: Iterable<any>

                    The parameters to call the method with.

                    +

                  Returns Promise<AbortableAsyncIterator<any>>

                  An iterator that iterates over values that the method on the server yields.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.NeedTOTPError.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.NeedTOTPError.html new file mode 100644 index 0000000..2ab549c --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.NeedTOTPError.html @@ -0,0 +1,11 @@ +NeedTOTPError | Nymph.js 1.0.0-beta.81

                Hierarchy

                • Error
                  • NeedTOTPError

                Constructors

                • Parameters

                  • Optional message: string

                  Returns NeedTOTPError

                Properties

                message: string
                name: string
                stack?: string
                prepareStackTrace?: ((err, stackTraces) => any)

                Optional override for formatting stack traces

                +

                Type declaration

                  • (err, stackTraces): any
                  • Parameters

                    • err: Error
                    • stackTraces: CallSite[]

                    Returns any

                stackTraceLimit: number

                Methods

                • Create .stack property on a target object

                  +

                  Parameters

                  • targetObject: object
                  • Optional constructorOpt: Function

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.User.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.User.html new file mode 100644 index 0000000..7d995d6 --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_client.User.html @@ -0,0 +1,159 @@ +User | Nymph.js 1.0.0-beta.81

                Entity interface.

                +

                Hierarchy (view full)

                Constructors

                Properties

                $data: UserData

                The data proxy object.

                +
                $dataHandler: Object

                The data proxy handler.

                +
                $dataStore: UserData

                The actual data store.

                +
                $dirty: {
                    [k: string]: boolean;
                }

                A map of props to whether they're dirty (for patch).

                +

                Type declaration

                • [k: string]: boolean
                $isASleepingReference: boolean

                Whether this instance is a sleeping reference.

                +
                $nymph: Nymph

                The instance of Nymph to use for queries.

                +
                $originalTags: string[]

                Array of the entity's original tags (for patch).

                +
                $sleepingReference: null | EntityReference

                The reference to use to wake.

                +
                $wakePromise: null | Promise<Entity<UserData>>

                A promise that resolved when the entity's data is wake.

                +
                cdate: null | number

                The creation date of the entity as a high precision Unix timestamp.

                +
                guid: null | string

                The entity's Globally Unique ID.

                +
                mdate: null | number

                The modified date of the entity as a high precision Unix timestamp.

                +
                tags: string[]

                Array of the entity's tags.

                +
                class: string = 'User'

                The lookup name for this entity.

                +

                This is used for reference arrays (and sleeping references) and server +requests.

                +
                nymph: Nymph

                The instance of Nymph to use for queries.

                +
                stores: WeakMap<Nymph, InstanceStore> = ...

                Methods

                • Add one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Check if this is a sleeping reference.

                  +

                  Returns boolean

                • Parameters

                  • data: {
                        currentPassword: string;
                        newPassword: string;
                        revokeCurrentTokens?: boolean;
                    }
                    • currentPassword: string
                    • newPassword: string
                    • Optional revokeCurrentTokens?: boolean

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Check if this is a sleeping reference and throw an error if so.

                  +

                  Returns void

                • Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Delete the object from storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Perform a more strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Returns Promise<{
                      qrcode: string;
                      secret: string;
                      uri: string;
                  }>

                • Get a patch of this entity's dirty data to be applied on the server.

                  +

                  Returns EntityPatch

                • Check that the entity has all of the given tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Perform a less strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Save the object's dirty data to storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                • Parameters

                  • data: {
                        additionalData?: {
                            [k: string]: any;
                        };
                        password: string;
                    }
                    • Optional additionalData?: {
                          [k: string]: any;
                      }
                      • [k: string]: any
                    • password: string

                  Returns Promise<{
                      loggedin: boolean;
                      message: string;
                      result: boolean;
                  }>

                • Parameters

                  • Optional data: {
                        code: string;
                        password: string;
                    }
                    • code: string
                    • password: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Remove one or more tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns void

                • Parameters

                  • data: {
                        password: string;
                    }
                    • password: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Save the object to storage.

                  +

                  Returns Promise<boolean>

                  True on success, false on failure.

                  +
                • Parameters

                  • data: {
                        code: string;
                        password: string;
                        secret: string;
                    }
                    • code: string
                    • password: string
                    • secret: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Call an instance method on the server version of this entity.

                  +

                  The entity's data will be sent up to the server as well, so the server's +state can match the client's state. It won't be propagated into the DB, +though.

                  +

                  Parameters

                  • method: string

                    The name of the method.

                    +
                  • params: Iterable<any>

                    The parameters to call the method with.

                    +
                  • Optional stateless: boolean

                    Whether the server should return, and the client update, the data in the entity after the method has run.

                    +

                  Returns Promise<any>

                  The value that the method on the server returned.

                  +
                • Parameters

                  • Optional data: {
                        additionalData?: {
                            [k: string]: any;
                        };
                    }
                    • Optional additionalData?: {
                          [k: string]: any;
                      }
                      • [k: string]: any

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Ready this entity's data, and the data of entity's within this one's.

                  +

                  Parameters

                  • Optional level: number

                    The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                    +

                  Returns Promise<Entity<UserData>>

                  The entity.

                  +
                • Parameters

                  • returnObjectIfNotExist: true

                  Returns Promise<User & UserData & {
                      abilities?: string[];
                      email?: string;
                      group?: Group & GroupData & {
                          abilities?: string[];
                          email?: string;
                          phone?: string;
                          user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                      };
                      groups?: (Group & GroupData & {
                          abilities?: string[];
                          email?: string;
                          phone?: string;
                          user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                      })[];
                      inheritAbilities?: boolean;
                      newEmailAddress?: string;
                      phone?: string;
                  }>

                • Parameters

                  • Optional returnObjectIfNotExist: false

                  Returns Promise<null | User & UserData & {
                      abilities?: string[];
                      email?: string;
                      group?: Group & GroupData & {
                          abilities?: string[];
                          email?: string;
                          phone?: string;
                          user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                      };
                      groups?: (Group & GroupData & {
                          abilities?: string[];
                          email?: string;
                          phone?: string;
                          user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                      })[];
                      inheritAbilities?: boolean;
                      newEmailAddress?: string;
                      phone?: string;
                  }>

                • Create or retrieve a new entity instance.

                  +

                  Note that this will always return an entity, even if the GUID is not found.

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • Optional guid: string

                    An optional GUID to retrieve.

                    +

                  Returns Promise<E & EntityDataType<E>>

                • Create a new sleeping reference instance.

                  +

                  Sleeping references won't retrieve their data from the server until they +are readied with $wake() or a parent's $wakeAll().

                  +

                  Type Parameters

                  Parameters

                  • this: (new () => E)
                      • new (): E
                      • Returns E

                  • reference: EntityReference

                    The Nymph Entity Reference to use to wake.

                    +

                  Returns E & EntityDataType<E>

                  The new instance.

                  +
                • Parameters

                  • data: {
                        additionalData?: {
                            [k: string]: any;
                        };
                        code?: string;
                        password: string;
                        username: string;
                    }
                    • Optional additionalData?: {
                          [k: string]: any;
                      }
                      • [k: string]: any
                    • Optional code?: string
                    • password: string
                    • username: string

                  Returns Promise<{
                      message: string;
                      needTOTP?: true;
                      result: boolean;
                      user?: User & UserData & {
                          abilities?: string[];
                          email?: string;
                          group?: Group & GroupData & {
                              abilities?: string[];
                              email?: string;
                              phone?: string;
                              user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                          };
                          groups?: (Group & GroupData & {
                              abilities?: (...)[];
                              email?: string;
                              phone?: string;
                              user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                          })[];
                          inheritAbilities?: boolean;
                          newEmailAddress?: string;
                          phone?: string;
                      };
                  }>

                • Parameters

                  • data: {
                        password: string;
                        secret: string;
                        username: string;
                    }
                    • password: string
                    • secret: string
                    • username: string

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Parameters

                  • data: {
                        account: string;
                        recoveryType: "username" | "password";
                    }
                    • account: string
                    • recoveryType: "username" | "password"

                  Returns Promise<{
                      message: string;
                      result: boolean;
                  }>

                • Call a static method on the server version of this entity.

                  +

                  Parameters

                  • method: string

                    The name of the method.

                    +
                  • params: Iterable<any>

                    The parameters to call the method with.

                    +

                  Returns Promise<any>

                  The value that the method on the server returned.

                  +
                • Call a static iterator method on the server version of this entity.

                  +

                  Parameters

                  • method: string

                    The name of the method.

                    +
                  • params: Iterable<any>

                    The parameters to call the method with.

                    +

                  Returns Promise<AbortableAsyncIterator<any>>

                  An iterator that iterates over values that the method on the server yields.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_components.Account.html b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_components.Account.html new file mode 100644 index 0000000..9bc961e --- /dev/null +++ b/docs/api/1.0.0-beta.81/classes/_nymphjs_tilmeld_components.Account.html @@ -0,0 +1,32 @@ +Account | Nymph.js 1.0.0-beta.81

                Base class for Svelte components with some minor dev-enhancements. Used when dev=true.

                +

                Can be used to create strongly typed Svelte components.

                +

                Example:

                You have component library on npm called component-library, from which +you export a component called MyComponent. For Svelte+TypeScript users, +you want to provide typings. Therefore you create a index.d.ts:

                +
                import { SvelteComponent } from "svelte";
                export class MyComponent extends SvelteComponent<{foo: string}> {} +
                +

                Typing this makes it possible for IDEs like VS Code with the Svelte extension +to provide intellisense and to use the component like this in a Svelte file +with TypeScript:

                +
                <script lang="ts">
                import { MyComponent } from "component-library";
                </script>
                <MyComponent foo={'bar'} /> +
                +

                Type Parameters

                • Props extends Record<string, any> = any
                • Events extends Record<string, any> = any
                • Slots extends Record<string, any> = any

                Hierarchy

                Indexable

                [prop: string]: any

                Constructors

                • Type Parameters

                  • Props extends Record<string, any> = any
                  • Events extends Record<string, any> = any
                  • Slots extends Record<string, any> = any

                  Parameters

                  • options: ComponentConstructorOptions<Props>

                  Returns Account<Props, Events, Slots>

                Properties

                $$: any

                PRIVATE API

                Do not use, may change at any time

                +
                $$events_def: Events

                For type checking capabilities only. +Does not exist at runtime.

                +

                DO NOT USE!

                $$prop_def: Props

                For type checking capabilities only. +Does not exist at runtime.

                +

                DO NOT USE!

                $$set: any

                PRIVATE API

                Do not use, may change at any time

                +
                $$slot_def: Slots

                For type checking capabilities only. +Does not exist at runtime.

                +

                DO NOT USE!

                Methods

                • Returns void

                • Returns void

                • Returns void

                • Type Parameters

                  • K extends string

                  Parameters

                  • type: K
                  • callback: undefined | null | ((e) => void)

                  Returns (() => void)

                    • (): void
                    • Returns void

                • Parameters

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/enums/_nymphjs_nymph.TilmeldAccessLevels.html b/docs/api/1.0.0-beta.81/enums/_nymphjs_nymph.TilmeldAccessLevels.html new file mode 100644 index 0000000..213fc59 --- /dev/null +++ b/docs/api/1.0.0-beta.81/enums/_nymphjs_nymph.TilmeldAccessLevels.html @@ -0,0 +1,5 @@ +TilmeldAccessLevels | Nymph.js 1.0.0-beta.81

                Enumeration Members

                FULL_ACCESS: 4
                NO_ACCESS: 0
                READ_ACCESS: 1
                WRITE_ACCESS: 2
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.customAlphabet.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.customAlphabet.html new file mode 100644 index 0000000..631a152 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.customAlphabet.html @@ -0,0 +1,9 @@ +customAlphabet | Nymph.js 1.0.0-beta.81
                • Generate secure unique ID with custom alphabet.

                  +

                  Alphabet must contain 256 symbols or less. Otherwise, the generator +will not be secure.

                  +

                  Parameters

                  • alphabet: string

                    Alphabet used to generate the ID.

                    +
                  • Optional defaultSize: number

                    Size of the ID. The default size is 21.

                    +

                  Returns ((size?) => string)

                  A random string generator.

                  +
                  const { customAlphabet } = require('nanoid')
                  const nanoid = customAlphabet('0123456789абвгдеё', 5)
                  nanoid() //=> "8ё56а" +
                  +
                    • (size?): string
                    • Parameters

                      • Optional size: number

                      Returns string

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.guid.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.guid.html new file mode 100644 index 0000000..1dd13d8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.guid.html @@ -0,0 +1 @@ +guid | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.humanSecret.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.humanSecret.html new file mode 100644 index 0000000..28200b8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.humanSecret.html @@ -0,0 +1 @@ +humanSecret | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.makeTableSuffix.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.makeTableSuffix.html new file mode 100644 index 0000000..d7e9ad8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.makeTableSuffix.html @@ -0,0 +1 @@ +makeTableSuffix | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.nanoid.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.nanoid.html new file mode 100644 index 0000000..82c66d7 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_guid.nanoid.html @@ -0,0 +1,8 @@ +nanoid | Nymph.js 1.0.0-beta.81
                • Generate secure URL-friendly unique ID.

                  +

                  By default, the ID will have 21 symbols to have a collision probability +similar to UUID v4.

                  +
                  import { nanoid } from 'nanoid'
                  model.id = nanoid() //=> "Uakgb_J5m9g-0JDMbcJqL" +
                  +

                  Parameters

                  • Optional size: number

                    Size of the ID. The default size is 21.

                    +

                  Returns string

                  A random string.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.EntitiesTest.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.EntitiesTest.html new file mode 100644 index 0000000..afc73b1 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.EntitiesTest.html @@ -0,0 +1 @@ +EntitiesTest | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.ExportImportTest.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.ExportImportTest.html new file mode 100644 index 0000000..c807308 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.ExportImportTest.html @@ -0,0 +1 @@ +ExportImportTest | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.UIDTest.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.UIDTest.html new file mode 100644 index 0000000..38c1a22 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.UIDTest.html @@ -0,0 +1 @@ +UIDTest | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.classNamesToEntityConstructors.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.classNamesToEntityConstructors.html new file mode 100644 index 0000000..17f91a3 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.classNamesToEntityConstructors.html @@ -0,0 +1 @@ +classNamesToEntityConstructors | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.entitiesToReferences.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.entitiesToReferences.html new file mode 100644 index 0000000..61b6c19 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.entitiesToReferences.html @@ -0,0 +1 @@ +entitiesToReferences | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.referencesToEntities.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.referencesToEntities.html new file mode 100644 index 0000000..124163d --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.referencesToEntities.html @@ -0,0 +1 @@ +referencesToEntities | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.sortObj.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.sortObj.html new file mode 100644 index 0000000..04ef185 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.sortObj.html @@ -0,0 +1 @@ +sortObj | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.uniqueStrings.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.uniqueStrings.html new file mode 100644 index 0000000..b7a8427 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.uniqueStrings.html @@ -0,0 +1 @@ +uniqueStrings | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.xor.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.xor.html new file mode 100644 index 0000000..58db204 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_nymph.xor.html @@ -0,0 +1 @@ +xor | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_pubsub.createServer.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_pubsub.createServer.html new file mode 100644 index 0000000..feca53f --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_pubsub.createServer.html @@ -0,0 +1 @@ +createServer | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_query_parser.queryParser.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_query_parser.queryParser.html new file mode 100644 index 0000000..3bc3914 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_query_parser.queryParser.html @@ -0,0 +1 @@ +queryParser | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_server.createServer.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_server.createServer.html new file mode 100644 index 0000000..c4e15b5 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_server.createServer.html @@ -0,0 +1,6 @@ +createServer | Nymph.js 1.0.0-beta.81
                • A REST server middleware creator for Nymph.

                  +

                  Written by Hunter Perrin for SciActive.

                  +

                  Parameters

                  • nymph: Nymph
                  • __namedParameters: {
                        jsonOptions?: OptionsJson;
                    } = {}
                    • Optional jsonOptions?: OptionsJson

                  Returns Express

                  Author

                  Hunter Perrin hperrin@gmail.com

                  +

                  Copyright

                  SciActive Inc

                  +

                  See

                  http://nymph.io/

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld.enforceTilmeld.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld.enforceTilmeld.html new file mode 100644 index 0000000..cf18e65 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld.enforceTilmeld.html @@ -0,0 +1 @@ +enforceTilmeld | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.checkUsername.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.checkUsername.html new file mode 100644 index 0000000..2f97fb5 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.checkUsername.html @@ -0,0 +1 @@ +checkUsername | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.login.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.login.html new file mode 100644 index 0000000..ed5a138 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.login.html @@ -0,0 +1 @@ +login | Nymph.js 1.0.0-beta.81
                • Parameters

                  • User: typeof User
                  • username: string
                  • password: string
                  • Optional code: string
                  • Optional additionalData: {
                        [k: string]: any;
                    }
                    • [k: string]: any

                  Returns Promise<{
                      message: string;
                      user?: User & UserData & {
                          abilities?: string[];
                          email?: string;
                          group?: Group & GroupData & {
                              abilities?: string[];
                              email?: string;
                              phone?: string;
                              user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                          };
                          groups?: (Group & GroupData & {
                              abilities?: (...)[];
                              email?: string;
                              phone?: string;
                              user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                          })[];
                          inheritAbilities?: boolean;
                          newEmailAddress?: string;
                          phone?: string;
                      };
                  }>

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.register.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.register.html new file mode 100644 index 0000000..3282161 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_client.register.html @@ -0,0 +1 @@ +register | Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_setup.setup.html b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_setup.setup.html new file mode 100644 index 0000000..1437433 --- /dev/null +++ b/docs/api/1.0.0-beta.81/functions/_nymphjs_tilmeld_setup.setup.html @@ -0,0 +1 @@ +setup | Nymph.js 1.0.0-beta.81
                • Parameters

                  • options: NymphOptions
                  • nymph: Nymph
                  • __namedParameters: {
                        allowRegistration?: boolean;
                    } = {}
                    • Optional allowRegistration?: boolean

                  Returns Express

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/hierarchy.html b/docs/api/1.0.0-beta.81/hierarchy.html new file mode 100644 index 0000000..128343f --- /dev/null +++ b/docs/api/1.0.0-beta.81/hierarchy.html @@ -0,0 +1 @@ +Nymph.js 1.0.0-beta.81
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/index.html b/docs/api/1.0.0-beta.81/index.html new file mode 100644 index 0000000..a116939 --- /dev/null +++ b/docs/api/1.0.0-beta.81/index.html @@ -0,0 +1,64 @@ +Nymph.js 1.0.0-beta.81

                Nymph.js 1.0.0-beta.81

                Nymph.js

                Powerful object data storage and querying.

                +

                Getting Started

                All you need to start using Nymph is the @nymphjs/nymph package and one of the drivers, @nymphjs/driver-mysql, @nymphjs/driver-postgresql, or @nymphjs/driver-sqlite3. Check out the readme for the Nymph package.

                +

                You can also set up a REST server to use Nymph remotely, a PubSub server to receive updates for queries, and a user and group management system to provide registration and access control.

                +

                Check out the user guide for information about how to use Nymph once you have it set up.

                +

                Nymph.js Packages

                Nymph

                The Nymph core provides the base level classes and utilities to query the database, save data to it, and define different data types.

                +

                MySQL Driver

                The MySQL driver lets you configure Nymph to query and save data to a MySQL database.

                +

                PostgreSQL Driver

                The PostgreSQL driver lets you configure Nymph to query and save data to a Postgres database.

                +

                SQLite3 Driver

                The SQLite3 driver lets you configure Nymph to query and save data to a SQLite3 database. This includes an in memory SQLite3 database.

                +

                REST Server

                The REST server lets you configure an endpoint for the Nymph client to query and push data to. The server provides this endpoint as an Express middleware, which can be used in a new or existing Express (or compatible) server.

                +

                PubSub Server

                The PubSub server provides a WebSocket server that allows Nymph to publish changes and the Nymph Client to subscribe to those changes. You can subscribe to individual entities, entity queries, or UIDs.

                +

                Client

                The Nymph Client allows you to query and push data to a Nymph REST server from the browser. You can also subscribe to entities and queries on a Nymph PubSub server and be notified of changes.

                +

                Node Client

                The Nymph Node Client let's you do everything the Nymph Client does, but from Node.JS instead of the browser.

                +

                Tilmeld

                Tilmeld (the d is silent) is a user and group management system for Nymph. It provides strict access controls to protect entities from unauthorized access/modification. It allows for granting and revoking ad hoc abilities to users and groups, then checking for those abilities. It provides authentication services and features protection against XSRF attacks.

                +

                Tilmeld Client

                The Tilmeld Client lets you register, login, and perform user account related functions remotely on a Nymph server.

                +

                Tilmeld Components

                The Tilmeld Components are front end registration/login, account recovery, account details, and password change components build with Svelte and SMUI.

                +

                Tilmeld Setup

                The Tilmeld Setup App allows administrators to create, modify, and delete users and groups and configure how Tilmeld works. It also acts as the endpoint for email address verification.

                +

                Entity Sorter

                The Nymph Entity Sorter lets you sort entities by their properties, including hierarchically.

                +

                Query Parser

                The Query Parser is a utility for creating complex Nymph entity queries from a simple text input. Essentially, it turns a string into a Nymph query.

                +

                GUID / Unique Code Generator

                The GUID and unique code generators are used to generate new GUIDs for Nymph objects and various random unique strings.

                +

                Breaking Changes

                In version 1.0.0-beta.78, the database schema changed significantly, and data will need to be exported with an older version, then imported into a fresh database with this version. The meaning of the contain clause also changed to only check if the given value exists in an array.

                +

                In version 1.0.0-beta.41, the server side API was rewritten to match the client side API. All synchronous database calls were removed. This is to prevent a very rare potential bug, because synchronous database calls were made outside of transactions. Here is a list of some things that changed that could break your code:

                +
                  +
                • $gatekeeper is now async
                • +
                • no guid on constructor or factorySync
                • +
                • checkClientUIDPermissions is now async
                • +
                • authenticate is now async
                • +
                • fillSession is now async
                • +
                • login is now async
                • +
                • loginSwitch is now async
                • +
                • logout is now async
                • +
                • logoutSwitch is now async
                • +
                • $addGroup is now async
                • +
                • $delGroup is now async
                • +
                • $inGroup is now async
                • +
                • $getLevel is now async
                • +
                • $ready changed to $wake
                • +
                • $readyAll changed to $wakeAll
                • +
                +

                You will also now need to call $wake on sleeping references before you access their data or they will throw and error.

                +

                Development

                To develop Nymph.js, checkout the repo and run:

                +
                npm i
                npm run bootstrap
                rm packages/*/package-lock.json +
                +

                Once you make changes in one package, you can either build that package directly or build all packages with bootstrap, then the other packages will be aware of the changes.

                +

                Testing

                When you're ready to run all the tests, in a separate shell, bring up the test DBs.

                +
                npm run test:db:start
                +
                +

                Now in your main terminal, you can run the tests.

                +
                npm run test
                +
                +

                Once you're all done, in your main terminal, you can bring down the test DBs (don't use Ctrl-C where the tests are running).

                +
                npm run test:db:stop
                +
                +

                License

                Copyright 2021 SciActive Inc

                +

                Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                +
                http://www.apache.org/licenses/LICENSE-2.0
                +
                +

                Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.AbortableAsyncIterator.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.AbortableAsyncIterator.html new file mode 100644 index 0000000..57117db --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.AbortableAsyncIterator.html @@ -0,0 +1,3 @@ +AbortableAsyncIterator | Nymph.js 1.0.0-beta.81
                interface AbortableAsyncIterator<T> {
                    abortController: AbortController;
                    [asyncIterator](): AsyncIterator<T, any, undefined>;
                }

                Type Parameters

                • T extends any = any

                Hierarchy

                • AsyncIterable<T>
                  • AbortableAsyncIterator

                Properties

                Methods

                Properties

                abortController: AbortController

                Methods

                • Returns AsyncIterator<T, any, undefined>

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.DataObjectInterface.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.DataObjectInterface.html new file mode 100644 index 0000000..62371cd --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.DataObjectInterface.html @@ -0,0 +1,40 @@ +DataObjectInterface | Nymph.js 1.0.0-beta.81

                Data Object interface.

                +

                Objects which hold data from some type of storage.

                +
                interface DataObjectInterface {
                    $arraySearch(array, strict?): number;
                    $delete(): Promise<boolean>;
                    $equals(object): boolean;
                    $inArray(array, strict?): boolean;
                    $is(object): boolean;
                    $patch(): Promise<boolean>;
                    $refresh(): Promise<boolean | 0>;
                    $save(): Promise<boolean>;
                    [k: string]: any;
                }

                Hierarchy (view full)

                Indexable

                [k: string]: any

                The object's data.

                +

                Methods

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Perform a more strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Perform a less strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.EntityInterface.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.EntityInterface.html new file mode 100644 index 0000000..f88df04 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_client.EntityInterface.html @@ -0,0 +1,86 @@ +EntityInterface | Nymph.js 1.0.0-beta.81

                Entity interface.

                +
                interface EntityInterface {
                    $nymph: Nymph;
                    cdate: null | number;
                    guid: null | string;
                    mdate: null | number;
                    tags: string[];
                    $addTag(...tags): void;
                    $arraySearch(array, strict?): number;
                    $delete(): Promise<boolean>;
                    $equals(object): boolean;
                    $getPatch(): EntityPatch;
                    $hasTag(...tags): boolean;
                    $inArray(array, strict?): boolean;
                    $init(entityJson): EntityInterface;
                    $is(object): boolean;
                    $patch(): Promise<boolean>;
                    $refresh(): Promise<boolean | 0>;
                    $removeTag(...tags): void;
                    $save(): Promise<boolean>;
                    $serverCall(method, params, stateless): Promise<any>;
                    $toReference(): EntityReference | EntityInterface;
                    $wake(): Promise<EntityInterface>;
                    $wakeAll(level?): Promise<EntityInterface>;
                }

                Hierarchy (view full)

                Implemented by

                Properties

                $nymph: Nymph

                The instance of Nymph to use for queries.

                +
                cdate: null | number

                The creation date of the entity as a Unix timestamp in milliseconds.

                +
                guid: null | string

                The entity's Globally Unique ID.

                +

                This is a 12 byte number represented as a lower case HEX string (24 +characters).

                +
                mdate: null | number

                The modified date of the entity as a Unix timestamp in milliseconds.

                +
                tags: string[]

                Array of the entity's tags.

                +

                Methods

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Check that the entity has all of the given tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                • Call an instance method on the server version of this entity.

                  +

                  The entity's data will be sent up to the server as well, so the server's +state can match the client's state. It won't be propagated into the DB, +though.

                  +

                  Parameters

                  • method: string

                    The name of the method.

                    +
                  • params: Iterable<any>

                    The parameters to call the method with.

                    +
                  • stateless: boolean

                    Whether the server should return, and the client update, the data in the entity after the method has run.

                    +

                  Returns Promise<any>

                  The value that the method on the server returned.

                  +
                • Ready this entity's data, and the data of entity's within this one's.

                  +

                  Parameters

                  • Optional level: number

                    The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                    +

                  Returns Promise<EntityInterface>

                  The entity.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_mysql.MySQLDriverConfig.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_mysql.MySQLDriverConfig.html new file mode 100644 index 0000000..abba644 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_mysql.MySQLDriverConfig.html @@ -0,0 +1,35 @@ +MySQLDriverConfig | Nymph.js 1.0.0-beta.81

                MySQL Driver Config

                +
                interface MySQLDriverConfig {
                    customPoolConfig: null | PoolOptions;
                    database: string;
                    engine: string;
                    foreignKeys: boolean;
                    host: string;
                    password: string;
                    port: number;
                    prefix: string;
                    rowLocking: boolean;
                    tableLocking: boolean;
                    transactions: boolean;
                    user: string;
                }

                Properties

                customPoolConfig: null | PoolOptions

                If you need to use custom options, like SSL, you can provide them here in +place of the above options.

                +
                database: string

                The MySQL database.

                +
                engine: string

                The MySQL table engine.

                +

                You should use MYISAM if you are using MySQL < 5.6.

                +

                Options are: Any MySQL storage engine supported on your server.

                +
                foreignKeys: boolean

                Whether to use foreign keys. If your table engine doesn't support +it (like MYISAM), you should turn this off.

                +
                host: string

                The host on which to connect to MySQL. Can include a port, like +hostname:port.

                +
                password: string

                The MySQL password.

                +
                port: number

                The port on which to connect to MySQL.

                +
                prefix: string

                The MySQL table name prefix.

                +
                rowLocking: boolean

                Whether to use row locking. If your table engine doesn't support +it (like MYISAM), you should turn this off.

                +
                tableLocking: boolean

                Whether to use table locking. If you use row locking, this should be off. +If you can't use row locking (like with MYISAM), you can use table +locking to ensure data consistency.

                +
                transactions: boolean

                Whether to use transactions. If your table engine doesn't support +it (like MYISAM), you should turn this off.

                +
                user: string

                The MySQL user.

                +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_postgresql.PostgreSQLDriverConfig.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_postgresql.PostgreSQLDriverConfig.html new file mode 100644 index 0000000..c0343e2 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_postgresql.PostgreSQLDriverConfig.html @@ -0,0 +1,18 @@ +PostgreSQLDriverConfig | Nymph.js 1.0.0-beta.81

                PostgreSQL Driver Config

                +
                interface PostgreSQLDriverConfig {
                    customPoolConfig: null | PoolConfig;
                    database: string;
                    host: string;
                    password: string;
                    port: number;
                    prefix: string;
                    user: string;
                }

                Properties

                customPoolConfig: null | PoolConfig

                If you need to use custom options, like SSL, you can provide them here in +place of the above options.

                +
                database: string

                The Postgres database.

                +
                host: string

                The host on which to connect to Postgres. Can include a port, like +hostname:port.

                +
                password: string

                The Postgres password.

                +
                port: number

                The port on which to connect to Postgres.

                +
                prefix: string

                The Postgres table name prefix.

                +
                user: string

                The Postgres user.

                +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_sqlite3.SQLite3DriverConfig.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_sqlite3.SQLite3DriverConfig.html new file mode 100644 index 0000000..d1d6797 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_driver_sqlite3.SQLite3DriverConfig.html @@ -0,0 +1,40 @@ +SQLite3DriverConfig | Nymph.js 1.0.0-beta.81

                SQLite3 Driver Config

                +
                interface SQLite3DriverConfig {
                    explicitWrite: boolean;
                    fileMustExist: boolean;
                    filename: string;
                    pragmas: string[];
                    prefix: string;
                    timeout: number;
                    verbose: undefined | ((message?, ...additionalArgs) => void);
                    wal: boolean;
                }

                Properties

                explicitWrite: boolean

                Open explicitly for writing.

                +

                By default, the driver will always open the DB as readonly, and attempt to +open another link to perform write operations. If you know that only one +instance will be writing, you can force the driver to open for writing by +default, which will block any other instance from opening it for writing.

                +

                One thing to note is that starting a transaction is a write operation, so +as long as an instance is in a transaction, no other instances can write.

                +

                PubSub also needs to open the DB, and it only needs read access.

                +
                fileMustExist: boolean

                If the file does not exist, an Error will be thrown instead of creating a +new file.

                +

                This option is ignored for in-memory, temporary, or readonly database +connections.

                +
                filename: string

                The filename of the SQLite3 DB. Use ':memory:' for an in-memory DB.

                +
                pragmas: string[]

                Additional pragma statements to run upon connection.

                +

                The default pragmas:

                +
                  +
                • journal_mode = WAL; +(if wal is set to true)
                • +
                • encoding = "UTF-8";
                • +
                • foreign_keys = 1;
                • +
                • case_sensitive_like = 1;
                • +
                +

                (Don't include the PRAGMA keyword, but do include the semicolon.)

                +
                prefix: string

                The SQLite3 table name prefix.

                +
                timeout: number

                The timeout to use for waiting for the DB to become available.

                +
                verbose: undefined | ((message?, ...additionalArgs) => void)

                Function that gets called with every SQL string executed.

                +

                Type declaration

                  • (message?, ...additionalArgs): void
                  • Parameters

                    • Optional message: any
                    • Rest ...additionalArgs: any[]

                    Returns void

                wal: boolean

                Turn on WAL mode.

                +

                This will generally increase performance, but does mean that the DB must be +on a local disk.

                +

                See: https://www.sqlite.org/wal.html

                +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.Config.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.Config.html new file mode 100644 index 0000000..66cb5d4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.Config.html @@ -0,0 +1,19 @@ +Config | Nymph.js 1.0.0-beta.81

                Nymph Config

                +
                interface Config {
                    cache: boolean;
                    cacheLimit: number;
                    cacheThreshold: number;
                    debugError: ((source, message) => void);
                    debugInfo: ((source, message) => void);
                    debugLog: ((source, message) => void);
                    emptyListError: boolean;
                }

                Properties

                cache: boolean

                Cache recently retrieved entities to speed up database queries. Uses more +memory.

                +
                cacheLimit: number

                The number of recently retrieved entities to cache. If you're running out +of memory, try lowering this value. 0 means unlimited.

                +
                cacheThreshold: number

                Cache entities after they're accessed this many times.

                +
                debugError: ((source, message) => void)

                A function to log error messages. By default, uses the debug package.

                +

                Type declaration

                  • (source, message): void
                  • Parameters

                    • source: string
                    • message: string

                    Returns void

                debugInfo: ((source, message) => void)

                A function to log info messages. By default, uses the debug package.

                +

                Type declaration

                  • (source, message): void
                  • Parameters

                    • source: string
                    • message: string

                    Returns void

                debugLog: ((source, message) => void)

                A function to log debug messages. By default, uses the debug package.

                +

                Type declaration

                  • (source, message): void
                  • Parameters

                    • source: string
                    • message: string

                    Returns void

                emptyListError: boolean

                When querying for multiple entities with NymphREST, if the list is empty, +return a 404 error.

                +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.DataObjectInterface.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.DataObjectInterface.html new file mode 100644 index 0000000..a849eb4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.DataObjectInterface.html @@ -0,0 +1,37 @@ +DataObjectInterface | Nymph.js 1.0.0-beta.81

                Data Object interface.

                +

                Objects which hold data from some type of storage.

                +
                interface DataObjectInterface {
                    $arraySearch(array, strict?): number;
                    $delete(): Promise<boolean>;
                    $equals(object): boolean;
                    $inArray(array, strict?): boolean;
                    $is(object): boolean;
                    $refresh(): Promise<boolean | 0>;
                    $save(): Promise<boolean>;
                    [k: string]: any;
                }

                Hierarchy (view full)

                Indexable

                [k: string]: any

                The object's data.

                +

                Methods

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Perform a more strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Perform a less strict comparison of this object to another.

                  +

                  Parameters

                  • object: any

                    The object to compare.

                    +

                  Returns boolean

                  True or false.

                  +
                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.EntityInterface.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.EntityInterface.html new file mode 100644 index 0000000..e1d6a7f --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.EntityInterface.html @@ -0,0 +1,135 @@ +EntityInterface | Nymph.js 1.0.0-beta.81

                Entity interface.

                +
                interface EntityInterface {
                    $nymph: Nymph;
                    cdate: null | number;
                    guid: null | string;
                    mdate: null | number;
                    tags: string[];
                    $addTag(...tags): void;
                    $arraySearch(array, strict?): number;
                    $clearCache(): void;
                    $delete(): Promise<boolean>;
                    $equals(object): boolean;
                    $getClientEnabledMethods(): string[];
                    $getCurrentAcValues(): ACProperties;
                    $getData(includeSData?): EntityData;
                    $getOriginalAcValues(): ACProperties;
                    $getSData(): SerializedEntityData;
                    $getTags(): string[];
                    $getUniques(): Promise<string[]>;
                    $getValidatable(): Object;
                    $hasTag(...tags): boolean;
                    $inArray(array, strict?): boolean;
                    $is(object): boolean;
                    $jsonAcceptData(input, allowConflict?): void;
                    $jsonAcceptPatch(patch, allowConflict?): void;
                    $putData(data, sdata?): void;
                    $refresh(): Promise<boolean | 0>;
                    $removeTag(...tags): void;
                    $save(): Promise<boolean>;
                    $toReference(): EntityInterface | EntityReference;
                    $useSkipAc(useSkipAc): void;
                }

                Hierarchy (view full)

                Implemented by

                Properties

                $nymph: Nymph

                The instance of Nymph to use for queries.

                +
                cdate: null | number

                The creation date of the entity as a Unix timestamp in milliseconds.

                +
                guid: null | string

                The entity's Globally Unique ID.

                +

                This is a 12 byte number represented as a lower case HEX string (24 +characters).

                +
                mdate: null | number

                The modified date of the entity as a Unix timestamp in milliseconds.

                +
                tags: string[]

                Array of the entity's tags.

                +

                Methods

                • Search the array for this object and return the corresponding index.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns number

                  The index if the object is in the array, -1 if it isn't.

                  +
                • Replace any referenced entities in the data with sleeping references.

                  +

                  Calling this function ensures that the next time a referenced entity is +accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                  +

                  Returns void

                • Get the client enabled methods.

                  +

                  Returns string[]

                  The names of methods allowed to be called by the frontend with serverCall.

                  +
                • Used to retrieve the data object.

                  +

                  This should only be used by Nymph to save the data into storage.

                  +

                  Parameters

                  • Optional includeSData: boolean

                    Whether to include the serialized data as well.

                    +

                  Returns EntityData

                  The entity's data object.

                  +
                • Used to retrieve the serialized data object.

                  +

                  This should only be used by Nymph to save the data object into storage.

                  +

                  This method is used by Nymph to avoid unserializing data that hasn't been +requested yet.

                  +

                  It should always be called after getData().

                  +

                  Returns SerializedEntityData

                  The entity's serialized data object.

                  +
                • Get the entity's tags.

                  +

                  Using this instead of accessing the tags prop directly will wake sleeping +references.

                  +

                  Returns string[]

                  The entity's tags.

                  +
                • Get an array of strings that must be unique across the current etype.

                  +

                  When you try to save another entity with any of the same unique strings, +Nymph will throw an error.

                  +

                  The default implementation of this method returns an empty array, meaning +there are no uniqueness constraints applied to its etype.

                  +

                  Returns Promise<string[]>

                  Resolves to an array of entity's unique constraint strings.

                  +
                • Get an object that holds the same data as the entity.

                  +

                  This provides an object that can be validated.

                  +

                  Returns Object

                  A pure object representation of the entity.

                  +
                • Check that the entity has all of the given tags.

                  +

                  Parameters

                  • Rest ...tags: string[]

                    List of tags.

                    +

                  Returns boolean

                  True or false.

                  +
                • Check whether this object is in an array.

                  +

                  If strict is false, is() is used to compare. If strict is true, +equals() is used.

                  +

                  Parameters

                  • array: any[]

                    The array to search.

                    +
                  • Optional strict: boolean

                    Whether to use stronger comparison.

                    +

                  Returns boolean

                  True if the object is in the array, false if it isn't.

                  +
                • Accept JSON data from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • input: EntityJson

                    The input data. Please note, this will be modified (destroyed).

                    +
                  • Optional allowConflict: boolean

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Accept JSON patch from the client.

                  +

                  This function uses the security protection lists:

                  +
                    +
                  • $protectedTags
                  • +
                  • $protectedData
                  • +
                  • $allowlistTags
                  • +
                  • $allowlistData
                  • +
                  +

                  Parameters

                  • patch: EntityPatch

                    The patch data. Please note, this will be modified (destroyed).

                    +
                  • Optional allowConflict: boolean

                    Allow to accept data that is older than the current data.

                    +

                  Returns void

                • Used to set the data.

                  +

                  This should only be used by Nymph to push the data from storage.

                  +

                  sdata is used by Nymph to avoid unserializing data that hasn't been +requested yet.

                  +

                  Parameters

                  Returns void

                • Refresh the object from storage. (Bypasses Nymph's cache.)

                  +

                  If the object has been deleted from storage, the database cannot be +reached, or a database error occurs, refresh() will return 0.

                  +

                  Returns Promise<boolean | 0>

                  False if the data has not been saved, 0 if it can't be refreshed, true on success.

                  +
                • Set whether to use "skipAc" when accessing entity references.

                  +

                  Parameters

                  • useSkipAc: boolean

                    True or false, whether to use it.

                    +

                  Returns void

                \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.TilmeldInterface.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.TilmeldInterface.html new file mode 100644 index 0000000..7bd66b3 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_nymph.TilmeldInterface.html @@ -0,0 +1,12 @@ +TilmeldInterface | Nymph.js 1.0.0-beta.81
                interface TilmeldInterface {
                    nymph: Nymph;
                    request: any;
                    response: any;
                    authenticate(skipXsrfToken?, skipRenew?): Promise<boolean>;
                    checkClientUIDPermissions(name, type?): Promise<boolean>;
                    clearSession(): void;
                    clone(): TilmeldInterface;
                    extractToken(token): Promise<any>;
                    fillSession(user): Promise<void>;
                    gatekeeper(ability?): boolean;
                    init(nymph): void;
                }

                Implemented by

                  Properties

                  nymph: Nymph
                  request: any
                  response: any

                  Methods

                  • Parameters

                    • Optional skipXsrfToken: boolean
                    • Optional skipRenew: boolean

                    Returns Promise<boolean>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_pubsub.Config.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_pubsub.Config.html new file mode 100644 index 0000000..b832c04 --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_pubsub.Config.html @@ -0,0 +1,17 @@ +Config | Nymph.js 1.0.0-beta.81

                  Nymph PubSub Config

                  +
                  interface Config {
                      broadcastCounts: boolean;
                      entries: string[];
                      logger: ((...args) => void);
                      originIsAllowed: ((origin) => boolean);
                      relays: string[];
                  }

                  Properties

                  broadcastCounts: boolean

                  Allow clients to request to be notified when other clients subscribe to the +same queries.

                  +
                  entries: string[]

                  The URLs of the Nymph-PubSub servers to directly publish to. These servers +are how this host will enter the PubSub network. If you only have one +PubSub server, it needs to be listed here.

                  +
                  logger: ((...args) => void)

                  Function to log PubSub info/error messages.

                  +

                  Type declaration

                    • (...args): void
                    • Parameters

                      • Rest ...args: any[]

                      Returns void

                  originIsAllowed: ((origin) => boolean)

                  Determine whether a client's origin is allowed to connect.

                  +

                  Type declaration

                    • (origin): boolean
                    • Parameters

                      • origin: string

                      Returns boolean

                  relays: string[]

                  The URLs of additional Nymph-PubSub servers to relay publishes to. If this +host is a PubSub server, these servers are how it will continue into your +PubSub network.

                  +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/interfaces/_nymphjs_tilmeld.Config.html b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_tilmeld.Config.html new file mode 100644 index 0000000..32a92bc --- /dev/null +++ b/docs/api/1.0.0-beta.81/interfaces/_nymphjs_tilmeld.Config.html @@ -0,0 +1,178 @@ +Config | Nymph.js 1.0.0-beta.81

                  Tilmeld Config

                  +
                  interface Config {
                      allowRegistration: boolean;
                      allowUsernameChange: boolean;
                      appName: string;
                      appUrl: string;
                      cancelChangeRedirect: string;
                      clientEnabledUIDs: string[];
                      clientReadableUIDs: string[];
                      clientSetabledUIDs: string[];
                      configEmail: ((tilmeld, options, user) => Promise<EmailConfig<any>>);
                      cookieDomain: string;
                      cookiePath: string;
                      createAdmin: boolean;
                      emailRateLimit: string;
                      emailTemplateDir: string;
                      emailUsernames: boolean;
                      enableGroupSearch: boolean;
                      enableUserSearch: boolean;
                      generatePrimary: boolean;
                      highestPrimary: string | boolean;
                      highestSecondary: string | boolean;
                      jwtBuilder: ((config, user, switchToken?) => string);
                      jwtExpire: number;
                      jwtExtract: ((config, token, xsrfToken?) => null | {
                          expire: Date;
                          guid: string;
                          issued: Date;
                      });
                      jwtRenew: number;
                      jwtSecret: string;
                      jwtSwitchExpire: number;
                      maxUsernameLength: number;
                      minUsernameLength: number;
                      pwMethod: "salt" | "plain" | "digest";
                      pwRecovery: boolean;
                      pwRecoveryTimeLimit: string;
                      regFields: string[];
                      sendEmail: ((tilmeld, options, user) => Promise<boolean>);
                      setupPath: string;
                      unverifiedAccess: boolean;
                      userFields: string[];
                      userRegisteredRecipient: null | string;
                      validChars: string;
                      validCharsNotice: string;
                      validEmailRegex: RegExp;
                      validEmailRegexNotice: string;
                      validRegex: RegExp;
                      validRegexNotice: string;
                      validatorGroup: ((tilmeld, group) => void);
                      validatorUser: ((tilmeld, user) => void);
                      verifyChangeRedirect: string;
                      verifyEmail: boolean;
                      verifyRedirect: string;
                  }

                  Properties

                  allowRegistration: boolean

                  Allow users to register.

                  +
                  allowUsernameChange: boolean

                  Allow users to change their username.

                  +
                  appName: string

                  The name of the app. Used in emails sent to users and as the TOTP issuer.

                  +
                  appUrl: string

                  The URL of the app. Used to define cookie domain, path, and security. Must +be accessible to the Tilmeld client JS. (Note, cookies are not specific to +individual ports, so tokens will be sent to any port running on this host.)

                  +
                  cancelChangeRedirect: string

                  After the user cancels an address change, redirect them to this URL.

                  +
                  clientEnabledUIDs: string[]

                  A list of UIDs that can be created from the client by anyone. (newUID)

                  +

                  Inclusion in this list implies inclusion in clientReadableUIDs.

                  +

                  Note: If you'd like to limit the access to logged in users, give them an + ability like "uid/new/nameofuid".

                  +
                  clientReadableUIDs: string[]

                  A list of UIDs that can be read from the client by anyone. (getUID)

                  +

                  Note: If you'd like to limit the access to logged in users, give them an + ability like "uid/get/nameofuid".

                  +
                  clientSetabledUIDs: string[]

                  A list of UIDs that can be set from the client by anyone. (setUID, +renameUID)

                  +

                  Inclusion in this list implies inclusion in clientReadableUIDs and +clientEnabledUIDs.

                  +

                  Note: There is no way to run renameUID from the client.

                  +

                  Note: If you'd like to limit the access to logged in users, give them an + ability like "uid/set/nameofuid".

                  +
                  configEmail: ((tilmeld, options, user) => Promise<EmailConfig<any>>)

                  Configure an email object to prepare for sending.

                  +

                  You can use this, for example, for DKIM signing.

                  +

                  See: https://github.com/forwardemail/email-templates/blob/v8.0.9/README.md#Options

                  +

                  Type declaration

                    • (tilmeld, options, user): Promise<EmailConfig<any>>
                    • Parameters

                      Returns Promise<EmailConfig<any>>

                  cookieDomain: string

                  The domain of the auth cookie.

                  +
                  cookiePath: string

                  The path of the auth cookie.

                  +
                  createAdmin: boolean

                  Allow the creation of an admin user. When a user is created, if there are +no other users in the system, they will be granted all abilities.

                  +
                  emailRateLimit: string

                  Don't let users change their email address more often than this. You can +enter one value and one unit of time, such as "2 weeks". Leave blank to +disable rate limiting.

                  +

                  This also controls how long a user has to cancel an email address change +from a link emailed to the old address.

                  +
                  emailTemplateDir: string

                  The absolute path to the email template directory. Used by the default +email sender.

                  +
                  emailUsernames: boolean

                  Instead of a "username", a user logs in and is referred to by their email +address. Enabling this after many users have been created can be messy. +Make sure they all have email addresses first.

                  +
                  enableGroupSearch: boolean

                  Whether frontend can search groups. (Probably not a good idea if privacy is +a concern. Same risks as user search if generatePrimary is true.)

                  +
                  enableUserSearch: boolean

                  Whether frontend can search users. (Probably not a good idea if privacy is +a concern.)

                  +
                  generatePrimary: boolean

                  Whether to create a new primary group for every user who registers. This +can be useful for providing access to entities the user creates.

                  +

                  In the case this is set, the default primary group, rather than being +assigned to the user, is assigned as the parent of the generated group.

                  +
                  highestPrimary: string | boolean

                  The GUID of the group above the highest groups allowed to be assigned as +primary groups. True means all groups, and false means no groups.

                  +
                  highestSecondary: string | boolean

                  The GUID of the group above the highest groups allowed to be assigned as +secondary groups. True means all groups, and false means no groups.

                  +
                  jwtBuilder: ((config, user, switchToken?) => string)

                  Function to build the JWT for user sessions.

                  +

                  Type declaration

                    • (config, user, switchToken?): string
                    • Parameters

                      Returns string

                  jwtExpire: number

                  How long from current time, in seconds, the JWT token expires.

                  +
                  jwtExtract: ((config, token, xsrfToken?) => null | {
                      expire: Date;
                      guid: string;
                      issued: Date;
                  })

                  Function to verify that a JWT was signed with the secret key, validate its +data, validate the XSRF token, and extract the GUID and dates.

                  +

                  If no XSRF token is supplied, ignore it.

                  +

                  Return false if the JWT is not valid, or an object with GUID, issued date, +and expire date otherwise.

                  +

                  Type declaration

                    • (config, token, xsrfToken?): null | {
                          expire: Date;
                          guid: string;
                          issued: Date;
                      }
                    • Parameters

                      • config: Config
                      • token: string
                      • Optional xsrfToken: string

                      Returns null | {
                          expire: Date;
                          guid: string;
                          issued: Date;
                      }

                  jwtRenew: number

                  How long, in seconds, before the JWT token expires to give the user a new +one.

                  +
                  jwtSecret: string

                  The secret used to sign the JWT.

                  +
                  jwtSwitchExpire: number

                  How long from current time, in seconds, the JWT token for a user switch +expires.

                  +
                  maxUsernameLength: number

                  The maximum length for usernames. Infinity for unlimited.

                  +
                  minUsernameLength: number

                  The minimum length for usernames.

                  +
                  pwMethod: "salt" | "plain" | "digest"

                  Method used to store passwords. Salt is more secure if the database is +compromised. Plain: store the password in plaintext. Digest: store the +password's digest (hash). Salt: store the password's digest using a +complex, unique salt.

                  +

                  Digests are SHA-256, so a salt probably isn't necessary, but who knows.

                  +

                  Options are: "plain", "digest", "salt"

                  +
                  pwRecovery: boolean

                  Allow users to recover their username and/or password through their +registered email.

                  +
                  pwRecoveryTimeLimit: string

                  How long a recovery request is valid.

                  +
                  regFields: string[]

                  These fields will be available for the user to fill in when they register.

                  +
                  sendEmail: ((tilmeld, options, user) => Promise<boolean>)

                  Send an email to a user. Uses email-templates by default.

                  +

                  Check out the emails directory to see the templates used.

                  +

                  In addition to the specific locals for each template, there are +additional locals added by the default email sender:

                  +
                    +
                  • System Information
                  • +
                  • siteName
                  • +
                  • siteLink
                  • +
                  • Recipient Information
                  • +
                  • toUsername
                  • +
                  • toName
                  • +
                  • toFirstName
                  • +
                  • toLastName
                  • +
                  • toEmail
                  • +
                  • toPhone
                  • +
                  • Current User Information (Only available if a user is logged in.)
                  • +
                  • username
                  • +
                  • name
                  • +
                  • firstName
                  • +
                  • lastName
                  • +
                  • email
                  • +
                  +

                  Type declaration

                    • (tilmeld, options, user): Promise<boolean>
                    • Parameters

                      Returns Promise<boolean>

                  setupPath: string

                  The path (with leading slash and no trailing slash) where the setup utility +is accessible. This is also used for email address verification.

                  +
                  +

                  This portion of the app will not check for the XSRF token, so make sure +your REST endpoint is not under this URL.

                  +
                  +
                  unverifiedAccess: boolean

                  Unverified users will be able to log in, but will only have the "unverified +users" secondary group(s) until they verify their email. If set to false, +their account will instead be disabled until they verify.

                  +
                  userFields: string[]

                  These will be the available fields for users. (Some fields, like username, +can't be excluded.)

                  +
                  userRegisteredRecipient: null | string

                  The address you'd like to receive a notification of registered users, if +any.

                  +
                  validChars: string

                  Only these characters can be used when creating usernames and groupnames. +(Doesn't apply to emails as usernames.)

                  +
                  validCharsNotice: string

                  When a user enters an invalid name, this message will be displayed.

                  +
                  validEmailRegex: RegExp

                  Email addresses must match this regular expression. By default, this uses +the regex from the W3C HTML email element validation:

                  +

                  https://html.spec.whatwg.org/multipage/input.html#email-state-(type=email)

                  +
                  validEmailRegexNotice: string

                  When a user enters an email that doesn't match the regex, this message will +be displayed.

                  +
                  validRegex: RegExp

                  Usernames and groupnames must match this regular expression. (Doesn't apply +to emails as usernames.) By default, this ensures that the name begins and +ends with an alphanumeric. (To allow anything, use .* inside the slashes.)

                  +
                  validRegexNotice: string

                  When a user enters a name that doesn't match the regex, this message will +be displayed.

                  +
                  validatorGroup: ((tilmeld, group) => void)

                  The validator used to check groups before saving.

                  +

                  Type declaration

                  validatorUser: ((tilmeld, user) => void)

                  The validator used to check users before saving.

                  +

                  Type declaration

                  verifyChangeRedirect: string

                  After the user verifies an address change, redirect them to this URL.

                  +
                  verifyEmail: boolean

                  Verify users' email addresses upon registration/email change before +allowing them to log in/change it.

                  +
                  verifyRedirect: string

                  After the user verifies their address, redirect them to this URL.

                  +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_client.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_client.html new file mode 100644 index 0000000..3fea9f9 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_client.html @@ -0,0 +1,73 @@ +@nymphjs/client - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/client - v1.0.0-beta.81

                  Nymph Client

                  Powerful object data storage and querying.

                  +

                  The Nymph Client allows you to query and push data to a Nymph REST server from the browser. You can also subscribe to entities and queries on a Nymph PubSub server and be notified of changes.

                  +

                  Installation

                  npm install --save @nymphjs/client
                  +
                  +

                  This package is the Nymph client for browsers. You can find UMD in dist, or TS source in src. There is also a Node.js client.

                  +

                  Usage

                  Here's an overview:

                  +
                  import { Nymph, PubSub } from '@nymphjs/client';
                  import TodoClass from 'Todo';

                  const nymphOptions = {
                  restUrl: 'https://yournymphrestserver/path/to/your/endpoint',
                  pubsubUrl: 'wss://yournymphpubsubserver',
                  };
                  const nymph = new Nymph(nymphOptions);
                  const pubsub = new PubSub(nymphOptions, nymph);
                  const Todo = nymph.addEntityClass(TodoClass);

                  // Now you can use Nymph and PubSub.
                  const myTodo = new Todo();
                  myTodo.name = 'This is a new todo!';
                  myTodo.done = false;
                  await myTodo.$save();

                  let allMyTodos = await nymph.getEntities({ class: Todo });

                  let subscription = pubsub.subscribeWith(myTodo, () => {
                  // When this is called, the entity will already contain new data from the
                  // publish event. If the entity is deleted, the GUID will be set to null.
                  if (myTodo.guid != null) {
                  alert('Somebody touched my todo!');
                  } else {
                  alert('Somebody deleted my todo!');
                  subscription.unsubscribe();
                  }
                  });

                  // ...

                  // Subscribing to a query.
                  let todos = [];
                  let userCount = 0;
                  let subscription = pubsub.subscribeEntities(
                  {
                  class: Todo.class,
                  },
                  {
                  type: '&',
                  '!tag': 'archived',
                  },
                  )(
                  (update) => {
                  // The first time this is called, `update` will be an array of Todo
                  // entities. After that, `update` will be a publish event object.

                  // This takes an existing array of entities and either updates it to match
                  // another array, or performs actions from a publish event object to update
                  // it.
                  pubsub.updateArray(todos, update);

                  // `todos` is now up to date with the latest publishes from the server.
                  },
                  (err) => alert(err),
                  (count) => {
                  // If you provide this callback, the server will send updates of how many
                  // clients are subscribed to this query.
                  userCount = count;
                  },
                  );

                  // ...

                  // Remember to clean up your subscriptions when you no longer need them.
                  subscription.unsubscribe(); +
                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  Index

                  Classes

                  Interfaces

                  Type Aliases

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_client_node.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_client_node.html new file mode 100644 index 0000000..a55f1b6 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_client_node.html @@ -0,0 +1,26 @@ +@nymphjs/client-node - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/client-node - v1.0.0-beta.81

                  Nymph Node Client

                  Powerful object data storage and querying.

                  +

                  The Nymph Node Client lets you do everything the Nymph Client does, but from Node.JS instead of the browser.

                  +

                  Installation

                  npm install --save @nymphjs/client-node
                  +
                  +

                  This package is the Nymph client for Node.js. You can find CJS in dist, or TS source in src. There is also a browser client.

                  +

                  This package provides fetch and WebSocket ponyfills to Nymph and handles Tilmeld auth tokens.

                  +

                  Usage

                  To use, require it instead of @nymphjs/client:

                  +
                  const { Nymph, PubSub } = require('@nymphjs/client-node');
                  +
                  +

                  Then set up Nymph and PubSub like normal:

                  +
                  const nymphOptions = {
                  restUrl: 'https://yournymphrestserver/path/to/your/endpoint',
                  pubsubUrl: 'wss://yournymphpubsubserver',
                  };
                  const nymph = new Nymph(nymphOptions);
                  const pubsub = new PubSub(nymphOptions, nymph); +
                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  Index

                  Classes

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_mysql.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_mysql.html new file mode 100644 index 0000000..5819a46 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_mysql.html @@ -0,0 +1,24 @@ +@nymphjs/driver-mysql - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/driver-mysql - v1.0.0-beta.81

                  Nymph MySQL Driver

                  Powerful object data storage and querying.

                  +

                  The MySQL driver lets you configure Nymph to query and save data to a MySQL database.

                  +

                  Installation

                  npm install --save @nymphjs/driver-mysql
                  +
                  +

                  Usage

                  Supply an instance of this driver with its configuration to Nymph's constructor.

                  +
                  import { Nymph } from '@nymphjs/nymph';
                  import MySQLDriver from '@nymphjs/driver-mysql';

                  const mysqlConfig = {
                  host: 'your_db_host',
                  database: 'your_database',
                  user: 'your_user',
                  password: 'your_password',
                  };

                  const nymph = new Nymph({}, new MySQLDriver(mysqlConfig));

                  // All done. Nymph is ready to use. +
                  +

                  Options

                  See the config declaration file.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Classes

                  Interfaces

                  Variables

                  References

                  Renames and re-exports MySQLDriver
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_postgresql.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_postgresql.html new file mode 100644 index 0000000..0c3940a --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_postgresql.html @@ -0,0 +1,24 @@ +@nymphjs/driver-postgresql - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/driver-postgresql - v1.0.0-beta.81

                  Nymph PostgreSQL Driver

                  Powerful object data storage and querying.

                  +

                  The PostgreSQL driver lets you configure Nymph to query and save data to a Postgres database.

                  +

                  Installation

                  npm install --save @nymphjs/driver-postgresql
                  +
                  +

                  Usage

                  Supply an instance of this driver with its configuration to Nymph's constructor.

                  +
                  import { Nymph } from '@nymphjs/nymph';
                  import PostgreSQLDriver from '@nymphjs/driver-postgresql';

                  const postgresqlConfig = {
                  host: 'your_db_host',
                  database: 'your_database',
                  user: 'your_user',
                  password: 'your_password',
                  };

                  const nymph = new Nymph({}, new PostgreSQLDriver(postgresqlConfig));

                  // All done. Nymph is ready to use. +
                  +

                  Options

                  See the config declaration file.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Renames and re-exports PostgreSQLDriver
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_sqlite3.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_sqlite3.html new file mode 100644 index 0000000..4755a52 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_driver_sqlite3.html @@ -0,0 +1,24 @@ +@nymphjs/driver-sqlite3 - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/driver-sqlite3 - v1.0.0-beta.81

                  Nymph SQLite3 Driver

                  Powerful object data storage and querying.

                  +

                  The SQLite3 driver lets you configure Nymph to query and save data to a SQLite3 database. This includes an in memory SQLite3 database.

                  +

                  Installation

                  npm install --save @nymphjs/driver-sqlite3
                  +
                  +

                  Usage

                  Supply an instance of this driver with its configuration to Nymph's constructor.

                  +
                  import { Nymph } from '@nymphjs/nymph';
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';

                  const sqliteConfig = {
                  filename: __dirname + '/mydatabase.db',
                  };

                  const nymph = new Nymph({}, new SQLite3Driver(sqliteConfig));

                  // All done. Nymph is ready to use. +
                  +

                  Options

                  See the config declaration file.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Classes

                  Interfaces

                  Variables

                  References

                  Renames and re-exports SQLite3Driver
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_guid.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_guid.html new file mode 100644 index 0000000..e20c5cd --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_guid.html @@ -0,0 +1,24 @@ +@nymphjs/guid - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/guid - v1.0.0-beta.81

                  Nymph GUID / Unique Code Generator

                  Powerful object data storage and querying.

                  +

                  The GUID and unique code generators are used to generate new GUIDs for Nymph objects and various random unique strings.

                  +

                  Installation

                  npm install --save @nymphjs/guid
                  +
                  +

                  Usage

                  There are a few functions for generating different kinds of strings.

                  +
                  import {
                  guid,
                  makeTableSuffix,
                  humanSecret,
                  nanoid,
                  customAlphabet,
                  } from '@nymphjs/guid';

                  // This generates a GUID. It will be 24 characters long, and the first four
                  // characters will be the same during a whole week. (This helps make DB index
                  // paging more efficient.)
                  const myGuid = guid();

                  // This can be used as a table suffix in SQL queries. It will be 20 characters
                  // long and alphanumeric.
                  const myTableSuffix = makeTableSuffix();

                  // This will be a human readable secret code. It will be 10 characters long and
                  // use the nolookalikesSafe dictionary from nanoid-dictionary.
                  const mySecretCode = humanSecret();

                  // This is the nanoid library's main export. It is exported in commonjs format.
                  const id = nanoid();

                  // This is the nanoid library's customAlphabet export.
                  const customId = customAlphabet('abc', 20)(); +
                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  Index

                  Functions

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_nymph.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_nymph.html new file mode 100644 index 0000000..6268462 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_nymph.html @@ -0,0 +1,99 @@ +@nymphjs/nymph - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/nymph - v1.0.0-beta.81

                  Nymph

                  Powerful object data storage and querying.

                  +

                  The Nymph core provides the base level classes and utilities to query the database, save data to it, and define different data types.

                  +

                  Installation

                  npm install --save @nymphjs/nymph
                  +
                  +

                  Drivers

                  To use Nymph, you need a database driver. Nymph.js provides a MySQL driver, a PostgreSQL driver, and a SQLite3 driver. They all provide the exact same functionality.

                  +

                  Usage

                  Here's an overview:

                  +
                  // main.ts
                  import { Nymph } from '@nymphjs/nymph';
                  import MySQLDriver from '@nymphjs/driver-mysql';
                  import TodoClass from './Todo';

                  const mysqlConfig = {
                  host: 'your_db_host',
                  database: 'your_database',
                  user: 'your_user',
                  password: 'your_password',
                  };

                  // Create a new instance of Nymph.
                  const nymph = new Nymph({}, new MySQLDriver(mysqlConfig));
                  // addEntityClass returns the class you should use for this instance of Nymph.
                  const Todo = nymph.addEntityClass(TodoClass);

                  // You are set up. Now you can use entity classes like `Todo` to store data,
                  // and Nymph's query methods like `getEntities` to retrieve them.

                  async function run() {
                  const myEntity = await Todo.factory();
                  myEntity.text = 'Get it done!';
                  await myEntity.$save();

                  const otherPendingTodos = await nymph.getEntities(
                  { class: Todo },
                  { type: '&', '!guid': myEntity.guid, equal: ['done', false] },
                  );

                  const total = otherPendingTodos.length;
                  const single = total === 1;
                  console.log(
                  `Besides the one I just created, there ${
                  single ? 'is' : 'are'
                  } ${total} pending todo${single ? '' : 's'} in the database.`,
                  );
                  } +
                  +
                  // Todo.ts
                  import { Entity } from '@nymphjs/nymph';

                  export type TodoData = {
                  text: string;
                  done: boolean;
                  };

                  export default class Todo extends Entity<TodoData> {
                  static ETYPE = 'todo'; // This is used for the table name(s) in the DB.
                  static class = 'Todo'; // This is used to map references to their class.

                  constructor() {
                  super();

                  // Within the methods of an entity, you will use `this.$data` to access
                  // its data. Outside, you don't need the $data part.
                  this.$data.text = '';
                  this.$data.done = false;
                  }

                  async $getOtherTodos() {
                  // this.$nymph (or this.nymph in a static function) is the instance of Nymph
                  // this entity was loaded with. Creating transactions will create a new
                  // instance of Nymph, so it could be a transactional instance.
                  const otherTodos = await this.$nymph.getEntities(
                  { class: Todo },
                  { type: '!&', guid: this.guid },
                  );
                  return otherTodos;
                  }
                  } +
                  +

                  Options

                  See the config declaration file.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  Index

                  Enumerations

                  Classes

                  Interfaces

                  Type Aliases

                  Variables

                  Functions

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_pubsub.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_pubsub.html new file mode 100644 index 0000000..0d8a073 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_pubsub.html @@ -0,0 +1,41 @@ +@nymphjs/pubsub - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/pubsub - v1.0.0-beta.81

                  Nymph PubSub Server

                  Powerful object data storage and querying.

                  +

                  The PubSub server provides a WebSocket server that allows Nymph to publish changes and the Nymph Client to subscribe to those changes. You can subscribe to individual entities, entity queries, or UIDs.

                  +

                  Installation

                  npm install --save @nymphjs/pubsub
                  +
                  +

                  Usage

                  Any Nymph instance will only publish changes if you initialize PubSub publisher before Nymph is used! This step is absolutely required to have a working PubSub system.

                  +
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';
                  import { Nymph } from '@nymphjs/nymph';
                  import { PubSub } from '@nymphjs/pubsub';

                  const pubSubConfig = {
                  entries: ['ws://yourpubsubserver.tld:8080/'], // This should be set to your PubSub server URL(s).
                  };

                  const nymph = new Nymph(
                  {},
                  new SQLite3Driver({
                  filename: ':memory:', // Put the correct driver/config here.
                  }),
                  );
                  PubSub.initPublisher(pubSubConfig, nymph); +
                  +

                  Now, on your PubSub server, you can use the createServer function to create a new PubSub server using HTTP (without TLS). If you want, this can be done on the same server you use as a REST server, with a different port.

                  +
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';
                  import { Nymph } from '@nymphjs/nymph';
                  import createServer, { PubSub } from '@nymphjs/pubsub';

                  const pubSubConfig = {
                  originIsAllowed: (origin) => {
                  // Your logic to determine allowed origins goes here.
                  return true;
                  },
                  entries: ['ws://yourpubsubserver.tld:8080/'],
                  };

                  const nymph = new Nymph(
                  {},
                  new SQLite3Driver({
                  filename: ':memory:', // Put the correct driver/config here.
                  }),
                  );
                  // Don't forget to do this; even here!
                  PubSub.initPublisher(pubSubConfig, nymph);

                  const pubsub = createServer(8080, pubSubConfig, nymph); +
                  +

                  If you need to provide custom handling in your server (like TLS), you can use the PubSub class directly and provide it a WebSocket server instance.

                  +
                  import http from 'http';
                  import { server as WebSocketServer } from 'websocket';
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';
                  import { Nymph } from '@nymphjs/nymph';
                  import { PubSub } from '@nymphjs/pubsub';

                  const pubSubConfig = {
                  originIsAllowed: (origin) => {
                  // Your logic to determine allowed origins goes here.
                  return true;
                  },
                  entries: ['ws://yourpubsubserver.tld:8080/'],
                  };

                  // Set up Nymph.
                  const nymph = new Nymph(
                  {},
                  new SQLite3Driver({
                  filename: ':memory:', // Put the correct driver/config here.
                  }),
                  );
                  // Don't forget to do this; even here!
                  PubSub.initPublisher(pubSubConfig, nymph);

                  // Set up the PubSub server.
                  const port = 8080;
                  const server = http.createServer((_request, response) => {
                  response.writeHead(404);
                  response.end();
                  });
                  const listener = server.listen(port, () => {
                  console.log(
                  new Date().toISOString(),
                  `Nymph-PubSub server started listening on port ${port}.`,
                  );
                  });
                  const wsServer = new WebSocketServer({
                  httpServer: listener,
                  // You should not use autoAcceptConnections for production
                  // applications, as it defeats all standard cross-origin protection
                  // facilities built into the protocol and the browser. You should
                  // *always* verify the connection's origin and decide whether or not
                  // to accept it.
                  autoAcceptConnections: false,
                  });

                  const pubsub = new PubSub(pubSubConfig, nymph, wsServer); +
                  +

                  Options

                  See the config declaration file.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Renames and re-exports createServer
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_query_parser.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_query_parser.html new file mode 100644 index 0000000..3835c38 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_query_parser.html @@ -0,0 +1,153 @@ +@nymphjs/query-parser - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/query-parser - v1.0.0-beta.81

                  Nymph Query Parser

                  Powerful object data storage and querying.

                  +

                  The Query Parser is a utility for creating complex Nymph entity queries from a simple text input. Essentially, it turns a string into a Nymph query.

                  +

                  Installation

                  npm install --save @nymphjs/query-parser
                  +
                  +

                  Usage

                  The query parser will turn a string into an Options and Selectors array for the Nymph Client. It has a syntax that allows for most features of a Nymph query to be expressed in a text input.

                  +
                  import queryParser from '@nymphjs/query-parser';

                  import BlogPost from './BlogPost';
                  import Category from './Category';

                  async function doQuery() {
                  const [options, ...selectors] = queryParser({
                  query:
                  'limit:4 sort:mdate foobar (| [archived] mdate<"2 weeks ago") category<{cat Tech}>',
                  entityClass: BlogPost,
                  defaultFields: ['title', 'body'],
                  qrefMap: {
                  cat: {
                  class: Category,
                  defaultFields: ['name'],
                  },
                  },
                  });
                  /*
                  Options will be
                  {
                  class: BlogPost,
                  limit: 4,
                  sort: 'mdate'
                  }

                  And selectors will be (equivalent to)
                  [
                  {
                  type: "|",
                  truthy: [
                  "archived"
                  ],
                  lt: [
                  ["mdate", null, "2 weeks ago"]
                  ]
                  },
                  {
                  type: "&",
                  qref: [
                  "category",
                  [
                  {
                  class: Category
                  },
                  {
                  type: "|",
                  ilike: ["name", "%Tech%"]
                  }
                  ]
                  ]
                  },
                  {
                  type: "|",
                  ilike: [
                  ["title", "%foobar%"],
                  ["body", "%foobar%"]
                  ]
                  }
                  ]
                  */
                  const entities = await nymph.getEntities(options, ...selectors);
                  } +
                  +

                  Options

                  You can set limit, offset, sort, and reverse like this.

                  +
                    +
                  • limit:number
                  • +
                  • offset:number
                  • +
                  • sort:string
                  • +
                  • reverse:true, reverse:false, reverse:1, or reverse:0
                  • +
                  +

                  These must appear in the top level of the query (outside of any parentheses).

                  +

                  Clauses

                  These are the available clauses, and their syntax.

                  +

                  equal and !equal

                  Check for string or JSON representation equality.

                  +
                    +
                  • name=string or name!=string
                  • +
                  • name="string value" or name!="string value"
                      +
                    • (Use this if you have a space in your string, or if your string could be interpreted as valid JSON. Escape double quotes with a leading backslash.)
                    • +
                    +
                  • +
                  • name=JSON or name!=JSON
                      +
                    • (Match a JSON encoded value (like true, 1, [1,2,3], or {"prop":"val"}).)
                    • +
                    +
                  • +
                  +

                  guid and !guid

                  Check for entity GUID.

                  +
                    +
                  • {guid} or {!guid}
                  • +
                  +

                  tag and !tag

                  Check for a tag.

                  +
                    +
                  • <name> or <!name>
                  • +
                  +

                  truthy and !truthy

                  Check for truthiness.

                  +
                    +
                  • [name] or [!name]
                  • +
                  +

                  ref and !ref

                  Check for a reference to another entity.

                  +
                    +
                  • name<{guid}> or name!<{guid}>
                  • +
                  +

                  qref and !qref

                  Check for a reference to another entity using a query.

                  +
                    +
                  • name<{refclassname inner query}> or name!<{refclassname inner query}>
                      +
                    • (Escape curly brackets with a leading backslash.)
                    • +
                    • (Requires a map of refclassname to their actual class and default fields.)
                    • +
                    +
                  • +
                  +

                  contain and !contain

                  Check if the array at the named property contains a value.

                  +
                    +
                  • name<value> or name!<value>
                      +
                    • (Escape angle brackets with a leading backslash. If your value could be interpreted as valid JSON, encode it as a JSON string and use the JSON syntax instead.)
                    • +
                    +
                  • +
                  • name<JSON> or name!<JSON>
                      +
                    • (Search for a JSON encoded value (like true, 1, [1,2,3], or {"prop":"val"}).)
                    • +
                    +
                  • +
                  +

                  match and !match

                  Check for POSIX regex match.

                  +
                    +
                  • name~/pattern/ or name!~/pattern/
                  • +
                  +

                  imatch and !imatch

                  Check for case insensitive POSIX regex match.

                  +
                    +
                  • name~/pattern/i or name!~/pattern/i
                  • +
                  +

                  like and !like

                  Check for pattern match where _ is single char wildcard and % is any length wildcard.

                  +
                    +
                  • name~pattern or name!~pattern
                  • +
                  • name~"pattern" or name!~"pattern"
                      +
                    • (Use this if you have a space in your pattern.)
                    • +
                    +
                  • +
                  +

                  ilike and !ilike

                  Check for case insensitive pattern match where _ is single char wildcard and % is any length wildcard.

                  +
                    +
                  • name~"pattern"i or name!~"pattern"i
                  • +
                  +

                  gt

                  Check a prop's value is greater than a given value.

                  +
                    +
                  • name>number
                  • +
                  • name>relative
                      +
                    • (A single relative time value like now or yesterday.)
                    • +
                    +
                  • +
                  • name>"relative time value"
                      +
                    • (Use this for a time value with a space like "two days from now", "last thursday", "+4 weeks", or "5 minutes ago".)
                    • +
                    +
                  • +
                  +

                  gte

                  Check a prop's value is greater than or equal to a given value.

                  +
                    +
                  • name>=number
                  • +
                  • name>=relative
                      +
                    • (A single relative time value like now or yesterday.)
                    • +
                    +
                  • +
                  • name>="relative time value"
                      +
                    • (Use this for a time value with a space like "two days from now", "last thursday", "+4 weeks", or "5 minutes ago".)
                    • +
                    +
                  • +
                  +

                  lt

                  Check a prop's value is less than a given value.

                  +
                    +
                  • name<number
                  • +
                  • name<relative
                      +
                    • (A single relative time value like now or yesterday.)
                    • +
                    +
                  • +
                  • name<"relative time value"
                      +
                    • (Use this for a time value with a space like "two days from now", "last thursday", "+4 weeks", or "5 minutes ago".)
                    • +
                    +
                  • +
                  +

                  lte

                  Check a prop's value is less than or equal to a given value.

                  +
                    +
                  • name<=number
                  • +
                  • name<=relative
                      +
                    • (A single relative time value like now or yesterday.)
                    • +
                    +
                  • +
                  • name<="relative time value"
                      +
                    • (Use this for a time value with a space like "two days from now", "last thursday", "+4 weeks", or "5 minutes ago".)
                    • +
                    +
                  • +
                  +

                  Selectors

                  You can specify nested selectors with different types using pairs of parentheses. The first character (or two) inside the parentheses can be a type: "&", "!&", "|", "!|", or "!" (the same as "!&").

                  +

                  Here are some examples of nested selectors.

                  +
                  Either enabled is truthy and abilities contains "subscriber", or abilities contains "lifelong-subscriber".

                  (| ([enabled] abilities<"subscriber">) abilities<"lifeline-subscriber">)


                  Published is not truthy and cdate is not greater than 6 months ago.

                  (! [published] cdate>"6 months ago") +
                  +

                  Default Fields

                  Anything contained in the query (including in selector parentheses) that doesn't match any of the options or clause syntaxes listed above (bare query parts) will be added (at the appropriate nesting level) to a selector with an "|" type in an ilike clause surrounded by "%" characters for each field passed in to the defaultFields argument.

                  +

                  Bare Query Handler

                  You can also supply a function in the option bareHandler that will handle bare query parts instead of the "Default Fields" behavior described above. It will receive three arguments, the query parts, the entity class, and the default fields entry for that class. It should return a partial selector that will replace or extend the "|" selector.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Type Aliases

                  Functions

                  References

                  Renames and re-exports queryParser
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_server.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_server.html new file mode 100644 index 0000000..60e6409 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_server.html @@ -0,0 +1,31 @@ +@nymphjs/server - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/server - v1.0.0-beta.81

                  Nymph REST Server

                  Powerful object data storage and querying.

                  +

                  The REST server lets you configure an endpoint for the Nymph client to query and push data to. The server provides this endpoint as an Express middleware, which can be used in a new or existing Express (or compatible) server.

                  +

                  Installation

                  npm install --save @nymphjs/server
                  +
                  +

                  Usage

                  You need to install Express, Nymph, and a Nymph driver, then you can use the REST server with an optional path. For this example, I'll use the SQLite3 driver with an in-memory database.

                  +
                  import express from 'express';
                  import { Nymph } from '@nymphjs/nymph';
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';
                  import createServer from '@nymphjs/server';

                  // Import all the entities you will be using on the server.
                  import MyEntityClass from './entities/MyEntity';

                  // Configure Nymph.
                  const nymph = new Nymph(
                  {},
                  new SQLite3Driver({
                  filename: ':memory:',
                  }),
                  );
                  const MyEntity = nymph.addEntityClass(MyEntityClass);

                  // Create your Express app.
                  const app = express();

                  // Create and use the REST server (with an optional path).
                  app.use('/rest', createServer(nymph));

                  // Do anything else you need to do...

                  // Start your server.
                  app.listen(80); +
                  +

                  You will need to import any entities you use on the server, so they are available to Nymph.

                  +

                  Now you can configure your client, using your server's address (and the optional path, if set).

                  +
                  import { Nymph } from '@nymphjs/client';

                  import MyEntityClass from './entities/MyEntityClient';

                  const nymph = new Nymph({
                  // You should configure your Express server to
                  // use HTTPS, but you don't have to.
                  restUrl: 'https://mydomain.tld/rest',
                  });
                  const MyEntity = nymph.addEntityClass(MyEntityClass); +
                  +

                  The REST server will authenticate for you using the Tilmeld auth cookie and XSRF token, but if you need to, you can authenticate in some other way (like OAuth2), and place the user in response.locals.user.

                  +
                  import express from 'express';
                  import { Nymph } from '@nymphjs/nymph';
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';
                  import { Tilmeld } from '@nymphjs/tilmeld';
                  import createServer from '@nymphjs/server';
                  import setup from '@nymphjs/tilmeld-setup';

                  // Import all the entities you will be using on the server.
                  import MyEntityClass from './entities/MyEntity';

                  // Consfigure Tilmeld.
                  const tilmeld = new Tilmeld({
                  appName: 'My Awesome App',
                  appUrl: 'https://mydomain.tld',
                  setupPath: '/user',
                  });

                  // Configure Nymph.
                  const nymph = new Nymph(
                  {},
                  new SQLite3Driver({
                  filename: ':memory:',
                  }),
                  tilmeld,
                  );
                  const MyEntity = nymph.addEntityClass(MyEntityClass);

                  // Create your Express app.
                  const app = express();

                  // Authenticate the user manually.
                  app.use('/rest', async (request, response, next) => {
                  const { User } = tilmeld;

                  try {
                  // Somehow authenticate the user...
                  const user = await User.factoryUsername(username);

                  if (user.guid != null && user.enabled) {
                  response.locals.user = user;
                  }

                  next();
                  } catch (e: any) {
                  response.status(500);
                  response.send('Internal server error.');
                  }
                  });

                  // Create and use the REST server (with an optional path).
                  app.use('/rest', createServer(nymph));

                  // Create Tilmeld setup app.
                  app.user(
                  '/user',
                  setup(
                  {
                  restUrl: 'https://mydomain.tld/rest',
                  },
                  nymph,
                  ),
                  );

                  // Do anything else you need to do...

                  // Start your server.
                  app.listen(80); +
                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Classes

                  Variables

                  Functions

                  References

                  Renames and re-exports createServer
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_sorter.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_sorter.html new file mode 100644 index 0000000..bcad716 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_sorter.html @@ -0,0 +1,21 @@ +@nymphjs/sorter - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/sorter - v1.0.0-beta.81

                  Nymph Entity Sorter

                  Powerful object data storage and querying.

                  +

                  The Nymph Entity Sorter lets you sort entities by their properties, including hierarchically.

                  +

                  Installation

                  npm install --save @nymphjs/sorter
                  +
                  +

                  Usage

                  Here's an overview:

                  +
                  import { Nymph } from '@nymphjs/nymph';
                  // or
                  import { Nymph } from '@nymphjs/client';
                  import PageClass from 'Page';

                  import { Sorter } from '@nymphjs/sorter';

                  const nymphOptions = {
                  // the options for your Nymph instance.
                  };
                  const nymph = new Nymph(nymphOptions);
                  const Page = nymph.addEntityClass(PageClass);

                  let pages = await nymph.getEntities({ class: Page });

                  const sorter = new Sorter(pages);

                  //
                  // ## Simple sort by some property.
                  //

                  sorter.sort('name');
                  // Pages are now sorted by name, with locale aware sorting.
                  console.log(pages);

                  sorter.sort('cdate');
                  // Pages are now sorted by creation date.
                  console.log(pages);

                  sorter.sort('cdate', { reverse: true });
                  // Pages are now sorted by creation date, newest first.
                  console.log(pages);

                  // Specifying your own comparator.
                  sorter.sort('name', { comparator: (a, b) => (a < b ? -1 : a > b ? 1 : 0) });
                  // Pages are now sorted by name, based on UTF-16 code points.
                  console.log(pages);

                  // Specifying options to the collator.
                  sorter.sort('name', {
                  collatorOptions: {
                  sensitivity: 'case',
                  caseFirst: 'upper',
                  numeric: true,
                  },
                  });
                  // Pages are now sorted by name, with uppercase coming first in case of
                  // otherwise identical entries, and numbers being sorted logically (2 < 10).
                  console.log(pages);

                  //
                  // ## Hierarchical sorting.
                  //

                  sorter.hsort('name', 'parent');
                  // Pages are now sorted by name, hierarchically. (All child pages come
                  // immediately after their parent.)
                  console.log(pages);

                  // You can specify the same options as before.
                  sorter.hsort('name', 'parent', {
                  collatorOptions: {
                  sensitivity: 'case',
                  caseFirst: 'upper',
                  numeric: true,
                  },
                  });
                  // Pages are now sorted by name, hierarchically, with uppercase coming first
                  // in case of otherwise identical entries, and numbers being sorted
                  // logically (2 < 10).
                  console.log(pages); +
                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  Index

                  Classes

                  Type Aliases

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld.html new file mode 100644 index 0000000..e02af76 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld.html @@ -0,0 +1,56 @@ +@nymphjs/tilmeld - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/tilmeld - v1.0.0-beta.81

                  Tilmeld - User/Group System for Nymph

                  Powerful object data storage and querying.

                  +

                  Tilmeld (the d is silent) is a user and group management system for Nymph. It provides strict access controls to protect entities from unauthorized access/modification. It allows for granting and revoking ad hoc abilities to users and groups, then checking for those abilities. It provides authentication services and features protection against XSRF attacks.

                  +

                  Installation

                  npm install --save @nymphjs/tilmeld
                  +
                  +

                  Usage

                  When you initialize Nymph, provide it with an instance of the Tilmeld class from this package. You now have access to the User and Group classes that are specific to that instance of Nymph/Tilmeld.

                  +

                  Here's an overview.

                  +
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';
                  import { Tilmeld } from '@nymphjs/tilmeld';
                  import { Nymph } from '@nymphjs/nymph';

                  const tilmeld = new Tilmeld({
                  appName: 'My App',
                  appUrl: 'http://localhost',
                  cookieDomain: 'localhost',
                  cookiePath: '/',
                  setupPath: '/user',
                  verifyRedirect: 'http://localhost',
                  verifyChangeRedirect: 'http://localhost',
                  cancelChangeRedirect: 'http://localhost',
                  jwtSecret: 'shhhhh',
                  });

                  const nymph = new Nymph(
                  {},
                  new SQLite3Driver({
                  filename: ':memory:',
                  }),
                  tilmeld,
                  );

                  // These are the classes specific to this instance of Tilmeld.
                  const { User, Group } = tilmeld; +
                  +

                  Options

                  See the config declaration file.

                  +

                  Abilities

                  There are a few abilities that Tilmeld uses internally:

                  +
                    +
                  • system/admin - A user with this ability has all abilities.
                  • +
                  • tilmeld/admin - Allow the user to manage and edit other user's account and group information and grant/revoke abilities.
                  • +
                  • tilmeld/switch - Allow the user to switch to other users (log in as them without their password).
                  • +
                  • uid/get/[name] - Allow the user to read the named UID.
                  • +
                  • uid/new/[name] - Allow the user to read, create, and increment the named UID.
                  • +
                  • uid/set/[name] - Allow the user to read, create, increment, set, and delete the named UID.
                  • +
                  +

                  The admin and switch abilities cannot be inherited from groups.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  Index

                  Classes

                  Interfaces

                  Type Aliases

                  Variables

                  Functions

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_client.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_client.html new file mode 100644 index 0000000..c89e1f0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_client.html @@ -0,0 +1,40 @@ +@nymphjs/tilmeld-client - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/tilmeld-client - v1.0.0-beta.81

                  Tilmeld Client - User/Group System for Nymph

                  Powerful object data storage and querying.

                  +

                  The Tilmeld Client lets you register, login, and perform user account related functions remotely on a Nymph server.

                  +

                  Installation

                  npm install --save @nymphjs/tilmeld-client
                  +
                  +

                  You can find UMD in dist, or TS source in src.

                  +

                  Usage

                  The Tilmeld client contains the client versions of the User and Group entities. It also contains helpers, login, register, and checkUsername.

                  +

                  Once you've initialized Nymph Client, set the User and Group classes on it. Then initialize the new User class with the Nymph instance. (This allows the class to set up authentication listeners.)

                  +
                  import { Nymph } from '@nymphjs/client';
                  import {
                  User as UserClass,
                  Group as GroupClass,
                  } from '@nymphjs/tilmeld-client';

                  const nymph = new Nymph({
                  restUrl: 'https://yournymphrestserver/path/to/your/endpoint',
                  });
                  const User = nymph.addEntityClass(UserClass);
                  const Group = nymph.addEntityClass(GroupClass);
                  User.init(nymph); +
                  +

                  If you're running more than one instance of Nymph client, be sure to use the classes returned by addEntityClass, so as not to accidentally submit entities from one instances to another instance.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  Index

                  Classes

                  Type Aliases

                  Functions

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_components.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_components.html new file mode 100644 index 0000000..2622be1 --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_components.html @@ -0,0 +1,23 @@ +@nymphjs/tilmeld-components - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/tilmeld-components - v1.0.0-beta.81

                  Tilmeld Components - User/Group System for Nymph

                  Powerful object data storage and querying.

                  +

                  The Tilmeld Components are front end registration/login, account recovery, account details, and password change components built with Svelte and SMUI.

                  +

                  Installation

                  npm install --save @nymphjs/tilmeld-components
                  +
                  +

                  Usage

                  You need to have an SMUI theme compiled and installed on your front end app. If you're using Svelte, you need to have TypeScript support and you should use the 'svelte' mainfield from package.json.

                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Renames and re-exports Account
                  Renames and re-exports Account
                  Renames and re-exports Account
                  Renames and re-exports Account
                  Renames and re-exports Account
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_setup.html b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_setup.html new file mode 100644 index 0000000..a46286a --- /dev/null +++ b/docs/api/1.0.0-beta.81/modules/_nymphjs_tilmeld_setup.html @@ -0,0 +1,23 @@ +@nymphjs/tilmeld-setup - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                  Module @nymphjs/tilmeld-setup - v1.0.0-beta.81

                  Tilmeld Setup App - User/Group System for Nymph

                  Powerful object data storage and querying.

                  +

                  The Tilmeld Setup App allows administrators to create, modify, and delete users and groups and configure how Tilmeld works. It also acts as the endpoint for email address verification.

                  +

                  Installation

                  npm install --save @nymphjs/tilmeld-setup
                  +
                  +

                  Usage

                  You need to setup a Nymph REST endpoint, then you can use the Tilmeld Setup App as another endpoint in your Express server.

                  +

                  IMPORTANT: Within the setup app, Tilmeld does not check for XSRF tokens, so do not put your REST endpoint under the setup app's path, or you will be vulnerable to XSRF attacks!

                  +

                  For this example, I'll use the SQLite3 driver with an in-memory database.

                  +
                  import express from 'express';
                  import SQLite3Driver from '@nymphjs/driver-sqlite3';
                  import { Nymph } from '@nymphjs/nymph';
                  import { Tilmeld } from '@nymphjs/tilmeld';
                  import createServer from '@nymphjs/server';
                  import setup from '@nymphjs/tilmeld-setup';

                  // Import all the entities you will be using on the server.
                  import './entities/MyEntity';

                  // Configure Nymph.
                  const nymph = new Nymph(
                  {},
                  new SQLite3Driver({
                  filename: ':memory:',
                  }),
                  new Tilmeld({
                  appName: 'My App',
                  appUrl: 'http://localhost',
                  cookieDomain: 'localhost',
                  cookiePath: '/',
                  setupPath: '/user',
                  verifyRedirect: 'http://localhost',
                  verifyChangeRedirect: 'http://localhost',
                  cancelChangeRedirect: 'http://localhost',
                  jwtSecret: 'shhhhh',
                  }),
                  );

                  // Create your Express app.
                  const app = express();

                  // Use the REST server.
                  app.use('/rest', createServer(nymph));

                  // Create Tilmeld setup app.
                  app.use(
                  '/user',
                  setup(
                  {
                  restUrl: 'http://localhost/rest',
                  },
                  nymph,
                  ),
                  );

                  // Do anything else you need to do...

                  // Start your server.
                  app.listen(80); +
                  +

                  License

                  Copyright 2021 SciActive Inc

                  +

                  Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at

                  +
                  http://www.apache.org/licenses/LICENSE-2.0
                  +
                  +

                  Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.

                  +

                  References

                  Functions

                  References

                  Renames and re-exports setup
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.Clause.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.Clause.html new file mode 100644 index 0000000..f15370f --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.Clause.html @@ -0,0 +1 @@ +Clause | Nymph.js 1.0.0-beta.81
                  Clause<C>: C | Exclude<C, undefined>[]

                  Type Parameters

                  • C
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityConstructor.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityConstructor.html new file mode 100644 index 0000000..86c86c2 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityConstructor.html @@ -0,0 +1 @@ +EntityConstructor | Nymph.js 1.0.0-beta.81
                  EntityConstructor<D, E>: (new (...args) => E) & {
                      [k in keyof typeof Entity]: typeof Entity[k]
                  }

                  Type Parameters

                  Type declaration

                    • new (...args): E
                    • Parameters

                      • Rest ...args: any[]

                      Returns E

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityData.html new file mode 100644 index 0000000..973422d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityData.html @@ -0,0 +1 @@ +EntityData | Nymph.js 1.0.0-beta.81
                  EntityData: {
                      [k: string]: any;
                  }

                  Type declaration

                  • [k: string]: any
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityDataType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityDataType.html new file mode 100644 index 0000000..fa8ca2e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityDataType.html @@ -0,0 +1 @@ +EntityDataType | Nymph.js 1.0.0-beta.81
                  EntityDataType<T>: T extends Entity<infer DataType>
                      ? DataType
                      : never

                  Type Parameters

                  • T
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityInstanceType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityInstanceType.html new file mode 100644 index 0000000..617da49 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityInstanceType.html @@ -0,0 +1 @@ +EntityInstanceType | Nymph.js 1.0.0-beta.81
                  EntityInstanceType<T>: T extends (new () => infer E)
                      ? E & EntityDataType<E>
                      : never

                  Type Parameters

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityJson.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityJson.html new file mode 100644 index 0000000..ad23667 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityJson.html @@ -0,0 +1 @@ +EntityJson | Nymph.js 1.0.0-beta.81
                  EntityJson<T>: {
                      cdate: number | null;
                      class: T["class"];
                      data: EntityData;
                      guid: string | null;
                      mdate: number | null;
                      tags: string[];
                  }

                  Type Parameters

                  Type declaration

                  • cdate: number | null
                  • class: T["class"]
                  • data: EntityData
                  • guid: string | null
                  • mdate: number | null
                  • tags: string[]
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityPatch.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityPatch.html new file mode 100644 index 0000000..ab6b025 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityPatch.html @@ -0,0 +1 @@ +EntityPatch | Nymph.js 1.0.0-beta.81
                  EntityPatch: {
                      addTags: string[];
                      class: string;
                      guid: string;
                      mdate: number | null;
                      removeTags: string[];
                      set: EntityData;
                      unset: string[];
                  }

                  Type declaration

                  • addTags: string[]
                  • class: string
                  • guid: string
                  • mdate: number | null
                  • removeTags: string[]
                  • set: EntityData
                  • unset: string[]
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityReference.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityReference.html new file mode 100644 index 0000000..e1bd050 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EntityReference.html @@ -0,0 +1 @@ +EntityReference | Nymph.js 1.0.0-beta.81
                  EntityReference: ["nymph_entity_reference", string, string]
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.EventType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EventType.html new file mode 100644 index 0000000..c503f59 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.EventType.html @@ -0,0 +1 @@ +EventType | Nymph.js 1.0.0-beta.81
                  EventType: "request" | "response"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterEventType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterEventType.html new file mode 100644 index 0000000..310fd2d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterEventType.html @@ -0,0 +1 @@ +HttpRequesterEventType | Nymph.js 1.0.0-beta.81
                  HttpRequesterEventType: "request" | "response"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterIteratorCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterIteratorCallback.html new file mode 100644 index 0000000..da09c0e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterIteratorCallback.html @@ -0,0 +1 @@ +HttpRequesterIteratorCallback | Nymph.js 1.0.0-beta.81
                  HttpRequesterIteratorCallback: ((requester, url, headers) => void)

                  Type declaration

                    • (requester, url, headers): void
                    • Parameters

                      • requester: HttpRequester
                      • url: string
                      • headers: Record<string, string>

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterRequestCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterRequestCallback.html new file mode 100644 index 0000000..69cb474 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterRequestCallback.html @@ -0,0 +1 @@ +HttpRequesterRequestCallback | Nymph.js 1.0.0-beta.81
                  HttpRequesterRequestCallback: ((requester, url, options) => void)

                  Type declaration

                    • (requester, url, options): void
                    • Parameters

                      • requester: HttpRequester
                      • url: string
                      • options: RequestInit

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterRequestOptions.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterRequestOptions.html new file mode 100644 index 0000000..ee51426 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterRequestOptions.html @@ -0,0 +1 @@ +HttpRequesterRequestOptions | Nymph.js 1.0.0-beta.81
                  HttpRequesterRequestOptions: {
                      data: {
                          [k: string]: any;
                      };
                      dataType: string;
                      headers?: {
                          [k: string]: any;
                      };
                      url: string;
                  }

                  Type declaration

                  • data: {
                        [k: string]: any;
                    }
                    • [k: string]: any
                  • dataType: string
                  • Optional headers?: {
                        [k: string]: any;
                    }
                    • [k: string]: any
                  • url: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterResponseCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterResponseCallback.html new file mode 100644 index 0000000..dc808c0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.HttpRequesterResponseCallback.html @@ -0,0 +1 @@ +HttpRequesterResponseCallback | Nymph.js 1.0.0-beta.81
                  HttpRequesterResponseCallback: ((requester, response, text) => void)

                  Type declaration

                    • (requester, response, text): void
                    • Parameters

                      • requester: HttpRequester
                      • response: Response
                      • text: string

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.NymphOptions.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.NymphOptions.html new file mode 100644 index 0000000..50056c4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.NymphOptions.html @@ -0,0 +1,25 @@ +NymphOptions | Nymph.js 1.0.0-beta.81
                  NymphOptions: {
                      WebSocket?: typeof WebSocket;
                      fetch?: WindowOrWorkerGlobalScope["fetch"];
                      noAutoconnect?: boolean;
                      noConsole?: boolean;
                      pubsubUrl?: string;
                      renewTokens?: boolean;
                      restUrl: string;
                      weakCache?: boolean;
                  }

                  Type declaration

                  • Optional WebSocket?: typeof WebSocket

                    A WebSocket implementation.

                    +
                  • Optional fetch?: WindowOrWorkerGlobalScope["fetch"]

                    A fetch implementation.

                    +
                  • Optional noAutoconnect?: boolean

                    Don't automatically try to connect to PubSub server.

                    +
                  • Optional noConsole?: boolean

                    Whether to not output status messages to the console.

                    +
                  • Optional pubsubUrl?: string

                    The URL of your Nymph PubSub server.

                    +
                  • Optional renewTokens?: boolean

                    Whether to renew tokens when a request is made.

                    +

                    If you turn this off, the client will request that the server not renew an +authentication token, even if it is within the renewal time of the +expiration date.

                    +

                    This defaults to true.

                    +
                  • restUrl: string

                    The URL of your Nymph REST server.

                    +
                  • Optional weakCache?: boolean

                    Use a WeakRef based cache of entities.

                    +

                    This ensures all entities returned are the same instance if they have the +same class and GUID. This also means that whenever an entity is returned +from the server, the single instance in memory will be refreshed. This +could have annoying results, like destroying dirty data (the dreaded +triple-D).

                    +

                    This could also be a potential source of memory leaks. Although the +entities themselves are referenced weakly so they get garbage collected, +the GUID used as a key and the WeakRef object itself are not weak +references, so not destroyed when the instance is garbage collected.

                    +

                    However, even with these caveats, this might help you if you have a big app +with the same entities stored in several different places in memory. This +can help to synchronize them correctly and avoid data conflicts.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.Options.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.Options.html new file mode 100644 index 0000000..019d114 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.Options.html @@ -0,0 +1,12 @@ +Options | Nymph.js 1.0.0-beta.81
                  Options<T>: {
                      class: T;
                      limit?: number;
                      offset?: number;
                      return?: "entity" | "guid" | "count";
                      reverse?: boolean;
                      skipCache?: boolean;
                      sort?: "cdate" | "mdate" | string;
                  }

                  Type Parameters

                  Type declaration

                  • class: T

                    The Entity class to query.

                    +
                  • Optional limit?: number

                    The limit of entities to be returned. Not needed when using getEntity, as +it always returns only one.

                    +
                  • Optional offset?: number

                    The offset from the first matching entity, in order, to start retrieving.

                    +
                  • Optional return?: "entity" | "guid" | "count"

                    What to return, the entities with their data, just the GUIDs, or just a +count.

                    +
                  • Optional reverse?: boolean

                    If true, entities will be retrieved from newest to oldest/largest to +smallest (with regard to sort).

                    +
                  • Optional skipCache?: boolean

                    If true, Nymph will skip the cache and retrieve the entity from the DB.

                    +
                  • Optional sort?: "cdate" | "mdate" | string

                    How to sort the entities. Should be "cdate", "mdate", or the name of a +property.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.OrWithTime.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.OrWithTime.html new file mode 100644 index 0000000..f8158b0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.OrWithTime.html @@ -0,0 +1 @@ +OrWithTime | Nymph.js 1.0.0-beta.81
                  OrWithTime<T>: T | [string, null, string]

                  Type Parameters

                  • T
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubCallbacks.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubCallbacks.html new file mode 100644 index 0000000..b6b5cc4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubCallbacks.html @@ -0,0 +1 @@ +PubSubCallbacks | Nymph.js 1.0.0-beta.81
                  PubSubCallbacks<T>: [PubSubResolveCallback<T> | undefined, PubSubRejectCallback | undefined, PubSubCountCallback | undefined]

                  Type Parameters

                  • T
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubConnectCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubConnectCallback.html new file mode 100644 index 0000000..f54afff --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubConnectCallback.html @@ -0,0 +1 @@ +PubSubConnectCallback | Nymph.js 1.0.0-beta.81
                  PubSubConnectCallback: (() => void)

                  Type declaration

                    • (): void
                    • Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubCountCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubCountCallback.html new file mode 100644 index 0000000..737e1bf --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubCountCallback.html @@ -0,0 +1 @@ +PubSubCountCallback | Nymph.js 1.0.0-beta.81
                  PubSubCountCallback: ((count) => void)

                  Type declaration

                    • (count): void
                    • Parameters

                      • count: number

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubDisconnectCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubDisconnectCallback.html new file mode 100644 index 0000000..658ee11 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubDisconnectCallback.html @@ -0,0 +1 @@ +PubSubDisconnectCallback | Nymph.js 1.0.0-beta.81
                  PubSubDisconnectCallback: (() => void)

                  Type declaration

                    • (): void
                    • Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubErrorCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubErrorCallback.html new file mode 100644 index 0000000..95dee47 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubErrorCallback.html @@ -0,0 +1,3 @@ +PubSubErrorCallback | Nymph.js 1.0.0-beta.81
                  PubSubErrorCallback: ((err) => void)

                  The error event is for unknown errors. Query errors fire their own reject +callbacks.

                  +

                  Type declaration

                    • (err): void
                    • Parameters

                      • err: any

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubEventType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubEventType.html new file mode 100644 index 0000000..63517bb --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubEventType.html @@ -0,0 +1 @@ +PubSubEventType | Nymph.js 1.0.0-beta.81
                  PubSubEventType: "connect" | "disconnect" | "error"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubRejectCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubRejectCallback.html new file mode 100644 index 0000000..5e9110e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubRejectCallback.html @@ -0,0 +1 @@ +PubSubRejectCallback | Nymph.js 1.0.0-beta.81
                  PubSubRejectCallback: ((err) => void)

                  Type declaration

                    • (err): void
                    • Parameters

                      • err: any

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubResolveCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubResolveCallback.html new file mode 100644 index 0000000..72f8b08 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubResolveCallback.html @@ -0,0 +1 @@ +PubSubResolveCallback | Nymph.js 1.0.0-beta.81
                  PubSubResolveCallback<T>: ((arg, event?) => void)

                  Type Parameters

                  • T

                  Type declaration

                    • (arg, event?): void
                    • Parameters

                      • arg: T
                      • Optional event: string

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubSubscribable.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubSubscribable.html new file mode 100644 index 0000000..d0283ee --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubSubscribable.html @@ -0,0 +1 @@ +PubSubSubscribable | Nymph.js 1.0.0-beta.81
                  PubSubSubscribable<T>: ((resolve?, reject?, count?) => PubSubSubscription<T>)

                  Type Parameters

                  • T

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubUpdate.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubUpdate.html new file mode 100644 index 0000000..94bc04d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.PubSubUpdate.html @@ -0,0 +1 @@ +PubSubUpdate | Nymph.js 1.0.0-beta.81
                  PubSubUpdate<T>: T | {
                      query: string;
                      removed: string;
                  } | {
                      added: string;
                      data: EntityJson;
                      query: string;
                  } | {
                      data: EntityJson;
                      query: string;
                      updated: string;
                  }

                  Type Parameters

                  • T

                  Type declaration

                  • query: string
                  • removed: string

                  Type declaration

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.RequestCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.RequestCallback.html new file mode 100644 index 0000000..8a1ae9a --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.RequestCallback.html @@ -0,0 +1 @@ +RequestCallback | Nymph.js 1.0.0-beta.81
                  RequestCallback: ((url, options) => void)

                  Type declaration

                    • (url, options): void
                    • Parameters

                      • url: string
                      • options: RequestInit

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.ResponseCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.ResponseCallback.html new file mode 100644 index 0000000..1537d76 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.ResponseCallback.html @@ -0,0 +1 @@ +ResponseCallback | Nymph.js 1.0.0-beta.81
                  ResponseCallback: ((response, text) => void)

                  Type declaration

                    • (response, text): void
                    • Parameters

                      • response: Response
                      • text: string

                      Returns void

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.Selector.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.Selector.html new file mode 100644 index 0000000..b4b5f48 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.Selector.html @@ -0,0 +1 @@ +Selector | Nymph.js 1.0.0-beta.81
                  Selector: {
                      !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                      !defined?: Clause<PrimitiveSelector["defined"]>;
                      !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                      !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                      !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                      !guid?: Clause<PrimitiveSelector["guid"]>;
                      !ilike?: Clause<PrimitiveSelector["ilike"]>;
                      !imatch?: Clause<PrimitiveSelector["imatch"]>;
                      !like?: Clause<PrimitiveSelector["like"]>;
                      !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                      !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                      !match?: Clause<PrimitiveSelector["match"]>;
                      !qref?: Selector["qref"];
                      !ref?: Clause<PrimitiveSelector["ref"]>;
                      !selector?: Selector["selector"];
                      !tag?: Clause<PrimitiveSelector["tag"]>;
                      !truthy?: Clause<PrimitiveSelector["truthy"]>;
                      contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                      defined?: Clause<PrimitiveSelector["defined"]>;
                      equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                      gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                      gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                      guid?: Clause<PrimitiveSelector["guid"]>;
                      ilike?: Clause<PrimitiveSelector["ilike"]>;
                      imatch?: Clause<PrimitiveSelector["imatch"]>;
                      like?: Clause<PrimitiveSelector["like"]>;
                      lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                      lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                      match?: Clause<PrimitiveSelector["match"]>;
                      qref?: Clause<[string, [Options, ...Selector[]]]>;
                      ref?: Clause<PrimitiveSelector["ref"]>;
                      selector?: Clause<Selector>;
                      tag?: Clause<PrimitiveSelector["tag"]>;
                      truthy?: Clause<PrimitiveSelector["truthy"]>;
                      type: "&" | "|" | "!&" | "!|";
                  }

                  Type declaration

                  • Optional !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                  • Optional !defined?: Clause<PrimitiveSelector["defined"]>
                  • Optional !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                  • Optional !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                  • Optional !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                  • Optional !guid?: Clause<PrimitiveSelector["guid"]>
                  • Optional !ilike?: Clause<PrimitiveSelector["ilike"]>
                  • Optional !imatch?: Clause<PrimitiveSelector["imatch"]>
                  • Optional !like?: Clause<PrimitiveSelector["like"]>
                  • Optional !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                  • Optional !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                  • Optional !match?: Clause<PrimitiveSelector["match"]>
                  • Optional !qref?: Selector["qref"]
                  • Optional !ref?: Clause<PrimitiveSelector["ref"]>
                  • Optional !selector?: Selector["selector"]
                  • Optional !tag?: Clause<PrimitiveSelector["tag"]>
                  • Optional !truthy?: Clause<PrimitiveSelector["truthy"]>
                  • Optional contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                  • Optional defined?: Clause<PrimitiveSelector["defined"]>
                  • Optional equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                  • Optional gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                  • Optional gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                  • Optional guid?: Clause<PrimitiveSelector["guid"]>
                  • Optional ilike?: Clause<PrimitiveSelector["ilike"]>
                  • Optional imatch?: Clause<PrimitiveSelector["imatch"]>
                  • Optional like?: Clause<PrimitiveSelector["like"]>
                  • Optional lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                  • Optional lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                  • Optional match?: Clause<PrimitiveSelector["match"]>
                  • Optional qref?: Clause<[string, [Options, ...Selector[]]]>
                  • Optional ref?: Clause<PrimitiveSelector["ref"]>
                  • Optional selector?: Clause<Selector>
                  • Optional tag?: Clause<PrimitiveSelector["tag"]>
                  • Optional truthy?: Clause<PrimitiveSelector["truthy"]>
                  • type: "&" | "|" | "!&" | "!|"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.SerializedEntityData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.SerializedEntityData.html new file mode 100644 index 0000000..9b9481d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.SerializedEntityData.html @@ -0,0 +1 @@ +SerializedEntityData | Nymph.js 1.0.0-beta.81
                  SerializedEntityData: {
                      [k: string]: string;
                  }

                  Type declaration

                  • [k: string]: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.ServerCallResponse.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.ServerCallResponse.html new file mode 100644 index 0000000..e234741 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.ServerCallResponse.html @@ -0,0 +1 @@ +ServerCallResponse | Nymph.js 1.0.0-beta.81
                  ServerCallResponse: {
                      entity?: EntityJson;
                      return: any;
                  }

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_client.ServerCallStaticResponse.html b/docs/api/1.0.0-beta.81/types/_nymphjs_client.ServerCallStaticResponse.html new file mode 100644 index 0000000..5dc8f21 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_client.ServerCallStaticResponse.html @@ -0,0 +1 @@ +ServerCallStaticResponse | Nymph.js 1.0.0-beta.81
                  ServerCallStaticResponse: any
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.ACProperties.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.ACProperties.html new file mode 100644 index 0000000..88a275c --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.ACProperties.html @@ -0,0 +1 @@ +ACProperties | Nymph.js 1.0.0-beta.81
                  ACProperties: {
                      acFull: (string | null)[] | null;
                      acGroup: number | null;
                      acOther: number | null;
                      acRead: (string | null)[] | null;
                      acUser: number | null;
                      acWrite: (string | null)[] | null;
                      group: string | null;
                      user: string | null;
                  }

                  Type declaration

                  • acFull: (string | null)[] | null
                  • acGroup: number | null
                  • acOther: number | null
                  • acRead: (string | null)[] | null
                  • acUser: number | null
                  • acWrite: (string | null)[] | null
                  • group: string | null
                  • user: string | null
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Clause.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Clause.html new file mode 100644 index 0000000..21b20f6 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Clause.html @@ -0,0 +1 @@ +Clause | Nymph.js 1.0.0-beta.81
                  Clause<C>: C | Exclude<C, undefined>[]

                  Type Parameters

                  • C
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityConstructor.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityConstructor.html new file mode 100644 index 0000000..ef9b1b6 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityConstructor.html @@ -0,0 +1 @@ +EntityConstructor | Nymph.js 1.0.0-beta.81
                  EntityConstructor<D, E>: (new (...args) => E) & {
                      [k in keyof typeof Entity]: typeof Entity[k]
                  }

                  Type Parameters

                  Type declaration

                    • new (...args): E
                    • Parameters

                      • Rest ...args: any[]

                      Returns E

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityData.html new file mode 100644 index 0000000..1b38514 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityData.html @@ -0,0 +1 @@ +EntityData | Nymph.js 1.0.0-beta.81
                  EntityData: {
                      [k: string]: any;
                  }

                  Type declaration

                  • [k: string]: any
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityDataType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityDataType.html new file mode 100644 index 0000000..6d6dee5 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityDataType.html @@ -0,0 +1 @@ +EntityDataType | Nymph.js 1.0.0-beta.81
                  EntityDataType<T>: T extends Entity<infer DataType>
                      ? DataType
                      : never

                  Type Parameters

                  • T
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityInstanceType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityInstanceType.html new file mode 100644 index 0000000..a12e624 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityInstanceType.html @@ -0,0 +1 @@ +EntityInstanceType | Nymph.js 1.0.0-beta.81
                  EntityInstanceType<T>: T extends (new () => infer E)
                      ? E & EntityDataType<E>
                      : never

                  Type Parameters

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityJson.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityJson.html new file mode 100644 index 0000000..d37c9ed --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityJson.html @@ -0,0 +1 @@ +EntityJson | Nymph.js 1.0.0-beta.81
                  EntityJson: {
                      cdate: number | null;
                      class: string;
                      data: EntityData;
                      guid: string | null;
                      mdate: number | null;
                      tags: string[];
                  }

                  Type declaration

                  • cdate: number | null
                  • class: string
                  • data: EntityData
                  • guid: string | null
                  • mdate: number | null
                  • tags: string[]
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityPatch.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityPatch.html new file mode 100644 index 0000000..a06dc2c --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityPatch.html @@ -0,0 +1 @@ +EntityPatch | Nymph.js 1.0.0-beta.81
                  EntityPatch: {
                      addTags: string[];
                      class: string;
                      guid: string;
                      mdate: number | null;
                      removeTags: string[];
                      set: EntityData;
                      unset: string[];
                  }

                  Type declaration

                  • addTags: string[]
                  • class: string
                  • guid: string
                  • mdate: number | null
                  • removeTags: string[]
                  • set: EntityData
                  • unset: string[]
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityReference.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityReference.html new file mode 100644 index 0000000..8e41eba --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.EntityReference.html @@ -0,0 +1 @@ +EntityReference | Nymph.js 1.0.0-beta.81
                  EntityReference: ["nymph_entity_reference", string, string]
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.FormattedSelector.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.FormattedSelector.html new file mode 100644 index 0000000..19ed039 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.FormattedSelector.html @@ -0,0 +1 @@ +FormattedSelector | Nymph.js 1.0.0-beta.81
                  FormattedSelector: {
                      !contain?: PrimitiveSelector["contain"][];
                      !defined?: PrimitiveSelector["defined"][][];
                      !equal?: PrimitiveSelector["equal"][];
                      !gt?: PrimitiveSelector["gt"][];
                      !gte?: PrimitiveSelector["gte"][];
                      !guid?: PrimitiveSelector["guid"][][];
                      !ilike?: PrimitiveSelector["ilike"][];
                      !imatch?: PrimitiveSelector["imatch"][];
                      !like?: PrimitiveSelector["like"][];
                      !lt?: PrimitiveSelector["lt"][];
                      !lte?: PrimitiveSelector["lte"][];
                      !match?: PrimitiveSelector["match"][];
                      !qref?: FormattedSelector["qref"];
                      !ref?: PrimitiveSelector["ref"][];
                      !selector?: FormattedSelector["selector"];
                      !tag?: PrimitiveSelector["tag"][][];
                      !truthy?: PrimitiveSelector["truthy"][][];
                      contain?: PrimitiveSelector["contain"][];
                      defined?: PrimitiveSelector["defined"][][];
                      equal?: PrimitiveSelector["equal"][];
                      gt?: PrimitiveSelector["gt"][];
                      gte?: PrimitiveSelector["gte"][];
                      guid?: PrimitiveSelector["guid"][][];
                      ilike?: PrimitiveSelector["ilike"][];
                      imatch?: PrimitiveSelector["imatch"][];
                      like?: PrimitiveSelector["like"][];
                      lt?: PrimitiveSelector["lt"][];
                      lte?: PrimitiveSelector["lte"][];
                      match?: PrimitiveSelector["match"][];
                      qref?: [string, [Options, ...FormattedSelector[]]][];
                      ref?: PrimitiveSelector["ref"][];
                      selector?: FormattedSelector[];
                      tag?: PrimitiveSelector["tag"][][];
                      truthy?: PrimitiveSelector["truthy"][][];
                      type: "&" | "|" | "!&" | "!|";
                  }

                  Type declaration

                  • Optional !contain?: PrimitiveSelector["contain"][]
                  • Optional !defined?: PrimitiveSelector["defined"][][]
                  • Optional !equal?: PrimitiveSelector["equal"][]
                  • Optional !gt?: PrimitiveSelector["gt"][]
                  • Optional !gte?: PrimitiveSelector["gte"][]
                  • Optional !guid?: PrimitiveSelector["guid"][][]
                  • Optional !ilike?: PrimitiveSelector["ilike"][]
                  • Optional !imatch?: PrimitiveSelector["imatch"][]
                  • Optional !like?: PrimitiveSelector["like"][]
                  • Optional !lt?: PrimitiveSelector["lt"][]
                  • Optional !lte?: PrimitiveSelector["lte"][]
                  • Optional !match?: PrimitiveSelector["match"][]
                  • Optional !qref?: FormattedSelector["qref"]
                  • Optional !ref?: PrimitiveSelector["ref"][]
                  • Optional !selector?: FormattedSelector["selector"]
                  • Optional !tag?: PrimitiveSelector["tag"][][]
                  • Optional !truthy?: PrimitiveSelector["truthy"][][]
                  • Optional contain?: PrimitiveSelector["contain"][]
                  • Optional defined?: PrimitiveSelector["defined"][][]
                  • Optional equal?: PrimitiveSelector["equal"][]
                  • Optional gt?: PrimitiveSelector["gt"][]
                  • Optional gte?: PrimitiveSelector["gte"][]
                  • Optional guid?: PrimitiveSelector["guid"][][]
                  • Optional ilike?: PrimitiveSelector["ilike"][]
                  • Optional imatch?: PrimitiveSelector["imatch"][]
                  • Optional like?: PrimitiveSelector["like"][]
                  • Optional lt?: PrimitiveSelector["lt"][]
                  • Optional lte?: PrimitiveSelector["lte"][]
                  • Optional match?: PrimitiveSelector["match"][]
                  • Optional qref?: [string, [Options, ...FormattedSelector[]]][]
                  • Optional ref?: PrimitiveSelector["ref"][]
                  • Optional selector?: FormattedSelector[]
                  • Optional tag?: PrimitiveSelector["tag"][][]
                  • Optional truthy?: PrimitiveSelector["truthy"][][]
                  • type: "&" | "|" | "!&" | "!|"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterCommitTransactionCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterCommitTransactionCallback.html new file mode 100644 index 0000000..2c89ed8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterCommitTransactionCallback.html @@ -0,0 +1 @@ +NymphAfterCommitTransactionCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterCommitTransactionCallback: ((nymph, name, result) => Promise<void>)

                  Type declaration

                    • (nymph, name, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • name: string
                      • result: boolean

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteEntityByIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteEntityByIDCallback.html new file mode 100644 index 0000000..63c55b4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteEntityByIDCallback.html @@ -0,0 +1 @@ +NymphAfterDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterDeleteEntityByIDCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteEntityCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteEntityCallback.html new file mode 100644 index 0000000..ad176bd --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteEntityCallback.html @@ -0,0 +1 @@ +NymphAfterDeleteEntityCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterDeleteEntityCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteUIDCallback.html new file mode 100644 index 0000000..a3ab192 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterDeleteUIDCallback.html @@ -0,0 +1 @@ +NymphAfterDeleteUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterDeleteUIDCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterNewUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterNewUIDCallback.html new file mode 100644 index 0000000..532ab4a --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterNewUIDCallback.html @@ -0,0 +1 @@ +NymphAfterNewUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterNewUIDCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<number | null>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterRenameUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterRenameUIDCallback.html new file mode 100644 index 0000000..84db597 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterRenameUIDCallback.html @@ -0,0 +1 @@ +NymphAfterRenameUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterRenameUIDCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterRollbackTransactionCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterRollbackTransactionCallback.html new file mode 100644 index 0000000..24d4cd8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterRollbackTransactionCallback.html @@ -0,0 +1 @@ +NymphAfterRollbackTransactionCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterRollbackTransactionCallback: ((nymph, name, result) => Promise<void>)

                  Type declaration

                    • (nymph, name, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • name: string
                      • result: boolean

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterSaveEntityCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterSaveEntityCallback.html new file mode 100644 index 0000000..4c3cd0e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterSaveEntityCallback.html @@ -0,0 +1 @@ +NymphAfterSaveEntityCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterSaveEntityCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterSetUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterSetUIDCallback.html new file mode 100644 index 0000000..239e2c4 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterSetUIDCallback.html @@ -0,0 +1 @@ +NymphAfterSetUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterSetUIDCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterStartTransactionCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterStartTransactionCallback.html new file mode 100644 index 0000000..b158a87 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphAfterStartTransactionCallback.html @@ -0,0 +1 @@ +NymphAfterStartTransactionCallback | Nymph.js 1.0.0-beta.81
                  NymphAfterStartTransactionCallback: ((nymph, name, result) => Promise<void>)

                  Type declaration

                    • (nymph, name, result): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeCommitTransactionCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeCommitTransactionCallback.html new file mode 100644 index 0000000..f157e1a --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeCommitTransactionCallback.html @@ -0,0 +1 @@ +NymphBeforeCommitTransactionCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeCommitTransactionCallback: ((nymph, name) => Promise<void>)

                  Type declaration

                    • (nymph, name): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteEntityByIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteEntityByIDCallback.html new file mode 100644 index 0000000..4d9360a --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteEntityByIDCallback.html @@ -0,0 +1 @@ +NymphBeforeDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeDeleteEntityByIDCallback: ((nymph, guid, className?) => Promise<void>)

                  Type declaration

                    • (nymph, guid, className?): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • guid: string
                      • Optional className: string

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteEntityCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteEntityCallback.html new file mode 100644 index 0000000..712241d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteEntityCallback.html @@ -0,0 +1 @@ +NymphBeforeDeleteEntityCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeDeleteEntityCallback: ((nymph, entity) => Promise<void>)

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteUIDCallback.html new file mode 100644 index 0000000..c1a6ae6 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeDeleteUIDCallback.html @@ -0,0 +1 @@ +NymphBeforeDeleteUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeDeleteUIDCallback: ((nymph, name) => Promise<void>)

                  Type declaration

                    • (nymph, name): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeGetEntitiesCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeGetEntitiesCallback.html new file mode 100644 index 0000000..130ab09 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeGetEntitiesCallback.html @@ -0,0 +1 @@ +NymphBeforeGetEntitiesCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeGetEntitiesCallback: ((nymph, options, selectors) => Promise<void>)

                  Type declaration

                    • (nymph, options, selectors): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeGetEntityCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeGetEntityCallback.html new file mode 100644 index 0000000..48d077d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeGetEntityCallback.html @@ -0,0 +1 @@ +NymphBeforeGetEntityCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeGetEntityCallback: ((nymph, options, selectors) => Promise<void>)

                  Type declaration

                    • (nymph, options, selectors): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeNewUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeNewUIDCallback.html new file mode 100644 index 0000000..169e1b9 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeNewUIDCallback.html @@ -0,0 +1 @@ +NymphBeforeNewUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeNewUIDCallback: ((nymph, name) => Promise<void>)

                  Type declaration

                    • (nymph, name): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeRenameUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeRenameUIDCallback.html new file mode 100644 index 0000000..1d03305 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeRenameUIDCallback.html @@ -0,0 +1 @@ +NymphBeforeRenameUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeRenameUIDCallback: ((nymph, oldName, newName) => Promise<void>)

                  Type declaration

                    • (nymph, oldName, newName): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • oldName: string
                      • newName: string

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeRollbackTransactionCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeRollbackTransactionCallback.html new file mode 100644 index 0000000..39ecea1 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeRollbackTransactionCallback.html @@ -0,0 +1 @@ +NymphBeforeRollbackTransactionCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeRollbackTransactionCallback: ((nymph, name) => Promise<void>)

                  Type declaration

                    • (nymph, name): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeSaveEntityCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeSaveEntityCallback.html new file mode 100644 index 0000000..8e0b7c6 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeSaveEntityCallback.html @@ -0,0 +1 @@ +NymphBeforeSaveEntityCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeSaveEntityCallback: ((nymph, entity) => Promise<void>)

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeSetUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeSetUIDCallback.html new file mode 100644 index 0000000..3d980ac --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeSetUIDCallback.html @@ -0,0 +1 @@ +NymphBeforeSetUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeSetUIDCallback: ((nymph, name, value) => Promise<void>)

                  Type declaration

                    • (nymph, name, value): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • name: string
                      • value: number

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeStartTransactionCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeStartTransactionCallback.html new file mode 100644 index 0000000..524319d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphBeforeStartTransactionCallback.html @@ -0,0 +1 @@ +NymphBeforeStartTransactionCallback | Nymph.js 1.0.0-beta.81
                  NymphBeforeStartTransactionCallback: ((nymph, name) => Promise<void>)

                  Type declaration

                    • (nymph, name): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphConnectCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphConnectCallback.html new file mode 100644 index 0000000..eb89df1 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphConnectCallback.html @@ -0,0 +1 @@ +NymphConnectCallback | Nymph.js 1.0.0-beta.81
                  NymphConnectCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphDisconnectCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphDisconnectCallback.html new file mode 100644 index 0000000..5ca9115 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphDisconnectCallback.html @@ -0,0 +1 @@ +NymphDisconnectCallback | Nymph.js 1.0.0-beta.81
                  NymphDisconnectCallback: ((nymph, result) => Promise<void>)

                  Type declaration

                    • (nymph, result): Promise<void>
                    • Parameters

                      • nymph: Nymph
                      • result: Promise<boolean>

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphEventType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphEventType.html new file mode 100644 index 0000000..abba3ac --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphEventType.html @@ -0,0 +1 @@ +NymphEventType | Nymph.js 1.0.0-beta.81
                  NymphEventType: "connect" | "disconnect" | "query" | "beforeGetEntity" | "beforeGetEntities" | "beforeSaveEntity" | "afterSaveEntity" | "failedSaveEntity" | "beforeDeleteEntity" | "afterDeleteEntity" | "failedDeleteEntity" | "beforeDeleteEntityByID" | "afterDeleteEntityByID" | "failedDeleteEntityByID" | "beforeNewUID" | "afterNewUID" | "failedNewUID" | "beforeSetUID" | "afterSetUID" | "failedSetUID" | "beforeRenameUID" | "afterRenameUID" | "failedRenameUID" | "beforeDeleteUID" | "afterDeleteUID" | "failedDeleteUID" | "beforeStartTransaction" | "afterStartTransaction" | "beforeCommitTransaction" | "afterCommitTransaction" | "beforeRollbackTransaction" | "afterRollbackTransaction"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteEntityByIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteEntityByIDCallback.html new file mode 100644 index 0000000..d81c91b --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteEntityByIDCallback.html @@ -0,0 +1 @@ +NymphFailedDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.81
                  NymphFailedDeleteEntityByIDCallback: ((nymph, error) => Promise<void>)

                  Type declaration

                    • (nymph, error): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteEntityCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteEntityCallback.html new file mode 100644 index 0000000..09654ba --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteEntityCallback.html @@ -0,0 +1 @@ +NymphFailedDeleteEntityCallback | Nymph.js 1.0.0-beta.81
                  NymphFailedDeleteEntityCallback: ((nymph, error) => Promise<void>)

                  Type declaration

                    • (nymph, error): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteUIDCallback.html new file mode 100644 index 0000000..f6d539e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedDeleteUIDCallback.html @@ -0,0 +1 @@ +NymphFailedDeleteUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphFailedDeleteUIDCallback: ((nymph, error) => Promise<void>)

                  Type declaration

                    • (nymph, error): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedNewUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedNewUIDCallback.html new file mode 100644 index 0000000..66c1346 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedNewUIDCallback.html @@ -0,0 +1 @@ +NymphFailedNewUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphFailedNewUIDCallback: ((nymph, error) => Promise<void>)

                  Type declaration

                    • (nymph, error): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedRenameUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedRenameUIDCallback.html new file mode 100644 index 0000000..8d2344c --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedRenameUIDCallback.html @@ -0,0 +1 @@ +NymphFailedRenameUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphFailedRenameUIDCallback: ((nymph, error) => Promise<void>)

                  Type declaration

                    • (nymph, error): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedSaveEntityCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedSaveEntityCallback.html new file mode 100644 index 0000000..d08633b --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedSaveEntityCallback.html @@ -0,0 +1 @@ +NymphFailedSaveEntityCallback | Nymph.js 1.0.0-beta.81
                  NymphFailedSaveEntityCallback: ((nymph, error) => Promise<void>)

                  Type declaration

                    • (nymph, error): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedSetUIDCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedSetUIDCallback.html new file mode 100644 index 0000000..f0116c0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphFailedSetUIDCallback.html @@ -0,0 +1 @@ +NymphFailedSetUIDCallback | Nymph.js 1.0.0-beta.81
                  NymphFailedSetUIDCallback: ((nymph, error) => Promise<void>)

                  Type declaration

                    • (nymph, error): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphQueryCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphQueryCallback.html new file mode 100644 index 0000000..faaf48a --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.NymphQueryCallback.html @@ -0,0 +1,8 @@ +NymphQueryCallback | Nymph.js 1.0.0-beta.81
                  NymphQueryCallback: ((nymph, options, selectors) => void)

                  The NymphQueryCallback will be called on both top level and qref queries.

                  +

                  This is the only callback that is not asynchronous.

                  +

                  This also isn't necessarily run on every "query". It is run before a database +query for an entity, but it is not run during PubSub entity change +propagation. Therefore, it shouldn't do anything entity specific, instead +it should be query specific. For example, throw an error if the user is not +permitted to run the query at all.

                  +

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Options.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Options.html new file mode 100644 index 0000000..9403c85 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Options.html @@ -0,0 +1,17 @@ +Options | Nymph.js 1.0.0-beta.81
                  Options<T>: {
                      class?: T;
                      limit?: number;
                      offset?: number;
                      return?: "entity" | "guid" | "count";
                      reverse?: boolean;
                      skipAc?: boolean;
                      skipCache?: boolean;
                      sort?: "cdate" | "mdate" | string;
                      source?: string;
                  }

                  Type Parameters

                  Type declaration

                  • Optional class?: T

                    The Entity class to query.

                    +
                  • Optional limit?: number

                    The limit of entities to be returned. Not needed when using getEntity, as +it always returns only one.

                    +
                  • Optional offset?: number

                    The offset from the first matching entity, in order, to start retrieving.

                    +
                  • Optional return?: "entity" | "guid" | "count"

                    What to return, the entities with their data, just the GUIDs, or just a +count.

                    +
                  • Optional reverse?: boolean

                    If true, entities will be retrieved from newest to oldest/largest to +smallest (with regard to sort).

                    +
                  • Optional skipAc?: boolean

                    If true, Tilmeld will not filter returned entities according to access +controls. (If Tilmeld is installed.) (This is always set to false by the +REST endpoint and PubSub server.)

                    +
                  • Optional skipCache?: boolean

                    If true, Nymph will skip the cache and retrieve the entity from the DB.

                    +
                  • Optional sort?: "cdate" | "mdate" | string

                    How to sort the entities. Should be "cdate", "mdate", or the name of a +property.

                    +
                  • Optional source?: string

                    Will be 'client' if the query came from a REST request or the PubSub +server. (Mainly used in Tilmeld for access control.)

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.OrWithTime.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.OrWithTime.html new file mode 100644 index 0000000..61ff5c0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.OrWithTime.html @@ -0,0 +1 @@ +OrWithTime | Nymph.js 1.0.0-beta.81
                  OrWithTime<T>: T | [string, null, string]

                  Type Parameters

                  • T
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Selector.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Selector.html new file mode 100644 index 0000000..7dfdb4e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.Selector.html @@ -0,0 +1 @@ +Selector | Nymph.js 1.0.0-beta.81
                  Selector: {
                      !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                      !defined?: Clause<PrimitiveSelector["defined"]>;
                      !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                      !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                      !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                      !guid?: Clause<PrimitiveSelector["guid"]>;
                      !ilike?: Clause<PrimitiveSelector["ilike"]>;
                      !imatch?: Clause<PrimitiveSelector["imatch"]>;
                      !like?: Clause<PrimitiveSelector["like"]>;
                      !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                      !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                      !match?: Clause<PrimitiveSelector["match"]>;
                      !qref?: Selector["qref"];
                      !ref?: Clause<PrimitiveSelector["ref"]>;
                      !selector?: Selector["selector"];
                      !tag?: Clause<PrimitiveSelector["tag"]>;
                      !truthy?: Clause<PrimitiveSelector["truthy"]>;
                      contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                      defined?: Clause<PrimitiveSelector["defined"]>;
                      equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                      gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                      gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                      guid?: Clause<PrimitiveSelector["guid"]>;
                      ilike?: Clause<PrimitiveSelector["ilike"]>;
                      imatch?: Clause<PrimitiveSelector["imatch"]>;
                      like?: Clause<PrimitiveSelector["like"]>;
                      lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                      lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                      match?: Clause<PrimitiveSelector["match"]>;
                      qref?: Clause<[string, [Options, ...Selector[]]]>;
                      ref?: Clause<PrimitiveSelector["ref"]>;
                      selector?: Clause<Selector>;
                      tag?: Clause<PrimitiveSelector["tag"]>;
                      truthy?: Clause<PrimitiveSelector["truthy"]>;
                      type: "&" | "|" | "!&" | "!|";
                  }

                  Type declaration

                  • Optional !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                  • Optional !defined?: Clause<PrimitiveSelector["defined"]>
                  • Optional !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                  • Optional !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                  • Optional !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                  • Optional !guid?: Clause<PrimitiveSelector["guid"]>
                  • Optional !ilike?: Clause<PrimitiveSelector["ilike"]>
                  • Optional !imatch?: Clause<PrimitiveSelector["imatch"]>
                  • Optional !like?: Clause<PrimitiveSelector["like"]>
                  • Optional !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                  • Optional !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                  • Optional !match?: Clause<PrimitiveSelector["match"]>
                  • Optional !qref?: Selector["qref"]
                  • Optional !ref?: Clause<PrimitiveSelector["ref"]>
                  • Optional !selector?: Selector["selector"]
                  • Optional !tag?: Clause<PrimitiveSelector["tag"]>
                  • Optional !truthy?: Clause<PrimitiveSelector["truthy"]>
                  • Optional contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                  • Optional defined?: Clause<PrimitiveSelector["defined"]>
                  • Optional equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                  • Optional gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                  • Optional gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                  • Optional guid?: Clause<PrimitiveSelector["guid"]>
                  • Optional ilike?: Clause<PrimitiveSelector["ilike"]>
                  • Optional imatch?: Clause<PrimitiveSelector["imatch"]>
                  • Optional like?: Clause<PrimitiveSelector["like"]>
                  • Optional lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                  • Optional lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                  • Optional match?: Clause<PrimitiveSelector["match"]>
                  • Optional qref?: Clause<[string, [Options, ...Selector[]]]>
                  • Optional ref?: Clause<PrimitiveSelector["ref"]>
                  • Optional selector?: Clause<Selector>
                  • Optional tag?: Clause<PrimitiveSelector["tag"]>
                  • Optional truthy?: Clause<PrimitiveSelector["truthy"]>
                  • type: "&" | "|" | "!&" | "!|"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.SerializedEntityData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.SerializedEntityData.html new file mode 100644 index 0000000..d76cfa0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_nymph.SerializedEntityData.html @@ -0,0 +1 @@ +SerializedEntityData | Nymph.js 1.0.0-beta.81
                  SerializedEntityData: {
                      [k: string]: string;
                  }

                  Type declaration

                  • [k: string]: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.AuthenticateMessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.AuthenticateMessageData.html new file mode 100644 index 0000000..fd3e085 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.AuthenticateMessageData.html @@ -0,0 +1 @@ +AuthenticateMessageData | Nymph.js 1.0.0-beta.81
                  AuthenticateMessageData: {
                      action: "authenticate";
                      authToken: string;
                      switchToken?: string;
                  }

                  Type declaration

                  • action: "authenticate"
                  • authToken: string
                  • Optional switchToken?: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.MessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.MessageData.html new file mode 100644 index 0000000..5e8e7b0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.MessageData.html @@ -0,0 +1 @@ +MessageData | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.MessageOptions.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.MessageOptions.html new file mode 100644 index 0000000..e7f766d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.MessageOptions.html @@ -0,0 +1 @@ +MessageOptions | Nymph.js 1.0.0-beta.81
                  MessageOptions: Options & {
                      class: string;
                  }

                  Type declaration

                  • class: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishEntityMessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishEntityMessageData.html new file mode 100644 index 0000000..999061d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishEntityMessageData.html @@ -0,0 +1 @@ +PublishEntityMessageData | Nymph.js 1.0.0-beta.81
                  PublishEntityMessageData: {
                      action: "publish";
                      entity?: EntityJson;
                      etype: string;
                      event: "create" | "update" | "delete";
                      guid: string;
                  }

                  Type declaration

                  • action: "publish"
                  • Optional entity?: EntityJson
                  • etype: string
                  • event: "create" | "update" | "delete"
                  • guid: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishMessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishMessageData.html new file mode 100644 index 0000000..2a4a1d8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishMessageData.html @@ -0,0 +1 @@ +PublishMessageData | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishUidMessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishUidMessageData.html new file mode 100644 index 0000000..da60a1a --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.PublishUidMessageData.html @@ -0,0 +1 @@ +PublishUidMessageData | Nymph.js 1.0.0-beta.81
                  PublishUidMessageData: {
                      action: "publish";
                      event: "newUID" | "setUID" | "renameUID" | "deleteUID";
                      name?: string;
                      newName?: string;
                      oldName?: string;
                      value?: number;
                  }

                  Type declaration

                  • action: "publish"
                  • event: "newUID" | "setUID" | "renameUID" | "deleteUID"
                  • Optional name?: string
                  • Optional newName?: string
                  • Optional oldName?: string
                  • Optional value?: number
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.QuerySubscribeMessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.QuerySubscribeMessageData.html new file mode 100644 index 0000000..2c62232 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.QuerySubscribeMessageData.html @@ -0,0 +1 @@ +QuerySubscribeMessageData | Nymph.js 1.0.0-beta.81
                  QuerySubscribeMessageData: {
                      action: "subscribe" | "unsubscribe";
                      count?: boolean;
                      query: string;
                  }

                  Type declaration

                  • action: "subscribe" | "unsubscribe"
                  • Optional count?: boolean
                  • query: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.QuerySubscriptionData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.QuerySubscriptionData.html new file mode 100644 index 0000000..713c4d1 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.QuerySubscriptionData.html @@ -0,0 +1,3 @@ +QuerySubscriptionData | Nymph.js 1.0.0-beta.81
                  QuerySubscriptionData: {
                      count: boolean;
                      current: string[];
                      direct: boolean;
                      qrefParents: {
                          etype: string;
                          query: string;
                      }[];
                      query: string;
                  }

                  Type declaration

                  • count: boolean
                  • current: string[]
                  • direct: boolean

                    This means the user directly subscribed to this query, as opposed +to indirectly subscribing with a qref clause.

                    +
                  • qrefParents: {
                        etype: string;
                        query: string;
                    }[]
                  • query: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.SubscribeMessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.SubscribeMessageData.html new file mode 100644 index 0000000..905f2f5 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.SubscribeMessageData.html @@ -0,0 +1 @@ +SubscribeMessageData | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.UidSubscribeMessageData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.UidSubscribeMessageData.html new file mode 100644 index 0000000..6bf8585 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_pubsub.UidSubscribeMessageData.html @@ -0,0 +1 @@ +UidSubscribeMessageData | Nymph.js 1.0.0-beta.81
                  UidSubscribeMessageData: {
                      action: "subscribe" | "unsubscribe";
                      count?: boolean;
                      uid: string;
                  }

                  Type declaration

                  • action: "subscribe" | "unsubscribe"
                  • Optional count?: boolean
                  • uid: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_query_parser.BareQueryHandler.html b/docs/api/1.0.0-beta.81/types/_nymphjs_query_parser.BareQueryHandler.html new file mode 100644 index 0000000..bd2c064 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_query_parser.BareQueryHandler.html @@ -0,0 +1 @@ +BareQueryHandler | Nymph.js 1.0.0-beta.81
                  BareQueryHandler: ((input, entityClass?, defaultFields?) => Partial<Selector>)

                  Type declaration

                    • (input, entityClass?, defaultFields?): Partial<Selector>
                    • Parameters

                      Returns Partial<Selector>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_query_parser.QRefMap.html b/docs/api/1.0.0-beta.81/types/_nymphjs_query_parser.QRefMap.html new file mode 100644 index 0000000..3c5678d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_query_parser.QRefMap.html @@ -0,0 +1 @@ +QRefMap | Nymph.js 1.0.0-beta.81
                  QRefMap: {
                      [k: string]: {
                          class: EntityConstructor;
                          defaultFields?: string[];
                      };
                  }

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_sorter.SortOptions.html b/docs/api/1.0.0-beta.81/types/_nymphjs_sorter.SortOptions.html new file mode 100644 index 0000000..56a2d19 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_sorter.SortOptions.html @@ -0,0 +1,5 @@ +SortOptions | Nymph.js 1.0.0-beta.81
                  SortOptions: {
                      caseSensitive?: boolean;
                      collatorOptions?: Intl.CollatorOptions;
                      comparator?: ((a, b) => number);
                      reverse?: boolean;
                  }

                  Type declaration

                  • Optional caseSensitive?: boolean

                    Sort case sensitively.

                    +
                  • Optional collatorOptions?: Intl.CollatorOptions

                    Options to pass to Intl.Collator for string comparisons. This overrides the caseSensitive options.

                    +
                  • Optional comparator?: ((a, b) => number)

                    A custom comparator to use. This overrides all other options except reverse.

                    +
                      • (a, b): number
                      • Parameters

                        • a: any
                        • b: any

                        Returns number

                  • Optional reverse?: boolean

                    Reverse the sort order.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.AccessControlData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.AccessControlData.html new file mode 100644 index 0000000..1ee995c --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.AccessControlData.html @@ -0,0 +1 @@ +AccessControlData | Nymph.js 1.0.0-beta.81
                  AccessControlData: {
                      acFull?: (User & UserData | Group & GroupData)[];
                      acGroup?: number;
                      acOther?: number;
                      acRead?: (User & UserData | Group & GroupData)[];
                      acUser?: number;
                      acWrite?: (User & UserData | Group & GroupData)[];
                      group?: Group & GroupData;
                      user?: User & UserData;
                  }

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.EventType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.EventType.html new file mode 100644 index 0000000..8e9330e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.EventType.html @@ -0,0 +1 @@ +EventType | Nymph.js 1.0.0-beta.81
                  EventType: "checkUsername" | "beforeRegister" | "afterRegister" | "beforeLogin" | "afterLogin" | "beforeLogout" | "afterLogout"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.GroupData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.GroupData.html new file mode 100644 index 0000000..9820e02 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.GroupData.html @@ -0,0 +1,13 @@ +GroupData | Nymph.js 1.0.0-beta.81
                  GroupData: {
                      abilities?: string[];
                      avatar?: string;
                      defaultPrimary?: boolean;
                      defaultSecondary?: boolean;
                      email?: string;
                      enabled?: boolean;
                      groupname?: string;
                      name?: string;
                      parent?: Group & GroupData;
                      phone?: string;
                      unverifiedSecondary?: boolean;
                      user?: User & UserData | null;
                  }

                  Type declaration

                  • Optional abilities?: string[]

                    The abilities granted to the group.

                    +
                  • Optional avatar?: string

                    The group's avatar URL. (Use getAvatar() to support Gravatar.)

                    +
                  • Optional defaultPrimary?: boolean

                    Whether this group is the default primary group for new users.

                    +
                  • Optional defaultSecondary?: boolean

                    Whether this group is a default secondary group for new users.

                    +
                  • Optional email?: string

                    The group's email address.

                    +
                  • Optional enabled?: boolean

                    Whether the group can be used.

                    +
                  • Optional groupname?: string

                    The group's groupname.

                    +
                  • Optional name?: string

                    The group's name.

                    +
                  • Optional parent?: Group & GroupData

                    The group's parent.

                    +
                  • Optional phone?: string

                    The group's telephone number.

                    +
                  • Optional unverifiedSecondary?: boolean

                    Whether this group is a default secondary group for unverified users.

                    +
                  • Optional user?: User & UserData | null

                    If generatePrimary is on, this will be the user who generated this group.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterLoginCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterLoginCallback.html new file mode 100644 index 0000000..94de1f0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterLoginCallback.html @@ -0,0 +1,3 @@ +TilmeldAfterLoginCallback | Nymph.js 1.0.0-beta.81
                  TilmeldAfterLoginCallback: ((user) => Promise<void>)

                  This is run before the transaction is committed, and you can perform +additional functions on the transaction, which is available in user.$nymph.

                  +

                  Type declaration

                    • (user): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterLogoutCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterLogoutCallback.html new file mode 100644 index 0000000..ed191ef --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterLogoutCallback.html @@ -0,0 +1 @@ +TilmeldAfterLogoutCallback | Nymph.js 1.0.0-beta.81
                  TilmeldAfterLogoutCallback: ((user) => Promise<void>)

                  Type declaration

                    • (user): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterRegisterCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterRegisterCallback.html new file mode 100644 index 0000000..6c4325f --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldAfterRegisterCallback.html @@ -0,0 +1 @@ +TilmeldAfterRegisterCallback | Nymph.js 1.0.0-beta.81
                  TilmeldAfterRegisterCallback: ((user, result) => Promise<void>)

                  Type declaration

                    • (user, result): Promise<void>
                    • Parameters

                      • user: User & UserData
                      • result: {
                            loggedin: boolean;
                            message: string;
                        }
                        • loggedin: boolean
                        • message: string

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeLoginCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeLoginCallback.html new file mode 100644 index 0000000..2dd5eb0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeLoginCallback.html @@ -0,0 +1,2 @@ +TilmeldBeforeLoginCallback | Nymph.js 1.0.0-beta.81
                  TilmeldBeforeLoginCallback: ((user, data) => Promise<void>)

                  These are run after the authentication checks, but before the login action.

                  +

                  Type declaration

                    • (user, data): Promise<void>
                    • Parameters

                      • user: User & UserData
                      • data: {
                            additionalData?: {
                                [k: string]: any;
                            };
                            password: string;
                            username: string;
                        }
                        • Optional additionalData?: {
                              [k: string]: any;
                          }
                          • [k: string]: any
                        • password: string
                        • username: string

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeLogoutCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeLogoutCallback.html new file mode 100644 index 0000000..1f0024f --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeLogoutCallback.html @@ -0,0 +1 @@ +TilmeldBeforeLogoutCallback | Nymph.js 1.0.0-beta.81
                  TilmeldBeforeLogoutCallback: ((user) => Promise<void>)

                  Type declaration

                    • (user): Promise<void>
                    • Parameters

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeRegisterCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeRegisterCallback.html new file mode 100644 index 0000000..47b9287 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldBeforeRegisterCallback.html @@ -0,0 +1,3 @@ +TilmeldBeforeRegisterCallback | Nymph.js 1.0.0-beta.81
                  TilmeldBeforeRegisterCallback: ((user, data) => Promise<void>)

                  Theses are run before the user data checks, so the only checks before are +whether registration is allowed and whether the user is already registered.

                  +

                  Type declaration

                    • (user, data): Promise<void>
                    • Parameters

                      • user: User & UserData
                      • data: {
                            additionalData?: {
                                [k: string]: any;
                            };
                            password: string;
                        }
                        • Optional additionalData?: {
                              [k: string]: any;
                          }
                          • [k: string]: any
                        • password: string

                      Returns Promise<void>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldCheckUsernameCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldCheckUsernameCallback.html new file mode 100644 index 0000000..dbd0535 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.TilmeldCheckUsernameCallback.html @@ -0,0 +1,4 @@ +TilmeldCheckUsernameCallback | Nymph.js 1.0.0-beta.81
                  TilmeldCheckUsernameCallback: ((user, data) => Promise<{
                      message?: string;
                      result: boolean;
                  }>)

                  This is run when the user has entered an otherwise valid username into the +signup form. It should return a result, which when false will stop the +process and return the included message, disallowing the username.

                  +

                  Type declaration

                    • (user, data): Promise<{
                          message?: string;
                          result: boolean;
                      }>
                    • Parameters

                      • user: User & UserData
                      • data: {
                            username: string;
                        }
                        • username: string

                      Returns Promise<{
                          message?: string;
                          result: boolean;
                      }>

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.UserData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.UserData.html new file mode 100644 index 0000000..6f84aaf --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld.UserData.html @@ -0,0 +1,31 @@ +UserData | Nymph.js 1.0.0-beta.81
                  UserData: {
                      abilities?: string[];
                      avatar?: string;
                      cancelEmailAddress?: string;
                      cancelEmailSecret?: string;
                      email?: string;
                      emailChangeDate?: number;
                      enabled?: boolean;
                      group?: Group & GroupData;
                      groups?: (Group & GroupData)[];
                      inheritAbilities?: boolean;
                      name?: string;
                      nameFirst?: string;
                      nameLast?: string;
                      nameMiddle?: string;
                      newEmailAddress?: string;
                      newEmailSecret?: string;
                      password?: string;
                      passwordTemp?: string;
                      phone?: string;
                      recoverSecret?: string;
                      recoverSecretDate?: number;
                      revokeTokenDate?: number;
                      salt?: string;
                      secret?: string;
                      totpSecret?: string;
                      username?: string;
                  }

                  Type declaration

                  • Optional abilities?: string[]

                    The abilities granted to the user.

                    +
                  • Optional avatar?: string

                    The user's avatar URL. (Use $getAvatar() to support Gravatar.)

                    +
                  • Optional cancelEmailAddress?: string

                    The old email address.

                    +
                  • Optional cancelEmailSecret?: string

                    An email change cancellation secret.

                    +
                  • Optional email?: string

                    The user's email address.

                    +
                  • Optional emailChangeDate?: number

                    The timestamp of when the email address was last changed.

                    +
                  • Optional enabled?: boolean

                    Whether the user can log in.

                    +
                  • Optional group?: Group & GroupData

                    The user's primary group.

                    +
                  • Optional groups?: (Group & GroupData)[]

                    The user's secondary groups.

                    +
                  • Optional inheritAbilities?: boolean

                    Whether the user should inherit the abilities of his groups.

                    +
                  • Optional name?: string

                    The user's full name. This is generated from the first, middle, and last +names.

                    +
                  • Optional nameFirst?: string

                    The user's first name.

                    +
                  • Optional nameLast?: string

                    The user's last name.

                    +
                  • Optional nameMiddle?: string

                    The user's middle name.

                    +
                  • Optional newEmailAddress?: string

                    If the user has changed their email address, this is the new one, awaiting +verification.

                    +
                  • Optional newEmailSecret?: string

                    An email change proceed secret.

                    +
                  • Optional password?: string

                    The password or password hash.

                    +
                  • Optional passwordTemp?: string

                    Temporary storage for passwords. This will be hashed before going into the +database.

                    +
                  • Optional phone?: string

                    The user's telephone number.

                    +
                  • Optional recoverSecret?: string

                    A recovery secret.

                    +
                  • Optional recoverSecretDate?: number

                    The timestamp of when the recovery secret was issued.

                    +
                  • Optional revokeTokenDate?: number

                    If set, this timestamp is the cutoff point for JWT issue dates. Any token +issued before this date will not authenticate the user.

                    +
                  • Optional salt?: string

                    The password hash salt.

                    +
                  • Optional secret?: string

                    A verification secret.

                    +
                  • Optional totpSecret?: string

                    Two factor auth secret.

                    +
                  • Optional username?: string

                    The user's username.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.AdminGroupData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.AdminGroupData.html new file mode 100644 index 0000000..2050052 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.AdminGroupData.html @@ -0,0 +1 @@ +AdminGroupData | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.AdminUserData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.AdminUserData.html new file mode 100644 index 0000000..65ff85c --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.AdminUserData.html @@ -0,0 +1,14 @@ +AdminUserData | Nymph.js 1.0.0-beta.81
                  AdminUserData: CurrentUserData & {
                      cancelEmailAddress?: string;
                      cancelEmailSecret?: string;
                      emailChangeDate?: number;
                      group?: Group & AdminGroupData;
                      groups?: (Group & AdminGroupData)[];
                      newEmailAddress?: string;
                      newEmailSecret?: string;
                      passwordTemp?: string;
                      recoverSecret?: string;
                      recoverSecretDate?: number;
                      revokeTokenDate?: number;
                      secret?: string;
                  }

                  Type declaration

                  • Optional cancelEmailAddress?: string

                    The old email address.

                    +
                  • Optional cancelEmailSecret?: string

                    An email change cancellation secret.

                    +
                  • Optional emailChangeDate?: number

                    The timestamp of when the email address was last changed.

                    +
                  • Optional group?: Group & AdminGroupData

                    The user's primary group.

                    +
                  • Optional groups?: (Group & AdminGroupData)[]

                    The user's secondary groups.

                    +
                  • Optional newEmailAddress?: string

                    The new email address.

                    +
                  • Optional newEmailSecret?: string

                    An email change proceed secret.

                    +
                  • Optional passwordTemp?: string

                    Used by admins to change a user's password. Not saved to the database.

                    +
                  • Optional recoverSecret?: string

                    A recovery secret.

                    +
                  • Optional recoverSecretDate?: number

                    The timestamp of when the recovery secret was issued.

                    +
                  • Optional revokeTokenDate?: number

                    If set, this timestamp is the cutoff point for JWT issue dates. Any token +issued before this date will not authenticate the user.

                    +
                  • Optional secret?: string

                    A verification secret.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.ClientConfig.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.ClientConfig.html new file mode 100644 index 0000000..fad263d --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.ClientConfig.html @@ -0,0 +1 @@ +ClientConfig | Nymph.js 1.0.0-beta.81
                  ClientConfig: {
                      allowRegistration: boolean;
                      allowUsernameChange: boolean;
                      emailUsernames: boolean;
                      pwRecovery: boolean;
                      regFields: string[];
                      unverifiedAccess: boolean;
                      userFields: string[];
                      verifyEmail: boolean;
                  }

                  Type declaration

                  • allowRegistration: boolean
                  • allowUsernameChange: boolean
                  • emailUsernames: boolean
                  • pwRecovery: boolean
                  • regFields: string[]
                  • unverifiedAccess: boolean
                  • userFields: string[]
                  • verifyEmail: boolean
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.CurrentGroupData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.CurrentGroupData.html new file mode 100644 index 0000000..e33f198 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.CurrentGroupData.html @@ -0,0 +1,5 @@ +CurrentGroupData | Nymph.js 1.0.0-beta.81
                  CurrentGroupData: GroupData & {
                      abilities?: string[];
                      email?: string;
                      phone?: string;
                      user?: User & CurrentUserData | null;
                  }

                  Type declaration

                  • Optional abilities?: string[]

                    The abilities granted to the group.

                    +
                  • Optional email?: string

                    The group's email address.

                    +
                  • Optional phone?: string

                    The group's telephone number.

                    +
                  • Optional user?: User & CurrentUserData | null

                    If generatePrimary is on, this will be the user who generated this group.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.CurrentUserData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.CurrentUserData.html new file mode 100644 index 0000000..011dff9 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.CurrentUserData.html @@ -0,0 +1,9 @@ +CurrentUserData | Nymph.js 1.0.0-beta.81
                  CurrentUserData: UserData & {
                      abilities?: string[];
                      email?: string;
                      group?: Group & CurrentGroupData;
                      groups?: (Group & CurrentGroupData)[];
                      inheritAbilities?: boolean;
                      newEmailAddress?: string;
                      phone?: string;
                  }

                  Type declaration

                  • Optional abilities?: string[]

                    The abilities granted to the user.

                    +
                  • Optional email?: string

                    The user's email address.

                    +
                  • Optional group?: Group & CurrentGroupData

                    The user's primary group.

                    +
                  • Optional groups?: (Group & CurrentGroupData)[]

                    The user's secondary groups.

                    +
                  • Optional inheritAbilities?: boolean

                    Whether the user should inherit the abilities of his groups.

                    +
                  • Optional newEmailAddress?: string

                    If the user has changed their email address, this is the new one, awaiting +verification.

                    +
                  • Optional phone?: string

                    The user's telephone number.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.EventType.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.EventType.html new file mode 100644 index 0000000..25717cd --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.EventType.html @@ -0,0 +1 @@ +EventType | Nymph.js 1.0.0-beta.81
                  EventType: "register" | "login" | "logout"
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.GroupData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.GroupData.html new file mode 100644 index 0000000..803861f --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.GroupData.html @@ -0,0 +1,9 @@ +GroupData | Nymph.js 1.0.0-beta.81
                  GroupData: {
                      avatar?: string;
                      defaultPrimary?: boolean;
                      defaultSecondary?: boolean;
                      enabled?: boolean;
                      groupname?: string;
                      name?: string;
                      parent?: Group & GroupData;
                      unverifiedSecondary?: boolean;
                  }

                  Type declaration

                  • Optional avatar?: string

                    The group's avatar URL. (Use getAvatar() to support Gravatar.)

                    +
                  • Optional defaultPrimary?: boolean

                    Whether this group is the default primary group for new users.

                    +
                  • Optional defaultSecondary?: boolean

                    Whether this group is a default secondary group for new users.

                    +
                  • Optional enabled?: boolean

                    Whether the group can be used.

                    +
                  • Optional groupname?: string

                    The group's groupname.

                    +
                  • Optional name?: string

                    The group's name.

                    +
                  • Optional parent?: Group & GroupData

                    The group's parent.

                    +
                  • Optional unverifiedSecondary?: boolean

                    Whether this group is a default secondary group for unverified users.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.LoginCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.LoginCallback.html new file mode 100644 index 0000000..36f5f09 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.LoginCallback.html @@ -0,0 +1 @@ +LoginCallback | Nymph.js 1.0.0-beta.81
                  LoginCallback: ((user) => void)

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.LogoutCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.LogoutCallback.html new file mode 100644 index 0000000..ed24d2e --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.LogoutCallback.html @@ -0,0 +1 @@ +LogoutCallback | Nymph.js 1.0.0-beta.81
                  LogoutCallback: ((user) => void)

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.RegisterCallback.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.RegisterCallback.html new file mode 100644 index 0000000..26cacad --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.RegisterCallback.html @@ -0,0 +1 @@ +RegisterCallback | Nymph.js 1.0.0-beta.81
                  RegisterCallback: ((user) => void)

                  Type declaration

                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.RegistrationDetails.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.RegistrationDetails.html new file mode 100644 index 0000000..00eb281 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.RegistrationDetails.html @@ -0,0 +1,10 @@ +RegistrationDetails | Nymph.js 1.0.0-beta.81
                  RegistrationDetails: {
                      additionalData?: {
                          [k: string]: any;
                      };
                      email?: string;
                      nameFirst?: string;
                      nameLast?: string;
                      password: string;
                      password2: string;
                      phone?: string;
                      username: string;
                      usernameVerified: boolean;
                  }

                  Type declaration

                  • Optional additionalData?: {
                        [k: string]: any;
                    }

                    Additional data to be included in the request.

                    +
                    • [k: string]: any
                  • Optional email?: string

                    The new user's email address.

                    +
                  • Optional nameFirst?: string

                    The new user's given name.

                    +
                  • Optional nameLast?: string

                    The new user's surname.

                    +
                  • password: string

                    New user's password.

                    +
                  • password2: string

                    Repeat the password.

                    +
                  • Optional phone?: string

                    The new user's phone number.

                    +
                  • username: string

                    New user's username.

                    +
                  • usernameVerified: boolean

                    Whether the username passed verification.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.UserData.html b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.UserData.html new file mode 100644 index 0000000..67f1230 --- /dev/null +++ b/docs/api/1.0.0-beta.81/types/_nymphjs_tilmeld_client.UserData.html @@ -0,0 +1,8 @@ +UserData | Nymph.js 1.0.0-beta.81
                  UserData: {
                      avatar?: string;
                      enabled?: boolean;
                      name?: string;
                      nameFirst?: string;
                      nameLast?: string;
                      nameMiddle?: string;
                      username?: string;
                  }

                  Type declaration

                  • Optional avatar?: string

                    The user's avatar URL. (Use $getAvatar() to support Gravatar.)

                    +
                  • Optional enabled?: boolean

                    Whether the user can log in.

                    +
                  • Optional name?: string

                    The user's full name.

                    +
                  • Optional nameFirst?: string

                    The user's first name.

                    +
                  • Optional nameLast?: string

                    The user's last name.

                    +
                  • Optional nameMiddle?: string

                    The user's middle name.

                    +
                  • Optional username?: string

                    The user's username.

                    +
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_mysql.MySQLDriverConfigDefaults.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_mysql.MySQLDriverConfigDefaults.html new file mode 100644 index 0000000..d88e537 --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_mysql.MySQLDriverConfigDefaults.html @@ -0,0 +1 @@ +MySQLDriverConfigDefaults | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_postgresql.PostgreSQLDriverConfigDefaults.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_postgresql.PostgreSQLDriverConfigDefaults.html new file mode 100644 index 0000000..2fd87b0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_postgresql.PostgreSQLDriverConfigDefaults.html @@ -0,0 +1 @@ +PostgreSQLDriverConfigDefaults | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_sqlite3.SQLite3DriverConfigDefaults.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_sqlite3.SQLite3DriverConfigDefaults.html new file mode 100644 index 0000000..2e3c9dc --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_driver_sqlite3.SQLite3DriverConfigDefaults.html @@ -0,0 +1 @@ +SQLite3DriverConfigDefaults | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_nymph.ConfigDefaults.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_nymph.ConfigDefaults.html new file mode 100644 index 0000000..f75b4db --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_nymph.ConfigDefaults.html @@ -0,0 +1 @@ +ConfigDefaults | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_nymph.nymphJoiProps.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_nymph.nymphJoiProps.html new file mode 100644 index 0000000..859b2b3 --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_nymph.nymphJoiProps.html @@ -0,0 +1 @@ +nymphJoiProps | Nymph.js 1.0.0-beta.81
                  nymphJoiProps: {
                      cdate: AlternativesSchema<any>;
                      guid: AlternativesSchema<any>;
                      mdate: AlternativesSchema<any>;
                      tags: ArraySchema<any[]>;
                  }

                  Type declaration

                  • cdate: AlternativesSchema<any>
                  • guid: AlternativesSchema<any>
                  • mdate: AlternativesSchema<any>
                  • tags: ArraySchema<any[]>
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_pubsub.ConfigDefaults.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_pubsub.ConfigDefaults.html new file mode 100644 index 0000000..6974624 --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_pubsub.ConfigDefaults.html @@ -0,0 +1 @@ +ConfigDefaults | Nymph.js 1.0.0-beta.81
                  ConfigDefaults: Config
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_server.statusDescriptions.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_server.statusDescriptions.html new file mode 100644 index 0000000..655eca0 --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_server.statusDescriptions.html @@ -0,0 +1,2 @@ +statusDescriptions | Nymph.js 1.0.0-beta.81
                  statusDescriptions: {
                      [k: number]: string;
                  } = ...

                  HTTP status code to status text map.

                  +

                  Type declaration

                  • [k: number]: string
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_tilmeld.ConfigDefaults.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_tilmeld.ConfigDefaults.html new file mode 100644 index 0000000..1dda4f8 --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_tilmeld.ConfigDefaults.html @@ -0,0 +1 @@ +ConfigDefaults | Nymph.js 1.0.0-beta.81
                  \ No newline at end of file diff --git a/docs/api/1.0.0-beta.81/variables/_nymphjs_tilmeld.tilmeldJoiProps.html b/docs/api/1.0.0-beta.81/variables/_nymphjs_tilmeld.tilmeldJoiProps.html new file mode 100644 index 0000000..607ed07 --- /dev/null +++ b/docs/api/1.0.0-beta.81/variables/_nymphjs_tilmeld.tilmeldJoiProps.html @@ -0,0 +1 @@ +tilmeldJoiProps | Nymph.js 1.0.0-beta.81
                  tilmeldJoiProps: {
                      acFull: ArraySchema<any[]>;
                      acGroup: NumberSchema<number>;
                      acOther: NumberSchema<number>;
                      acRead: ArraySchema<any[]>;
                      acUser: NumberSchema<number>;
                      acWrite: ArraySchema<any[]>;
                      group: ObjectSchema<any>;
                      user: ObjectSchema<any>;
                  }

                  Type declaration

                  • acFull: ArraySchema<any[]>
                  • acGroup: NumberSchema<number>
                  • acOther: NumberSchema<number>
                  • acRead: ArraySchema<any[]>
                  • acUser: NumberSchema<number>
                  • acWrite: ArraySchema<any[]>
                  • group: ObjectSchema<any>
                  • user: ObjectSchema<any>
                  \ No newline at end of file diff --git a/docs/api/latest/assets/icons.js b/docs/api/latest/assets/icons.js new file mode 100644 index 0000000..b79c9e8 --- /dev/null +++ b/docs/api/latest/assets/icons.js @@ -0,0 +1,15 @@ +(function(svg) { + svg.innerHTML = ``; + svg.style.display = 'none'; + if (location.protocol === 'file:') { + if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', updateUseElements); + else updateUseElements() + function updateUseElements() { + document.querySelectorAll('use').forEach(el => { + if (el.getAttribute('href').includes('#icon-')) { + el.setAttribute('href', el.getAttribute('href').replace(/.*#/, '#')); + } + }); + } + } +})(document.body.appendChild(document.createElementNS('http://www.w3.org/2000/svg', 'svg'))) \ No newline at end of file diff --git a/docs/api/latest/assets/icons.svg b/docs/api/latest/assets/icons.svg new file mode 100644 index 0000000..7dead61 --- /dev/null +++ b/docs/api/latest/assets/icons.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/api/latest/assets/main.js b/docs/api/latest/assets/main.js index d0aa8d5..d6f1388 100644 --- a/docs/api/latest/assets/main.js +++ b/docs/api/latest/assets/main.js @@ -1,8 +1,8 @@ "use strict"; -"use strict";(()=>{var Pe=Object.create;var ne=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Ie(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Pe(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. -`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),v=s.str.charAt(1),f;v in s.node.edges?f=s.node.edges[v]:(f=new t.TokenSet,s.node.edges[v]=f),s.str.length==1&&(f.final=!0),i.push({node:f,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ne(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ve(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ne(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` - ${ce(l.parent,i)}.${d}`);let v=document.createElement("li");v.classList.value=l.classes??"";let f=document.createElement("a");f.href=r.base+l.url,f.innerHTML=u+d,v.append(f),e.appendChild(v)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ve(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var Be={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>Be[e])}var C=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",pe="mousemove",B="mouseup",J={x:0,y:0},fe=!1,ee=!1,He=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(He=!0,F="touchstart",pe="touchmove",B="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(pe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(B,()=>{ee=!1});document.addEventListener("click",t=>{fe&&(t.preventDefault(),t.stopImmediatePropagation(),fe=!1)});var X=class extends C{constructor(n){super(n);this.className=this.el.dataset.toggle||"",this.el.addEventListener(B,r=>this.onPointerUp(r)),this.el.addEventListener("click",r=>r.preventDefault()),document.addEventListener(F,r=>this.onDocumentPointerDown(r)),document.addEventListener(B,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){D||(this.setActive(!0),n.preventDefault())}onDocumentPointerDown(n){if(this.active){if(n.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(n){if(!D&&this.active&&n.target.closest(".col-sidebar")){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 te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ve=document.head.appendChild(document.createElement("style"));ve.dataset.for="filters";var Y=class extends C{constructor(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()),ve.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 Z=class extends C{constructor(n){super(n);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let r=Q.getItem(this.key);this.el.open=r?r==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let i=this.summary.querySelector("a");i&&i.addEventListener("click",()=>{location.assign(i.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.href===r.href&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); +"use strict";(()=>{var Ce=Object.create;var ne=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Oe=Object.getOwnPropertyNames;var _e=Object.getPrototypeOf,Re=Object.prototype.hasOwnProperty;var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Fe=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Oe(e))!Re.call(t,i)&&i!==n&&ne(t,i,{get:()=>e[i],enumerable:!(r=Pe(e,i))||r.enumerable});return t};var De=(t,e,n)=>(n=t!=null?Ce(_e(t)):{},Fe(e||!t||!t.__esModule?ne(n,"default",{value:t,enumerable:!0}):n,t));var ae=Me((se,oe)=>{(function(){var t=function(e){var n=new t.Builder;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),n.searchPipeline.add(t.stemmer),e.call(n,n),n.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(n){e.console&&console.warn&&console.warn(n)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var n=Object.create(null),r=Object.keys(e),i=0;i0){var d=t.utils.clone(n)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(r.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(r){var i=t.Pipeline.registeredFunctions[r];if(i)n.add(i);else throw new Error("Cannot load unregistered function: "+r)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(n){t.Pipeline.warnIfFunctionNotRegistered(n),this._stack.push(n)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");r=r+1,this._stack.splice(r,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var r=this._stack.indexOf(e);if(r==-1)throw new Error("Cannot find existingFn");this._stack.splice(r,0,n)},t.Pipeline.prototype.remove=function(e){var n=this._stack.indexOf(e);n!=-1&&this._stack.splice(n,1)},t.Pipeline.prototype.run=function(e){for(var n=this._stack.length,r=0;r1&&(oe&&(r=s),o!=e);)i=r-n,s=n+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ol?d+=2:a==l&&(n+=r[u+1]*i[d+1],u+=2,d+=2);return n},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),n=1,r=0;n0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),y=s.str.charAt(1),p;y in s.node.edges?p=s.node.edges[y]:(p=new t.TokenSet,s.node.edges[y]=p),s.str.length==1&&(p.final=!0),i.push({node:p,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return r},t.TokenSet.fromString=function(e){for(var n=new t.TokenSet,r=n,i=0,s=e.length;i=e;n--){var r=this.uncheckedNodes[n],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(n){var r=new t.QueryParser(e,n);r.parse()})},t.Index.prototype.query=function(e){for(var n=new t.Query(this.fields),r=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,n){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=n||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,n;do e=this.next(),n=e.charCodeAt(0);while(n>47&&n<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var n=e.next();if(n==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(n.charCodeAt(0)==92){e.escapeCharacter();continue}if(n==":")return t.QueryLexer.lexField;if(n=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(n=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(n=="+"&&e.width()===1||n=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(n.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,n){this.lexer=new t.QueryLexer(e),this.query=n,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var n=e.peekLexeme();if(n!=null)switch(n.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+n.type;throw n.str.length>=1&&(r+=" with value '"+n.str+"'"),new t.QueryParseError(r,n.start,n.end)}},t.QueryParser.parsePresence=function(e){var n=e.consumeLexeme();if(n!=null){switch(n.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+n.str+"'";throw new t.QueryParseError(r,n.start,n.end)}var i=e.peekLexeme();if(i==null){var r="expecting term or field, found nothing";throw new t.QueryParseError(r,n.start,n.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var r="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(r,i.start,i.end)}}},t.QueryParser.parseField=function(e){var n=e.consumeLexeme();if(n!=null){if(e.query.allFields.indexOf(n.str)==-1){var r=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+n.str+"', possible fields: "+r;throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.fields=[n.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,n.start,n.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var n=e.consumeLexeme();if(n!=null){e.currentClause.term=n.str.toLowerCase(),n.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(r==null){e.nextClause();return}switch(r.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new t.QueryParseError(i,r.start,r.end)}}},t.QueryParser.parseEditDistance=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.editDistance=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var n=e.consumeLexeme();if(n!=null){var r=parseInt(n.str,10);if(isNaN(r)){var i="boost must be numeric";throw new t.QueryParseError(i,n.start,n.end)}e.currentClause.boost=r;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,n){typeof define=="function"&&define.amd?define(n):typeof se=="object"?oe.exports=n():e.lunr=n()}(this,function(){return t})})()});var re=[];function G(t,e){re.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible()),document.body.style.display||(this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}createComponents(e){re.forEach(n=>{e.querySelectorAll(n.selector).forEach(r=>{r.dataset.hasInstance||(new n.constructor({el:r,app:this}),r.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}showPage(){document.body.style.display&&(console.log("Show page"),document.body.style.removeProperty("display"),this.ensureFocusedElementVisible(),this.updateIndexVisibility(),this.scrollToHash())}scrollToHash(){if(location.hash){console.log("Scorlling");let e=document.getElementById(location.hash.substring(1));if(!e)return;e.scrollIntoView({behavior:"instant",block:"start"})}}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),n=e?.parentElement;for(;n&&!n.classList.contains(".tsd-navigation");)n instanceof HTMLDetailsElement&&(n.open=!0),n=n.parentElement;if(e&&!e.checkVisibility()){let r=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=r}}updateIndexVisibility(){let e=document.querySelector(".tsd-index-content"),n=e?.open;e&&(e.open=!0),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let i=Array.from(r.querySelectorAll(".tsd-index-link")).every(s=>s.offsetParent==null);r.style.display=i?"none":"block"}),e&&(e.open=n)}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let n=e.parentElement;for(;n&&n.tagName!=="SECTION";)n=n.parentElement;if(n&&n.offsetParent==null){this.alwaysVisibleMember=n,n.classList.add("always-visible");let r=document.createElement("p");r.classList.add("warning"),r.textContent="This member is normally hidden due to your filter settings.",n.prepend(r)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let n;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(n),n=setTimeout(()=>{e.classList.remove("visible"),n=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let n;return()=>{clearTimeout(n),n=setTimeout(()=>t(),e)}};var de=De(ae());async function le(t,e){if(!window.searchData)return;let n=await fetch(window.searchData),r=new Blob([await n.arrayBuffer()]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();t.data=i,t.index=de.Index.load(i.index),e.classList.remove("loading"),e.classList.add("ready")}function he(){let t=document.getElementById("tsd-search");if(!t)return;let e={base:t.dataset.base+"/"},n=document.getElementById("tsd-search-script");t.classList.add("loading"),n&&(n.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),n.addEventListener("load",()=>{le(e,t)}),le(e,t));let r=document.querySelector("#tsd-search input"),i=document.querySelector("#tsd-search .results");if(!r||!i)throw new Error("The input field or the result list wrapper was not found");let s=!1;i.addEventListener("mousedown",()=>s=!0),i.addEventListener("mouseup",()=>{s=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{s||(s=!1,t.classList.remove("has-focus"))}),Ae(t,i,r,e)}function Ae(t,e,n,r){n.addEventListener("input",ie(()=>{Ve(t,e,n,r)},200));let i=!1;n.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Ne(e,n):s.key=="Escape"?n.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),n.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!n.matches(":focus")&&s.key==="/"&&(n.focus(),s.preventDefault())})}function Ve(t,e,n,r){if(!r.index||!r.data)return;e.textContent="";let i=n.value.trim(),s;if(i){let o=i.split(" ").map(a=>a.length?`*${a}*`:"").join(" ");s=r.index.search(o)}else s=[];for(let o=0;oa.score-o.score);for(let o=0,a=Math.min(10,s.length);o`,d=ce(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(d+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(d=` + ${ce(l.parent,i)}.${d}`);let y=document.createElement("li");y.classList.value=l.classes??"";let p=document.createElement("a");p.href=r.base+l.url,p.innerHTML=u+d,y.append(p),e.appendChild(y)}}function ue(t,e){let n=t.querySelector(".current");if(!n)n=t.querySelector(e==1?"li:first-child":"li:last-child"),n&&n.classList.add("current");else{let r=n;if(e===1)do r=r.nextElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);else do r=r.previousElementSibling??void 0;while(r instanceof HTMLElement&&r.offsetParent==null);r&&(n.classList.remove("current"),r.classList.add("current"))}}function Ne(t,e){let n=t.querySelector(".current");if(n||(n=t.querySelector("li:first-child")),n){let r=n.querySelector("a");r&&(window.location.href=r.href),e.blur()}}function ce(t,e){if(e==="")return t;let n=t.toLocaleLowerCase(),r=e.toLocaleLowerCase(),i=[],s=0,o=n.indexOf(r);for(;o!=-1;)i.push(K(t.substring(s,o)),`${K(t.substring(o,o+r.length))}`),s=o+r.length,o=n.indexOf(r,s);return i.push(K(t.substring(s))),i.join("")}var He={"&":"&","<":"<",">":">","'":"'",'"':"""};function K(t){return t.replace(/[&<>"'"]/g,e=>He[e])}var I=class{constructor(e){this.el=e.el,this.app=e.app}};var F="mousedown",fe="mousemove",H="mouseup",J={x:0,y:0},pe=!1,ee=!1,Be=!1,D=!1,me=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(me?"is-mobile":"not-mobile");me&&"ontouchstart"in document.documentElement&&(Be=!0,F="touchstart",fe="touchmove",H="touchend");document.addEventListener(F,t=>{ee=!0,D=!1;let e=F=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=F=="touchstart"?t.targetTouches[0]:t,n=J.x-(e.pageX||0),r=J.y-(e.pageY||0);D=Math.sqrt(n*n+r*r)>10}});document.addEventListener(H,()=>{ee=!1});document.addEventListener("click",t=>{pe&&(t.preventDefault(),t.stopImmediatePropagation(),pe=!1)});var X=class extends I{constructor(e){super(e),this.className=this.el.dataset.toggle||"",this.el.addEventListener(H,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(F,n=>this.onDocumentPointerDown(n)),document.addEventListener(H,n=>this.onDocumentPointerUp(n))}setActive(e){if(this.active==e)return;this.active=e,document.documentElement.classList.toggle("has-"+this.className,e),this.el.classList.toggle("active",e);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(e){D||(this.setActive(!0),e.preventDefault())}onDocumentPointerDown(e){if(this.active){if(e.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(e){if(!D&&this.active&&e.target.closest(".col-sidebar")){let n=e.target.closest("a");if(n){let r=window.location.href;r.indexOf("#")!=-1&&(r=r.substring(0,r.indexOf("#"))),n.href.substring(0,r.length)==r&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var ye=document.head.appendChild(document.createElement("style"));ye.dataset.for="filters";var Y=class extends I{constructor(e){super(e),this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),ye.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; } +`,this.app.updateIndexVisibility()}fromLocalStorage(){let e=Q.getItem(this.key);return e?e==="true":this.el.checked}setLocalStorage(e){Q.setItem(this.key,e.toString()),this.value=e,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),this.app.updateIndexVisibility()}};var Z=class extends I{constructor(e){super(e),this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update());let r=this.summary.querySelector("a");r&&r.addEventListener("click",()=>{location.assign(r.href)}),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ge(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ve(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ve(t.value)})}function ve(t){document.documentElement.dataset.theme=t}var Le;function be(){let t=document.getElementById("tsd-nav-script");t&&(t.addEventListener("load",xe),xe())}async function xe(){let t=document.getElementById("tsd-nav-container");if(!t||!window.navigationData)return;let n=await(await fetch(window.navigationData)).arrayBuffer(),r=new Blob([n]).stream().pipeThrough(new DecompressionStream("gzip")),i=await new Response(r).json();Le=t.dataset.base+"/",t.innerHTML="";for(let s of i)we(s,t,[]);window.app.createComponents(t),window.app.showPage(),window.app.ensureActivePageVisible()}function we(t,e,n){let r=e.appendChild(document.createElement("li"));if(t.children){let i=[...n,t.text],s=r.appendChild(document.createElement("details"));s.className=t.class?`${t.class} tsd-index-accordion`:"tsd-index-accordion",s.dataset.key=i.join("$");let o=s.appendChild(document.createElement("summary"));o.className="tsd-accordion-summary",o.innerHTML='',Ee(t,o);let a=s.appendChild(document.createElement("div"));a.className="tsd-accordion-details";let l=a.appendChild(document.createElement("ul"));l.className="tsd-nested-navigation";for(let u of t.children)we(u,l,i)}else Ee(t,r,t.class)}function Ee(t,e,n){if(t.path){let r=e.appendChild(document.createElement("a"));r.href=Le+t.path,n&&(r.className=n),location.pathname===r.pathname&&r.classList.add("current"),t.kind&&(r.innerHTML=``),r.appendChild(document.createElement("span")).textContent=t.text}else e.appendChild(document.createElement("span")).textContent=t.text}G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var Se=document.getElementById("tsd-theme");Se&&ge(Se);var je=new U;Object.defineProperty(window,"app",{value:je});he();be();})(); /*! Bundled license information: lunr/lunr.js: diff --git a/docs/api/latest/assets/navigation.js b/docs/api/latest/assets/navigation.js index 64f257e..f9a8eff 100644 --- a/docs/api/latest/assets/navigation.js +++ b/docs/api/latest/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,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" \ No newline at end of file diff --git a/docs/api/latest/assets/search.js b/docs/api/latest/assets/search.js index bf0b46e..5a8f21d 100644 --- a/docs/api/latest/assets/search.js +++ b/docs/api/latest/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/api/latest/assets/style.css b/docs/api/latest/assets/style.css index 108428c..778b949 100644 --- a/docs/api/latest/assets/style.css +++ b/docs/api/latest/assets/style.css @@ -11,6 +11,7 @@ --light-color-text-aside: #6e6e6e; --light-color-link: #1f70c2; + --light-color-ts-keyword: #056bd6; --light-color-ts-project: #b111c9; --light-color-ts-module: var(--light-color-ts-project); --light-color-ts-namespace: var(--light-color-ts-project); @@ -28,7 +29,7 @@ --light-color-ts-constructor-signature: var(--light-color-ts-constructor); --light-color-ts-parameter: var(--light-color-ts-variable); /* type literal not included as links will never be generated to it */ - --light-color-ts-type-parameter: var(--light-color-ts-type-alias); + --light-color-ts-type-parameter: #a55c0e; --light-color-ts-accessor: var(--light-color-ts-property); --light-color-ts-get-signature: var(--light-color-ts-accessor); --light-color-ts-set-signature: var(--light-color-ts-accessor); @@ -50,6 +51,7 @@ --dark-color-text-aside: #dddddd; --dark-color-link: #00aff4; + --dark-color-ts-keyword: #3399ff; --dark-color-ts-project: #e358ff; --dark-color-ts-module: var(--dark-color-ts-project); --dark-color-ts-namespace: var(--dark-color-ts-project); @@ -67,7 +69,7 @@ --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor); --dark-color-ts-parameter: var(--dark-color-ts-variable); /* type literal not included as links will never be generated to it */ - --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias); + --dark-color-ts-type-parameter: #e07d13; --dark-color-ts-accessor: var(--dark-color-ts-property); --dark-color-ts-get-signature: var(--dark-color-ts-accessor); --dark-color-ts-set-signature: var(--dark-color-ts-accessor); @@ -91,6 +93,7 @@ --color-text-aside: var(--light-color-text-aside); --color-link: var(--light-color-link); + --color-ts-keyword: var(--light-color-ts-keyword); --color-ts-module: var(--light-color-ts-module); --color-ts-namespace: var(--light-color-ts-namespace); --color-ts-enum: var(--light-color-ts-enum); @@ -132,6 +135,7 @@ --color-text-aside: var(--dark-color-text-aside); --color-link: var(--dark-color-link); + --color-ts-keyword: var(--dark-color-ts-keyword); --color-ts-module: var(--dark-color-ts-module); --color-ts-namespace: var(--dark-color-ts-namespace); --color-ts-enum: var(--dark-color-ts-enum); @@ -180,6 +184,7 @@ body { --color-text-aside: var(--light-color-text-aside); --color-link: var(--light-color-link); + --color-ts-keyword: var(--light-color-ts-keyword); --color-ts-module: var(--light-color-ts-module); --color-ts-namespace: var(--light-color-ts-namespace); --color-ts-enum: var(--light-color-ts-enum); @@ -219,6 +224,7 @@ body { --color-text-aside: var(--dark-color-text-aside); --color-link: var(--dark-color-link); + --color-ts-keyword: var(--dark-color-ts-keyword); --color-ts-module: var(--dark-color-ts-module); --color-ts-namespace: var(--dark-color-ts-namespace); --color-ts-enum: var(--dark-color-ts-enum); @@ -260,12 +266,12 @@ h6 { line-height: 1.2; } -h1 > a, -h2 > a, -h3 > a, -h4 > a, -h5 > a, -h6 > a { +h1 > a:not(.link), +h2 > a:not(.link), +h3 > a:not(.link), +h4 > a:not(.link), +h5 > a:not(.link), +h6 > a:not(.link) { text-decoration: none; color: var(--color-text); } @@ -321,17 +327,14 @@ dd { } /* Footer */ -.tsd-generator { +footer { border-top: 1px solid var(--color-accent); padding-top: 1rem; padding-bottom: 1rem; max-height: 3.5rem; } - -.tsd-generator > p { - margin-top: 0; - margin-bottom: 0; - padding: 0 1rem; +.tsd-generator { + margin: 0 1em; } .container-main { @@ -399,7 +402,8 @@ dd { } body { background: var(--color-background); - font-family: "Segoe UI", sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 16px; color: var(--color-text); } @@ -643,6 +647,28 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { font-weight: bold; } +.tsd-full-hierarchy:not(:last-child) { + margin-bottom: 1em; + padding-bottom: 1em; + border-bottom: 1px solid var(--color-accent); +} +.tsd-full-hierarchy, +.tsd-full-hierarchy ul { + list-style: none; + margin: 0; + padding: 0; +} +.tsd-full-hierarchy ul { + padding-left: 1.5rem; +} +.tsd-full-hierarchy a { + padding: 0.25rem 0 !important; + font-size: 1rem; + display: inline-flex; + align-items: center; + color: var(--color-text); +} + .tsd-panel-group.tsd-index-group { margin-bottom: 0; } @@ -708,12 +734,15 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { } .tsd-navigation > a, .tsd-navigation .tsd-accordion-summary { - width: calc(100% - 0.5rem); + width: calc(100% - 0.25rem); + display: flex; + align-items: center; } .tsd-navigation a, .tsd-navigation summary > span, .tsd-page-navigation a { - display: inline-flex; + display: flex; + width: calc(100% - 0.25rem); align-items: center; padding: 0.25rem; color: var(--color-text); @@ -753,11 +782,6 @@ input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark { margin-left: -1.5rem; } -.tsd-nested-navigation > li > a, -.tsd-nested-navigation > li > span { - width: calc(100% - 1.75rem - 0.5rem); -} - .tsd-page-navigation ul { padding-left: 1.75rem; } @@ -984,6 +1008,11 @@ a.tsd-index-link { overflow-x: auto; } +.tsd-signature-keyword { + color: var(--color-ts-keyword); + font-weight: normal; +} + .tsd-signature-symbol { color: var(--color-text-aside); font-weight: normal; diff --git a/docs/api/latest/classes/_nymphjs_client.ClassNotAvailableError.html b/docs/api/latest/classes/_nymphjs_client.ClassNotAvailableError.html index e05f15a..37f4b18 100644 --- a/docs/api/latest/classes/_nymphjs_client.ClassNotAvailableError.html +++ b/docs/api/latest/classes/_nymphjs_client.ClassNotAvailableError.html @@ -1,11 +1,11 @@ -ClassNotAvailableError | Nymph.js 1.0.0-beta.61

                  Hierarchy

                  • Error
                    • ClassNotAvailableError

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Type declaration

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    -

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  Generated using TypeDoc

                  \ No newline at end of file +ClassNotAvailableError | Nymph.js 1.0.0-beta.81

                  Hierarchy

                  • Error
                    • ClassNotAvailableError

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Optional override for formatting stack traces

                  +

                  Type declaration

                    • (err, stackTraces): any
                    • Parameters

                      • err: Error
                      • stackTraces: CallSite[]

                      Returns any

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    +

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.ClientError.html b/docs/api/latest/classes/_nymphjs_client.ClientError.html index c808339..ba524c3 100644 --- a/docs/api/latest/classes/_nymphjs_client.ClientError.html +++ b/docs/api/latest/classes/_nymphjs_client.ClientError.html @@ -1,13 +1,13 @@ -ClientError | Nymph.js 1.0.0-beta.61

                  Hierarchy

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  status: number
                  statusText: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Type declaration

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    -

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  Generated using TypeDoc

                  \ No newline at end of file +ClientError | Nymph.js 1.0.0-beta.81

                  Hierarchy (view full)

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  status: number
                  statusText: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Optional override for formatting stack traces

                  +

                  Type declaration

                    • (err, stackTraces): any
                    • Parameters

                      • err: Error
                      • stackTraces: CallSite[]

                      Returns any

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    +

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.ConnectionClosedUnexpectedlyError.html b/docs/api/latest/classes/_nymphjs_client.ConnectionClosedUnexpectedlyError.html index 853fe8f..1ebf50f 100644 --- a/docs/api/latest/classes/_nymphjs_client.ConnectionClosedUnexpectedlyError.html +++ b/docs/api/latest/classes/_nymphjs_client.ConnectionClosedUnexpectedlyError.html @@ -1,11 +1,11 @@ -ConnectionClosedUnexpectedlyError | Nymph.js 1.0.0-beta.61

                  Hierarchy

                  • Error
                    • ConnectionClosedUnexpectedlyError

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Type declaration

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    -

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  Generated using TypeDoc

                  \ No newline at end of file +ConnectionClosedUnexpectedlyError | Nymph.js 1.0.0-beta.81

                  Hierarchy

                  • Error
                    • ConnectionClosedUnexpectedlyError

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Optional override for formatting stack traces

                  +

                  Type declaration

                    • (err, stackTraces): any
                    • Parameters

                      • err: Error
                      • stackTraces: CallSite[]

                      Returns any

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    +

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.ConnectionError.html b/docs/api/latest/classes/_nymphjs_client.ConnectionError.html index bc8349f..44658d5 100644 --- a/docs/api/latest/classes/_nymphjs_client.ConnectionError.html +++ b/docs/api/latest/classes/_nymphjs_client.ConnectionError.html @@ -1,11 +1,11 @@ -ConnectionError | Nymph.js 1.0.0-beta.61

                  Hierarchy

                  • Error
                    • ConnectionError

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Type declaration

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    -

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  Generated using TypeDoc

                  \ No newline at end of file +ConnectionError | Nymph.js 1.0.0-beta.81

                  Hierarchy

                  • Error
                    • ConnectionError

                  Constructors

                  Properties

                  message: string
                  name: string
                  stack?: string
                  prepareStackTrace?: ((err, stackTraces) => any)

                  Optional override for formatting stack traces

                  +

                  Type declaration

                    • (err, stackTraces): any
                    • Parameters

                      • err: Error
                      • stackTraces: CallSite[]

                      Returns any

                  stackTraceLimit: number

                  Methods

                  • Create .stack property on a target object

                    +

                    Parameters

                    • targetObject: object
                    • Optional constructorOpt: Function

                    Returns void

                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.Entity.html b/docs/api/latest/classes/_nymphjs_client.Entity.html index e5fa46d..ce165a2 100644 --- a/docs/api/latest/classes/_nymphjs_client.Entity.html +++ b/docs/api/latest/classes/_nymphjs_client.Entity.html @@ -1,135 +1,135 @@ -Entity | Nymph.js 1.0.0-beta.61

                  Entity interface.

                  -

                  Type Parameters

                  Hierarchy

                  • Entity

                    Implements

                    Constructors

                    Properties

                    $data: T

                    The data proxy object.

                    -
                    $dataHandler: Object

                    The data proxy handler.

                    -
                    $dataStore: T

                    The actual data store.

                    -
                    $dirty: {
                        [k: string]: boolean;
                    } = {}

                    A map of props to whether they're dirty (for patch).

                    -

                    Type declaration

                    • [k: string]: boolean
                    $isASleepingReference: boolean = false

                    Whether this instance is a sleeping reference.

                    -
                    $nymph: Nymph

                    The instance of Nymph to use for queries.

                    -
                    $originalTags: string[] = []

                    Array of the entity's original tags (for patch).

                    -
                    $sleepingReference: null | EntityReference = null

                    The reference to use to wake.

                    -
                    $wakePromise: null | Promise<Entity<T>> = null

                    A promise that resolved when the entity's data is wake.

                    -
                    cdate: null | number = null

                    The creation date of the entity as a high precision Unix timestamp.

                    -
                    guid: null | string = null

                    The entity's Globally Unique ID.

                    -
                    mdate: null | number = null

                    The modified date of the entity as a high precision Unix timestamp.

                    -
                    tags: string[] = []

                    Array of the entity's tags.

                    -
                    class: string = 'Entity'

                    The lookup name for this entity.

                    +Entity | Nymph.js 1.0.0-beta.81

                    Entity interface.

                    +

                    Type Parameters

                    Hierarchy

                    • Entity

                      Implements

                      Constructors

                      Properties

                      $data: T

                      The data proxy object.

                      +
                      $dataHandler: Object

                      The data proxy handler.

                      +
                      $dataStore: T

                      The actual data store.

                      +
                      $dirty: {
                          [k: string]: boolean;
                      } = {}

                      A map of props to whether they're dirty (for patch).

                      +

                      Type declaration

                      • [k: string]: boolean
                      $isASleepingReference: boolean = false

                      Whether this instance is a sleeping reference.

                      +
                      $nymph: Nymph

                      The instance of Nymph to use for queries.

                      +
                      $originalTags: string[] = []

                      Array of the entity's original tags (for patch).

                      +
                      $sleepingReference: null | EntityReference = null

                      The reference to use to wake.

                      +
                      $wakePromise: null | Promise<Entity<T>> = null

                      A promise that resolved when the entity's data is wake.

                      +
                      cdate: null | number = null

                      The creation date of the entity as a high precision Unix timestamp.

                      +
                      guid: null | string = null

                      The entity's Globally Unique ID.

                      +
                      mdate: null | number = null

                      The modified date of the entity as a high precision Unix timestamp.

                      +
                      tags: string[] = []

                      Array of the entity's tags.

                      +
                      class: string = 'Entity'

                      The lookup name for this entity.

                      This is used for reference arrays (and sleeping references) and server requests.

                      -
                      nymph: Nymph = ...

                      The instance of Nymph to use for queries.

                      -

                      Methods

                      nymph: Nymph = ...

                      The instance of Nymph to use for queries.

                      +

                      Methods

                      • Search the array for this object and return the corresponding index.

                        If strict is false, is() is used to compare. If strict is true, equals() is used.

                        -

                        Parameters

                        • array: any[]

                          The array to search.

                          -
                        • strict: boolean = false

                          Whether to use stronger comparison.

                          +

                          Parameters

                          • array: any[]

                            The array to search.

                            +
                          • strict: boolean = false

                            Whether to use stronger comparison.

                          Returns number

                          The index if the object is in the array, -1 if it isn't.

                          -
                      • Check whether this object is in an array.

                        If strict is false, is() is used to compare. If strict is true, equals() is used.

                        -

                        Parameters

                        • array: any[]

                          The array to search.

                          -
                        • strict: boolean = false

                          Whether to use stronger comparison.

                          +

                          Parameters

                          • array: any[]

                            The array to search.

                            +
                          • strict: boolean = false

                            Whether to use stronger comparison.

                          Returns boolean

                          True if the object is in the array, false if it isn't.

                          -
                      • Refresh the object from storage. (Bypasses Nymph's cache.)

                        If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                        -

                        Returns Promise<boolean | 0>

                        False if the data has not been saved, 0 if it can't be refreshed, true on success.

                        -
                      • Call an instance method on the server version of this entity.

                        +

                        Returns Promise<boolean | 0>

                        False if the data has not been saved, 0 if it can't be refreshed, true on success.

                        +
                      • Call an instance method on the server version of this entity.

                        The entity's data will be sent up to the server as well, so the server's state can match the client's state. It won't be propagated into the DB, though.

                        -

                        Parameters

                        • method: string

                          The name of the method.

                          -
                        • params: Iterable<any>

                          The parameters to call the method with.

                          -
                        • stateless: boolean = false

                          Whether the server should return, and the client update, the data in the entity after the method has run.

                          -

                        Returns Promise<any>

                        The value that the method on the server returned.

                        -
                      • Return a Nymph Entity Reference for this entity.

                        +

                        Parameters

                        • method: string

                          The name of the method.

                          +
                        • params: Iterable<any>

                          The parameters to call the method with.

                          +
                        • stateless: boolean = false

                          Whether the server should return, and the client update, the data in the entity after the method has run.

                          +

                        Returns Promise<any>

                        The value that the method on the server returned.

                        +
                      • Ready this entity's data, and the data of entity's within this one's.

                        -

                        Parameters

                        • Optional level: number

                          The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                          -

                        Returns Promise<Entity<T>>

                        The entity.

                        -
                      • Ready this entity's data, and the data of entity's within this one's.

                        +

                        Parameters

                        • Optional level: number

                          The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                          +

                        Returns Promise<Entity<T>>

                        The entity.

                        +
                      • Create a new sleeping reference instance.

                        Sleeping references won't retrieve their data from the server until they are readied with $wake() or a parent's $wakeAll().

                        -

                        Type Parameters

                        Parameters

                        • this: (new () => E)
                            • new (): E
                            • Returns E

                        • reference: EntityReference

                          The Nymph Entity Reference to use to wake.

                          -

                        Returns E & EntityDataType<E>

                        The new instance.

                        -
                      • Call a static method on the server version of this entity.

                        -

                        Parameters

                        • method: string

                          The name of the method.

                          -
                        • params: Iterable<any>

                          The parameters to call the method with.

                          -

                        Returns Promise<any>

                        The value that the method on the server returned.

                        -
                      • Call a static iterator method on the server version of this entity.

                        -

                        Parameters

                        • method: string

                          The name of the method.

                          -
                        • params: Iterable<any>

                          The parameters to call the method with.

                          -

                        Returns Promise<AbortableAsyncIterator<any>>

                        An iterator that iterates over values that the method on the server yields.

                        -

                      Generated using TypeDoc

                      \ No newline at end of file +

                      Type Parameters

                      Parameters

                      • this: (new () => E)
                          • new (): E
                          • Returns E

                      • reference: EntityReference

                        The Nymph Entity Reference to use to wake.

                        +

                      Returns E & EntityDataType<E>

                      The new instance.

                      +
                      • Call a static method on the server version of this entity.

                        +

                        Parameters

                        • method: string

                          The name of the method.

                          +
                        • params: Iterable<any>

                          The parameters to call the method with.

                          +

                        Returns Promise<any>

                        The value that the method on the server returned.

                        +
                      • Call a static iterator method on the server version of this entity.

                        +

                        Parameters

                        • method: string

                          The name of the method.

                          +
                        • params: Iterable<any>

                          The parameters to call the method with.

                          +

                        Returns Promise<AbortableAsyncIterator<any>>

                        An iterator that iterates over values that the method on the server yields.

                        +
                      \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.EntityIsSleepingReferenceError.html b/docs/api/latest/classes/_nymphjs_client.EntityIsSleepingReferenceError.html index 489c740..4451d5c 100644 --- a/docs/api/latest/classes/_nymphjs_client.EntityIsSleepingReferenceError.html +++ b/docs/api/latest/classes/_nymphjs_client.EntityIsSleepingReferenceError.html @@ -1,11 +1,11 @@ -EntityIsSleepingReferenceError | Nymph.js 1.0.0-beta.61

                      Hierarchy

                      • Error
                        • EntityIsSleepingReferenceError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Type declaration

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        -

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      Generated using TypeDoc

                      \ No newline at end of file +EntityIsSleepingReferenceError | Nymph.js 1.0.0-beta.81

                      Hierarchy

                      • Error
                        • EntityIsSleepingReferenceError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Optional override for formatting stack traces

                      +

                      Type declaration

                        • (err, stackTraces): any
                        • Parameters

                          • err: Error
                          • stackTraces: CallSite[]

                          Returns any

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        +

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.HttpError.html b/docs/api/latest/classes/_nymphjs_client.HttpError.html index 82c8a7d..cf88a9d 100644 --- a/docs/api/latest/classes/_nymphjs_client.HttpError.html +++ b/docs/api/latest/classes/_nymphjs_client.HttpError.html @@ -1,13 +1,13 @@ -HttpError | Nymph.js 1.0.0-beta.61

                      Hierarchy

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      status: number
                      statusText: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Type declaration

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        -

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      Generated using TypeDoc

                      \ No newline at end of file +HttpError | Nymph.js 1.0.0-beta.81

                      Hierarchy (view full)

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      status: number
                      statusText: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Optional override for formatting stack traces

                      +

                      Type declaration

                        • (err, stackTraces): any
                        • Parameters

                          • err: Error
                          • stackTraces: CallSite[]

                          Returns any

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        +

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.InformationalError.html b/docs/api/latest/classes/_nymphjs_client.InformationalError.html index 7227d79..8e0748b 100644 --- a/docs/api/latest/classes/_nymphjs_client.InformationalError.html +++ b/docs/api/latest/classes/_nymphjs_client.InformationalError.html @@ -1,13 +1,13 @@ -InformationalError | Nymph.js 1.0.0-beta.61

                      Hierarchy

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      status: number
                      statusText: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Type declaration

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        -

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      Generated using TypeDoc

                      \ No newline at end of file +InformationalError | Nymph.js 1.0.0-beta.81

                      Hierarchy (view full)

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      status: number
                      statusText: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Optional override for formatting stack traces

                      +

                      Type declaration

                        • (err, stackTraces): any
                        • Parameters

                          • err: Error
                          • stackTraces: CallSite[]

                          Returns any

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        +

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.InvalidRequestError.html b/docs/api/latest/classes/_nymphjs_client.InvalidRequestError.html index 147259b..590b748 100644 --- a/docs/api/latest/classes/_nymphjs_client.InvalidRequestError.html +++ b/docs/api/latest/classes/_nymphjs_client.InvalidRequestError.html @@ -1,11 +1,11 @@ -InvalidRequestError | Nymph.js 1.0.0-beta.61

                      Hierarchy

                      • Error
                        • InvalidRequestError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Type declaration

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        -

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      Generated using TypeDoc

                      \ No newline at end of file +InvalidRequestError | Nymph.js 1.0.0-beta.81

                      Hierarchy

                      • Error
                        • InvalidRequestError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Optional override for formatting stack traces

                      +

                      Type declaration

                        • (err, stackTraces): any
                        • Parameters

                          • err: Error
                          • stackTraces: CallSite[]

                          Returns any

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        +

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.InvalidResponseError.html b/docs/api/latest/classes/_nymphjs_client.InvalidResponseError.html index e7620f0..2551677 100644 --- a/docs/api/latest/classes/_nymphjs_client.InvalidResponseError.html +++ b/docs/api/latest/classes/_nymphjs_client.InvalidResponseError.html @@ -1,11 +1,11 @@ -InvalidResponseError | Nymph.js 1.0.0-beta.61

                      Hierarchy

                      • Error
                        • InvalidResponseError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Type declaration

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        -

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      Generated using TypeDoc

                      \ No newline at end of file +InvalidResponseError | Nymph.js 1.0.0-beta.81

                      Hierarchy

                      • Error
                        • InvalidResponseError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Optional override for formatting stack traces

                      +

                      Type declaration

                        • (err, stackTraces): any
                        • Parameters

                          • err: Error
                          • stackTraces: CallSite[]

                          Returns any

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        +

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.InvalidStateError.html b/docs/api/latest/classes/_nymphjs_client.InvalidStateError.html index e06a9ba..b83ba70 100644 --- a/docs/api/latest/classes/_nymphjs_client.InvalidStateError.html +++ b/docs/api/latest/classes/_nymphjs_client.InvalidStateError.html @@ -1,11 +1,11 @@ -InvalidStateError | Nymph.js 1.0.0-beta.61

                      Hierarchy

                      • Error
                        • InvalidStateError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Type declaration

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        -

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      Generated using TypeDoc

                      \ No newline at end of file +InvalidStateError | Nymph.js 1.0.0-beta.81

                      Hierarchy

                      • Error
                        • InvalidStateError

                      Constructors

                      Properties

                      message: string
                      name: string
                      stack?: string
                      prepareStackTrace?: ((err, stackTraces) => any)

                      Optional override for formatting stack traces

                      +

                      Type declaration

                        • (err, stackTraces): any
                        • Parameters

                          • err: Error
                          • stackTraces: CallSite[]

                          Returns any

                      stackTraceLimit: number

                      Methods

                      • Create .stack property on a target object

                        +

                        Parameters

                        • targetObject: object
                        • Optional constructorOpt: Function

                        Returns void

                      \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.Nymph.html b/docs/api/latest/classes/_nymphjs_client.Nymph.html index da50414..3ea83d4 100644 --- a/docs/api/latest/classes/_nymphjs_client.Nymph.html +++ b/docs/api/latest/classes/_nymphjs_client.Nymph.html @@ -1,48 +1,48 @@ -Nymph | Nymph.js 1.0.0-beta.61

                      Hierarchy

                      • Nymph

                        Constructors

                        Properties

                        Entity: typeof Entity

                        The entity class for this instance of Nymph.

                        -
                        cache: default = ...

                        The entity cache.

                        -
                        entityClasses: {
                            [k: string]: EntityConstructor;
                        } = {}

                        A simple map of names to Entity classes.

                        -

                        Type declaration

                        headers: {
                            [k: string]: string;
                        } = {}

                        Headers that will be sent with every request.

                        +Nymph | Nymph.js 1.0.0-beta.81

                        Hierarchy

                        • Nymph

                          Constructors

                          Properties

                          Entity: typeof Entity

                          The entity class for this instance of Nymph.

                          +
                          cache: default = ...

                          The entity cache.

                          +
                          entityClasses: {
                              [k: string]: EntityConstructor;
                          } = {}

                          A simple map of names to Entity classes.

                          +

                          Type declaration

                          headers: {
                              [k: string]: string;
                          } = {}

                          Headers that will be sent with every request.

                          These are used by Tilmeld for authentication.

                          -

                          Type declaration

                          • [k: string]: string
                          pubsub: undefined | PubSub = undefined

                          And optional PubSub client instance.

                          -
                          requestCallbacks: RequestCallback[] = []
                          responseCallbacks: ResponseCallback[] = []
                          restUrl: string = ''
                          weakCache: boolean = false

                          Methods

                          pubsub: undefined | PubSub = undefined

                          And optional PubSub client instance.

                          +
                          requestCallbacks: RequestCallback[] = []
                          responseCallbacks: ResponseCallback[] = []
                          restUrl: string = ''
                          weakCache: boolean = false

                          Methods

                          • Add your class to this instance.

                            This will create a class that extends your class within this instance of Nymph and return it. You can then use this class's constructor and methods, which will use this instance of Nymph.

                            Because this creates a subclass, don't use the class returned from getEntityClass to check with instanceof.

                            -

                            Type Parameters

                            Parameters

                            • entityClass: T

                            Returns T

                          • Type Parameters

                            Parameters

                            • entity: T
                            • method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
                            • data: {
                                  [k: string]: any;
                              }
                              • [k: string]: any
                            • plural: false

                            Returns Promise<T>

                          • Type Parameters

                            Parameters

                            • entity: T[]
                            • method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
                            • data: {
                                  [k: string]: any;
                              }
                              • [k: string]: any
                            • plural: true

                            Returns Promise<T[]>

                          • Parameters

                            • className: string
                            • method: string
                            • params: any[]

                            Returns Promise<any>

                          Generated using TypeDoc

                          \ No newline at end of file +

                          Type Parameters

                          Parameters

                          • entityClass: T

                          Returns T

                          • Type Parameters

                            Parameters

                            • entity: T
                            • method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
                            • data: {
                                  [k: string]: any;
                              }
                              • [k: string]: any
                            • plural: false

                            Returns Promise<T>

                          • Type Parameters

                            Parameters

                            • entity: T[]
                            • method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
                            • data: {
                                  [k: string]: any;
                              }
                              • [k: string]: any
                            • plural: true

                            Returns Promise<T[]>

                          • Parameters

                            • className: string
                            • method: string
                            • params: any[]

                            Returns Promise<any>

                          \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.PubSub.html b/docs/api/latest/classes/_nymphjs_client.PubSub.html index 4018c20..9dc9682 100644 --- a/docs/api/latest/classes/_nymphjs_client.PubSub.html +++ b/docs/api/latest/classes/_nymphjs_client.PubSub.html @@ -1,43 +1,43 @@ -PubSub | Nymph.js 1.0.0-beta.61

                          Hierarchy

                          • PubSub

                            Constructors

                            Properties

                            WebSocket: {
                                CLOSED: 3;
                                CLOSING: 2;
                                CONNECTING: 0;
                                OPEN: 1;
                                prototype: WebSocket;
                                new (url, protocols?): WebSocket;
                            }

                            Type declaration

                              • new (url, protocols?): WebSocket
                              • Parameters

                                • url: string | URL
                                • Optional protocols: string | string[]

                                Returns WebSocket

                            • Readonly CLOSED: 3
                            • Readonly CLOSING: 2
                            • Readonly CONNECTING: 0
                            • Readonly OPEN: 1
                            • prototype: WebSocket
                            authToken: null | string = null
                            connectCallbacks: PubSubConnectCallback[] = []
                            connection: undefined | WebSocket
                            disconnectCallbacks: PubSubDisconnectCallback[] = []
                            errorCallbacks: PubSubErrorCallback[] = []
                            noConsole: boolean = false
                            nymph: Nymph
                            pubsubUrl: undefined | string
                            subscriptions: {
                                queries: {
                                    [k: string]: PubSubCallbacks<any>[];
                                };
                                uids: {
                                    [k: string]: PubSubCallbacks<number>[];
                                };
                            } = ...

                            Type declaration

                            switchToken: null | string = null
                            waitForConnectionTimeout: undefined | Timeout

                            Methods

                            • Parameters

                              • authToken: null | string
                              • switchToken: null | string = null

                              Returns void

                            • Parameters

                              • name: string

                              Returns ((resolve?, reject?, count?) => {
                                  unsubscribe: (() => void);
                              })

                            Generated using TypeDoc

                            \ No newline at end of file +PubSub | Nymph.js 1.0.0-beta.81

                            Hierarchy

                            • PubSub

                              Constructors

                              Properties

                              WebSocket: {
                                  CLOSED: 3;
                                  CLOSING: 2;
                                  CONNECTING: 0;
                                  OPEN: 1;
                                  prototype: WebSocket;
                                  new (url, protocols?): WebSocket;
                              }

                              Type declaration

                                • new (url, protocols?): WebSocket
                                • Parameters

                                  • url: string | URL
                                  • Optional protocols: string | string[]

                                  Returns WebSocket

                              • Readonly CLOSED: 3
                              • Readonly CLOSING: 2
                              • Readonly CONNECTING: 0
                              • Readonly OPEN: 1
                              • prototype: WebSocket
                              authToken: null | string = null
                              connectCallbacks: PubSubConnectCallback[] = []
                              connection: undefined | WebSocket
                              disconnectCallbacks: PubSubDisconnectCallback[] = []
                              errorCallbacks: PubSubErrorCallback[] = []
                              noConsole: boolean = false
                              nymph: Nymph
                              pubsubUrl: undefined | string
                              subscriptions: {
                                  queries: {
                                      [k: string]: PubSubCallbacks<any>[];
                                  };
                                  uids: {
                                      [k: string]: PubSubCallbacks<number>[];
                                  };
                              } = ...

                              Type declaration

                              switchToken: null | string = null
                              waitForConnectionTimeout: undefined | Timeout

                              Methods

                              • Parameters

                                • authToken: null | string
                                • switchToken: null | string = null

                                Returns void

                              • Parameters

                                • name: string

                                Returns ((resolve?, reject?, count?) => {
                                    unsubscribe: (() => void);
                                })

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.PubSubSubscription.html b/docs/api/latest/classes/_nymphjs_client.PubSubSubscription.html index ffdcc91..e1363d3 100644 --- a/docs/api/latest/classes/_nymphjs_client.PubSubSubscription.html +++ b/docs/api/latest/classes/_nymphjs_client.PubSubSubscription.html @@ -1,5 +1,5 @@ -PubSubSubscription | Nymph.js 1.0.0-beta.61

                              Generated using TypeDoc

                              \ No newline at end of file +PubSubSubscription | Nymph.js 1.0.0-beta.81

                              Type Parameters

                              • T

                              Constructors

                              Properties

                              Constructors

                              Properties

                              callbacks: PubSubCallbacks<T>
                              query: string
                              unsubscribe: (() => void)

                              Type declaration

                                • (): void
                                • Returns void

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.RedirectError.html b/docs/api/latest/classes/_nymphjs_client.RedirectError.html index 53fc74e..f22d081 100644 --- a/docs/api/latest/classes/_nymphjs_client.RedirectError.html +++ b/docs/api/latest/classes/_nymphjs_client.RedirectError.html @@ -1,13 +1,13 @@ -RedirectError | Nymph.js 1.0.0-beta.61

                              Hierarchy

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              status: number
                              statusText: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Type declaration

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                -

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              Generated using TypeDoc

                              \ No newline at end of file +RedirectError | Nymph.js 1.0.0-beta.81

                              Hierarchy (view full)

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              status: number
                              statusText: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Optional override for formatting stack traces

                              +

                              Type declaration

                                • (err, stackTraces): any
                                • Parameters

                                  • err: Error
                                  • stackTraces: CallSite[]

                                  Returns any

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                +

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.ServerError.html b/docs/api/latest/classes/_nymphjs_client.ServerError.html index d7ead14..4c683be 100644 --- a/docs/api/latest/classes/_nymphjs_client.ServerError.html +++ b/docs/api/latest/classes/_nymphjs_client.ServerError.html @@ -1,13 +1,13 @@ -ServerError | Nymph.js 1.0.0-beta.61

                              Hierarchy

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              status: number
                              statusText: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Type declaration

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                -

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              Generated using TypeDoc

                              \ No newline at end of file +ServerError | Nymph.js 1.0.0-beta.81

                              Hierarchy (view full)

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              status: number
                              statusText: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Optional override for formatting stack traces

                              +

                              Type declaration

                                • (err, stackTraces): any
                                • Parameters

                                  • err: Error
                                  • stackTraces: CallSite[]

                                  Returns any

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                +

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client.SuccessError.html b/docs/api/latest/classes/_nymphjs_client.SuccessError.html index d9ce962..30bc7f4 100644 --- a/docs/api/latest/classes/_nymphjs_client.SuccessError.html +++ b/docs/api/latest/classes/_nymphjs_client.SuccessError.html @@ -1,13 +1,13 @@ -SuccessError | Nymph.js 1.0.0-beta.61

                              Hierarchy

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              status: number
                              statusText: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Type declaration

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                -

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              Generated using TypeDoc

                              \ No newline at end of file +SuccessError | Nymph.js 1.0.0-beta.81

                              Hierarchy (view full)

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              status: number
                              statusText: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Optional override for formatting stack traces

                              +

                              Type declaration

                                • (err, stackTraces): any
                                • Parameters

                                  • err: Error
                                  • stackTraces: CallSite[]

                                  Returns any

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                +

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client_node.Nymph.html b/docs/api/latest/classes/_nymphjs_client_node.Nymph.html index 83916c1..da39fcd 100644 --- a/docs/api/latest/classes/_nymphjs_client_node.Nymph.html +++ b/docs/api/latest/classes/_nymphjs_client_node.Nymph.html @@ -1,41 +1,41 @@ -Nymph | Nymph.js 1.0.0-beta.61

                              Hierarchy

                              Constructors

                              Properties

                              Entity: typeof Entity

                              The entity class for this instance of Nymph.

                              -
                              cache: default

                              The entity cache.

                              -
                              headers: {
                                  [k: string]: string;
                              }

                              Headers that will be sent with every request.

                              +Nymph | Nymph.js 1.0.0-beta.81

                              Hierarchy (view full)

                              Constructors

                              Properties

                              Entity: typeof Entity

                              The entity class for this instance of Nymph.

                              +
                              cache: default

                              The entity cache.

                              +
                              headers: {
                                  [k: string]: string;
                              }

                              Headers that will be sent with every request.

                              These are used by Tilmeld for authentication.

                              -

                              Type declaration

                              • [k: string]: string
                              pubsub: undefined | PubSub

                              And optional PubSub client instance.

                              -

                              Methods

                              • Add your class to this instance.

                                +

                                Type declaration

                                • [k: string]: string
                              pubsub: undefined | PubSub

                              And optional PubSub client instance.

                              +

                              Methods

                              • Add your class to this instance.

                                This will create a class that extends your class within this instance of Nymph and return it. You can then use this class's constructor and methods, which will use this instance of Nymph.

                                Because this creates a subclass, don't use the class returned from getEntityClass to check with instanceof.

                                -

                                Type Parameters

                                Parameters

                                • entityClass: T

                                Returns T

                              • Parameters

                                • name: string

                                Returns Promise<any>

                              • Parameters

                                • name: string

                                Returns Promise<number>

                              • Type Parameters

                                • T extends unknown

                                Parameters

                                • item: T

                                Returns T

                              • Parameters

                                • name: string

                                Returns Promise<number>

                              • Type Parameters

                                Parameters

                                Returns boolean

                              • Type Parameters

                                Parameters

                                Returns (() => boolean)

                                  • (): boolean
                                  • Returns boolean

                              • Parameters

                                • className: string
                                • method: string
                                • params: any[]

                                Returns Promise<any>

                              • Parameters

                                • name: string
                                • value: number

                                Returns Promise<any>

                              Generated using TypeDoc

                              \ No newline at end of file +

                              Type Parameters

                              Parameters

                              • entityClass: T

                              Returns T

                              • Parameters

                                • name: string

                                Returns Promise<any>

                              • Parameters

                                • name: string

                                Returns Promise<number>

                              • Type Parameters

                                • T extends unknown

                                Parameters

                                • item: T

                                Returns T

                              • Parameters

                                • name: string

                                Returns Promise<number>

                              • Type Parameters

                                Parameters

                                Returns boolean

                              • Type Parameters

                                Parameters

                                Returns (() => boolean)

                                  • (): boolean
                                  • Returns boolean

                              • Parameters

                                • className: string
                                • method: string
                                • params: any[]

                                Returns Promise<any>

                              • Parameters

                                • name: string
                                • value: number

                                Returns Promise<any>

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_client_node.PubSub.html b/docs/api/latest/classes/_nymphjs_client_node.PubSub.html index 8973417..58221ca 100644 --- a/docs/api/latest/classes/_nymphjs_client_node.PubSub.html +++ b/docs/api/latest/classes/_nymphjs_client_node.PubSub.html @@ -1,15 +1,15 @@ -PubSub | Nymph.js 1.0.0-beta.61

                              Hierarchy

                              Constructors

                              Methods

                              • Parameters

                                • authToken: null | string
                                • Optional switchToken: null | string

                                Returns void

                              • Returns void

                              • Returns void

                              • Returns boolean

                              • Returns boolean

                              • Type Parameters

                                Parameters

                                Returns (() => boolean)

                                  • (): boolean
                                  • Returns boolean

                              • Parameters

                                • name: string

                                Returns ((resolve?, reject?, count?) => {
                                    unsubscribe: (() => void);
                                })

                              Generated using TypeDoc

                              \ No newline at end of file +PubSub | Nymph.js 1.0.0-beta.81

                              Hierarchy (view full)

                              Constructors

                              Methods

                              • Parameters

                                • authToken: null | string
                                • Optional switchToken: null | string

                                Returns void

                              • Returns void

                              • Returns void

                              • Returns boolean

                              • Returns boolean

                              • Parameters

                                • name: string

                                Returns ((resolve?, reject?, count?) => {
                                    unsubscribe: (() => void);
                                })

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_driver_mysql.MySQLDriver.html b/docs/api/latest/classes/_nymphjs_driver_mysql.MySQLDriver.html index 6ea6dd5..10f931e 100644 --- a/docs/api/latest/classes/_nymphjs_driver_mysql.MySQLDriver.html +++ b/docs/api/latest/classes/_nymphjs_driver_mysql.MySQLDriver.html @@ -1,99 +1,106 @@ -MySQLDriver | Nymph.js 1.0.0-beta.61

                              The MySQL Nymph database driver.

                              -

                              Hierarchy

                              Constructors

                              Properties

                              connected: boolean = false
                              entityCache: {
                                  [k: string]: {
                                      cdate: number;
                                      data: EntityData;
                                      mdate: number;
                                      sdata: SerializedEntityData;
                                      tags: string[];
                                  };
                              }

                              A cache to make entity retrieval faster.

                              -

                              Type declaration

                              entityCount: {
                                  [k: string]: number;
                              }

                              A counter for the entity cache to determine the most accessed entities.

                              -

                              Type declaration

                              • [k: string]: number
                              link: Pool
                              mysqlConfig: PoolOptions
                              nymph: Nymph
                              prefix: string
                              transaction: null | MySQLDriverTransaction = null

                              Methods

                              • Remove all copies of an entity from the cache.

                                -

                                Parameters

                                • guid: string

                                  The GUID of the entity to remove.

                                  -

                                Returns void

                              • Parameters

                                • selectors: FormattedSelector[]
                                • callback: ((data) => string)
                                    • (data): string
                                    • Parameters

                                      • data: {
                                            key: string;
                                            typeIsNot: boolean;
                                            typeIsOr: boolean;
                                            value: any;
                                        }
                                        • key: string
                                        • typeIsNot: boolean
                                        • typeIsOr: boolean
                                        • value: any

                                      Returns string

                                Returns string[]

                              • Generate the MySQL query.

                                +

                                Parameters

                                • options: Options

                                  The options array.

                                  +
                                • formattedSelectors: FormattedSelector[]

                                  The formatted selector array.

                                  +
                                • etype: string
                                • count: {
                                      i: number;
                                  } = ...

                                  Used to track internal params.

                                  +
                                  • i: number
                                • params: {
                                      [k: string]: any;
                                  } = {}

                                  Used to store internal params.

                                  +
                                  • [k: string]: any
                                • subquery: boolean = false

                                  Whether only a subquery should be returned.

                                  +
                                • tableSuffix: string = ''
                                • etypes: string[] = []
                                • guidSelector: undefined | string = undefined

                                Returns {
                                    etypes: string[];
                                    params: {
                                        [k: string]: any;
                                    };
                                    query: string;
                                }

                                The SQL query.

                                +
                                • etypes: string[]
                                • params: {
                                      [k: string]: any;
                                  }
                                  • [k: string]: any
                                • query: string
                              • Detect whether the database needs to be migrated.

                                +

                                If true, the database should be exported with an old version of Nymph, then +imported into a fresh database with this version.

                                +

                                Returns Promise<boolean>

                              • Parameters

                                • pattern: string
                                • subject: string
                                • Optional caseInsensitive: boolean

                                Returns boolean

                              • Pull an entity from the cache.

                                +

                                Type Parameters

                                Parameters

                                • guid: string

                                  The entity's GUID.

                                  +
                                • className: string

                                  The entity's class.

                                  +
                                • Optional useSkipAc: boolean

                                  Whether to tell the entity to use skip_ac.

                                  +

                                Returns null | T

                                The entity or null if it's not cached.

                                +
                              • Push an entity onto the cache.

                                +

                                Parameters

                                • guid: string

                                  The entity's GUID.

                                  +
                                • cdate: number

                                  The entity's cdate.

                                  +
                                • mdate: number

                                  The entity's mdate.

                                  +
                                • tags: string[]

                                  The entity's tags.

                                  +
                                • data: EntityData

                                  The entity's data.

                                  +
                                • sdata: SerializedEntityData

                                  The entity's sdata.

                                  +

                                Returns void

                              • Type Parameters

                                • T extends (() => any)

                                Parameters

                                • runQuery: T
                                • query: string
                                • etypes: string[] = []

                                Returns ReturnType<T>

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns Promise<any>

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns Promise<any>

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns Promise<{
                                    changes: any;
                                }>

                              • Parameters

                                • entity: EntityInterface
                                • saveNewEntityCallback: ((data) => Promise<boolean>)
                                • saveExistingEntityCallback: ((data) => Promise<boolean>)
                                • Optional startTransactionCallback: null | (() => Promise<void>)
                                • Optional commitTransactionCallback: null | ((success) => Promise<boolean>)

                                Returns Promise<boolean>

                              • Parameters

                                • origQuery: string
                                • origParams: {
                                      [k: string]: any;
                                  }
                                  • [k: string]: any

                                Returns {
                                    params: any[];
                                    query: string;
                                }

                                • params: any[]
                                • query: string
                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_driver_postgresql.PostgreSQLDriver.html b/docs/api/latest/classes/_nymphjs_driver_postgresql.PostgreSQLDriver.html index 7203510..d8b31ec 100644 --- a/docs/api/latest/classes/_nymphjs_driver_postgresql.PostgreSQLDriver.html +++ b/docs/api/latest/classes/_nymphjs_driver_postgresql.PostgreSQLDriver.html @@ -1,99 +1,110 @@ -PostgreSQLDriver | Nymph.js 1.0.0-beta.61

                              The PostgreSQL Nymph database driver.

                              -

                              Hierarchy

                              Constructors

                              Properties

                              connected: boolean = false
                              entityCache: {
                                  [k: string]: {
                                      cdate: number;
                                      data: EntityData;
                                      mdate: number;
                                      sdata: SerializedEntityData;
                                      tags: string[];
                                  };
                              }

                              A cache to make entity retrieval faster.

                              -

                              Type declaration

                              entityCount: {
                                  [k: string]: number;
                              }

                              A counter for the entity cache to determine the most accessed entities.

                              -

                              Type declaration

                              • [k: string]: number
                              link: Pool
                              nymph: Nymph
                              postgresqlConfig: PoolConfig
                              prefix: string
                              transaction: null | PostgreSQLDriverTransaction = null

                              Methods

                              • Remove all copies of an entity from the cache.

                                -

                                Parameters

                                • guid: string

                                  The GUID of the entity to remove.

                                  -

                                Returns void

                              • Parameters

                                • selectors: FormattedSelector[]
                                • callback: ((data) => string)
                                    • (data): string
                                    • Parameters

                                      • data: {
                                            key: string;
                                            typeIsNot: boolean;
                                            typeIsOr: boolean;
                                            value: any;
                                        }
                                        • key: string
                                        • typeIsNot: boolean
                                        • typeIsOr: boolean
                                        • value: any

                                      Returns string

                                Returns string[]

                              • Generate the PostgreSQL query.

                                +

                                Parameters

                                • options: Options

                                  The options array.

                                  +
                                • formattedSelectors: FormattedSelector[]

                                  The formatted selector array.

                                  +
                                • etype: string
                                • count: {
                                      i: number;
                                  } = ...

                                  Used to track internal params.

                                  +
                                  • i: number
                                • params: {
                                      [k: string]: any;
                                  } = {}

                                  Used to store internal params.

                                  +
                                  • [k: string]: any
                                • subquery: boolean = false

                                  Whether only a subquery should be returned.

                                  +
                                • tableSuffix: string = ''
                                • etypes: string[] = []
                                • guidSelector: undefined | string = undefined

                                Returns {
                                    etypes: string[];
                                    params: {
                                        [k: string]: any;
                                    };
                                    query: string;
                                }

                                The SQL query.

                                +
                                • etypes: string[]
                                • params: {
                                      [k: string]: any;
                                  }
                                  • [k: string]: any
                                • query: string
                              • Parameters

                                • pattern: string
                                • subject: string
                                • Optional caseInsensitive: boolean

                                Returns boolean

                              • Pull an entity from the cache.

                                +

                                Type Parameters

                                Parameters

                                • guid: string

                                  The entity's GUID.

                                  +
                                • className: string

                                  The entity's class.

                                  +
                                • Optional useSkipAc: boolean

                                  Whether to tell the entity to use skip_ac.

                                  +

                                Returns null | T

                                The entity or null if it's not cached.

                                +
                              • Push an entity onto the cache.

                                +

                                Parameters

                                • guid: string

                                  The entity's GUID.

                                  +
                                • cdate: number

                                  The entity's cdate.

                                  +
                                • mdate: number

                                  The entity's mdate.

                                  +
                                • tags: string[]

                                  The entity's tags.

                                  +
                                • data: EntityData

                                  The entity's data.

                                  +
                                • sdata: SerializedEntityData

                                  The entity's sdata.

                                  +

                                Returns void

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns Promise<any>

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns Promise<any[]>

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      connection?: PostgreSQLDriverConnection;
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional connection?: PostgreSQLDriverConnection
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns Promise<{
                                    rowCount: number;
                                }>

                              • Parameters

                                • entity: EntityInterface
                                • saveNewEntityCallback: ((data) => Promise<boolean>)
                                • saveExistingEntityCallback: ((data) => Promise<boolean>)
                                • Optional startTransactionCallback: null | (() => Promise<void>)
                                • Optional commitTransactionCallback: null | ((success) => Promise<boolean>)

                                Returns Promise<boolean>

                              • Parameters

                                • origQuery: string
                                • origParams: {
                                      [k: string]: any;
                                  }
                                  • [k: string]: any

                                Returns {
                                    params: any[];
                                    query: string;
                                }

                                • params: any[]
                                • query: string
                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_driver_sqlite3.SQLite3Driver.html b/docs/api/latest/classes/_nymphjs_driver_sqlite3.SQLite3Driver.html index 0886fb1..7e932ce 100644 --- a/docs/api/latest/classes/_nymphjs_driver_sqlite3.SQLite3Driver.html +++ b/docs/api/latest/classes/_nymphjs_driver_sqlite3.SQLite3Driver.html @@ -1,92 +1,100 @@ -SQLite3Driver | Nymph.js 1.0.0-beta.61

                              The SQLite3 Nymph database driver.

                              -

                              Hierarchy

                              Constructors

                              Properties

                              entityCache: {
                                  [k: string]: {
                                      cdate: number;
                                      data: EntityData;
                                      mdate: number;
                                      sdata: SerializedEntityData;
                                      tags: string[];
                                  };
                              }

                              A cache to make entity retrieval faster.

                              -

                              Type declaration

                              entityCount: {
                                  [k: string]: number;
                              }

                              A counter for the entity cache to determine the most accessed entities.

                              -

                              Type declaration

                              • [k: string]: number
                              nymph: Nymph
                              prefix: string
                              store: InternalStore

                              Methods

                              • Remove all copies of an entity from the cache.

                                -

                                Parameters

                                • guid: string

                                  The GUID of the entity to remove.

                                  -

                                Returns void

                              • Parameters

                                • selectors: FormattedSelector[]
                                • callback: ((data) => string)
                                    • (data): string
                                    • Parameters

                                      • data: {
                                            key: string;
                                            typeIsNot: boolean;
                                            typeIsOr: boolean;
                                            value: any;
                                        }
                                        • key: string
                                        • typeIsNot: boolean
                                        • typeIsOr: boolean
                                        • value: any

                                      Returns string

                                Returns string[]

                              • Generate the SQLite3 query.

                                +

                                Parameters

                                • options: Options

                                  The options array.

                                  +
                                • formattedSelectors: FormattedSelector[]

                                  The formatted selector array.

                                  +
                                • etype: string
                                • count: {
                                      i: number;
                                  } = ...

                                  Used to track internal params.

                                  +
                                  • i: number
                                • params: {
                                      [k: string]: any;
                                  } = {}

                                  Used to store internal params.

                                  +
                                  • [k: string]: any
                                • subquery: boolean = false

                                  Whether only a subquery should be returned.

                                  +
                                • tableSuffix: string = ''
                                • etypes: string[] = []
                                • guidSelector: undefined | string = undefined

                                Returns {
                                    etypes: string[];
                                    params: {
                                        [k: string]: any;
                                    };
                                    query: string;
                                }

                                The SQL query.

                                +
                                • etypes: string[]
                                • params: {
                                      [k: string]: any;
                                  }
                                  • [k: string]: any
                                • query: string
                              • Parameters

                                • pattern: string
                                • subject: string
                                • Optional caseInsensitive: boolean

                                Returns boolean

                              • Pull an entity from the cache.

                                +

                                Type Parameters

                                Parameters

                                • guid: string

                                  The entity's GUID.

                                  +
                                • className: string

                                  The entity's class.

                                  +
                                • Optional useSkipAc: boolean

                                  Whether to tell the entity to use skip_ac.

                                  +

                                Returns null | T

                                The entity or null if it's not cached.

                                +
                              • Push an entity onto the cache.

                                +

                                Parameters

                                • guid: string

                                  The entity's GUID.

                                  +
                                • cdate: number

                                  The entity's cdate.

                                  +
                                • mdate: number

                                  The entity's mdate.

                                  +
                                • tags: string[]

                                  The entity's tags.

                                  +
                                • data: EntityData

                                  The entity's data.

                                  +
                                • sdata: SerializedEntityData

                                  The entity's sdata.

                                  +

                                Returns void

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns unknown

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns IterableIterator<unknown>

                              • Parameters

                                • query: string
                                • __namedParameters: {
                                      etypes?: string[];
                                      params?: {
                                          [k: string]: any;
                                      };
                                  } = {}
                                  • Optional etypes?: string[]
                                  • Optional params?: {
                                        [k: string]: any;
                                    }
                                    • [k: string]: any

                                Returns RunResult

                              • Parameters

                                • entity: EntityInterface
                                • saveNewEntityCallback: ((data) => Promise<boolean>)
                                • saveExistingEntityCallback: ((data) => Promise<boolean>)
                                • Optional startTransactionCallback: null | (() => Promise<void>)
                                • Optional commitTransactionCallback: null | ((success) => Promise<boolean>)

                                Returns Promise<boolean>

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.ClassNotAvailableError.html b/docs/api/latest/classes/_nymphjs_nymph.ClassNotAvailableError.html index 3282818..31d6324 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.ClassNotAvailableError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.ClassNotAvailableError.html @@ -1,11 +1,12 @@ -ClassNotAvailableError | Nymph.js 1.0.0-beta.61

                              Hierarchy

                              • Error
                                • ClassNotAvailableError

                              Constructors

                              Properties

                              message: string
                              name: string
                              stack?: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Type declaration

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                -

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              Generated using TypeDoc

                              \ No newline at end of file +ClassNotAvailableError | Nymph.js 1.0.0-beta.81

                              Hierarchy

                              • Error
                                • ClassNotAvailableError

                              Constructors

                              Properties

                              cause?: unknown
                              message: string
                              name: string
                              stack?: string
                              prepareStackTrace?: ((err, stackTraces) => any)

                              Optional override for formatting stack traces

                              +

                              Type declaration

                                • (err, stackTraces): any
                                • Parameters

                                  • err: Error
                                  • stackTraces: CallSite[]

                                  Returns any

                              stackTraceLimit: number

                              Methods

                              • Create .stack property on a target object

                                +

                                Parameters

                                • targetObject: object
                                • Optional constructorOpt: Function

                                Returns void

                              \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.Entity.html b/docs/api/latest/classes/_nymphjs_nymph.Entity.html index 9750f48..59e576b 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.Entity.html +++ b/docs/api/latest/classes/_nymphjs_nymph.Entity.html @@ -1,4 +1,4 @@ -Entity | Nymph.js 1.0.0-beta.61

                              Database abstraction object.

                              +Entity | Nymph.js 1.0.0-beta.81

                              Database abstraction object.

                              Provides a way to access, manipulate, and store data in Nymph.

                              The GUID is not set until the entity is saved. GUIDs must be unique forever, even after deletion. It's the job of the Nymph DB driver to make sure no two @@ -55,94 +55,94 @@ When you first access an entity's data, if it is a sleeping reference, it will fill its data from the DB. You can call clearCache() to turn all the entities back into sleeping references.

                              -

                              Type Parameters

                              Hierarchy

                              • Entity

                                Implements

                                Constructors

                                Properties

                                $allowlistData?: string[]

                                If this is defined, then it lists the only properties that will be +

                                Type Parameters

                                Hierarchy

                                • Entity

                                  Implements

                                  Constructors

                                  Properties

                                  $allowlistData?: string[]

                                  If this is defined, then it lists the only properties that will be accepted from incoming JSON. Any other properties will be ignored.

                                  If you use an allowlist, you don't need to use protectedData, since you can simply leave those entries out of allowlistData.

                                  -
                                  $allowlistTags?: string[]

                                  If this is defined, then it lists the only tags that will be accepted from +

                                  $allowlistTags?: string[]

                                  If this is defined, then it lists the only tags that will be accepted from incoming JSON. Any other tags will be ignored.

                                  -
                                  $clientEnabledMethods: string[] = []

                                  The names of methods allowed to be called by the frontend with serverCall.

                                  -
                                  $data: T

                                  The data proxy object.

                                  -
                                  $dataHandler: Object

                                  The data proxy handler.

                                  -
                                  $dataStore: T

                                  The actual data store.

                                  -
                                  $isASleepingReference: boolean = false

                                  Whether this instance is a sleeping reference.

                                  -
                                  $nymph: Nymph

                                  The instance of Nymph to use for queries.

                                  -
                                  $originalAcValues: null | ACProperties = null

                                  The AC properties' values when the entity was loaded.

                                  -
                                  $privateData: string[] = []

                                  Properties that will not be serialized into JSON with toJSON(). This +

                                  $clientEnabledMethods: string[] = []

                                  The names of methods allowed to be called by the frontend with serverCall.

                                  +
                                  $data: T

                                  The data proxy object.

                                  +
                                  $dataHandler: Object

                                  The data proxy handler.

                                  +
                                  $dataStore: T

                                  The actual data store.

                                  +
                                  $isASleepingReference: boolean = false

                                  Whether this instance is a sleeping reference.

                                  +
                                  $nymph: Nymph

                                  The instance of Nymph to use for queries.

                                  +
                                  $originalAcValues: null | ACProperties = null

                                  The AC properties' values when the entity was loaded.

                                  +
                                  $privateData: string[] = []

                                  Properties that will not be serialized into JSON with toJSON(). This can be considered a denylist, because these properties will not be set with incoming JSON.

                                  Clients CAN still determine what is in these properties, unless they are also listed in searchRestrictedData.

                                  -
                                  $protectedData: string[] = []

                                  Properties that can only be modified by server side code. They will still +

                                  $protectedData: string[] = []

                                  Properties that can only be modified by server side code. They will still be visible on the frontend, unlike $privateData, but any changes to them that come from the frontend will be ignored.

                                  In addition to what's listed here, all of the access control properties @@ -159,95 +159,95 @@

                                  You should modify these through client enabled methods or the $save method instead, for safety.

                                  -
                                  $protectedTags: string[] = []

                                  Tags that can only be added/removed by server side code. They will still be +

                                  $protectedTags: string[] = []

                                  Tags that can only be added/removed by server side code. They will still be visible on the frontend, but any changes to them that come from the frontend will be ignored.

                                  -

                                  The actual sdata store.

                                  -
                                  $skipAc: boolean = false

                                  Whether to use "skipAc" when accessing entity references.

                                  -
                                  $sleepingReference: null | EntityReference = null

                                  The reference to use to wake.

                                  -
                                  $wakePromise: null | Promise<Entity<T>> = null

                                  A promise that resolved when the entity's data is wake.

                                  -
                                  cdate: null | number = null

                                  The creation date of the entity as a Unix timestamp in milliseconds.

                                  -
                                  guid: null | string = null

                                  The entity's Globally Unique ID.

                                  +

                                  The actual sdata store.

                                  +
                                  $skipAc: boolean = false

                                  Whether to use "skipAc" when accessing entity references.

                                  +
                                  $sleepingReference: null | EntityReference = null

                                  The reference to use to wake.

                                  +
                                  $wakePromise: null | Promise<Entity<T>> = null

                                  A promise that resolved when the entity's data is wake.

                                  +
                                  cdate: null | number = null

                                  The creation date of the entity as a Unix timestamp in milliseconds.

                                  +
                                  guid: null | string = null

                                  The entity's Globally Unique ID.

                                  This is a 12 byte number represented as a lower case HEX string (24 characters).

                                  -
                                  mdate: null | number = null

                                  The modified date of the entity as a Unix timestamp in milliseconds.

                                  -
                                  tags: string[] = []

                                  Array of the entity's tags.

                                  -
                                  ETYPE: string = 'entity'

                                  A unique name for this type of entity used to separate its data from other +

                                  mdate: null | number = null

                                  The modified date of the entity as a Unix timestamp in milliseconds.

                                  +
                                  tags: string[] = []

                                  Array of the entity's tags.

                                  +
                                  ETYPE: string = 'entity'

                                  A unique name for this type of entity used to separate its data from other types of entities in the database.

                                  -
                                  class: string = 'Entity'

                                  The lookup name for this entity.

                                  +
                                  class: string = 'Entity'

                                  The lookup name for this entity.

                                  This is used for reference arrays (and sleeping references) and client requests.

                                  -
                                  clientEnabledStaticMethods: string[] = []

                                  The names of static methods allowed to be called by the frontend with +

                                  clientEnabledStaticMethods: string[] = []

                                  The names of static methods allowed to be called by the frontend with serverCallStatic.

                                  -
                                  nymph: Nymph = ...

                                  The instance of Nymph to use for queries.

                                  -
                                  pubSubEnabled: boolean = true

                                  Whether this entity should publish changes to PubSub servers.

                                  -
                                  restEnabled: boolean = true

                                  Whether this entity should be accessible on the frontend through the REST +

                                  nymph: Nymph = ...

                                  The instance of Nymph to use for queries.

                                  +
                                  pubSubEnabled: boolean = true

                                  Whether this entity should publish changes to PubSub servers.

                                  +
                                  restEnabled: boolean = true

                                  Whether this entity should be accessible on the frontend through the REST server.

                                  If this is false, any request from the client that attempts to use this entity will fail.

                                  -
                                  searchRestrictedData: string[] = []

                                  Properties that will not be searchable from the frontend. If the frontend +

                                  searchRestrictedData: string[] = []

                                  Properties that will not be searchable from the frontend. If the frontend includes any of these properties in any of their clauses, they will be filtered out before the search is executed.

                                  -

                                  Methods

                                  Methods

                                  • Search the array for this object and return the corresponding index.

                                    If strict is false, is() is used to compare. If strict is true, equals() is used.

                                    -

                                    Parameters

                                    • array: any[]

                                      The array to search.

                                      -
                                    • strict: boolean = false

                                      Whether to use stronger comparison.

                                      +

                                      Parameters

                                      • array: any[]

                                        The array to search.

                                        +
                                      • strict: boolean = false

                                        Whether to use stronger comparison.

                                      Returns number

                                      The index if the object is in the array, -1 if it isn't.

                                      -
                                  • Replace any referenced entities in the data with sleeping references.

                                    Calling this function ensures that the next time a referenced entity is accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                                    -

                                    Returns void

                                  • Used to retrieve the data object.

                                    This should only be used by Nymph to save the data into storage.

                                    -

                                    Parameters

                                    • includeSData: boolean = false

                                      Whether to include the serialized data as well.

                                      +

                                      Parameters

                                      • includeSData: boolean = false

                                        Whether to include the serialized data as well.

                                      Returns any

                                      The entity's data object.

                                      -
                                  • Get an array of strings that must be unique across the current etype.

                                    When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                    The default implementation of this method returns an empty array, meaning there are no uniqueness constraints applied to its etype.

                                    -

                                    Returns Promise<string[]>

                                    Resolves to an array of entity's unique constraint strings.

                                    -
                                  • Check whether this object is in an array.

                                    If strict is false, is() is used to compare. If strict is true, equals() is used.

                                    -

                                    Parameters

                                    • array: any[]

                                      The array to search.

                                      -
                                    • strict: boolean = false

                                      Whether to use stronger comparison.

                                      +

                                      Parameters

                                      • array: any[]

                                        The array to search.

                                        +
                                      • strict: boolean = false

                                        Whether to use stronger comparison.

                                      Returns boolean

                                      True if the object is in the array, false if it isn't.

                                      -
                                  • Accept JSON data from the client.

                                    This function uses the security protection lists:

                                    • $protectedTags
                                    • @@ -255,9 +255,9 @@
                                    • $allowlistTags
                                    • $allowlistData
                                    -

                                    Parameters

                                    • input: EntityJson

                                      The input data. Please note, this will be modified (destroyed).

                                      -
                                    • allowConflict: boolean = false

                                      Allow to accept data that is older than the current data.

                                      -

                                    Returns void

                                  • Accept JSON patch from the client.

                                    +

                                    Parameters

                                    • input: EntityJson

                                      The input data. Please note, this will be modified (destroyed).

                                      +
                                    • allowConflict: boolean = false

                                      Allow to accept data that is older than the current data.

                                      +

                                    Returns void

                                  • Accept JSON patch from the client.

                                    This function uses the security protection lists:

                                    • $protectedTags
                                    • @@ -265,43 +265,43 @@
                                    • $allowlistTags
                                    • $allowlistData
                                    -

                                    Parameters

                                    • patch: EntityPatch

                                      The patch data. Please note, this will be modified (destroyed).

                                      -
                                    • allowConflict: boolean = false

                                      Allow to accept data that is older than the current data.

                                      -

                                    Returns void

                                  • Refresh the object from storage. (Bypasses Nymph's cache.)

                                    If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                    -

                                    Returns Promise<boolean | 0>

                                    False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                    -
                                  • Alter the options for a query for this entity.

                                    -

                                    Type Parameters

                                    Parameters

                                    • options: T

                                      The current options.

                                      -

                                    Returns T

                                    The altered options.

                                    -
                                  • Alter the options for a query for this entity.

                                    +

                                    Type Parameters

                                    Parameters

                                    • options: T

                                      The current options.

                                      +

                                    Returns T

                                    The altered options.

                                    +
                                  • Create or retrieve a new entity instance.

                                    Note that this will always return an entity, even if the GUID is not found.

                                    -

                                    Type Parameters

                                    Parameters

                                    • this: (new () => E)
                                        • new (): E
                                        • Returns E

                                    • Optional guid: string

                                      An optional GUID to retrieve.

                                      -

                                    Returns Promise<E & EntityDataType<E>>

                                  • Create a new sleeping reference instance.

                                    Sleeping references won't retrieve their data from the database until they are readied with $wake() or a parent's $wakeAll().

                                    -

                                    Type Parameters

                                    Parameters

                                    • this: (new () => E)
                                        • new (): E
                                        • Returns E

                                    • reference: EntityReference

                                      The Nymph Entity Reference to use to wake.

                                      -

                                    Returns E & EntityDataType<E>

                                    The new instance.

                                    -
                                  • Get an array of strings that must be unique across the current etype.

                                    When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                    The default implementation of this static method instantiates the entity, @@ -310,5 +310,5 @@ happens during any of these steps. You can override this method to calculate the unique strings faster, but you must return the same strings that would be returned by $getUniques.

                                    -

                                    Parameters

                                    • __namedParameters: {
                                          cdate?: number;
                                          data: EntityData;
                                          guid?: string;
                                          mdate?: number;
                                          sdata?: SerializedEntityData;
                                          tags: string[];
                                      }

                                    Returns Promise<string[]>

                                    Resolves to an array of entity's unique constraint strings.

                                    -

                                  Generated using TypeDoc

                                  \ No newline at end of file +

                                  Parameters

                                  • __namedParameters: {
                                        cdate?: number;
                                        data: EntityData;
                                        guid?: string;
                                        mdate?: number;
                                        sdata?: SerializedEntityData;
                                        tags: string[];
                                    }

                                  Returns Promise<string[]>

                                  Resolves to an array of entity's unique constraint strings.

                                  +
                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.EntityConflictError.html b/docs/api/latest/classes/_nymphjs_nymph.EntityConflictError.html index 70f1930..51ca4a3 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.EntityConflictError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.EntityConflictError.html @@ -1,11 +1,12 @@ -EntityConflictError | Nymph.js 1.0.0-beta.61

                                  Hierarchy

                                  • Error
                                    • EntityConflictError

                                  Constructors

                                  Properties

                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Type declaration

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    -

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  Generated using TypeDoc

                                  \ No newline at end of file +EntityConflictError | Nymph.js 1.0.0-beta.81

                                  Hierarchy

                                  • Error
                                    • EntityConflictError

                                  Constructors

                                  Properties

                                  cause?: unknown
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Optional override for formatting stack traces

                                  +

                                  Type declaration

                                    • (err, stackTraces): any
                                    • Parameters

                                      • err: Error
                                      • stackTraces: CallSite[]

                                      Returns any

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    +

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.EntityInvalidDataError.html b/docs/api/latest/classes/_nymphjs_nymph.EntityInvalidDataError.html index 14b6c9a..fb62018 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.EntityInvalidDataError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.EntityInvalidDataError.html @@ -1,17 +1,18 @@ -EntityInvalidDataError | Nymph.js 1.0.0-beta.61

                                  EntityInvalidDataError.

                                  +EntityInvalidDataError | Nymph.js 1.0.0-beta.81

                                  EntityInvalidDataError.

                                  This exception is meant to be thrown when an attempt to save an entity is made, and validation on the data of that entity fails.

                                  -

                                  Hierarchy

                                  • Error
                                    • EntityInvalidDataError

                                  Constructors

                                  Properties

                                  fields: string[] = []
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Type declaration

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    -

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  Generated using TypeDoc

                                  \ No newline at end of file +

                                  Hierarchy

                                  • Error
                                    • EntityInvalidDataError

                                  Constructors

                                  Properties

                                  cause?: unknown
                                  fields: string[] = []
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Optional override for formatting stack traces

                                  +

                                  Type declaration

                                    • (err, stackTraces): any
                                    • Parameters

                                      • err: Error
                                      • stackTraces: CallSite[]

                                      Returns any

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    +

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.EntityIsSleepingReferenceError.html b/docs/api/latest/classes/_nymphjs_nymph.EntityIsSleepingReferenceError.html index 4ee2640..1c29767 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.EntityIsSleepingReferenceError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.EntityIsSleepingReferenceError.html @@ -1,11 +1,12 @@ -EntityIsSleepingReferenceError | Nymph.js 1.0.0-beta.61

                                  Hierarchy

                                  • Error
                                    • EntityIsSleepingReferenceError

                                  Constructors

                                  Properties

                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Type declaration

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    -

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  Generated using TypeDoc

                                  \ No newline at end of file +EntityIsSleepingReferenceError | Nymph.js 1.0.0-beta.81

                                  Hierarchy

                                  • Error
                                    • EntityIsSleepingReferenceError

                                  Constructors

                                  Properties

                                  cause?: unknown
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Optional override for formatting stack traces

                                  +

                                  Type declaration

                                    • (err, stackTraces): any
                                    • Parameters

                                      • err: Error
                                      • stackTraces: CallSite[]

                                      Returns any

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    +

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.EntityUniqueConstraintError.html b/docs/api/latest/classes/_nymphjs_nymph.EntityUniqueConstraintError.html index 46a4fe0..063ff06 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.EntityUniqueConstraintError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.EntityUniqueConstraintError.html @@ -1,11 +1,12 @@ -EntityUniqueConstraintError | Nymph.js 1.0.0-beta.61

                                  Hierarchy

                                  • Error
                                    • EntityUniqueConstraintError

                                  Constructors

                                  Properties

                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Type declaration

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    -

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  Generated using TypeDoc

                                  \ No newline at end of file +EntityUniqueConstraintError | Nymph.js 1.0.0-beta.81

                                  Hierarchy

                                  • Error
                                    • EntityUniqueConstraintError

                                  Constructors

                                  Properties

                                  cause?: unknown
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Optional override for formatting stack traces

                                  +

                                  Type declaration

                                    • (err, stackTraces): any
                                    • Parameters

                                      • err: Error
                                      • stackTraces: CallSite[]

                                      Returns any

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    +

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.InvalidParametersError.html b/docs/api/latest/classes/_nymphjs_nymph.InvalidParametersError.html index cd27e67..f26f893 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.InvalidParametersError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.InvalidParametersError.html @@ -1,11 +1,12 @@ -InvalidParametersError | Nymph.js 1.0.0-beta.61

                                  Hierarchy

                                  • Error
                                    • InvalidParametersError

                                  Constructors

                                  Properties

                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Type declaration

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    -

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  Generated using TypeDoc

                                  \ No newline at end of file +InvalidParametersError | Nymph.js 1.0.0-beta.81

                                  Hierarchy

                                  • Error
                                    • InvalidParametersError

                                  Constructors

                                  Properties

                                  cause?: unknown
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Optional override for formatting stack traces

                                  +

                                  Type declaration

                                    • (err, stackTraces): any
                                    • Parameters

                                      • err: Error
                                      • stackTraces: CallSite[]

                                      Returns any

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    +

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.InvalidStateError.html b/docs/api/latest/classes/_nymphjs_nymph.InvalidStateError.html index 18fd640..7361c6d 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.InvalidStateError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.InvalidStateError.html @@ -1,11 +1,12 @@ -InvalidStateError | Nymph.js 1.0.0-beta.61

                                  Hierarchy

                                  • Error
                                    • InvalidStateError

                                  Constructors

                                  Properties

                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Type declaration

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    -

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  Generated using TypeDoc

                                  \ No newline at end of file +InvalidStateError | Nymph.js 1.0.0-beta.81

                                  Hierarchy

                                  • Error
                                    • InvalidStateError

                                  Constructors

                                  Properties

                                  cause?: unknown
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Optional override for formatting stack traces

                                  +

                                  Type declaration

                                    • (err, stackTraces): any
                                    • Parameters

                                      • err: Error
                                      • stackTraces: CallSite[]

                                      Returns any

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    +

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.NotConfiguredError.html b/docs/api/latest/classes/_nymphjs_nymph.NotConfiguredError.html index 35e4c4f..b9dbc97 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.NotConfiguredError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.NotConfiguredError.html @@ -1,11 +1,12 @@ -NotConfiguredError | Nymph.js 1.0.0-beta.61

                                  Hierarchy

                                  • Error
                                    • NotConfiguredError

                                  Constructors

                                  Properties

                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Type declaration

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    -

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  Generated using TypeDoc

                                  \ No newline at end of file +NotConfiguredError | Nymph.js 1.0.0-beta.81

                                  Hierarchy

                                  • Error
                                    • NotConfiguredError

                                  Constructors

                                  Properties

                                  cause?: unknown
                                  message: string
                                  name: string
                                  stack?: string
                                  prepareStackTrace?: ((err, stackTraces) => any)

                                  Optional override for formatting stack traces

                                  +

                                  Type declaration

                                    • (err, stackTraces): any
                                    • Parameters

                                      • err: Error
                                      • stackTraces: CallSite[]

                                      Returns any

                                  stackTraceLimit: number

                                  Methods

                                  • Create .stack property on a target object

                                    +

                                    Parameters

                                    • targetObject: object
                                    • Optional constructorOpt: Function

                                    Returns void

                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.Nymph.html b/docs/api/latest/classes/_nymphjs_nymph.Nymph.html index c72ef10..1eeb945 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.Nymph.html +++ b/docs/api/latest/classes/_nymphjs_nymph.Nymph.html @@ -1,119 +1,120 @@ -Nymph | Nymph.js 1.0.0-beta.61

                                  An object relational mapper for Node.js.

                                  +Nymph | Nymph.js 1.0.0-beta.81

                                  An object relational mapper for Node.js.

                                  Written by Hunter Perrin for SciActive.

                                  Author

                                  Hunter Perrin hperrin@gmail.com

                                  Copyright

                                  SciActive Inc

                                  See

                                  http://nymph.io/

                                  -

                                  Hierarchy

                                  • Nymph

                                  Constructors

                                  • Initialize Nymph.

                                    -

                                    Parameters

                                    • config: Partial<Config>

                                      The Nymph configuration.

                                      -
                                    • driver: NymphDriver

                                      The Nymph database driver.

                                      -
                                    • Optional tilmeld: TilmeldInterface

                                      The Tilmeld user/group manager instance, if you want to use it.

                                      -
                                    • Optional parent: Nymph

                                      Used internally by Nymph. Don't set this.

                                      -

                                    Returns Nymph

                                  Properties

                                  Entity: typeof Entity

                                  The entity class for this instance of Nymph.

                                  -
                                  afterCommitTransactionCallbacks: NymphAfterCommitTransactionCallback[] = []
                                  afterDeleteEntityByIDCallbacks: NymphAfterDeleteEntityByIDCallback[] = []
                                  afterDeleteEntityCallbacks: NymphAfterDeleteEntityCallback[] = []
                                  afterDeleteUIDCallbacks: NymphAfterDeleteUIDCallback[] = []
                                  afterNewUIDCallbacks: NymphAfterNewUIDCallback[] = []
                                  afterRenameUIDCallbacks: NymphAfterRenameUIDCallback[] = []
                                  afterRollbackTransactionCallbacks: NymphAfterRollbackTransactionCallback[] = []
                                  afterSaveEntityCallbacks: NymphAfterSaveEntityCallback[] = []
                                  afterSetUIDCallbacks: NymphAfterSetUIDCallback[] = []
                                  afterStartTransactionCallbacks: NymphAfterStartTransactionCallback[] = []
                                  beforeCommitTransactionCallbacks: NymphBeforeCommitTransactionCallback[] = []
                                  beforeDeleteEntityByIDCallbacks: NymphBeforeDeleteEntityByIDCallback[] = []
                                  beforeDeleteEntityCallbacks: NymphBeforeDeleteEntityCallback[] = []
                                  beforeDeleteUIDCallbacks: NymphBeforeDeleteUIDCallback[] = []
                                  beforeGetEntitiesCallbacks: NymphBeforeGetEntitiesCallback[] = []
                                  beforeGetEntityCallbacks: NymphBeforeGetEntityCallback[] = []
                                  beforeNewUIDCallbacks: NymphBeforeNewUIDCallback[] = []
                                  beforeRenameUIDCallbacks: NymphBeforeRenameUIDCallback[] = []
                                  beforeRollbackTransactionCallbacks: NymphBeforeRollbackTransactionCallback[] = []
                                  beforeSaveEntityCallbacks: NymphBeforeSaveEntityCallback[] = []
                                  beforeSetUIDCallbacks: NymphBeforeSetUIDCallback[] = []
                                  beforeStartTransactionCallbacks: NymphBeforeStartTransactionCallback[] = []
                                  config: Config

                                  The Nymph config.

                                  -
                                  connectCallbacks: NymphConnectCallback[] = []
                                  disconnectCallbacks: NymphDisconnectCallback[] = []
                                  driver: NymphDriver

                                  The Nymph database driver.

                                  -
                                  entityClasses: {
                                      [k: string]: EntityConstructor;
                                  } = {}

                                  A simple map of names to Entity classes.

                                  -

                                  Type declaration

                                  failedDeleteEntityByIDCallbacks: NymphFailedDeleteEntityByIDCallback[] = []
                                  failedDeleteEntityCallbacks: NymphFailedDeleteEntityCallback[] = []
                                  failedDeleteUIDCallbacks: NymphFailedDeleteUIDCallback[] = []
                                  failedNewUIDCallbacks: NymphFailedNewUIDCallback[] = []
                                  failedRenameUIDCallbacks: NymphFailedRenameUIDCallback[] = []
                                  failedSaveEntityCallbacks: NymphFailedSaveEntityCallback[] = []
                                  failedSetUIDCallbacks: NymphFailedSetUIDCallback[] = []
                                  parent: null | Nymph

                                  The Nymph instance that this one was cloned from, or null if it's not a +

                                  Constructors

                                  • Initialize Nymph.

                                    +

                                    Parameters

                                    • config: Partial<Config>

                                      The Nymph configuration.

                                      +
                                    • driver: NymphDriver

                                      The Nymph database driver.

                                      +
                                    • Optional tilmeld: TilmeldInterface

                                      The Tilmeld user/group manager instance, if you want to use it.

                                      +
                                    • Optional parent: Nymph

                                      Used internally by Nymph. Don't set this.

                                      +

                                    Returns Nymph

                                  Properties

                                  Entity: typeof Entity

                                  The entity class for this instance of Nymph.

                                  +
                                  afterCommitTransactionCallbacks: NymphAfterCommitTransactionCallback[] = []
                                  afterDeleteEntityByIDCallbacks: NymphAfterDeleteEntityByIDCallback[] = []
                                  afterDeleteEntityCallbacks: NymphAfterDeleteEntityCallback[] = []
                                  afterDeleteUIDCallbacks: NymphAfterDeleteUIDCallback[] = []
                                  afterNewUIDCallbacks: NymphAfterNewUIDCallback[] = []
                                  afterRenameUIDCallbacks: NymphAfterRenameUIDCallback[] = []
                                  afterRollbackTransactionCallbacks: NymphAfterRollbackTransactionCallback[] = []
                                  afterSaveEntityCallbacks: NymphAfterSaveEntityCallback[] = []
                                  afterSetUIDCallbacks: NymphAfterSetUIDCallback[] = []
                                  afterStartTransactionCallbacks: NymphAfterStartTransactionCallback[] = []
                                  beforeCommitTransactionCallbacks: NymphBeforeCommitTransactionCallback[] = []
                                  beforeDeleteEntityByIDCallbacks: NymphBeforeDeleteEntityByIDCallback[] = []
                                  beforeDeleteEntityCallbacks: NymphBeforeDeleteEntityCallback[] = []
                                  beforeDeleteUIDCallbacks: NymphBeforeDeleteUIDCallback[] = []
                                  beforeGetEntitiesCallbacks: NymphBeforeGetEntitiesCallback[] = []
                                  beforeGetEntityCallbacks: NymphBeforeGetEntityCallback[] = []
                                  beforeNewUIDCallbacks: NymphBeforeNewUIDCallback[] = []
                                  beforeRenameUIDCallbacks: NymphBeforeRenameUIDCallback[] = []
                                  beforeRollbackTransactionCallbacks: NymphBeforeRollbackTransactionCallback[] = []
                                  beforeSaveEntityCallbacks: NymphBeforeSaveEntityCallback[] = []
                                  beforeSetUIDCallbacks: NymphBeforeSetUIDCallback[] = []
                                  beforeStartTransactionCallbacks: NymphBeforeStartTransactionCallback[] = []
                                  config: Config

                                  The Nymph config.

                                  +
                                  connectCallbacks: NymphConnectCallback[] = []
                                  disconnectCallbacks: NymphDisconnectCallback[] = []
                                  driver: NymphDriver

                                  The Nymph database driver.

                                  +
                                  entityClasses: {
                                      [k: string]: EntityConstructor;
                                  } = {}

                                  A simple map of names to Entity classes.

                                  +

                                  Type declaration

                                  failedDeleteEntityByIDCallbacks: NymphFailedDeleteEntityByIDCallback[] = []
                                  failedDeleteEntityCallbacks: NymphFailedDeleteEntityCallback[] = []
                                  failedDeleteUIDCallbacks: NymphFailedDeleteUIDCallback[] = []
                                  failedNewUIDCallbacks: NymphFailedNewUIDCallback[] = []
                                  failedRenameUIDCallbacks: NymphFailedRenameUIDCallback[] = []
                                  failedSaveEntityCallbacks: NymphFailedSaveEntityCallback[] = []
                                  failedSetUIDCallbacks: NymphFailedSetUIDCallback[] = []
                                  parent: null | Nymph

                                  The Nymph instance that this one was cloned from, or null if it's not a clone.

                                  -
                                  queryCallbacks: NymphQueryCallback[] = []
                                  tilmeld?: TilmeldInterface = undefined

                                  An optional Tilmeld user/group manager instance.

                                  -

                                  Methods

                                  queryCallbacks: NymphQueryCallback[] = []
                                  tilmeld?: TilmeldInterface = undefined

                                  An optional Tilmeld user/group manager instance.

                                  +

                                  Methods

                                  • Add your class to this instance.

                                    This will create a class that extends your class within this instance of Nymph and return it. You can then use this class's constructor and methods, which will use this instance of Nymph.

                                    Because this creates a subclass, don't use the class returned from getEntityClass to check with instanceof.

                                    -

                                    Type Parameters

                                    Parameters

                                    • EntityClass: T

                                    Returns T

                                  • Commit the named transaction.

                                    After this is called, the transaction instance should be discarded.

                                    -

                                    Parameters

                                    • name: string

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Connect to the database.

                                    -

                                    Returns Promise<boolean>

                                    Whether the instance is connected to the database.

                                    -
                                  • Delete an entity from the database by its GUID.

                                    -

                                    Parameters

                                    • guid: string

                                      The entity's GUID.

                                      -
                                    • Optional className: string

                                      The entity's class name.

                                      -

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Delete a unique ID.

                                    -

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      -

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Disconnect from the database.

                                    -

                                    Returns Promise<boolean>

                                    Whether the instance is connected to the database.

                                    -
                                  • Export entities to a local file.

                                    +

                                    Parameters

                                    • name: string

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Connect to the database.

                                    +

                                    Returns Promise<boolean>

                                    Whether the instance is connected to the database.

                                    +
                                  • Delete an entity from the database by its GUID.

                                    +

                                    Parameters

                                    • guid: string

                                      The entity's GUID.

                                      +
                                    • Optional className: string

                                      The entity's class name.

                                      +

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Delete a unique ID.

                                    +

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      +

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Disconnect from the database.

                                    +

                                    Returns Promise<boolean>

                                    Whether the instance is connected to the database.

                                    +
                                  • Export entities to a local file.

                                    This is the file format:

                                    #nex2
                                    # The above line must be the first thing in the file.
                                    # Comments begin with #
                                    # And can have white space before them.
                                    # This defines a UID.
                                    <name/of/uid>[5]
                                    <another uid>[8000]
                                    # For UIDs, the name is in angle brackets (<>) and the value follows
                                    # in square brackets ([]).
                                    # This starts a new entity.
                                    {1234abcd}<etype>[tag,list,with,commas]
                                    # For entities, the GUID is in curly brackets ({}), then the etype in
                                    # angle brackets, then the comma separated tag list follows in square
                                    # brackets ([]).
                                    # Properties are stored like this:
                                    # propname=JSON.stringify(value)
                                    abilities=["system/admin"]
                                    groups=[]
                                    inheritAbilities=false
                                    name="admin"
                                    # White space before/after "=" and at beginning/end of line is ignored.
                                    username = "admin"
                                    {2}<etype>[tag,list]
                                    another="This is another entity."
                                    newline="\n"
                                    -

                                    Parameters

                                    • filename: string

                                      The file to export to.

                                      -

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Export entities to the console.

                                    -

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Get an array of entities.

                                    +

                                    Parameters

                                    • filename: string

                                      The file to export to.

                                      +

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Export entities to the console.

                                    +

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Get an array of entities.

                                    options is an object, which contains any of the following settings:

                                    • class - The class to create each entity with.
                                    • @@ -211,32 +212,35 @@

                                      See

                                      http://nymph.io/

                                    const entities = Nymph.getEntities(
                                    { class: Entity, reverse: true, limit: 2 },
                                    {
                                    type: '&', // all must be true
                                    tag: 'person',
                                    defined: 'spouse',
                                    equal: [
                                    ['gender', 'male'],
                                    ['lname', 'Smith']
                                    ],
                                    '!equal': ['warnings', 0]
                                    },
                                    {
                                    type: '|', // at least one of the selectors in this must match
                                    selector: [
                                    {
                                    type: '&',
                                    tag: ['level1', 'level2']
                                    },
                                    {
                                    type: '&',
                                    tag: ['access1', 'access2']
                                    }
                                    ]
                                    },
                                    {
                                    type: '|', // at least one must be true
                                    tag: ['employee', 'manager']
                                    },
                                    {
                                    type: '|',
                                    equal: [
                                    ['name', 'Clark'],
                                    ['name', 'James']
                                    ],
                                    match: [
                                    ['name', 'Chris(topher)?'],
                                    ['name', 'Ja(ke|cob)']
                                    ]
                                    },
                                    {
                                    type: '!|', // at least one must be false
                                    gte: ['age', 22],
                                    gt: ['pay', 8]
                                    }
                                    );
                                    -

                                    Type Parameters

                                    Parameters

                                    • options: Options<T> & {
                                          return: "count";
                                      }

                                      The options.

                                      -
                                    • Rest ...selectors: Selector[]

                                      Unlimited optional selectors to search for. If none are given, all entities are retrieved for the given options.

                                      -

                                    Returns Promise<number>

                                    An array of entities or guids, or a count.

                                    +

                                  Type Parameters

                                  Parameters

                                  • options: Options<T> & {
                                        return: "count";
                                    }

                                    The options.

                                    +
                                  • Rest ...selectors: Selector[]

                                    Unlimited optional selectors to search for. If none are given, all entities are retrieved for the given options.

                                    +

                                  Returns Promise<number>

                                  An array of entities or guids, or a count.

                                  Todo

                                  Use an asterisk to specify any variable.

                                  -
                                • Type Parameters

                                  Parameters

                                  • options: Options<T> & {
                                        return: "guid";
                                    }
                                  • Rest ...selectors: Selector[]

                                  Returns Promise<string[]>

                                • Type Parameters

                                  Parameters

                                  Returns Promise<EntityInstanceType<T>[]>

                                  • Get the class that uses the specified etype.

                                    Note that it is fine, though unusual, for two classes to use the same etype. However, this can lead to very hard to diagnose bugs, so is generally discouraged.

                                    -

                                    Parameters

                                    • etype: string

                                    Returns EntityConstructor

                                  • Get the current value of a unique ID.

                                    -

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      -

                                    Returns Promise<null | number>

                                    The UID's value, or null on failure and if it doesn't exist.

                                    -
                                  • Import entities from a file.

                                    -

                                    Parameters

                                    • filename: string

                                      The file to import from.

                                      -

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Check if there is any open transaction.

                                    -

                                    Returns Promise<boolean>

                                    True if there is a transaction.

                                    -
                                  • Get the current value of a unique ID.

                                    +

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      +

                                    Returns Promise<null | number>

                                    The UID's value, or null on failure and if it doesn't exist.

                                    +
                                  • Import entities from a file.

                                    +

                                    Parameters

                                    • filename: string

                                      The file to import from.

                                      +

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Check if there is any open transaction.

                                    +

                                    Returns Promise<boolean>

                                    True if there is a transaction.

                                    +
                                  • Detect whether the database needs to be migrated.

                                    +

                                    If true, the database should be exported with an old version of Nymph, then +imported into a fresh database with this version.

                                    +

                                    Returns Promise<boolean>

                                  • Increment or create a unique ID and return the new value.

                                    Unique IDs, or UIDs are similar to GUIDs, but numeric and sequential.

                                    A UID can be used to identify an object when the GUID doesn't suffice. On a system where a new entity is created many times per second, referring @@ -249,31 +253,31 @@

                                    See

                                    http://nymph.io/

                                    will be created with that name, and assigned the value 1. If the UID already exists, its value will be incremented. The new value will be returned.

                                    -

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      -

                                    Returns Promise<null | number>

                                    The UID's new value, or null on failure.

                                    -
                                  • Type Parameters

                                    Parameters

                                    • event: T
                                    • callback: T extends "connect"
                                          ? NymphConnectCallback
                                          : T extends "disconnect"
                                              ? NymphDisconnectCallback
                                              : T extends "query"
                                                  ? NymphQueryCallback
                                                  : T extends "beforeGetEntity"
                                                      ? NymphBeforeGetEntityCallback
                                                      : T extends "beforeGetEntities"
                                                          ? NymphBeforeGetEntitiesCallback
                                                          : T extends "beforeSaveEntity"
                                                              ? NymphBeforeSaveEntityCallback
                                                              : T extends "afterSaveEntity"
                                                                  ? NymphAfterSaveEntityCallback
                                                                  : T extends "failedSaveEntity"
                                                                      ? NymphFailedSaveEntityCallback
                                                                      : T extends "beforeDeleteEntity"
                                                                          ? NymphBeforeDeleteEntityCallback
                                                                          : T extends "afterDeleteEntity"
                                                                              ? NymphAfterDeleteEntityCallback
                                                                              : T extends "failedDeleteEntity"
                                                                                  ? NymphFailedDeleteEntityCallback
                                                                                  : T extends "beforeDeleteEntityByID"
                                                                                      ? NymphBeforeDeleteEntityByIDCallback
                                                                                      : T extends "afterDeleteEntityByID"
                                                                                          ? NymphAfterDeleteEntityByIDCallback
                                                                                          : T extends "failedDeleteEntityByID"
                                                                                              ? NymphFailedDeleteEntityByIDCallback
                                                                                              : T extends "beforeNewUID"
                                                                                                  ? NymphBeforeNewUIDCallback
                                                                                                  : T extends "afterNewUID"
                                                                                                      ? NymphAfterNewUIDCallback
                                                                                                      : T extends "failedNewUID"
                                                                                                          ? NymphFailedNewUIDCallback
                                                                                                          : T extends "beforeSetUID"
                                                                                                              ? NymphBeforeSetUIDCallback
                                                                                                              : T extends "afterSetUID"
                                                                                                                  ? NymphAfterSetUIDCallback
                                                                                                                  : T extends "failedSetUID"
                                                                                                                      ? NymphFailedSetUIDCallback
                                                                                                                      : T extends "beforeRenameUID"
                                                                                                                          ? NymphBeforeRenameUIDCallback
                                                                                                                          : T extends "afterRenameUID"
                                                                                                                              ? NymphAfterRenameUIDCallback
                                                                                                                              : T extends "failedRenameUID"
                                                                                                                                  ? NymphFailedRenameUIDCallback
                                                                                                                                  : T extends "beforeDeleteUID"
                                                                                                                                      ? NymphBeforeDeleteUIDCallback
                                                                                                                                      : T extends "afterDeleteUID"
                                                                                                                                          ? NymphAfterDeleteUIDCallback
                                                                                                                                          : T extends "failedDeleteUID"
                                                                                                                                              ? NymphFailedDeleteUIDCallback
                                                                                                                                              : T extends "beforeStartTransaction"
                                                                                                                                                  ? NymphBeforeStartTransactionCallback
                                                                                                                                                  : T extends "afterStartTransaction"
                                                                                                                                                      ? NymphAfterStartTransactionCallback
                                                                                                                                                      : T extends "beforeCommitTransaction"
                                                                                                                                                          ? NymphBeforeCommitTransactionCallback
                                                                                                                                                          : T extends "afterCommitTransaction"
                                                                                                                                                              ? NymphAfterCommitTransactionCallback
                                                                                                                                                              : T extends "beforeRollbackTransaction"
                                                                                                                                                                  ? NymphBeforeRollbackTransactionCallback
                                                                                                                                                                  : T extends "afterRollbackTransaction"
                                                                                                                                                                      ? NymphAfterRollbackTransactionCallback
                                                                                                                                                                      : never

                                    Returns boolean

                                  • Type Parameters

                                    Parameters

                                    • event: T
                                    • callback: T extends "connect"
                                          ? NymphConnectCallback
                                          : T extends "disconnect"
                                              ? NymphDisconnectCallback
                                              : T extends "query"
                                                  ? NymphQueryCallback
                                                  : T extends "beforeGetEntity"
                                                      ? NymphBeforeGetEntityCallback
                                                      : T extends "beforeGetEntities"
                                                          ? NymphBeforeGetEntitiesCallback
                                                          : T extends "beforeSaveEntity"
                                                              ? NymphBeforeSaveEntityCallback
                                                              : T extends "afterSaveEntity"
                                                                  ? NymphAfterSaveEntityCallback
                                                                  : T extends "failedSaveEntity"
                                                                      ? NymphFailedSaveEntityCallback
                                                                      : T extends "beforeDeleteEntity"
                                                                          ? NymphBeforeDeleteEntityCallback
                                                                          : T extends "afterDeleteEntity"
                                                                              ? NymphAfterDeleteEntityCallback
                                                                              : T extends "failedDeleteEntity"
                                                                                  ? NymphFailedDeleteEntityCallback
                                                                                  : T extends "beforeDeleteEntityByID"
                                                                                      ? NymphBeforeDeleteEntityByIDCallback
                                                                                      : T extends "afterDeleteEntityByID"
                                                                                          ? NymphAfterDeleteEntityByIDCallback
                                                                                          : T extends "failedDeleteEntityByID"
                                                                                              ? NymphFailedDeleteEntityByIDCallback
                                                                                              : T extends "beforeNewUID"
                                                                                                  ? NymphBeforeNewUIDCallback
                                                                                                  : T extends "afterNewUID"
                                                                                                      ? NymphAfterNewUIDCallback
                                                                                                      : T extends "failedNewUID"
                                                                                                          ? NymphFailedNewUIDCallback
                                                                                                          : T extends "beforeSetUID"
                                                                                                              ? NymphBeforeSetUIDCallback
                                                                                                              : T extends "afterSetUID"
                                                                                                                  ? NymphAfterSetUIDCallback
                                                                                                                  : T extends "failedSetUID"
                                                                                                                      ? NymphFailedSetUIDCallback
                                                                                                                      : T extends "beforeRenameUID"
                                                                                                                          ? NymphBeforeRenameUIDCallback
                                                                                                                          : T extends "afterRenameUID"
                                                                                                                              ? NymphAfterRenameUIDCallback
                                                                                                                              : T extends "failedRenameUID"
                                                                                                                                  ? NymphFailedRenameUIDCallback
                                                                                                                                  : T extends "beforeDeleteUID"
                                                                                                                                      ? NymphBeforeDeleteUIDCallback
                                                                                                                                      : T extends "afterDeleteUID"
                                                                                                                                          ? NymphAfterDeleteUIDCallback
                                                                                                                                          : T extends "failedDeleteUID"
                                                                                                                                              ? NymphFailedDeleteUIDCallback
                                                                                                                                              : T extends "beforeStartTransaction"
                                                                                                                                                  ? NymphBeforeStartTransactionCallback
                                                                                                                                                  : T extends "afterStartTransaction"
                                                                                                                                                      ? NymphAfterStartTransactionCallback
                                                                                                                                                      : T extends "beforeCommitTransaction"
                                                                                                                                                          ? NymphBeforeCommitTransactionCallback
                                                                                                                                                          : T extends "afterCommitTransaction"
                                                                                                                                                              ? NymphAfterCommitTransactionCallback
                                                                                                                                                              : T extends "beforeRollbackTransaction"
                                                                                                                                                                  ? NymphBeforeRollbackTransactionCallback
                                                                                                                                                                  : T extends "afterRollbackTransaction"
                                                                                                                                                                      ? NymphAfterRollbackTransactionCallback
                                                                                                                                                                      : never

                                    Returns (() => boolean)

                                      • (): boolean
                                      • Returns boolean

                                  • Rename a unique ID.

                                    -

                                    Parameters

                                    • oldName: string

                                      The old name.

                                      -
                                    • newName: string

                                      The new name.

                                      -

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Rollback the named transaction.

                                    +

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      +

                                    Returns Promise<null | number>

                                    The UID's new value, or null on failure.

                                    +
                                  • Type Parameters

                                    Parameters

                                    • event: T
                                    • callback: T extends "connect"
                                          ? NymphConnectCallback
                                          : T extends "disconnect"
                                              ? NymphDisconnectCallback
                                              : T extends "query"
                                                  ? NymphQueryCallback
                                                  : T extends "beforeGetEntity"
                                                      ? NymphBeforeGetEntityCallback
                                                      : T extends "beforeGetEntities"
                                                          ? NymphBeforeGetEntitiesCallback
                                                          : T extends "beforeSaveEntity"
                                                              ? NymphBeforeSaveEntityCallback
                                                              : T extends "afterSaveEntity"
                                                                  ? NymphAfterSaveEntityCallback
                                                                  : T extends "failedSaveEntity"
                                                                      ? NymphFailedSaveEntityCallback
                                                                      : T extends "beforeDeleteEntity"
                                                                          ? NymphBeforeDeleteEntityCallback
                                                                          : T extends "afterDeleteEntity"
                                                                              ? NymphAfterDeleteEntityCallback
                                                                              : (...) extends (...)
                                                                                  ? (...)
                                                                                  : (...)

                                    Returns boolean

                                  • Type Parameters

                                    Parameters

                                    • event: T
                                    • callback: T extends "connect"
                                          ? NymphConnectCallback
                                          : T extends "disconnect"
                                              ? NymphDisconnectCallback
                                              : T extends "query"
                                                  ? NymphQueryCallback
                                                  : T extends "beforeGetEntity"
                                                      ? NymphBeforeGetEntityCallback
                                                      : T extends "beforeGetEntities"
                                                          ? NymphBeforeGetEntitiesCallback
                                                          : T extends "beforeSaveEntity"
                                                              ? NymphBeforeSaveEntityCallback
                                                              : T extends "afterSaveEntity"
                                                                  ? NymphAfterSaveEntityCallback
                                                                  : T extends "failedSaveEntity"
                                                                      ? NymphFailedSaveEntityCallback
                                                                      : T extends "beforeDeleteEntity"
                                                                          ? NymphBeforeDeleteEntityCallback
                                                                          : T extends "afterDeleteEntity"
                                                                              ? NymphAfterDeleteEntityCallback
                                                                              : (...) extends (...)
                                                                                  ? (...)
                                                                                  : (...)

                                    Returns (() => boolean)

                                      • (): boolean
                                      • Returns boolean

                                  • Rename a unique ID.

                                    +

                                    Parameters

                                    • oldName: string

                                      The old name.

                                      +
                                    • newName: string

                                      The new name.

                                      +

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Rollback the named transaction.

                                    After this is called, the transaction instance should be discarded.

                                    -

                                    Parameters

                                    • name: string

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Save an entity to the database.

                                    +

                                    Parameters

                                    • name: string

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Save an entity to the database.

                                    If the entity has never been saved (has no GUID), a variable "cdate" is set on it with the current Unix timestamp.

                                    The variable "mdate" is set to the current Unix timestamp.

                                    -

                                    Parameters

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Set the value of a UID.

                                    -

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      -
                                    • value: number

                                      The value.

                                      -

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    -
                                  • Set the value of a UID.

                                    +

                                    Parameters

                                    • name: string

                                      The UID's name.

                                      +
                                    • value: number

                                      The value.

                                      +

                                    Returns Promise<boolean>

                                    True on success, false on failure.

                                    +
                                  • Start an atomic transaction and returns a new instance of Nymph.

                                    All proceeding changes using this new instance will wait to be written to the database's permanent storage until commit() is called. You can also undo all the changes since this function ran with rollback().

                                    Transactions will nest as long as every name is unique. Internally, Nymph uses names prefixed with "nymph-".

                                    -

                                    Parameters

                                    • name: string

                                    Returns Promise<Nymph>

                                    A new instance of Nymph that should be used for the transaction.

                                    -

                                  Generated using TypeDoc

                                  \ No newline at end of file +

                                  Parameters

                                  • name: string

                                  Returns Promise<Nymph>

                                  A new instance of Nymph that should be used for the transaction.

                                  +
                                  \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.NymphDriver.html b/docs/api/latest/classes/_nymphjs_nymph.NymphDriver.html index 7287918..981a190 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.NymphDriver.html +++ b/docs/api/latest/classes/_nymphjs_nymph.NymphDriver.html @@ -1,69 +1,77 @@ -NymphDriver | Nymph.js 1.0.0-beta.61

                                  A Nymph database driver.

                                  -

                                  Hierarchy

                                  • NymphDriver

                                    Constructors

                                    Properties

                                    entityCache: {
                                        [k: string]: {
                                            cdate: number;
                                            data: EntityData;
                                            mdate: number;
                                            sdata: SerializedEntityData;
                                            tags: string[];
                                        };
                                    } = {}

                                    A cache to make entity retrieval faster.

                                    -

                                    Type declaration

                                    entityCount: {
                                        [k: string]: number;
                                    } = {}

                                    A counter for the entity cache to determine the most accessed entities.

                                    -

                                    Type declaration

                                    • [k: string]: number
                                    nymph: Nymph = ...
                                    putDataCounter: number = 0

                                    Protect against infinite loops.

                                    -

                                    Methods

                                    • Parameters

                                      • selectors: FormattedSelector[]
                                      • callback: ((data) => string)
                                          • (data): string
                                          • Parameters

                                            • data: {
                                                  key: string;
                                                  typeIsNot: boolean;
                                                  typeIsOr: boolean;
                                                  value: any;
                                              }
                                              • key: string
                                              • typeIsNot: boolean
                                              • typeIsOr: boolean
                                              • value: any

                                            Returns string

                                      Returns string[]

                                    • Detect whether the database needs to be migrated.

                                      +

                                      If true, the database should be exported with an old version of Nymph, then +imported into a fresh database with this version.

                                      +

                                      Returns Promise<boolean>

                                    • Pull an entity from the cache.

                                      +

                                      Type Parameters

                                      Parameters

                                      • guid: string

                                        The entity's GUID.

                                        +
                                      • className: string

                                        The entity's class.

                                        +
                                      • useSkipAc: boolean = false

                                        Whether to tell the entity to use skip_ac.

                                        +

                                      Returns null | T

                                      The entity or null if it's not cached.

                                      +
                                    • Push an entity onto the cache.

                                      +

                                      Parameters

                                      • guid: string

                                        The entity's GUID.

                                        +
                                      • cdate: number

                                        The entity's cdate.

                                        +
                                      • mdate: number

                                        The entity's mdate.

                                        +
                                      • tags: string[]

                                        The entity's tags.

                                        +
                                      • data: EntityData

                                        The entity's data.

                                        +
                                      • sdata: SerializedEntityData

                                        The entity's sdata.

                                        +

                                      Returns void

                                    • Parameters

                                      • entity: EntityInterface
                                      • saveNewEntityCallback: ((data) => Promise<boolean>)
                                      • saveExistingEntityCallback: ((data) => Promise<boolean>)
                                      • startTransactionCallback: null | (() => Promise<void>) = null
                                      • commitTransactionCallback: null | ((success) => Promise<boolean>) = null

                                      Returns Promise<boolean>

                                    \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.QueryFailedError.html b/docs/api/latest/classes/_nymphjs_nymph.QueryFailedError.html index f5a1bee..6a5dd2b 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.QueryFailedError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.QueryFailedError.html @@ -1,14 +1,15 @@ -QueryFailedError | Nymph.js 1.0.0-beta.61

                                    Hierarchy

                                    • Error
                                      • QueryFailedError

                                    Constructors

                                    Properties

                                    message: string
                                    name: string
                                    query?: string
                                    stack?: string
                                    prepareStackTrace?: ((err, stackTraces) => any)

                                    Type declaration

                                    stackTraceLimit: number

                                    Methods

                                    • Create .stack property on a target object

                                      -

                                      Parameters

                                      • targetObject: object
                                      • Optional constructorOpt: Function

                                      Returns void

                                    Generated using TypeDoc

                                    \ No newline at end of file +QueryFailedError | Nymph.js 1.0.0-beta.81

                                    Hierarchy

                                    • Error
                                      • QueryFailedError

                                    Constructors

                                    Properties

                                    cause?: unknown
                                    message: string
                                    name: string
                                    query?: string
                                    stack?: string
                                    prepareStackTrace?: ((err, stackTraces) => any)

                                    Optional override for formatting stack traces

                                    +

                                    Type declaration

                                      • (err, stackTraces): any
                                      • Parameters

                                        • err: Error
                                        • stackTraces: CallSite[]

                                        Returns any

                                    stackTraceLimit: number

                                    Methods

                                    • Create .stack property on a target object

                                      +

                                      Parameters

                                      • targetObject: object
                                      • Optional constructorOpt: Function

                                      Returns void

                                    \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_nymph.UnableToConnectError.html b/docs/api/latest/classes/_nymphjs_nymph.UnableToConnectError.html index 27ffdd6..688cb9a 100644 --- a/docs/api/latest/classes/_nymphjs_nymph.UnableToConnectError.html +++ b/docs/api/latest/classes/_nymphjs_nymph.UnableToConnectError.html @@ -1,11 +1,12 @@ -UnableToConnectError | Nymph.js 1.0.0-beta.61

                                    Hierarchy

                                    • Error
                                      • UnableToConnectError

                                    Constructors

                                    Properties

                                    message: string
                                    name: string
                                    stack?: string
                                    prepareStackTrace?: ((err, stackTraces) => any)

                                    Type declaration

                                    stackTraceLimit: number

                                    Methods

                                    • Create .stack property on a target object

                                      -

                                      Parameters

                                      • targetObject: object
                                      • Optional constructorOpt: Function

                                      Returns void

                                    Generated using TypeDoc

                                    \ No newline at end of file +UnableToConnectError | Nymph.js 1.0.0-beta.81

                                    Hierarchy

                                    • Error
                                      • UnableToConnectError

                                    Constructors

                                    Properties

                                    cause?: unknown
                                    message: string
                                    name: string
                                    stack?: string
                                    prepareStackTrace?: ((err, stackTraces) => any)

                                    Optional override for formatting stack traces

                                    +

                                    Type declaration

                                      • (err, stackTraces): any
                                      • Parameters

                                        • err: Error
                                        • stackTraces: CallSite[]

                                        Returns any

                                    stackTraceLimit: number

                                    Methods

                                    • Create .stack property on a target object

                                      +

                                      Parameters

                                      • targetObject: object
                                      • Optional constructorOpt: Function

                                      Returns void

                                    \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_pubsub.PubSub.html b/docs/api/latest/classes/_nymphjs_pubsub.PubSub.html index 8779fc1..2203447 100644 --- a/docs/api/latest/classes/_nymphjs_pubsub.PubSub.html +++ b/docs/api/latest/classes/_nymphjs_pubsub.PubSub.html @@ -1,52 +1,52 @@ -PubSub | Nymph.js 1.0.0-beta.61

                                    A publish/subscribe server for Nymph.

                                    +PubSub | Nymph.js 1.0.0-beta.81

                                    A publish/subscribe server for Nymph.

                                    Written by Hunter Perrin for SciActive.

                                    Author

                                    Hunter Perrin hperrin@gmail.com

                                    Copyright

                                    SciActive Inc

                                    See

                                    http://nymph.io/

                                    -

                                    Hierarchy

                                    • PubSub

                                    Constructors

                                    • Initialize Nymph PubSub.

                                      -

                                      Parameters

                                      • config: Partial<Config>

                                        The PubSub configuration.

                                        -
                                      • nymph: Nymph
                                      • server: server

                                      Returns PubSub

                                    Properties

                                    config: Config

                                    The PubSub config.

                                    -
                                    nymph: Nymph

                                    The Nymph instance.

                                    -
                                    querySubs: {
                                        [etype: string]: {
                                            [query: string]: Map<connection, QuerySubscriptionData>;
                                        };
                                    } = {}

                                    Type declaration

                                    server: server

                                    The WebSocket server.

                                    -
                                    sessions: Map<connection, {
                                        authToken: string;
                                        switchToken?: string;
                                    }> = ...

                                    Type declaration

                                    • authToken: string
                                    • Optional switchToken?: string
                                    uidSubs: {
                                        [uidName: string]: Map<connection, {
                                            count: boolean;
                                        }>;
                                    } = {}

                                    Type declaration

                                    • [uidName: string]: Map<connection, {
                                          count: boolean;
                                      }>
                                    transactionPublishes: {
                                        config: Config;
                                        nymph: Nymph;
                                        payload: string;
                                    }[] = []

                                    Type declaration

                                    Methods

                                    • Handle a publish from a client.

                                      -

                                      Parameters

                                      Returns Promise<void>

                                    • Handle a UID publish from a client.

                                      -

                                      Parameters

                                      Returns Promise<void>

                                    • Parameters

                                      • request: request

                                      Returns void

                                    • Handle a subscribe or unsubscribe from a client.

                                      -

                                      Parameters

                                      Returns Promise<void>

                                    • Handle a subscribe or unsubscribe for a query from a client.

                                      -

                                      Parameters

                                      • from: connection
                                      • data: QuerySubscribeMessageData
                                      • Optional qrefParent: {
                                            etype: string;
                                            query: string;
                                        }
                                        • etype: string
                                        • query: string

                                      Returns Promise<void>

                                    • Handle a subscribe or unsubscribe for a UID from a client.

                                      -

                                      Parameters

                                      Returns Promise<void>

                                    • Clean up after users who leave.

                                      -

                                      Parameters

                                      • conn: connection
                                      • description: string

                                      Returns void

                                    • Parameters

                                      • conn: connection
                                      • e: Error

                                      Returns void

                                    • Handle a message from a client.

                                      -

                                      Parameters

                                      • from: connection
                                      • msg: Message

                                      Returns Promise<void>

                                    • Relay publish data to other servers.

                                      -

                                      Parameters

                                      • message: Message

                                      Returns void

                                    • This translates qref selectors into ref selectors using the "current" GUID +

                                    Constructors

                                    • Initialize Nymph PubSub.

                                      +

                                      Parameters

                                      • config: Partial<Config>

                                        The PubSub configuration.

                                        +
                                      • nymph: Nymph
                                      • server: server

                                      Returns PubSub

                                    Properties

                                    config: Config

                                    The PubSub config.

                                    +
                                    nymph: Nymph

                                    The Nymph instance.

                                    +
                                    querySubs: {
                                        [etype: string]: {
                                            [query: string]: Map<connection, QuerySubscriptionData>;
                                        };
                                    } = {}

                                    Type declaration

                                    server: server

                                    The WebSocket server.

                                    +
                                    sessions: Map<connection, {
                                        authToken: string;
                                        switchToken?: string;
                                    }> = ...

                                    Type declaration

                                    • authToken: string
                                    • Optional switchToken?: string
                                    uidSubs: {
                                        [uidName: string]: Map<connection, {
                                            count: boolean;
                                        }>;
                                    } = {}

                                    Type declaration

                                    • [uidName: string]: Map<connection, {
                                          count: boolean;
                                      }>
                                    transactionPublishes: {
                                        config: Config;
                                        nymph: Nymph;
                                        payload: string;
                                    }[] = []

                                    Type declaration

                                    Methods

                                    • Handle a publish from a client.

                                      +

                                      Parameters

                                      Returns Promise<void>

                                    • Handle a UID publish from a client.

                                      +

                                      Parameters

                                      Returns Promise<void>

                                    • Parameters

                                      • request: request

                                      Returns void

                                    • Handle a subscribe or unsubscribe from a client.

                                      +

                                      Parameters

                                      Returns Promise<void>

                                    • Handle a subscribe or unsubscribe for a query from a client.

                                      +

                                      Parameters

                                      • from: connection
                                      • data: QuerySubscribeMessageData
                                      • Optional qrefParent: {
                                            etype: string;
                                            query: string;
                                        }
                                        • etype: string
                                        • query: string

                                      Returns Promise<void>

                                    • Handle a subscribe or unsubscribe for a UID from a client.

                                      +

                                      Parameters

                                      Returns Promise<void>

                                    • Clean up after users who leave.

                                      +

                                      Parameters

                                      • conn: connection
                                      • description: string

                                      Returns void

                                    • Parameters

                                      • conn: connection
                                      • e: Error

                                      Returns void

                                    • Handle a message from a client.

                                      +

                                      Parameters

                                      • from: connection
                                      • msg: Message

                                      Returns Promise<void>

                                    • Relay publish data to other servers.

                                      +

                                      Parameters

                                      • message: Message

                                      Returns void

                                    • This translates qref selectors into ref selectors using the "current" GUID list in the existing subscriptions.

                                      -

                                      Parameters

                                      Returns Selector[]

                                    • Parameters

                                      Returns void

                                    • Parameters

                                      Returns Promise<void>

                                    • Parameters

                                      Returns void

                                    Generated using TypeDoc

                                    \ No newline at end of file +

                                    Parameters

                                    Returns Selector[]

                                    • Parameters

                                      Returns void

                                    • Parameters

                                      Returns Promise<void>

                                    • Parameters

                                      Returns void

                                    \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_server.ForbiddenClassError.html b/docs/api/latest/classes/_nymphjs_server.ForbiddenClassError.html index 5b78da8..c06d19c 100644 --- a/docs/api/latest/classes/_nymphjs_server.ForbiddenClassError.html +++ b/docs/api/latest/classes/_nymphjs_server.ForbiddenClassError.html @@ -1,11 +1,12 @@ -ForbiddenClassError | Nymph.js 1.0.0-beta.61

                                    Hierarchy

                                    • Error
                                      • ForbiddenClassError

                                    Constructors

                                    Properties

                                    message: string
                                    name: string
                                    stack?: string
                                    prepareStackTrace?: ((err, stackTraces) => any)

                                    Type declaration

                                    stackTraceLimit: number

                                    Methods

                                    • Create .stack property on a target object

                                      -

                                      Parameters

                                      • targetObject: object
                                      • Optional constructorOpt: Function

                                      Returns void

                                    Generated using TypeDoc

                                    \ No newline at end of file +ForbiddenClassError | Nymph.js 1.0.0-beta.81

                                    Hierarchy

                                    • Error
                                      • ForbiddenClassError

                                    Constructors

                                    Properties

                                    cause?: unknown
                                    message: string
                                    name: string
                                    stack?: string
                                    prepareStackTrace?: ((err, stackTraces) => any)

                                    Optional override for formatting stack traces

                                    +

                                    Type declaration

                                      • (err, stackTraces): any
                                      • Parameters

                                        • err: Error
                                        • stackTraces: CallSite[]

                                        Returns any

                                    stackTraceLimit: number

                                    Methods

                                    • Create .stack property on a target object

                                      +

                                      Parameters

                                      • targetObject: object
                                      • Optional constructorOpt: Function

                                      Returns void

                                    \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_server.HttpError.html b/docs/api/latest/classes/_nymphjs_server.HttpError.html index 9887877..a7b428b 100644 --- a/docs/api/latest/classes/_nymphjs_server.HttpError.html +++ b/docs/api/latest/classes/_nymphjs_server.HttpError.html @@ -1,13 +1,14 @@ -HttpError | Nymph.js 1.0.0-beta.61

                                    Hierarchy

                                    • Error
                                      • HttpError

                                      Constructors

                                      Properties

                                      message: string
                                      name: string
                                      stack?: string
                                      status?: number
                                      statusText?: string
                                      prepareStackTrace?: ((err, stackTraces) => any)

                                      Type declaration

                                      stackTraceLimit: number

                                      Methods

                                      • Create .stack property on a target object

                                        -

                                        Parameters

                                        • targetObject: object
                                        • Optional constructorOpt: Function

                                        Returns void

                                      Generated using TypeDoc

                                      \ No newline at end of file +HttpError | Nymph.js 1.0.0-beta.81

                                      Hierarchy

                                      • Error
                                        • HttpError

                                        Constructors

                                        Properties

                                        cause?: unknown
                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_sorter.Sorter.html b/docs/api/latest/classes/_nymphjs_sorter.Sorter.html index 9646f2b..57634db 100644 --- a/docs/api/latest/classes/_nymphjs_sorter.Sorter.html +++ b/docs/api/latest/classes/_nymphjs_sorter.Sorter.html @@ -1,26 +1,26 @@ -Sorter | Nymph.js 1.0.0-beta.61

                                        Entity Array Sorter

                                        +Sorter | Nymph.js 1.0.0-beta.81

                                        Entity Array Sorter

                                        Sorting functions sort the array in place and also return the sorted array.

                                        -

                                        Type Parameters

                                        • Entity extends Object

                                        Hierarchy

                                        • Sorter

                                        Constructors

                                        • Type Parameters

                                          • Entity extends Object

                                          Parameters

                                          • array: Entity[]

                                          Returns Sorter<Entity>

                                        Properties

                                        array: (Entity & {
                                            [k: string]: any;
                                        })[]
                                        collator: Collator = ...
                                        comparator: undefined | ((a, b) => number) = undefined

                                        Type declaration

                                          • (a, b): number
                                          • Parameters

                                            • a: any
                                            • b: any

                                            Returns number

                                        sortParent: null | string = null
                                        sortProperty: null | string = null

                                        Methods

                                        • Parameters

                                          • a: Entity & {
                                                [k: string]: any;
                                            }
                                          • b: Entity & {
                                                [k: string]: any;
                                            }

                                          Returns number

                                        • Sort an array of entities hierarchically by a specified property's value.

                                          +

                                        Type Parameters

                                        • Entity extends Object

                                        Constructors

                                        Properties

                                        array: (Entity & {
                                            [k: string]: any;
                                        })[]
                                        collator: Collator = ...
                                        comparator: undefined | ((a, b) => number) = undefined

                                        Type declaration

                                          • (a, b): number
                                          • Parameters

                                            • a: any
                                            • b: any

                                            Returns number

                                        sortParent: null | string = null
                                        sortProperty: null | string = null

                                        Methods

                                        • Parameters

                                          • a: Entity & {
                                                [k: string]: any;
                                            }
                                          • b: Entity & {
                                                [k: string]: any;
                                            }

                                          Returns number

                                        • Sort an array of entities hierarchically by a specified property's value.

                                          Entities will be placed immediately after their parents. The parentProperty property, if present, should hold either null, undefined, or the entity's parent.

                                          -

                                          Parameters

                                          • property: string

                                            The name of the property to sort entities by.

                                            -
                                          • parentProperty: string

                                            The name of the property which holds the parent of the entity.

                                            -
                                          • Optional sortOptions: SortOptions

                                          Returns Entity[]

                                        • Sort an array of entities by parent and a specified property's value.

                                          +

                                          Parameters

                                          • property: string

                                            The name of the property to sort entities by.

                                            +
                                          • parentProperty: string

                                            The name of the property which holds the parent of the entity.

                                            +
                                          • __namedParameters: SortOptions = {}

                                          Returns Entity[]

                                        • Sort an array of entities by parent and a specified property's value.

                                          Entities' will be sorted by their parents' properties, then the entities' properties.

                                          -

                                          Parameters

                                          • property: string

                                            The name of the property to sort entities by.

                                            -
                                          • parentProperty: string

                                            The name of the property which holds the parent of the entity.

                                            -
                                          • __namedParameters: SortOptions = {}

                                          Returns Entity[]

                                        • Sort an array of entities by a specified property's value.

                                          -

                                          Parameters

                                          • property: string

                                            The name of the property to sort entities by.

                                            -
                                          • __namedParameters: SortOptions = {}

                                          Returns Entity[]

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Parameters

                                        • property: string

                                          The name of the property to sort entities by.

                                          +
                                        • parentProperty: string

                                          The name of the property which holds the parent of the entity.

                                          +
                                        • __namedParameters: SortOptions = {}

                                        Returns Entity[]

                                        • Sort an array of entities by a specified property's value.

                                          +

                                          Parameters

                                          • property: string

                                            The name of the property to sort entities by.

                                            +
                                          • __namedParameters: SortOptions = {}

                                          Returns Entity[]

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.AbleObject.html b/docs/api/latest/classes/_nymphjs_tilmeld.AbleObject.html index ee0df18..755497f 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.AbleObject.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.AbleObject.html @@ -1,92 +1,92 @@ -AbleObject | Nymph.js 1.0.0-beta.61

                                        AbleObject abstract class.

                                        +AbleObject | Nymph.js 1.0.0-beta.81

                                        AbleObject abstract class.

                                        Used in entities which support abilities, such as users and groups.

                                        -

                                        Type Parameters

                                        • T extends {
                                              abilities?: string[];
                                          }

                                        Hierarchy

                                        Constructors

                                        • Initialize an entity.

                                          -

                                          Type Parameters

                                          • T extends {
                                                abilities?: string[];
                                            }

                                          Parameters

                                          • Rest ..._rest: any[]

                                          Returns AbleObject<T>

                                        Properties

                                        $allowlistData?: string[]

                                        If this is defined, then it lists the only properties that will be +

                                        Type Parameters

                                        • T extends {
                                              abilities?: string[];
                                          }

                                        Hierarchy (view full)

                                        Constructors

                                        • Initialize an entity.

                                          +

                                          Type Parameters

                                          • T extends {
                                                abilities?: string[];
                                            }

                                          Parameters

                                          • Rest ..._rest: any[]

                                          Returns AbleObject<T>

                                        Properties

                                        $allowlistData?: string[]

                                        If this is defined, then it lists the only properties that will be accepted from incoming JSON. Any other properties will be ignored.

                                        If you use an allowlist, you don't need to use protectedData, since you can simply leave those entries out of allowlistData.

                                        -
                                        $allowlistTags?: string[]

                                        If this is defined, then it lists the only tags that will be accepted from +

                                        $allowlistTags?: string[]

                                        If this is defined, then it lists the only tags that will be accepted from incoming JSON. Any other tags will be ignored.

                                        -
                                        $clientEnabledMethods: string[]

                                        The names of methods allowed to be called by the frontend with serverCall.

                                        -
                                        $data: T

                                        The data proxy object.

                                        -
                                        $dataHandler: Object

                                        The data proxy handler.

                                        -
                                        $dataStore: T

                                        The actual data store.

                                        -
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        -
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        $privateData: string[]

                                        Properties that will not be serialized into JSON with toJSON(). This +

                                        $clientEnabledMethods: string[]

                                        The names of methods allowed to be called by the frontend with serverCall.

                                        +
                                        $data: T

                                        The data proxy object.

                                        +
                                        $dataHandler: Object

                                        The data proxy handler.

                                        +
                                        $dataStore: T

                                        The actual data store.

                                        +
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        +
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        $privateData: string[]

                                        Properties that will not be serialized into JSON with toJSON(). This can be considered a denylist, because these properties will not be set with incoming JSON.

                                        Clients CAN still determine what is in these properties, unless they are also listed in searchRestrictedData.

                                        -
                                        $protectedData: string[]

                                        Properties that can only be modified by server side code. They will still +

                                        $protectedData: string[]

                                        Properties that can only be modified by server side code. They will still be visible on the frontend, unlike $privateData, but any changes to them that come from the frontend will be ignored.

                                        In addition to what's listed here, all of the access control properties @@ -103,96 +103,96 @@

                                        You should modify these through client enabled methods or the $save method instead, for safety.

                                        -
                                        $protectedTags: string[]

                                        Tags that can only be added/removed by server side code. They will still be +

                                        $protectedTags: string[]

                                        Tags that can only be added/removed by server side code. They will still be visible on the frontend, but any changes to them that come from the frontend will be ignored.

                                        -

                                        The actual sdata store.

                                        -
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        -
                                        $wakePromise: null | Promise<Entity<T>>

                                        A promise that resolved when the entity's data is wake.

                                        -
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        +

                                        The actual sdata store.

                                        +
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        +
                                        $wakePromise: null | Promise<Entity<T>>

                                        A promise that resolved when the entity's data is wake.

                                        +
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        This is a 12 byte number represented as a lower case HEX string (24 characters).

                                        -
                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        tags: string[]

                                        Array of the entity's tags.

                                        -
                                        ETYPE: string

                                        A unique name for this type of entity used to separate its data from other +

                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        tags: string[]

                                        Array of the entity's tags.

                                        +
                                        ETYPE: string

                                        A unique name for this type of entity used to separate its data from other types of entities in the database.

                                        -
                                        class: string

                                        The lookup name for this entity.

                                        +
                                        class: string

                                        The lookup name for this entity.

                                        This is used for reference arrays (and sleeping references) and client requests.

                                        -
                                        clientEnabledStaticMethods: string[]

                                        The names of static methods allowed to be called by the frontend with +

                                        clientEnabledStaticMethods: string[]

                                        The names of static methods allowed to be called by the frontend with serverCallStatic.

                                        -
                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        pubSubEnabled: boolean

                                        Whether this entity should publish changes to PubSub servers.

                                        -
                                        restEnabled: boolean

                                        Whether this entity should be accessible on the frontend through the REST +

                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        pubSubEnabled: boolean

                                        Whether this entity should publish changes to PubSub servers.

                                        +
                                        restEnabled: boolean

                                        Whether this entity should be accessible on the frontend through the REST server.

                                        If this is false, any request from the client that attempts to use this entity will fail.

                                        -
                                        searchRestrictedData: string[]

                                        Properties that will not be searchable from the frontend. If the frontend +

                                        searchRestrictedData: string[]

                                        Properties that will not be searchable from the frontend. If the frontend includes any of these properties in any of their clauses, they will be filtered out before the search is executed.

                                        -

                                        Methods

                                        • Add one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        • Search the array for this object and return the corresponding index.

                                          +

                                        Methods

                                        • Add one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Check if this is a sleeping reference.

                                          -

                                          Returns boolean

                                        • Check if this is a sleeping reference and throw an error if so.

                                          -

                                          Returns void

                                        • Replace any referenced entities in the data with sleeping references.

                                          +
                                        • Check if this is a sleeping reference.

                                          +

                                          Returns boolean

                                        • Check if this is a sleeping reference and throw an error if so.

                                          +

                                          Returns void

                                        • Replace any referenced entities in the data with sleeping references.

                                          Calling this function ensures that the next time a referenced entity is accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                                          -

                                          Returns void

                                        • Delete the object from storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Perform a more strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +

                                            Returns void

                                        • Delete the object from storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Perform a more strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Returns null | (null | string)[]

                                        • Returns null | string

                                        • Returns null | (null | string)[]

                                        • Returns null | string

                                        • Returns null | (null | string)[]

                                        • Get the client enabled methods.

                                          +
                                        • Returns null | (null | string)[]

                                        • Returns any

                                        • Returns null | (null | string)[]

                                        • Returns any

                                        • Returns null | (null | string)[]

                                        • Get the client enabled methods.

                                          Returns string[]

                                          The names of methods allowed to be called by the frontend with serverCall.

                                          -
                                        • Used to retrieve the data object.

                                          +
                                        • Used to retrieve the data object.

                                          This should only be used by Nymph to save the data into storage.

                                          -

                                          Parameters

                                          • Optional includeSData: boolean

                                            Whether to include the serialized data as well.

                                            +

                                            Parameters

                                            • Optional includeSData: boolean

                                              Whether to include the serialized data as well.

                                            Returns any

                                            The entity's data object.

                                            -
                                        • Get the original values of the AC properties.

                                          +
                                        • Used to retrieve the serialized data object.

                                          This should only be used by Nymph to save the data object into storage.

                                          This method is used by Nymph to avoid unserializing data that hasn't been requested yet.

                                          It should always be called after getData().

                                          Returns SerializedEntityData

                                          The entity's serialized data object.

                                          -
                                        • Get the entity's tags.

                                          +
                                        • Get the entity's tags.

                                          Using this instead of accessing the tags prop directly will wake sleeping references.

                                          Returns string[]

                                          The entity's tags.

                                          -
                                        • Get an array of strings that must be unique across the current etype.

                                          +
                                        • Get an array of strings that must be unique across the current etype.

                                          When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                          The default implementation of this method returns an empty array, meaning there are no uniqueness constraints applied to its etype.

                                          -

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          -
                                        • Get an object that holds the same data as the entity.

                                          +

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          +
                                        • Get an object that holds the same data as the entity.

                                          This provides an object that can be validated.

                                          Returns any

                                          A pure object representation of the entity.

                                          -
                                        • Check that the entity has all of the given tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +
                                        • Check that the entity has all of the given tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          +
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Perform a less strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +
                                        • Perform a less strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Accept JSON data from the client.

                                          +
                                        • Accept JSON data from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -200,9 +200,9 @@
                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            -
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Accept JSON patch from the client.

                                          +

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            +
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            +

                                          Returns void

                                        • Accept JSON patch from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -210,45 +210,45 @@
                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • patch: EntityPatch

                                            The patch data. Please note, this will be modified (destroyed).

                                            -
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Used to set the data.

                                          +

                                          Parameters

                                          • patch: EntityPatch

                                            The patch data. Please note, this will be modified (destroyed).

                                            +
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            +

                                          Returns void

                                        • Used to set the data.

                                          This should only be used by Nymph to push the data from storage.

                                          sdata is used by Nymph to avoid unserializing data that hasn't been requested yet.

                                          -

                                          Parameters

                                          Returns void

                                        • Set up a sleeping reference.

                                          -

                                          Parameters

                                          Returns void

                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          +

                                          Parameters

                                          Returns void

                                        • Set up a sleeping reference.

                                          +

                                          Parameters

                                          Returns void

                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -
                                        • Remove one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        • Save the object to storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Return a Nymph Entity Reference for this entity.

                                          +

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          +
                                        • Remove one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Save the object to storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Return a Nymph Entity Reference for this entity.

                                          If the entity hasn't been saved yet (and has no GUID), it will be returned instead.

                                          -

                                          Returns AbleObject<T> | EntityReference

                                          A Nymph Entity Reference array as an unsaved entity.

                                          -
                                        • Set whether to use "skipAc" when accessing entity references.

                                          -

                                          Parameters

                                          • skipAc: boolean

                                            True or false, whether to use it.

                                            -

                                          Returns void

                                        • Wake from a sleeping reference.

                                          -

                                          Returns Promise<Entity<T>>

                                        • Parameters

                                          • Optional level: number

                                          Returns Promise<Entity<T>>

                                        • Alter the options for a query for this entity.

                                          -

                                          Type Parameters

                                          Parameters

                                          • options: T

                                            The current options.

                                            -

                                          Returns T

                                          The altered options.

                                          -
                                        • Set whether to use "skipAc" when accessing entity references.

                                          +

                                          Parameters

                                          • skipAc: boolean

                                            True or false, whether to use it.

                                            +

                                          Returns void

                                        • Wake from a sleeping reference.

                                          +

                                          Returns Promise<Entity<T>>

                                        • Parameters

                                          • Optional level: number

                                          Returns Promise<Entity<T>>

                                        • Alter the options for a query for this entity.

                                          +

                                          Type Parameters

                                          Parameters

                                          • options: T

                                            The current options.

                                            +

                                          Returns T

                                          The altered options.

                                          +
                                        • Create or retrieve a new entity instance.

                                          Note that this will always return an entity, even if the GUID is not found.

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            -

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            +

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          Sleeping references won't retrieve their data from the database until they are readied with $wake() or a parent's $wakeAll().

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            -

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          -
                                        • Get an array of strings that must be unique across the current etype.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            +

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          +
                                        • Get an array of strings that must be unique across the current etype.

                                          When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                          The default implementation of this static method instantiates the entity, @@ -257,5 +257,5 @@ happens during any of these steps. You can override this method to calculate the unique strings faster, but you must return the same strings that would be returned by $getUniques.

                                          -

                                          Parameters

                                          • __namedParameters: {
                                                cdate?: number;
                                                data: EntityData;
                                                guid?: string;
                                                mdate?: number;
                                                sdata?: SerializedEntityData;
                                                tags: string[];
                                            }

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Parameters

                                        • __namedParameters: {
                                              cdate?: number;
                                              data: EntityData;
                                              guid?: string;
                                              mdate?: number;
                                              sdata?: SerializedEntityData;
                                              tags: string[];
                                          }

                                        Returns Promise<string[]>

                                        Resolves to an array of entity's unique constraint strings.

                                        +
                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.AccessControlError.html b/docs/api/latest/classes/_nymphjs_tilmeld.AccessControlError.html index bcba713..991d7b0 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.AccessControlError.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.AccessControlError.html @@ -1,13 +1,14 @@ -AccessControlError | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        Constructors

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Type declaration

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          -

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +AccessControlError | Nymph.js 1.0.0-beta.81

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        cause?: unknown
                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.BadDataError.html b/docs/api/latest/classes/_nymphjs_tilmeld.BadDataError.html index b67c209..cabd55c 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.BadDataError.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.BadDataError.html @@ -1,13 +1,14 @@ -BadDataError | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        Constructors

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Type declaration

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          -

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +BadDataError | Nymph.js 1.0.0-beta.81

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        cause?: unknown
                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.BadEmailError.html b/docs/api/latest/classes/_nymphjs_tilmeld.BadEmailError.html index 75d895c..467474c 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.BadEmailError.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.BadEmailError.html @@ -1,13 +1,14 @@ -BadEmailError | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        Constructors

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Type declaration

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          -

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +BadEmailError | Nymph.js 1.0.0-beta.81

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        cause?: unknown
                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.BadUsernameError.html b/docs/api/latest/classes/_nymphjs_tilmeld.BadUsernameError.html index f37827d..8de7a9f 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.BadUsernameError.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.BadUsernameError.html @@ -1,13 +1,14 @@ -BadUsernameError | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        Constructors

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Type declaration

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          -

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +BadUsernameError | Nymph.js 1.0.0-beta.81

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        cause?: unknown
                                        message: string
                                        name: string
                                        stack?: string
                                        status?: number
                                        statusText?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.CouldNotChangeDefaultPrimaryGroupError.html b/docs/api/latest/classes/_nymphjs_tilmeld.CouldNotChangeDefaultPrimaryGroupError.html index 22b00a3..e192b6e 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.CouldNotChangeDefaultPrimaryGroupError.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.CouldNotChangeDefaultPrimaryGroupError.html @@ -1,11 +1,12 @@ -CouldNotChangeDefaultPrimaryGroupError | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        • Error
                                          • CouldNotChangeDefaultPrimaryGroupError

                                        Constructors

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Type declaration

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          -

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +CouldNotChangeDefaultPrimaryGroupError | Nymph.js 1.0.0-beta.81

                                        Hierarchy

                                        • Error
                                          • CouldNotChangeDefaultPrimaryGroupError

                                        Constructors

                                        Properties

                                        cause?: unknown
                                        message: string
                                        name: string
                                        stack?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.EmailChangeRateLimitExceededError.html b/docs/api/latest/classes/_nymphjs_tilmeld.EmailChangeRateLimitExceededError.html index a7cc365..097f28d 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.EmailChangeRateLimitExceededError.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.EmailChangeRateLimitExceededError.html @@ -1,11 +1,12 @@ -EmailChangeRateLimitExceededError | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        • Error
                                          • EmailChangeRateLimitExceededError

                                        Constructors

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Type declaration

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          -

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +EmailChangeRateLimitExceededError | Nymph.js 1.0.0-beta.81

                                        Hierarchy

                                        • Error
                                          • EmailChangeRateLimitExceededError

                                        Constructors

                                        Properties

                                        cause?: unknown
                                        message: string
                                        name: string
                                        stack?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.Group.html b/docs/api/latest/classes/_nymphjs_tilmeld.Group.html index 65d98ec..31a3170 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.Group.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.Group.html @@ -1,113 +1,117 @@ -Group | Nymph.js 1.0.0-beta.61

                                        A user group data model.

                                        +Group | Nymph.js 1.0.0-beta.81

                                        A user group data model.

                                        Written by Hunter Perrin for SciActive.

                                        Author

                                        Hunter Perrin hperrin@gmail.com

                                        Copyright

                                        SciActive Inc

                                        See

                                        http://nymph.io/

                                        -

                                        Hierarchy

                                        Constructors

                                        Properties

                                        $allowlistData?: string[] = ...

                                        If this is defined, then it lists the only properties that will be +

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        $allowlistData?: string[] = ...

                                        If this is defined, then it lists the only properties that will be accepted from incoming JSON. Any other properties will be ignored.

                                        If you use an allowlist, you don't need to use protectedData, since you can simply leave those entries out of allowlistData.

                                        -
                                        $allowlistTags?: string[] = []

                                        If this is defined, then it lists the only tags that will be accepted from +

                                        $allowlistTags?: string[] = []

                                        If this is defined, then it lists the only tags that will be accepted from incoming JSON. Any other tags will be ignored.

                                        -
                                        $clientEnabledMethods: string[] = ...

                                        The names of methods allowed to be called by the frontend with serverCall.

                                        -
                                        $data: GroupData

                                        The data proxy object.

                                        -
                                        $dataHandler: Object

                                        The data proxy handler.

                                        -
                                        $dataStore: GroupData

                                        The actual data store.

                                        -
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        -
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        $privateData: string[] = ...

                                        Properties that will not be serialized into JSON with toJSON(). This +

                                        $clientEnabledMethods: string[] = ...

                                        The names of methods allowed to be called by the frontend with serverCall.

                                        +
                                        $data: GroupData

                                        The data proxy object.

                                        +
                                        $dataHandler: Object

                                        The data proxy handler.

                                        +
                                        $dataStore: GroupData

                                        The actual data store.

                                        +
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        +
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        $privateData: string[] = ...

                                        Properties that will not be serialized into JSON with toJSON(). This can be considered a denylist, because these properties will not be set with incoming JSON.

                                        Clients CAN still determine what is in these properties, unless they are also listed in searchRestrictedData.

                                        -
                                        $protectedData: string[]

                                        Properties that can only be modified by server side code. They will still +

                                        $protectedData: string[]

                                        Properties that can only be modified by server side code. They will still be visible on the frontend, unlike $privateData, but any changes to them that come from the frontend will be ignored.

                                        In addition to what's listed here, all of the access control properties @@ -124,118 +128,119 @@

                                        See

                                        http://nymph.io/

                                        You should modify these through client enabled methods or the $save method instead, for safety.

                                        -
                                        $protectedTags: string[]

                                        Tags that can only be added/removed by server side code. They will still be +

                                        $protectedTags: string[]

                                        Tags that can only be added/removed by server side code. They will still be visible on the frontend, but any changes to them that come from the frontend will be ignored.

                                        -

                                        The actual sdata store.

                                        -
                                        $skipAcWhenSaving: boolean = false

                                        This is explicitly used only during the registration proccess.

                                        -
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        -
                                        $tags: never[] = []
                                        $wakePromise: null | Promise<Entity<GroupData>>

                                        A promise that resolved when the entity's data is wake.

                                        -
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        +

                                        The actual sdata store.

                                        +
                                        $skipAcWhenDeleting: boolean = false

                                        This should only be used by the backend.

                                        +
                                        $skipAcWhenSaving: boolean = false

                                        This should only be used by the backend.

                                        +
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        +
                                        $tags: never[] = []
                                        $wakePromise: null | Promise<Entity<GroupData>>

                                        A promise that resolved when the entity's data is wake.

                                        +
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        This is a 12 byte number represented as a lower case HEX string (24 characters).

                                        -
                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        tags: string[]

                                        Array of the entity's tags.

                                        -
                                        DEFAULT_ALLOWLIST_DATA: string[] = []
                                        DEFAULT_PRIVATE_DATA: string[] = ...
                                        ETYPE: string = 'tilmeld_group'

                                        The instance of Tilmeld to use for queries.

                                        -
                                        class: string = 'Group'

                                        The lookup name for this entity.

                                        +
                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        tags: string[]

                                        Array of the entity's tags.

                                        +
                                        DEFAULT_ALLOWLIST_DATA: string[] = []
                                        DEFAULT_PRIVATE_DATA: string[] = ...
                                        ETYPE: string = 'tilmeld_group'

                                        The instance of Tilmeld to use for queries.

                                        +
                                        class: string = 'Group'

                                        The lookup name for this entity.

                                        This is used for reference arrays (and sleeping references) and client requests.

                                        -
                                        clientEnabledStaticMethods: string[] = ...

                                        The names of static methods allowed to be called by the frontend with +

                                        clientEnabledStaticMethods: string[] = ...

                                        The names of static methods allowed to be called by the frontend with serverCallStatic.

                                        -
                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        pubSubEnabled: boolean

                                        Whether this entity should publish changes to PubSub servers.

                                        -
                                        restEnabled: boolean

                                        Whether this entity should be accessible on the frontend through the REST +

                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        pubSubEnabled: boolean

                                        Whether this entity should publish changes to PubSub servers.

                                        +
                                        restEnabled: boolean

                                        Whether this entity should be accessible on the frontend through the REST server.

                                        If this is false, any request from the client that attempts to use this entity will fail.

                                        -
                                        searchRestrictedData: string[] = ...

                                        Properties that will not be searchable from the frontend. If the frontend +

                                        searchRestrictedData: string[] = ...

                                        Properties that will not be searchable from the frontend. If the frontend includes any of these properties in any of their clauses, they will be filtered out before the search is executed.

                                        -

                                        Methods

                                        • Add one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        Methods

                                        • Add one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Check if this is a sleeping reference.

                                          -

                                          Returns boolean

                                        • Check if this is a sleeping reference and throw an error if so.

                                          -

                                          Returns void

                                        • Check that an email is unique.

                                          -

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Check that a groupname is valid.

                                          -

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Replace any referenced entities in the data with sleeping references.

                                          +
                                        • Check if this is a sleeping reference.

                                          +

                                          Returns boolean

                                        • Check if this is a sleeping reference and throw an error if so.

                                          +

                                          Returns void

                                        • Check that an email is unique.

                                          +

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Check that a groupname is valid.

                                          +

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Replace any referenced entities in the data with sleeping references.

                                          Calling this function ensures that the next time a referenced entity is accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                                          -

                                          Returns void

                                        • Perform a more strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +

                                            Returns void

                                        • Perform a more strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Returns null | (null | string)[]

                                        • Returns null | string

                                        • Returns null | (null | string)[]

                                        • Returns null | string

                                        • Returns null | (null | string)[]

                                        • Get the client enabled methods.

                                          +
                                        • Returns null | (null | string)[]

                                        • Returns any

                                        • Returns null | (null | string)[]

                                        • Returns any

                                        • Returns null | (null | string)[]

                                        • Get the client enabled methods.

                                          Returns string[]

                                          The names of methods allowed to be called by the frontend with serverCall.

                                          -
                                        • Used to retrieve the data object.

                                          +
                                        • Used to retrieve the data object.

                                          This should only be used by Nymph to save the data into storage.

                                          -

                                          Parameters

                                          • Optional includeSData: boolean

                                            Whether to include the serialized data as well.

                                            +

                                            Parameters

                                            • Optional includeSData: boolean

                                              Whether to include the serialized data as well.

                                            Returns any

                                            The entity's data object.

                                            -
                                        • Get the number of parents the group has.

                                          +
                                        • Get the number of parents the group has.

                                          If the group is a top level group, this will return 0. If it is a child of a top level group, this will return 1. If it is a grandchild of a top level group, this will return 2, and so on.

                                          Levels will max out at 1024 to avoid recursive loops.

                                          -

                                          Returns Promise<number>

                                          The level of the group.

                                          -
                                        • Used to retrieve the serialized data object.

                                          This should only be used by Nymph to save the data object into storage.

                                          This method is used by Nymph to avoid unserializing data that hasn't been requested yet.

                                          It should always be called after getData().

                                          Returns SerializedEntityData

                                          The entity's serialized data object.

                                          -
                                        • Get the entity's tags.

                                          +
                                        • Get the entity's tags.

                                          Using this instead of accessing the tags prop directly will wake sleeping references.

                                          Returns string[]

                                          The entity's tags.

                                          -
                                        • Get an array of strings that must be unique across the current etype.

                                          +
                                        • Get an array of strings that must be unique across the current etype.

                                          When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                          The default implementation of this method returns an empty array, meaning there are no uniqueness constraints applied to its etype.

                                          -

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          -
                                        • Gets an array of users in the group.

                                          -

                                          Parameters

                                          • descendants: boolean = false

                                            Include users in all descendant groups too.

                                            -
                                          • Optional limit: number

                                            The limit for the query.

                                            -
                                          • Optional offset: number

                                            The offset for the query.

                                            -

                                          Returns Promise<(User & UserData)[]>

                                          An array of users.

                                          -
                                        • Gets an array of users in the group.

                                          +

                                          Parameters

                                          • descendants: boolean = false

                                            Include users in all descendant groups too.

                                            +
                                          • Optional limit: number

                                            The limit for the query.

                                            +
                                          • Optional offset: number

                                            The offset for the query.

                                            +

                                          Returns Promise<(User & UserData)[]>

                                          An array of users.

                                          +
                                        • Get an object that holds the same data as the entity.

                                          This provides an object that can be validated.

                                          Returns any

                                          A pure object representation of the entity.

                                          -
                                        • Check that the entity has all of the given tags.

                                          -

                                          Parameters

                                        • Check that the entity has all of the given tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          +
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Perform a less strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +
                                        • Perform a less strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Accept JSON data from the client.

                                          +
                                        • Accept JSON data from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -243,9 +248,9 @@

                                            See

                                            http://nymph.io/

                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            -
                                          • allowConflict: boolean = false

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Accept JSON patch from the client.

                                          +

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            +
                                          • allowConflict: boolean = false

                                            Allow to accept data that is older than the current data.

                                            +

                                          Returns void

                                        • Accept JSON patch from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -253,55 +258,55 @@

                                            See

                                            http://nymph.io/

                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • patch: EntityPatch

                                            The patch data. Please note, this will be modified (destroyed).

                                            -
                                          • allowConflict: boolean = false

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -
                                        • Remove one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        • Return a Nymph Entity Reference for this entity.

                                          +

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          +
                                        • Remove one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Return a Nymph Entity Reference for this entity.

                                          If the entity hasn't been saved yet (and has no GUID), it will be returned instead.

                                          Returns Group | EntityReference

                                          A Nymph Entity Reference array as an unsaved entity.

                                          -
                                        • Update the data protection arrays for a user.

                                          -

                                          Parameters

                                          • Optional givenUser: User & UserData

                                            User to update protection for. If undefined, will use the currently logged in user.

                                            -

                                          Returns void

                                        • Set whether to use "skipAc" when accessing entity references.

                                          -

                                          Parameters

                                          • skipAc: boolean

                                            True or false, whether to use it.

                                            -

                                          Returns void

                                        • Alter the options for a query for this entity.

                                          -

                                          Type Parameters

                                          Parameters

                                          • options: T

                                            The current options.

                                            -

                                          Returns T

                                          The altered options.

                                          -
                                        • Create or retrieve a new entity instance.

                                          +
                                        • Update the data protection arrays for a user.

                                          +

                                          Parameters

                                          • Optional givenUser: User & UserData

                                            User to update protection for. If undefined, will use the currently logged in user.

                                            +

                                          Returns void

                                        • Set whether to use "skipAc" when accessing entity references.

                                          +

                                          Parameters

                                          • skipAc: boolean

                                            True or false, whether to use it.

                                            +

                                          Returns void

                                        • Alter the options for a query for this entity.

                                          +

                                          Type Parameters

                                          Parameters

                                          • options: T

                                            The current options.

                                            +

                                          Returns T

                                          The altered options.

                                          +
                                        • Create or retrieve a new entity instance.

                                          Note that this will always return an entity, even if the GUID is not found.

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            -

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            +

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          Sleeping references won't retrieve their data from the database until they are readied with $wake() or a parent's $wakeAll().

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            -

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          -
                                        • Get all the groups that can be assigned as primary groups.

                                          -

                                          Parameters

                                          • Optional options: Options

                                            The options for an optional search query.

                                            -
                                          • Optional selectors: Selector[]

                                            The selectors for an optional search query.

                                            -

                                          Returns Promise<(Group & GroupData)[]>

                                          An array of the assignable primary groups.

                                          -
                                        • Get all the groups that can be assigned as secondary groups.

                                          -

                                          Parameters

                                          • Optional options: Options

                                            The options for an optional search query.

                                            -
                                          • Optional selectors: Selector[]

                                            The selectors for an optional search query.

                                            -

                                          Returns Promise<(Group & GroupData)[]>

                                          An array of the assignable secondary groups.

                                          -
                                        • Get an array of strings that must be unique across the current etype.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            +

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          +
                                        • Get all the groups that can be assigned as primary groups.

                                          +

                                          Parameters

                                          • Optional options: Options

                                            The options for an optional search query.

                                            +
                                          • Optional selectors: Selector[]

                                            The selectors for an optional search query.

                                            +

                                          Returns Promise<(Group & GroupData)[]>

                                          An array of the assignable primary groups.

                                          +
                                        • Get all the groups that can be assigned as secondary groups.

                                          +

                                          Parameters

                                          • Optional options: Options

                                            The options for an optional search query.

                                            +
                                          • Optional selectors: Selector[]

                                            The selectors for an optional search query.

                                            +

                                          Returns Promise<(Group & GroupData)[]>

                                          An array of the assignable secondary groups.

                                          +
                                        • Get an array of strings that must be unique across the current etype.

                                          When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                          The default implementation of this static method instantiates the entity, @@ -310,5 +315,5 @@

                                          See

                                          http://nymph.io/

                                          happens during any of these steps. You can override this method to calculate the unique strings faster, but you must return the same strings that would be returned by $getUniques.

                                          -

                                          Parameters

                                          • __namedParameters: {
                                                cdate?: number;
                                                data: EntityData;
                                                guid?: string;
                                                mdate?: number;
                                                sdata?: SerializedEntityData;
                                                tags: string[];
                                            }

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Parameters

                                        • __namedParameters: {
                                              cdate?: number;
                                              data: EntityData;
                                              guid?: string;
                                              mdate?: number;
                                              sdata?: SerializedEntityData;
                                              tags: string[];
                                          }

                                        Returns Promise<string[]>

                                        Resolves to an array of entity's unique constraint strings.

                                        +
                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.Tilmeld.html b/docs/api/latest/classes/_nymphjs_tilmeld.Tilmeld.html index 7ee6cd3..fd2a8d8 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.Tilmeld.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.Tilmeld.html @@ -1,45 +1,45 @@ -Tilmeld | Nymph.js 1.0.0-beta.61

                                        A user and group system for Nymph.js.

                                        +Tilmeld | Nymph.js 1.0.0-beta.81

                                        A user and group system for Nymph.js.

                                        Written by Hunter Perrin for SciActive.

                                        Author

                                        Hunter Perrin hperrin@gmail.com

                                        Copyright

                                        SciActive Inc

                                        See

                                        http://nymph.io/

                                        -

                                        Hierarchy

                                        • Tilmeld

                                        Implements

                                        Constructors

                                        Properties

                                        Group: typeof Group = Group

                                        The group class for this instance of Tilmeld.

                                        -
                                        User: typeof User = User

                                        The user class for this instance of Tilmeld.

                                        -
                                        alreadyLoggedOutSwitch: boolean = false

                                        Used to avoid infinite loop.

                                        -
                                        config: Config

                                        The Tilmeld config.

                                        -
                                        currentUser: null | User & UserData = null

                                        The currently logged in user.

                                        -
                                        gatekeeperCache: null | {
                                            [k: string]: true;
                                        } = null

                                        Gatekeeper ability cache.

                                        +

                                        Implements

                                        Constructors

                                        Properties

                                        Group: typeof Group = Group

                                        The group class for this instance of Tilmeld.

                                        +
                                        User: typeof User = User

                                        The user class for this instance of Tilmeld.

                                        +
                                        alreadyLoggedOutSwitch: boolean = false

                                        Used to avoid infinite loop.

                                        +
                                        config: Config

                                        The Tilmeld config.

                                        +
                                        currentUser: null | User & UserData = null

                                        The currently logged in user.

                                        +
                                        gatekeeperCache: null | {
                                            [k: string]: true;
                                        } = null

                                        Gatekeeper ability cache.

                                        Gatekeeper will cache the user's abilities that it calculates, so it can check faster if that user has been checked before.

                                        -

                                        Type declaration

                                        • [k: string]: true
                                        nymph: Nymph = ...

                                        The Nymph instance.

                                        -
                                        request: null | Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>> = null

                                        If you will be performing authentication functions (logging in/out), you +

                                        Type declaration

                                        • [k: string]: true
                                        nymph: Nymph = ...

                                        The Nymph instance.

                                        +
                                        request: null | Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>> = null

                                        If you will be performing authentication functions (logging in/out), you should set these so Tilmeld can read and write cookies and headers.

                                        If you want the user to be authenticated with the cookie and/or header they provide, you should set at least the request. It's better to set both, so @@ -48,9 +48,9 @@

                                        See

                                        http://nymph.io/

                                        from them and fill the user's session.

                                        If you want to support cookie based authentication (which still requires an XSRF token for security), you should enable the cookie parser middleware.

                                        -
                                        response: null | Response<any, Record<string, any>> = null

                                        Methods

                                        response: null | Response<any, Record<string, any>> = null

                                        Methods

                                        • Check for TILMELDAUTH and TILMELDSWITCH tokens, and, if set, authenticate from it/them.

                                          You can also call this function after setting response.locals.user to the user you want to authenticate. You should check for user.enabled before @@ -59,10 +59,10 @@

                                          See

                                          http://nymph.io/

                                          instance.)

                                          This function will set response.locals.user to the logged in user on successful authentication.

                                          -

                                          Parameters

                                          • skipXsrfToken: boolean = false

                                            Skip the XSRF token check.

                                            -
                                          • skipRenew: boolean = false

                                            Skip the token renewal step, even if the token is close to expiration.

                                            -

                                          Returns Promise<boolean>

                                          True if a user was authenticated, false on any failure.

                                          -
                                        • Check a UID's permissions for a user.

                                          +

                                          Parameters

                                          • skipXsrfToken: boolean = false

                                            Skip the XSRF token check.

                                            +
                                          • skipRenew: boolean = false

                                            Skip the token renewal step, even if the token is close to expiration.

                                            +

                                          Returns Promise<boolean>

                                          True if a user was authenticated, false on any failure.

                                          +
                                        • Check a UID's permissions for a user.

                                          THIS ONLY CHECKS AUTOMATICALLY FOR CLIENT REQUESTS.

                                          UID functions on the Node.js side are not checked automatically. This function is only run automatically for UID functions run from the client. You should call this function manually if you're running a UID function on @@ -76,11 +76,11 @@

                                          See

                                          http://nymph.io/

                                        • FULL_ACCESS, the UID is listed in clientSetabledUIDs or the user has the "uid/set/nameofuid" ability.
                                        -

                                        Parameters

                                        • name: string

                                          The UID to check.

                                          -
                                        • type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS

                                          The lowest level of permission to consider a pass.

                                          -
                                        • Optional user: false | User & UserData

                                          The user to check permissions for. If null, uses the current user. If false, checks for public access.

                                          -

                                        Returns Promise<boolean>

                                        Whether the current user has at least type permission for the UID.

                                        -
                                        • Check an entity's permissions for a user.

                                          +

                                          Parameters

                                          • name: string

                                            The UID to check.

                                            +
                                          • type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS

                                            The lowest level of permission to consider a pass.

                                            +
                                          • Optional user: false | User & UserData

                                            The user to check permissions for. If null, uses the current user. If false, checks for public access.

                                            +

                                          Returns Promise<boolean>

                                          Whether the current user has at least type permission for the UID.

                                          +
                                        • Check an entity's permissions for a user.

                                          This will check the AC (Access Control) properties of the entity. These include the following properties:

                                            @@ -132,40 +132,40 @@

                                            See

                                            http://nymph.io/

                                            AC.)
                                          • None of the above. (Check other AC.)
                                          -

                                          Parameters

                                          • entity: EntityInterface

                                            The entity to check.

                                            -
                                          • type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS

                                            The lowest level of permission to consider a pass.

                                            -
                                          • Optional user: false | User & UserData

                                            The user to check permissions for. If null, uses the current user. If false, checks for public access.

                                            -
                                          • Optional acProperties: ACProperties

                                            The acProperties to use instead of getting them from the entity.

                                            +

                                            Parameters

                                            • entity: EntityInterface

                                              The entity to check.

                                              +
                                            • type: TilmeldAccessLevels = TilmeldAccessLevels.READ_ACCESS

                                              The lowest level of permission to consider a pass.

                                              +
                                            • Optional user: false | User & UserData

                                              The user to check permissions for. If null, uses the current user. If false, checks for public access.

                                              +
                                            • Optional acProperties: ACProperties

                                              The acProperties to use instead of getting them from the entity.

                                            Returns boolean

                                            Whether the current user has at least type permission for the entity.

                                            -
                                        • Check to see if the current user has an ability.

                                          If ability is undefined, it will check to see if a user is currently logged in.

                                          -

                                          Parameters

                                        • Logs the given user into the system.

                                          -

                                          Parameters

                                          • user: User & UserData

                                            The user.

                                            -
                                          • sendAuthHeader: boolean

                                            Send the auth token as a custom header.

                                            -
                                          • sendCookie: boolean = true

                                            Send the auth token as a cookie.

                                            -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Logs the given user into the system.

                                          +

                                          Parameters

                                          • user: User & UserData

                                            The user.

                                            +
                                          • sendAuthHeader: boolean

                                            Send the auth token as a custom header.

                                            +
                                          • sendCookie: boolean = true

                                            Send the auth token as a cookie.

                                            +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Adds a switch auth token for the given user.

                                          This effectively logs the current user in to the system as the given user.

                                          -

                                          Parameters

                                          • user: User & UserData

                                            The user.

                                            -
                                          • sendAuthHeader: boolean

                                            Send the auth token as a custom header.

                                            -
                                          • sendCookie: boolean = true

                                            Send the auth token as a cookie.

                                            -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Logs the current user out of the system.

                                          -

                                          Parameters

                                          • clearCookie: boolean = true

                                            Clear the auth cookie. (Also send a header.)

                                            -

                                          Returns Promise<void>

                                        • Clears the switch user out of the system.

                                          -

                                          Parameters

                                          • clearCookie: boolean = true

                                            Clear the auth cookie. (Also send a header.)

                                            -

                                          Returns Promise<void>

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Parameters

                                        • user: User & UserData

                                          The user.

                                          +
                                        • sendAuthHeader: boolean

                                          Send the auth token as a custom header.

                                          +
                                        • sendCookie: boolean = true

                                          Send the auth token as a cookie.

                                          +

                                        Returns Promise<boolean>

                                        True on success, false on failure.

                                        +
                                        • Logs the current user out of the system.

                                          +

                                          Parameters

                                          • clearCookie: boolean = true

                                            Clear the auth cookie. (Also send a header.)

                                            +

                                          Returns Promise<void>

                                        • Clears the switch user out of the system.

                                          +

                                          Parameters

                                          • clearCookie: boolean = true

                                            Clear the auth cookie. (Also send a header.)

                                            +

                                          Returns Promise<void>

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld.User.html b/docs/api/latest/classes/_nymphjs_tilmeld.User.html index 4ae5329..b53e39c 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld.User.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld.User.html @@ -1,155 +1,159 @@ -User | Nymph.js 1.0.0-beta.61

                                        A user data model.

                                        +User | Nymph.js 1.0.0-beta.81

                                        A user data model.

                                        Written by Hunter Perrin for SciActive.

                                        Author

                                        Hunter Perrin hperrin@gmail.com

                                        Copyright

                                        SciActive Inc

                                        See

                                        http://nymph.io/

                                        -

                                        Hierarchy

                                        Constructors

                                        Properties

                                        Methods

                                        Constructors

                                        Properties

                                        $allowlistData?: string[] = ...

                                        If this is defined, then it lists the only properties that will be +

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        Methods

                                        Constructors

                                        Properties

                                        $allowlistData?: string[] = ...

                                        If this is defined, then it lists the only properties that will be accepted from incoming JSON. Any other properties will be ignored.

                                        If you use an allowlist, you don't need to use protectedData, since you can simply leave those entries out of allowlistData.

                                        -
                                        $allowlistTags?: string[] = []

                                        If this is defined, then it lists the only tags that will be accepted from +

                                        $allowlistTags?: string[] = []

                                        If this is defined, then it lists the only tags that will be accepted from incoming JSON. Any other tags will be ignored.

                                        -
                                        $clientEnabledMethods: string[] = ...

                                        The names of methods allowed to be called by the frontend with serverCall.

                                        -
                                        $data: UserData

                                        The data proxy object.

                                        -
                                        $dataHandler: Object

                                        The data proxy handler.

                                        -
                                        $dataStore: UserData

                                        The actual data store.

                                        -
                                        $descendantGroups?: (Group & GroupData)[]

                                        The user's group descendants.

                                        -
                                        $gatekeeperCache?: {
                                            [k: string]: true;
                                        }

                                        Gatekeeper ability cache.

                                        +
                                        $clientEnabledMethods: string[] = ...

                                        The names of methods allowed to be called by the frontend with serverCall.

                                        +
                                        $data: UserData

                                        The data proxy object.

                                        +
                                        $dataHandler: Object

                                        The data proxy handler.

                                        +
                                        $dataStore: UserData

                                        The actual data store.

                                        +
                                        $descendantGroups?: (Group & GroupData)[]

                                        The user's group descendants.

                                        +
                                        $gatekeeperCache?: {
                                            [k: string]: true;
                                        }

                                        Gatekeeper ability cache.

                                        Gatekeeper will cache the user's abilities that it calculates, so it can check faster if that user has been checked before.

                                        -

                                        Type declaration

                                        • [k: string]: true
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        -
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        $originalEmail?: string

                                        Used to save the current email address to send verification if it changes +

                                        Type declaration

                                        • [k: string]: true
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        +
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        $originalEmail?: string

                                        Used to save the current email address to send verification if it changes from the frontend.

                                        If you are changing a user's email address and want to bypass email verification, don't set this.

                                        -
                                        $privateData: string[] = ...

                                        Properties that will not be serialized into JSON with toJSON(). This +

                                        $privateData: string[] = ...

                                        Properties that will not be serialized into JSON with toJSON(). This can be considered a denylist, because these properties will not be set with incoming JSON.

                                        Clients CAN still determine what is in these properties, unless they are also listed in searchRestrictedData.

                                        -
                                        $protectedData: string[]

                                        Properties that can only be modified by server side code. They will still +

                                        $protectedData: string[]

                                        Properties that can only be modified by server side code. They will still be visible on the frontend, unlike $privateData, but any changes to them that come from the frontend will be ignored.

                                        In addition to what's listed here, all of the access control properties @@ -166,135 +170,136 @@

                                        See

                                        http://nymph.io/

                                        You should modify these through client enabled methods or the $save method instead, for safety.

                                        -
                                        $protectedTags: string[]

                                        Tags that can only be added/removed by server side code. They will still be +

                                        $protectedTags: string[]

                                        Tags that can only be added/removed by server side code. They will still be visible on the frontend, but any changes to them that come from the frontend will be ignored.

                                        -

                                        The actual sdata store.

                                        -
                                        $skipAcWhenSaving: boolean = false

                                        This is explicitly used only during the registration proccess.

                                        -
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        -
                                        $wakePromise: null | Promise<Entity<UserData>>

                                        A promise that resolved when the entity's data is wake.

                                        -
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        +

                                        The actual sdata store.

                                        +
                                        $skipAcWhenDeleting: boolean = false

                                        This should only be used by the backend.

                                        +
                                        $skipAcWhenSaving: boolean = false

                                        This should only be used by the backend.

                                        +
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        +
                                        $wakePromise: null | Promise<Entity<UserData>>

                                        A promise that resolved when the entity's data is wake.

                                        +
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        This is a 12 byte number represented as a lower case HEX string (24 characters).

                                        -
                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        tags: string[]

                                        Array of the entity's tags.

                                        -
                                        DEFAULT_ALLOWLIST_DATA: string[] = []
                                        DEFAULT_CLIENT_ENABLED_METHODS: string[] = ...
                                        DEFAULT_PRIVATE_DATA: string[] = ...
                                        ETYPE: string = 'tilmeld_user'

                                        The instance of Tilmeld to use for queries.

                                        -
                                        afterLoginCallbacks: TilmeldAfterLoginCallback[] = []
                                        afterLogoutCallbacks: TilmeldAfterLogoutCallback[] = []
                                        afterRegisterCallbacks: TilmeldAfterRegisterCallback[] = []
                                        beforeLoginCallbacks: TilmeldBeforeLoginCallback[] = []
                                        beforeLogoutCallbacks: TilmeldBeforeLogoutCallback[] = []
                                        beforeRegisterCallbacks: TilmeldBeforeRegisterCallback[] = []
                                        checkUsernameCallbacks: TilmeldCheckUsernameCallback[] = []
                                        class: string = 'User'

                                        The lookup name for this entity.

                                        +
                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        tags: string[]

                                        Array of the entity's tags.

                                        +
                                        DEFAULT_ALLOWLIST_DATA: string[] = []
                                        DEFAULT_CLIENT_ENABLED_METHODS: string[] = ...
                                        DEFAULT_PRIVATE_DATA: string[] = ...
                                        ETYPE: string = 'tilmeld_user'

                                        The instance of Tilmeld to use for queries.

                                        +
                                        afterLoginCallbacks: TilmeldAfterLoginCallback[] = []
                                        afterLogoutCallbacks: TilmeldAfterLogoutCallback[] = []
                                        afterRegisterCallbacks: TilmeldAfterRegisterCallback[] = []
                                        beforeLoginCallbacks: TilmeldBeforeLoginCallback[] = []
                                        beforeLogoutCallbacks: TilmeldBeforeLogoutCallback[] = []
                                        beforeRegisterCallbacks: TilmeldBeforeRegisterCallback[] = []
                                        checkUsernameCallbacks: TilmeldCheckUsernameCallback[] = []
                                        class: string = 'User'

                                        The lookup name for this entity.

                                        This is used for reference arrays (and sleeping references) and client requests.

                                        -
                                        clientEnabledStaticMethods: string[] = ...

                                        The names of static methods allowed to be called by the frontend with +

                                        clientEnabledStaticMethods: string[] = ...

                                        The names of static methods allowed to be called by the frontend with serverCallStatic.

                                        -
                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        pubSubEnabled: boolean

                                        Whether this entity should publish changes to PubSub servers.

                                        -
                                        restEnabled: boolean

                                        Whether this entity should be accessible on the frontend through the REST +

                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        pubSubEnabled: boolean

                                        Whether this entity should publish changes to PubSub servers.

                                        +
                                        restEnabled: boolean

                                        Whether this entity should be accessible on the frontend through the REST server.

                                        If this is false, any request from the client that attempts to use this entity will fail.

                                        -
                                        searchRestrictedData: string[] = ...

                                        Properties that will not be searchable from the frontend. If the frontend +

                                        searchRestrictedData: string[] = ...

                                        Properties that will not be searchable from the frontend. If the frontend includes any of these properties in any of their clauses, they will be filtered out before the search is executed.

                                        -

                                        Methods

                                        • Add one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        Methods

                                        • Add one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Check if this is a sleeping reference.

                                          -

                                          Returns boolean

                                        • A frontend accessible method to change the user's password.

                                          -

                                          Parameters

                                          • data: {
                                                currentPassword: string;
                                                newPassword: string;
                                                revokeCurrentTokens?: boolean;
                                            }

                                            The input data from the client.

                                            -
                                            • currentPassword: string
                                            • newPassword: string
                                            • Optional revokeCurrentTokens?: boolean

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Check if this is a sleeping reference and throw an error if so.

                                          -

                                          Returns void

                                        • Check that an email is unique.

                                          -

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Check the given password against the user's.

                                          -

                                          Parameters

                                          • password: string

                                            The password in question.

                                            +
                                        • Check if this is a sleeping reference.

                                          +

                                          Returns boolean

                                        • A frontend accessible method to change the user's password.

                                          +

                                          Parameters

                                          • data: {
                                                currentPassword: string;
                                                newPassword: string;
                                                revokeCurrentTokens?: boolean;
                                            }

                                            The input data from the client.

                                            +
                                            • currentPassword: string
                                            • newPassword: string
                                            • Optional revokeCurrentTokens?: boolean

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Check if this is a sleeping reference and throw an error if so.

                                          +

                                          Returns void

                                        • Check that an email is unique.

                                          +

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Check the given password against the user's.

                                          +

                                          Parameters

                                          • password: string

                                            The password in question.

                                          Returns boolean

                                          True if the passwords match, otherwise false.

                                          -
                                        • Check that a phone number is unique.

                                          -

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Check the given code against the user's TOTP secret.

                                          -

                                          Parameters

                                        • Check that a phone number is unique.

                                          +

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Check the given code against the user's TOTP secret.

                                          +

                                          Parameters

                                          • code: string

                                            The code in question.

                                          Returns boolean

                                          True if the code is valid, otherwise false.

                                          -
                                        • Check that a username is valid.

                                          -

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Check that a username is valid.

                                          +

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Replace any referenced entities in the data with sleeping references.

                                          Calling this function ensures that the next time a referenced entity is accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                                          -

                                          Returns void

                                        • Perform a more strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check to see if a user has an ability.

                                          +
                                        • Check to see if a user has an ability.

                                          This function will check both user and group abilities, if the user is marked to inherit the abilities of its group.

                                          If ability is undefined, it will check to see if the user is currently logged in.

                                          If the user has the "system/admin" ability, this function will return true.

                                          -

                                          Parameters

                                          • Optional ability: string

                                            The ability.

                                            -

                                          Returns Promise<boolean>

                                          True or false.

                                          -
                                        • Returns null | (null | string)[]

                                        • Returns null | string

                                        • Returns null | (null | string)[]

                                        • Returns null | string

                                        • Returns null | (null | string)[]

                                        • Get the client enabled methods.

                                          +

                                          Parameters

                                          • Optional ability: string

                                            The ability.

                                            +

                                          Returns Promise<boolean>

                                          True or false.

                                          +
                                        • Returns null | (null | string)[]

                                        • Returns any

                                        • Returns null | (null | string)[]

                                        • Returns any

                                        • Returns null | (null | string)[]

                                        • Get the client enabled methods.

                                          Returns string[]

                                          The names of methods allowed to be called by the frontend with serverCall.

                                          -
                                        • Used to retrieve the data object.

                                          +
                                        • Used to retrieve the data object.

                                          This should only be used by Nymph to save the data into storage.

                                          -

                                          Parameters

                                          • Optional includeSData: boolean

                                            Whether to include the serialized data as well.

                                            +

                                            Parameters

                                            • Optional includeSData: boolean

                                              Whether to include the serialized data as well.

                                            Returns any

                                            The entity's data object.

                                            -
                                        • Build a gatekeeper cache object.

                                          -

                                          Returns Promise<{
                                              [k: string]: T;
                                          }>

                                        • A frontend accessible method to generate a new TOTP secret.

                                          -

                                          Returns Promise<{
                                              qrcode: string;
                                              secret: string;
                                              uri: string;
                                          }>

                                          An object with 'uri', 'qrcode', and 'secret'.

                                          -
                                        • Get the original values of the AC properties.

                                          +
                                        • Build a gatekeeper cache object.

                                          +

                                          Returns Promise<{
                                              [k: string]: T;
                                          }>

                                        • A frontend accessible method to generate a new TOTP secret.

                                          +

                                          Returns Promise<{
                                              qrcode: string;
                                              secret: string;
                                              uri: string;
                                          }>

                                          An object with 'uri', 'qrcode', and 'secret'.

                                          +
                                        • Used to retrieve the serialized data object.

                                          This should only be used by Nymph to save the data object into storage.

                                          This method is used by Nymph to avoid unserializing data that hasn't been requested yet.

                                          It should always be called after getData().

                                          Returns SerializedEntityData

                                          The entity's serialized data object.

                                          -
                                        • Get the entity's tags.

                                          +
                                        • Get the entity's tags.

                                          Using this instead of accessing the tags prop directly will wake sleeping references.

                                          Returns string[]

                                          The entity's tags.

                                          -
                                        • Get an array of strings that must be unique across the current etype.

                                          +
                                        • Get an array of strings that must be unique across the current etype.

                                          When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                          The default implementation of this method returns an empty array, meaning there are no uniqueness constraints applied to its etype.

                                          -

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          -
                                        • Get an object that holds the same data as the entity.

                                          This provides an object that can be validated.

                                          Returns any

                                          A pure object representation of the entity.

                                          -
                                        • Check that the entity has all of the given tags.

                                          -

                                          Parameters

                                        • Check that the entity has all of the given tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          +
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Check whether the user is in a (primary or secondary) group.

                                          -

                                          Parameters

                                          Returns Promise<boolean>

                                          True or false.

                                          -
                                        • Perform a less strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +
                                        • Check whether the user is in a (primary or secondary) group.

                                          +

                                          Parameters

                                          Returns Promise<boolean>

                                          True or false.

                                          +
                                        • Perform a less strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether the user is a descendant of a group.

                                          -

                                          Parameters

                                          Returns Promise<boolean>

                                          True or false.

                                          -
                                        • Accept JSON data from the client.

                                          +
                                        • Check whether the user is a descendant of a group.

                                          +

                                          Parameters

                                          Returns Promise<boolean>

                                          True or false.

                                          +
                                        • Accept JSON data from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -302,9 +307,9 @@

                                            See

                                            http://nymph.io/

                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            -
                                          • allowConflict: boolean = false

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Accept JSON patch from the client.

                                          +

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            +
                                          • allowConflict: boolean = false

                                            Allow to accept data that is older than the current data.

                                            +

                                          Returns void

                                        • Accept JSON patch from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -312,65 +317,65 @@

                                            See

                                            http://nymph.io/

                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • patch: EntityPatch

                                            The patch data. Please note, this will be modified (destroyed).

                                            -
                                          • allowConflict: boolean = false

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                code?: string;
                                                password: string;
                                                username: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • Optional code?: string
                                            • password: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              needTOTP: boolean;
                                              result: boolean;
                                          } | {
                                              message: any;
                                              needTOTP?: undefined;
                                              result: boolean;
                                          }>

                                        • Log a user out of the system.

                                          -

                                          Returns Promise<{
                                              message: any;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Change the user's password.

                                          -

                                          Parameters

                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                code?: string;
                                                password: string;
                                                username: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • Optional code?: string
                                            • password: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              needTOTP: boolean;
                                              result: boolean;
                                          } | {
                                              message: any;
                                              needTOTP?: undefined;
                                              result: boolean;
                                          }>

                                        • Log a user out of the system.

                                          +

                                          Returns Promise<{
                                              message: any;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Change the user's password.

                                          +

                                          Parameters

                                          • password: string

                                            The new password.

                                          Returns string

                                          The resulting password or hash which is stored in the entity.

                                          -
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                password: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • password: string

                                          Returns Promise<{
                                              loggedin: boolean;
                                              message: string;
                                              result: boolean;
                                          }>

                                        • A frontend accessible method to remove the TOTP secret from the user's +

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          +
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                password: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • password: string

                                          Returns Promise<{
                                              loggedin: boolean;
                                              message: string;
                                              result: boolean;
                                          }>

                                        • A frontend accessible method to remove the TOTP secret from the user's account.

                                          -

                                          Parameters

                                          • Optional data: {
                                                code: string;
                                                password: string;
                                            }

                                            The input data from the client.

                                            -
                                            • code: string
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Remove one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        • A frontend accessible method to revoke all currently issued tokens.

                                          -

                                          Parameters

                                          • data: {
                                                password: string;
                                            }

                                            The input data from the client.

                                            -
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • A frontend accessible method to save a TOTP secret into the user's account.

                                          -

                                          Parameters

                                          • data: {
                                                code: string;
                                                password: string;
                                                secret: string;
                                            }

                                            The input data from the client.

                                            -
                                            • code: string
                                            • password: string
                                            • secret: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Send the user email verification/change/cancellation links.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Parameters

                                          • Optional data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any

                                          Returns Promise<{
                                              message: any;
                                              result: boolean;
                                          }>

                                        • Return a Nymph Entity Reference for this entity.

                                          +

                                          Parameters

                                          • Optional data: {
                                                code: string;
                                                password: string;
                                            }

                                            The input data from the client.

                                            +
                                            • code: string
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Remove one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • A frontend accessible method to revoke all currently issued tokens.

                                          +

                                          Parameters

                                          • data: {
                                                password: string;
                                            }

                                            The input data from the client.

                                            +
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • A frontend accessible method to save a TOTP secret into the user's account.

                                          +

                                          Parameters

                                          • data: {
                                                code: string;
                                                password: string;
                                                secret: string;
                                            }

                                            The input data from the client.

                                            +
                                            • code: string
                                            • password: string
                                            • secret: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Send the user email verification/change/cancellation links.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Parameters

                                          • Optional data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any

                                          Returns Promise<{
                                              message: any;
                                              result: boolean;
                                          }>

                                        • Return a Nymph Entity Reference for this entity.

                                          If the entity hasn't been saved yet (and has no GUID), it will be returned instead.

                                          Returns User | EntityReference

                                          A Nymph Entity Reference array as an unsaved entity.

                                          -
                                        • Update the data protection arrays for a user.

                                          -

                                          Parameters

                                          • Optional givenUser: User & UserData

                                            User to update protection for. If undefined, will use the currently logged in user.

                                            -

                                          Returns void

                                        • Set whether to use "skipAc" when accessing entity references.

                                          -

                                          Parameters

                                          • skipAc: boolean

                                            True or false, whether to use it.

                                            -

                                          Returns void

                                        • Alter the options for a query for this entity.

                                          -

                                          Type Parameters

                                          Parameters

                                          • options: T

                                            The current options.

                                            -

                                          Returns T

                                          The altered options.

                                          -
                                        • Create or retrieve a new entity instance.

                                          +
                                        • Update the data protection arrays for a user.

                                          +

                                          Parameters

                                          • Optional givenUser: User & UserData

                                            User to update protection for. If undefined, will use the currently logged in user.

                                            +

                                          Returns void

                                        • Set whether to use "skipAc" when accessing entity references.

                                          +

                                          Parameters

                                          • skipAc: boolean

                                            True or false, whether to use it.

                                            +

                                          Returns void

                                        • Alter the options for a query for this entity.

                                          +

                                          Type Parameters

                                          Parameters

                                          • options: T

                                            The current options.

                                            +

                                          Returns T

                                          The altered options.

                                          +
                                        • Create or retrieve a new entity instance.

                                          Note that this will always return an entity, even if the GUID is not found.

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            -

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            +

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          Sleeping references won't retrieve their data from the database until they are readied with $wake() or a parent's $wakeAll().

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            -

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          -
                                        • Returns {
                                              allowRegistration: boolean;
                                              allowUsernameChange: boolean;
                                              emailUsernames: boolean;
                                              pwRecovery: boolean;
                                              regFields: string[];
                                              unverifiedAccess: boolean;
                                              userFields: string[];
                                              verifyEmail: boolean;
                                          }

                                          • allowRegistration: boolean
                                          • allowUsernameChange: boolean
                                          • emailUsernames: boolean
                                          • pwRecovery: boolean
                                          • regFields: string[]
                                          • unverifiedAccess: boolean
                                          • userFields: string[]
                                          • verifyEmail: boolean
                                        • Get an array of strings that must be unique across the current etype.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            +

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          +
                                        • Returns {
                                              allowRegistration: boolean;
                                              allowUsernameChange: boolean;
                                              emailUsernames: boolean;
                                              pwRecovery: boolean;
                                              regFields: string[];
                                              unverifiedAccess: boolean;
                                              userFields: string[];
                                              verifyEmail: boolean;
                                          }

                                          • allowRegistration: boolean
                                          • allowUsernameChange: boolean
                                          • emailUsernames: boolean
                                          • pwRecovery: boolean
                                          • regFields: string[]
                                          • unverifiedAccess: boolean
                                          • userFields: string[]
                                          • verifyEmail: boolean
                                        • Get an array of strings that must be unique across the current etype.

                                          When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                          The default implementation of this static method instantiates the entity, @@ -379,11 +384,11 @@

                                          See

                                          http://nymph.io/

                                          happens during any of these steps. You can override this method to calculate the unique strings faster, but you must return the same strings that would be returned by $getUniques.

                                          -

                                          Parameters

                                          • __namedParameters: {
                                                cdate?: number;
                                                data: EntityData;
                                                guid?: string;
                                                mdate?: number;
                                                sdata?: SerializedEntityData;
                                                tags: string[];
                                            }

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          -
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                code?: string;
                                                password: string;
                                                username: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • Optional code?: string
                                            • password: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                              user?: User & UserData;
                                          }>

                                        • Recover account details.

                                          -

                                          Parameters

                                          • data: {
                                                password: string;
                                                secret: string;
                                                username: string;
                                            }

                                            The input data from the client.

                                            -
                                            • password: string
                                            • secret: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -
                                        • Send an account recovery link.

                                          -

                                          Parameters

                                          • data: {
                                                account: string;
                                                recoveryType: "password" | "username";
                                            }

                                            The input data from the client.

                                            -
                                            • account: string
                                            • recoveryType: "password" | "username"

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Parameters

                                        • __namedParameters: {
                                              cdate?: number;
                                              data: EntityData;
                                              guid?: string;
                                              mdate?: number;
                                              sdata?: SerializedEntityData;
                                              tags: string[];
                                          }

                                        Returns Promise<string[]>

                                        Resolves to an array of entity's unique constraint strings.

                                        +
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                code?: string;
                                                password: string;
                                                username: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • Optional code?: string
                                            • password: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                              user?: User & UserData;
                                          }>

                                        • Recover account details.

                                          +

                                          Parameters

                                          • data: {
                                                password: string;
                                                secret: string;
                                                username: string;
                                            }

                                            The input data from the client.

                                            +
                                            • password: string
                                            • secret: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        • Send an account recovery link.

                                          +

                                          Parameters

                                          • data: {
                                                account: string;
                                                recoveryType: "password" | "username";
                                            }

                                            The input data from the client.

                                            +
                                            • account: string
                                            • recoveryType: "password" | "username"

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                          An object with a boolean 'result' entry and a 'message' entry.

                                          +
                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld_client.Group.html b/docs/api/latest/classes/_nymphjs_tilmeld_client.Group.html index ac895e7..b00c33e 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld_client.Group.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld_client.Group.html @@ -1,144 +1,144 @@ -Group | Nymph.js 1.0.0-beta.61

                                        Entity interface.

                                        -

                                        Hierarchy

                                        Constructors

                                        Properties

                                        $data: GroupData

                                        The data proxy object.

                                        -
                                        $dataHandler: Object

                                        The data proxy handler.

                                        -
                                        $dataStore: GroupData

                                        The actual data store.

                                        -
                                        $dirty: {
                                            [k: string]: boolean;
                                        }

                                        A map of props to whether they're dirty (for patch).

                                        -

                                        Type declaration

                                        • [k: string]: boolean
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        -
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        $originalTags: string[]

                                        Array of the entity's original tags (for patch).

                                        -
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        -
                                        $wakePromise: null | Promise<Entity<GroupData>>

                                        A promise that resolved when the entity's data is wake.

                                        -
                                        cdate: null | number

                                        The creation date of the entity as a high precision Unix timestamp.

                                        -
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        -
                                        mdate: null | number

                                        The modified date of the entity as a high precision Unix timestamp.

                                        -
                                        tags: string[]

                                        Array of the entity's tags.

                                        -
                                        class: string = 'Group'

                                        The lookup name for this entity.

                                        +Group | Nymph.js 1.0.0-beta.81

                                        Entity interface.

                                        +

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        $data: GroupData

                                        The data proxy object.

                                        +
                                        $dataHandler: Object

                                        The data proxy handler.

                                        +
                                        $dataStore: GroupData

                                        The actual data store.

                                        +
                                        $dirty: {
                                            [k: string]: boolean;
                                        }

                                        A map of props to whether they're dirty (for patch).

                                        +

                                        Type declaration

                                        • [k: string]: boolean
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        +
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        $originalTags: string[]

                                        Array of the entity's original tags (for patch).

                                        +
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        +
                                        $wakePromise: null | Promise<Entity<GroupData>>

                                        A promise that resolved when the entity's data is wake.

                                        +
                                        cdate: null | number

                                        The creation date of the entity as a high precision Unix timestamp.

                                        +
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        +
                                        mdate: null | number

                                        The modified date of the entity as a high precision Unix timestamp.

                                        +
                                        tags: string[]

                                        Array of the entity's tags.

                                        +
                                        class: string = 'Group'

                                        The lookup name for this entity.

                                        This is used for reference arrays (and sleeping references) and server requests.

                                        -
                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -

                                        Methods

                                        • Add one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +

                                        Methods

                                        • Add one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Check if this is a sleeping reference.

                                          -

                                          Returns boolean

                                        • Check if this is a sleeping reference and throw an error if so.

                                          -

                                          Returns void

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Delete the object from storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Perform a more strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +
                                        • Check if this is a sleeping reference.

                                          +

                                          Returns boolean

                                        • Check if this is a sleeping reference and throw an error if so.

                                          +

                                          Returns void

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Delete the object from storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Perform a more strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Get a patch of this entity's dirty data to be applied on the server.

                                          -

                                          Returns EntityPatch

                                        • Check that the entity has all of the given tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +
                                        • Get a patch of this entity's dirty data to be applied on the server.

                                          +

                                          Returns EntityPatch

                                        • Check that the entity has all of the given tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          +
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Perform a less strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +
                                        • Perform a less strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Save the object's dirty data to storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          +
                                        • Save the object's dirty data to storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -
                                        • Remove one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        • Save the object to storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Call an instance method on the server version of this entity.

                                          +

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          +
                                        • Remove one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Save the object to storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Call an instance method on the server version of this entity.

                                          The entity's data will be sent up to the server as well, so the server's state can match the client's state. It won't be propagated into the DB, though.

                                          -

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            -
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            -
                                          • Optional stateless: boolean

                                            Whether the server should return, and the client update, the data in the entity after the method has run.

                                            -

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          -
                                        • Return a Nymph Entity Reference for this entity.

                                          +

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            +
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            +
                                          • Optional stateless: boolean

                                            Whether the server should return, and the client update, the data in the entity after the method has run.

                                            +

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          +
                                        • Ready this entity's data, and the data of entity's within this one's.

                                          -

                                          Parameters

                                          • Optional level: number

                                            The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                                            -

                                          Returns Promise<Entity<GroupData>>

                                          The entity.

                                          -
                                        • Create or retrieve a new entity instance.

                                          +
                                        • Ready this entity's data, and the data of entity's within this one's.

                                          +

                                          Parameters

                                          • Optional level: number

                                            The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                                            +

                                          Returns Promise<Entity<GroupData>>

                                          The entity.

                                          +
                                        • Create or retrieve a new entity instance.

                                          Note that this will always return an entity, even if the GUID is not found.

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            -

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            +

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          Sleeping references won't retrieve their data from the server until they are readied with $wake() or a parent's $wakeAll().

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            -

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          -
                                        • Call a static method on the server version of this entity.

                                          -

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            -
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            -

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          -
                                        • Call a static iterator method on the server version of this entity.

                                          -

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            -
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            -

                                          Returns Promise<AbortableAsyncIterator<any>>

                                          An iterator that iterates over values that the method on the server yields.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Type Parameters

                                        Parameters

                                        • this: (new () => E)
                                            • new (): E
                                            • Returns E

                                        • reference: EntityReference

                                          The Nymph Entity Reference to use to wake.

                                          +

                                        Returns E & EntityDataType<E>

                                        The new instance.

                                        +
                                        • Call a static method on the server version of this entity.

                                          +

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            +
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            +

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          +
                                        • Call a static iterator method on the server version of this entity.

                                          +

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            +
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            +

                                          Returns Promise<AbortableAsyncIterator<any>>

                                          An iterator that iterates over values that the method on the server yields.

                                          +
                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld_client.NeedTOTPError.html b/docs/api/latest/classes/_nymphjs_tilmeld_client.NeedTOTPError.html index 5e5e8ce..2ab549c 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld_client.NeedTOTPError.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld_client.NeedTOTPError.html @@ -1,11 +1,11 @@ -NeedTOTPError | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        • Error
                                          • NeedTOTPError

                                        Constructors

                                        • Parameters

                                          • Optional message: string

                                          Returns NeedTOTPError

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Type declaration

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          -

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +NeedTOTPError | Nymph.js 1.0.0-beta.81

                                        Hierarchy

                                        • Error
                                          • NeedTOTPError

                                        Constructors

                                        • Parameters

                                          • Optional message: string

                                          Returns NeedTOTPError

                                        Properties

                                        message: string
                                        name: string
                                        stack?: string
                                        prepareStackTrace?: ((err, stackTraces) => any)

                                        Optional override for formatting stack traces

                                        +

                                        Type declaration

                                          • (err, stackTraces): any
                                          • Parameters

                                            • err: Error
                                            • stackTraces: CallSite[]

                                            Returns any

                                        stackTraceLimit: number

                                        Methods

                                        • Create .stack property on a target object

                                          +

                                          Parameters

                                          • targetObject: object
                                          • Optional constructorOpt: Function

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld_client.User.html b/docs/api/latest/classes/_nymphjs_tilmeld_client.User.html index b3ca10c..7d995d6 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld_client.User.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld_client.User.html @@ -1,159 +1,159 @@ -User | Nymph.js 1.0.0-beta.61

                                        Entity interface.

                                        -

                                        Hierarchy

                                        Constructors

                                        Properties

                                        $data: UserData

                                        The data proxy object.

                                        -
                                        $dataHandler: Object

                                        The data proxy handler.

                                        -
                                        $dataStore: UserData

                                        The actual data store.

                                        -
                                        $dirty: {
                                            [k: string]: boolean;
                                        }

                                        A map of props to whether they're dirty (for patch).

                                        -

                                        Type declaration

                                        • [k: string]: boolean
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        -
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        $originalTags: string[]

                                        Array of the entity's original tags (for patch).

                                        -
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        -
                                        $wakePromise: null | Promise<Entity<UserData>>

                                        A promise that resolved when the entity's data is wake.

                                        -
                                        cdate: null | number

                                        The creation date of the entity as a high precision Unix timestamp.

                                        -
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        -
                                        mdate: null | number

                                        The modified date of the entity as a high precision Unix timestamp.

                                        -
                                        tags: string[]

                                        Array of the entity's tags.

                                        -
                                        class: string = 'User'

                                        The lookup name for this entity.

                                        +User | Nymph.js 1.0.0-beta.81

                                        Entity interface.

                                        +

                                        Hierarchy (view full)

                                        Constructors

                                        Properties

                                        $data: UserData

                                        The data proxy object.

                                        +
                                        $dataHandler: Object

                                        The data proxy handler.

                                        +
                                        $dataStore: UserData

                                        The actual data store.

                                        +
                                        $dirty: {
                                            [k: string]: boolean;
                                        }

                                        A map of props to whether they're dirty (for patch).

                                        +

                                        Type declaration

                                        • [k: string]: boolean
                                        $isASleepingReference: boolean

                                        Whether this instance is a sleeping reference.

                                        +
                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        $originalTags: string[]

                                        Array of the entity's original tags (for patch).

                                        +
                                        $sleepingReference: null | EntityReference

                                        The reference to use to wake.

                                        +
                                        $wakePromise: null | Promise<Entity<UserData>>

                                        A promise that resolved when the entity's data is wake.

                                        +
                                        cdate: null | number

                                        The creation date of the entity as a high precision Unix timestamp.

                                        +
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        +
                                        mdate: null | number

                                        The modified date of the entity as a high precision Unix timestamp.

                                        +
                                        tags: string[]

                                        Array of the entity's tags.

                                        +
                                        class: string = 'User'

                                        The lookup name for this entity.

                                        This is used for reference arrays (and sleeping references) and server requests.

                                        -
                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        stores: WeakMap<Nymph, InstanceStore> = ...

                                        Methods

                                        • Add one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        stores: WeakMap<Nymph, InstanceStore> = ...

                                        Methods

                                        • Add one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Check if this is a sleeping reference.

                                          -

                                          Returns boolean

                                        • Parameters

                                          • data: {
                                                currentPassword: string;
                                                newPassword: string;
                                                revokeCurrentTokens?: boolean;
                                            }
                                            • currentPassword: string
                                            • newPassword: string
                                            • Optional revokeCurrentTokens?: boolean

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Check if this is a sleeping reference and throw an error if so.

                                          -

                                          Returns void

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Delete the object from storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Perform a more strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +
                                        • Check if this is a sleeping reference.

                                          +

                                          Returns boolean

                                        • Parameters

                                          • data: {
                                                currentPassword: string;
                                                newPassword: string;
                                                revokeCurrentTokens?: boolean;
                                            }
                                            • currentPassword: string
                                            • newPassword: string
                                            • Optional revokeCurrentTokens?: boolean

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Check if this is a sleeping reference and throw an error if so.

                                          +

                                          Returns void

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Delete the object from storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Perform a more strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Returns Promise<{
                                              qrcode: string;
                                              secret: string;
                                              uri: string;
                                          }>

                                        • Get a patch of this entity's dirty data to be applied on the server.

                                          -

                                          Returns EntityPatch

                                        • Check that the entity has all of the given tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +
                                        • Returns Promise<{
                                              qrcode: string;
                                              secret: string;
                                              uri: string;
                                          }>

                                        • Get a patch of this entity's dirty data to be applied on the server.

                                          +

                                          Returns EntityPatch

                                        • Check that the entity has all of the given tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          +
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Perform a less strict comparison of this object to another.

                                          -

                                          Parameters

                                          • object: any

                                            The object to compare.

                                            +
                                        • Perform a less strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Save the object's dirty data to storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          +
                                        • Save the object's dirty data to storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                password: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • password: string

                                          Returns Promise<{
                                              loggedin: boolean;
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Parameters

                                          • Optional data: {
                                                code: string;
                                                password: string;
                                            }
                                            • code: string
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Remove one or more tags.

                                          -

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            -

                                          Returns void

                                        • Parameters

                                          • data: {
                                                password: string;
                                            }
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Save the object to storage.

                                          -

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          -
                                        • Parameters

                                          • data: {
                                                code: string;
                                                password: string;
                                                secret: string;
                                            }
                                            • code: string
                                            • password: string
                                            • secret: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Call an instance method on the server version of this entity.

                                          +

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          +
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                password: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • password: string

                                          Returns Promise<{
                                              loggedin: boolean;
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Parameters

                                          • Optional data: {
                                                code: string;
                                                password: string;
                                            }
                                            • code: string
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Remove one or more tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                            +

                                          Returns void

                                        • Parameters

                                          • data: {
                                                password: string;
                                            }
                                            • password: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Save the object to storage.

                                          +

                                          Returns Promise<boolean>

                                          True on success, false on failure.

                                          +
                                        • Parameters

                                          • data: {
                                                code: string;
                                                password: string;
                                                secret: string;
                                            }
                                            • code: string
                                            • password: string
                                            • secret: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Call an instance method on the server version of this entity.

                                          The entity's data will be sent up to the server as well, so the server's state can match the client's state. It won't be propagated into the DB, though.

                                          -

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            -
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            -
                                          • Optional stateless: boolean

                                            Whether the server should return, and the client update, the data in the entity after the method has run.

                                            -

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          -
                                        • Parameters

                                          • Optional data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Return a Nymph Entity Reference for this entity.

                                          +

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            +
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            +
                                          • Optional stateless: boolean

                                            Whether the server should return, and the client update, the data in the entity after the method has run.

                                            +

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          +
                                        • Parameters

                                          • Optional data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Ready this entity's data, and the data of entity's within this one's.

                                          -

                                          Parameters

                                          • Optional level: number

                                            The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                                            -

                                          Returns Promise<Entity<UserData>>

                                          The entity.

                                          -
                                        • Parameters

                                          • returnObjectIfNotExist: true

                                          Returns Promise<User & UserData & {
                                              abilities?: string[];
                                              email?: string;
                                              group?: Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                              };
                                              groups?: (Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                              })[];
                                              inheritAbilities?: boolean;
                                              newEmailAddress?: string;
                                              phone?: string;
                                          }>

                                        • Parameters

                                          • Optional returnObjectIfNotExist: false

                                          Returns Promise<null | User & UserData & {
                                              abilities?: string[];
                                              email?: string;
                                              group?: Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                              };
                                              groups?: (Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                              })[];
                                              inheritAbilities?: boolean;
                                              newEmailAddress?: string;
                                              phone?: string;
                                          }>

                                        • Create or retrieve a new entity instance.

                                          +
                                        • Ready this entity's data, and the data of entity's within this one's.

                                          +

                                          Parameters

                                          • Optional level: number

                                            The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                                            +

                                          Returns Promise<Entity<UserData>>

                                          The entity.

                                          +
                                        • Parameters

                                          • returnObjectIfNotExist: true

                                          Returns Promise<User & UserData & {
                                              abilities?: string[];
                                              email?: string;
                                              group?: Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                              };
                                              groups?: (Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                              })[];
                                              inheritAbilities?: boolean;
                                              newEmailAddress?: string;
                                              phone?: string;
                                          }>

                                        • Parameters

                                          • Optional returnObjectIfNotExist: false

                                          Returns Promise<null | User & UserData & {
                                              abilities?: string[];
                                              email?: string;
                                              group?: Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                              };
                                              groups?: (Group & GroupData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  phone?: string;
                                                  user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                              })[];
                                              inheritAbilities?: boolean;
                                              newEmailAddress?: string;
                                              phone?: string;
                                          }>

                                        • Create or retrieve a new entity instance.

                                          Note that this will always return an entity, even if the GUID is not found.

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            -

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          +

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • Optional guid: string

                                            An optional GUID to retrieve.

                                            +

                                          Returns Promise<E & EntityDataType<E>>

                                        • Create a new sleeping reference instance.

                                          Sleeping references won't retrieve their data from the server until they are readied with $wake() or a parent's $wakeAll().

                                          -

                                          Type Parameters

                                          Parameters

                                          • this: (new () => E)
                                              • new (): E
                                              • Returns E

                                          • reference: EntityReference

                                            The Nymph Entity Reference to use to wake.

                                            -

                                          Returns E & EntityDataType<E>

                                          The new instance.

                                          -
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                code?: string;
                                                password: string;
                                                username: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • Optional code?: string
                                            • password: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              needTOTP?: true;
                                              result: boolean;
                                              user?: User & UserData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  group?: Group & GroupData & {
                                                      abilities?: string[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                                  };
                                                  groups?: (Group & GroupData & {
                                                      abilities?: string[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                                  })[];
                                                  inheritAbilities?: boolean;
                                                  newEmailAddress?: string;
                                                  phone?: string;
                                              };
                                          }>

                                        • Parameters

                                          • data: {
                                                password: string;
                                                secret: string;
                                                username: string;
                                            }
                                            • password: string
                                            • secret: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Parameters

                                          • data: {
                                                account: string;
                                                recoveryType: "username" | "password";
                                            }
                                            • account: string
                                            • recoveryType: "username" | "password"

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Call a static method on the server version of this entity.

                                          -

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            -
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            -

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          -
                                        • Call a static iterator method on the server version of this entity.

                                          -

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            -
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            -

                                          Returns Promise<AbortableAsyncIterator<any>>

                                          An iterator that iterates over values that the method on the server yields.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Type Parameters

                                        Parameters

                                        • this: (new () => E)
                                            • new (): E
                                            • Returns E

                                        • reference: EntityReference

                                          The Nymph Entity Reference to use to wake.

                                          +

                                        Returns E & EntityDataType<E>

                                        The new instance.

                                        +
                                        • Parameters

                                          • data: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                code?: string;
                                                password: string;
                                                username: string;
                                            }
                                            • Optional additionalData?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • Optional code?: string
                                            • password: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              needTOTP?: true;
                                              result: boolean;
                                              user?: User & UserData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  group?: Group & GroupData & {
                                                      abilities?: string[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                                  };
                                                  groups?: (Group & GroupData & {
                                                      abilities?: (...)[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                                  })[];
                                                  inheritAbilities?: boolean;
                                                  newEmailAddress?: string;
                                                  phone?: string;
                                              };
                                          }>

                                        • Parameters

                                          • data: {
                                                password: string;
                                                secret: string;
                                                username: string;
                                            }
                                            • password: string
                                            • secret: string
                                            • username: string

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Parameters

                                          • data: {
                                                account: string;
                                                recoveryType: "username" | "password";
                                            }
                                            • account: string
                                            • recoveryType: "username" | "password"

                                          Returns Promise<{
                                              message: string;
                                              result: boolean;
                                          }>

                                        • Call a static method on the server version of this entity.

                                          +

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            +
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            +

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          +
                                        • Call a static iterator method on the server version of this entity.

                                          +

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            +
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            +

                                          Returns Promise<AbortableAsyncIterator<any>>

                                          An iterator that iterates over values that the method on the server yields.

                                          +
                                        \ No newline at end of file diff --git a/docs/api/latest/classes/_nymphjs_tilmeld_components.Account.html b/docs/api/latest/classes/_nymphjs_tilmeld_components.Account.html index 14b723e..9bc961e 100644 --- a/docs/api/latest/classes/_nymphjs_tilmeld_components.Account.html +++ b/docs/api/latest/classes/_nymphjs_tilmeld_components.Account.html @@ -1,4 +1,4 @@ -Account | Nymph.js 1.0.0-beta.61

                                        Base class for Svelte components with some minor dev-enhancements. Used when dev=true.

                                        +Account | Nymph.js 1.0.0-beta.81

                                        Base class for Svelte components with some minor dev-enhancements. Used when dev=true.

                                        Can be used to create strongly typed Svelte components.

                                        Example:

                                        You have component library on npm called component-library, from which you export a component called MyComponent. For Svelte+TypeScript users, @@ -10,23 +10,23 @@ with TypeScript:

                                        <script lang="ts">
                                        import { MyComponent } from "component-library";
                                        </script>
                                        <MyComponent foo={'bar'} />
                                        -

                                        Type Parameters

                                        • Props extends Record<string, any> = any

                                        • Events extends Record<string, any> = any

                                        • Slots extends Record<string, any> = any

                                        Hierarchy

                                        • SvelteComponent_1<Props, Events>
                                          • Account

                                        Indexable

                                        [prop: string]: any

                                        Constructors

                                        • Type Parameters

                                          • Props extends Record<string, any> = any

                                          • Events extends Record<string, any> = any

                                          • Slots extends Record<string, any> = any

                                          Parameters

                                          • options: ComponentConstructorOptions<Props>

                                          Returns Account<Props, Events, Slots>

                                        Properties

                                        $$: any

                                        PRIVATE API

                                        Do not use, may change at any time

                                        -
                                        $$events_def: Events

                                        For type checking capabilities only. +

                                        Type Parameters

                                        • Props extends Record<string, any> = any
                                        • Events extends Record<string, any> = any
                                        • Slots extends Record<string, any> = any

                                        Hierarchy

                                        Indexable

                                        [prop: string]: any

                                        Constructors

                                        • Type Parameters

                                          • Props extends Record<string, any> = any
                                          • Events extends Record<string, any> = any
                                          • Slots extends Record<string, any> = any

                                          Parameters

                                          • options: ComponentConstructorOptions<Props>

                                          Returns Account<Props, Events, Slots>

                                        Properties

                                        $$: any

                                        PRIVATE API

                                        Do not use, may change at any time

                                        +
                                        $$events_def: Events

                                        For type checking capabilities only. Does not exist at runtime.

                                        -

                                        DO NOT USE!

                                        $$prop_def: Props

                                        For type checking capabilities only. +

                                        DO NOT USE!

                                        $$prop_def: Props

                                        For type checking capabilities only. Does not exist at runtime.

                                        -

                                        DO NOT USE!

                                        $$set: any

                                        PRIVATE API

                                        Do not use, may change at any time

                                        -
                                        $$slot_def: Slots

                                        For type checking capabilities only. +

                                        DO NOT USE!

                                        $$set: any

                                        PRIVATE API

                                        Do not use, may change at any time

                                        +
                                        $$slot_def: Slots

                                        For type checking capabilities only. Does not exist at runtime.

                                        -

                                        DO NOT USE!

                                        Methods

                                        • Returns void

                                        • Returns void

                                        • Returns void

                                        • Type Parameters

                                          • K extends string

                                          Parameters

                                          • type: K
                                          • callback: undefined | null | ((e) => void)

                                          Returns (() => void)

                                            • (): void
                                            • Returns void

                                        • Parameters

                                          • props: Partial<Props>

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        DO NOT USE!

                                        Methods

                                        • Returns void

                                        • Returns void

                                        • Returns void

                                        • Type Parameters

                                          • K extends string

                                          Parameters

                                          • type: K
                                          • callback: undefined | null | ((e) => void)

                                          Returns (() => void)

                                            • (): void
                                            • Returns void

                                        • Parameters

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/enums/_nymphjs_nymph.TilmeldAccessLevels.html b/docs/api/latest/enums/_nymphjs_nymph.TilmeldAccessLevels.html index cfc864a..213fc59 100644 --- a/docs/api/latest/enums/_nymphjs_nymph.TilmeldAccessLevels.html +++ b/docs/api/latest/enums/_nymphjs_nymph.TilmeldAccessLevels.html @@ -1,5 +1,5 @@ -TilmeldAccessLevels | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +TilmeldAccessLevels | Nymph.js 1.0.0-beta.81

                                        Enumeration Members

                                        FULL_ACCESS: 4
                                        NO_ACCESS: 0
                                        READ_ACCESS: 1
                                        WRITE_ACCESS: 2
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_guid.customAlphabet.html b/docs/api/latest/functions/_nymphjs_guid.customAlphabet.html index a701eea..631a152 100644 --- a/docs/api/latest/functions/_nymphjs_guid.customAlphabet.html +++ b/docs/api/latest/functions/_nymphjs_guid.customAlphabet.html @@ -1,9 +1,9 @@ -customAlphabet | Nymph.js 1.0.0-beta.61
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_guid.guid.html b/docs/api/latest/functions/_nymphjs_guid.guid.html index d6f6f5d..1dd13d8 100644 --- a/docs/api/latest/functions/_nymphjs_guid.guid.html +++ b/docs/api/latest/functions/_nymphjs_guid.guid.html @@ -1 +1 @@ -guid | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +guid | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_guid.humanSecret.html b/docs/api/latest/functions/_nymphjs_guid.humanSecret.html index c20c473..28200b8 100644 --- a/docs/api/latest/functions/_nymphjs_guid.humanSecret.html +++ b/docs/api/latest/functions/_nymphjs_guid.humanSecret.html @@ -1,7 +1 @@ -humanSecret | Nymph.js 1.0.0-beta.61
                                        • Generate secure unique ID with custom alphabet.

                                          -

                                          Alphabet must contain 256 symbols or less. Otherwise, the generator -will not be secure.

                                          -

                                          Parameters

                                          • Optional size: number

                                          Returns string

                                          A random string generator.

                                          -
                                          const { customAlphabet } = require('nanoid')
                                          const nanoid = customAlphabet('0123456789абвгдеё', 5)
                                          nanoid() //=> "8ё56а" -
                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +humanSecret | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_guid.makeTableSuffix.html b/docs/api/latest/functions/_nymphjs_guid.makeTableSuffix.html index 48896fe..d7e9ad8 100644 --- a/docs/api/latest/functions/_nymphjs_guid.makeTableSuffix.html +++ b/docs/api/latest/functions/_nymphjs_guid.makeTableSuffix.html @@ -1,7 +1 @@ -makeTableSuffix | Nymph.js 1.0.0-beta.61
                                        • Generate secure unique ID with custom alphabet.

                                          -

                                          Alphabet must contain 256 symbols or less. Otherwise, the generator -will not be secure.

                                          -

                                          Parameters

                                          • Optional size: number

                                          Returns string

                                          A random string generator.

                                          -
                                          const { customAlphabet } = require('nanoid')
                                          const nanoid = customAlphabet('0123456789абвгдеё', 5)
                                          nanoid() //=> "8ё56а" -
                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +makeTableSuffix | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_guid.nanoid.html b/docs/api/latest/functions/_nymphjs_guid.nanoid.html index 7665d47..82c66d7 100644 --- a/docs/api/latest/functions/_nymphjs_guid.nanoid.html +++ b/docs/api/latest/functions/_nymphjs_guid.nanoid.html @@ -1,8 +1,8 @@ -nanoid | Nymph.js 1.0.0-beta.61
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.EntitiesTest.html b/docs/api/latest/functions/_nymphjs_nymph.EntitiesTest.html index 99e3697..afc73b1 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.EntitiesTest.html +++ b/docs/api/latest/functions/_nymphjs_nymph.EntitiesTest.html @@ -1 +1 @@ -EntitiesTest | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +EntitiesTest | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.ExportImportTest.html b/docs/api/latest/functions/_nymphjs_nymph.ExportImportTest.html index e2be8f6..c807308 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.ExportImportTest.html +++ b/docs/api/latest/functions/_nymphjs_nymph.ExportImportTest.html @@ -1 +1 @@ -ExportImportTest | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +ExportImportTest | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.UIDTest.html b/docs/api/latest/functions/_nymphjs_nymph.UIDTest.html index eeab993..38c1a22 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.UIDTest.html +++ b/docs/api/latest/functions/_nymphjs_nymph.UIDTest.html @@ -1 +1 @@ -UIDTest | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +UIDTest | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.classNamesToEntityConstructors.html b/docs/api/latest/functions/_nymphjs_nymph.classNamesToEntityConstructors.html index 1519365..17f91a3 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.classNamesToEntityConstructors.html +++ b/docs/api/latest/functions/_nymphjs_nymph.classNamesToEntityConstructors.html @@ -1 +1 @@ -classNamesToEntityConstructors | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +classNamesToEntityConstructors | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.entitiesToReferences.html b/docs/api/latest/functions/_nymphjs_nymph.entitiesToReferences.html index 542219f..61b6c19 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.entitiesToReferences.html +++ b/docs/api/latest/functions/_nymphjs_nymph.entitiesToReferences.html @@ -1 +1 @@ -entitiesToReferences | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +entitiesToReferences | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.referencesToEntities.html b/docs/api/latest/functions/_nymphjs_nymph.referencesToEntities.html index 4c029c7..124163d 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.referencesToEntities.html +++ b/docs/api/latest/functions/_nymphjs_nymph.referencesToEntities.html @@ -1 +1 @@ -referencesToEntities | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +referencesToEntities | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.sortObj.html b/docs/api/latest/functions/_nymphjs_nymph.sortObj.html index 6b290b9..04ef185 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.sortObj.html +++ b/docs/api/latest/functions/_nymphjs_nymph.sortObj.html @@ -1 +1 @@ -sortObj | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +sortObj | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.uniqueStrings.html b/docs/api/latest/functions/_nymphjs_nymph.uniqueStrings.html index a4f0497..b7a8427 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.uniqueStrings.html +++ b/docs/api/latest/functions/_nymphjs_nymph.uniqueStrings.html @@ -1 +1 @@ -uniqueStrings | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +uniqueStrings | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_nymph.xor.html b/docs/api/latest/functions/_nymphjs_nymph.xor.html index 897e595..58db204 100644 --- a/docs/api/latest/functions/_nymphjs_nymph.xor.html +++ b/docs/api/latest/functions/_nymphjs_nymph.xor.html @@ -1 +1 @@ -xor | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +xor | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_pubsub.createServer.html b/docs/api/latest/functions/_nymphjs_pubsub.createServer.html index 2793d95..feca53f 100644 --- a/docs/api/latest/functions/_nymphjs_pubsub.createServer.html +++ b/docs/api/latest/functions/_nymphjs_pubsub.createServer.html @@ -1 +1 @@ -createServer | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +createServer | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_query_parser.queryParser.html b/docs/api/latest/functions/_nymphjs_query_parser.queryParser.html index d476b42..3bc3914 100644 --- a/docs/api/latest/functions/_nymphjs_query_parser.queryParser.html +++ b/docs/api/latest/functions/_nymphjs_query_parser.queryParser.html @@ -1 +1 @@ -queryParser | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +queryParser | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_server.createServer.html b/docs/api/latest/functions/_nymphjs_server.createServer.html index 0c53986..c4e15b5 100644 --- a/docs/api/latest/functions/_nymphjs_server.createServer.html +++ b/docs/api/latest/functions/_nymphjs_server.createServer.html @@ -1,6 +1,6 @@ -createServer | Nymph.js 1.0.0-beta.61
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_tilmeld.enforceTilmeld.html b/docs/api/latest/functions/_nymphjs_tilmeld.enforceTilmeld.html index 0baa332..cf18e65 100644 --- a/docs/api/latest/functions/_nymphjs_tilmeld.enforceTilmeld.html +++ b/docs/api/latest/functions/_nymphjs_tilmeld.enforceTilmeld.html @@ -1 +1 @@ -enforceTilmeld | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +enforceTilmeld | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_tilmeld_client.checkUsername.html b/docs/api/latest/functions/_nymphjs_tilmeld_client.checkUsername.html index 0f430f2..2f97fb5 100644 --- a/docs/api/latest/functions/_nymphjs_tilmeld_client.checkUsername.html +++ b/docs/api/latest/functions/_nymphjs_tilmeld_client.checkUsername.html @@ -1 +1 @@ -checkUsername | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +checkUsername | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_tilmeld_client.login.html b/docs/api/latest/functions/_nymphjs_tilmeld_client.login.html index 2adf351..ed5a138 100644 --- a/docs/api/latest/functions/_nymphjs_tilmeld_client.login.html +++ b/docs/api/latest/functions/_nymphjs_tilmeld_client.login.html @@ -1 +1 @@ -login | Nymph.js 1.0.0-beta.61
                                        • Parameters

                                          • User: typeof User
                                          • username: string
                                          • password: string
                                          • Optional code: string
                                          • Optional additionalData: {
                                                [k: string]: any;
                                            }
                                            • [k: string]: any

                                          Returns Promise<{
                                              message: string;
                                              user?: User & UserData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  group?: Group & GroupData & {
                                                      abilities?: string[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                                  };
                                                  groups?: (Group & GroupData & {
                                                      abilities?: string[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | User & UserData & ({ abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; groups?: (Group & ......);
                                                  })[];
                                                  inheritAbilities?: boolean;
                                                  newEmailAddress?: string;
                                                  phone?: string;
                                              };
                                          }>

                                        Generated using TypeDoc

                                        \ No newline at end of file +login | Nymph.js 1.0.0-beta.81
                                        • Parameters

                                          • User: typeof User
                                          • username: string
                                          • password: string
                                          • Optional code: string
                                          • Optional additionalData: {
                                                [k: string]: any;
                                            }
                                            • [k: string]: any

                                          Returns Promise<{
                                              message: string;
                                              user?: User & UserData & {
                                                  abilities?: string[];
                                                  email?: string;
                                                  group?: Group & GroupData & {
                                                      abilities?: string[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                                  };
                                                  groups?: (Group & GroupData & {
                                                      abilities?: (...)[];
                                                      email?: string;
                                                      phone?: string;
                                                      user?: null | (User & UserData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; group?: (Group & GroupData & { abilities?: string[] | undefined; email?: string | undefined; phone?: string | undefined; user?: (User & ... 1 more ... & ...) | ... 1 more ... | undefined; }) | undefined; gro...);
                                                  })[];
                                                  inheritAbilities?: boolean;
                                                  newEmailAddress?: string;
                                                  phone?: string;
                                              };
                                          }>

                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_tilmeld_client.register.html b/docs/api/latest/functions/_nymphjs_tilmeld_client.register.html index 0be7588..3282161 100644 --- a/docs/api/latest/functions/_nymphjs_tilmeld_client.register.html +++ b/docs/api/latest/functions/_nymphjs_tilmeld_client.register.html @@ -1 +1 @@ -register | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +register | Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/functions/_nymphjs_tilmeld_setup.setup.html b/docs/api/latest/functions/_nymphjs_tilmeld_setup.setup.html index c84cc41..1437433 100644 --- a/docs/api/latest/functions/_nymphjs_tilmeld_setup.setup.html +++ b/docs/api/latest/functions/_nymphjs_tilmeld_setup.setup.html @@ -1 +1 @@ -setup | Nymph.js 1.0.0-beta.61

                                        Generated using TypeDoc

                                        \ No newline at end of file +setup | Nymph.js 1.0.0-beta.81
                                        • Parameters

                                          • options: NymphOptions
                                          • nymph: Nymph
                                          • __namedParameters: {
                                                allowRegistration?: boolean;
                                            } = {}
                                            • Optional allowRegistration?: boolean

                                          Returns Express

                                        \ No newline at end of file diff --git a/docs/api/latest/hierarchy.html b/docs/api/latest/hierarchy.html new file mode 100644 index 0000000..128343f --- /dev/null +++ b/docs/api/latest/hierarchy.html @@ -0,0 +1 @@ +Nymph.js 1.0.0-beta.81
                                        \ No newline at end of file diff --git a/docs/api/latest/index.html b/docs/api/latest/index.html index be80ae7..a116939 100644 --- a/docs/api/latest/index.html +++ b/docs/api/latest/index.html @@ -1,4 +1,4 @@ -Nymph.js 1.0.0-beta.61

                                        Nymph.js 1.0.0-beta.61

                                        Nymph.js

                                        Powerful object data storage and querying.

                                        +Nymph.js 1.0.0-beta.81

                                        Nymph.js 1.0.0-beta.81

                                        Nymph.js

                                        Powerful object data storage and querying.

                                        Getting Started

                                        All you need to start using Nymph is the @nymphjs/nymph package and one of the drivers, @nymphjs/driver-mysql, @nymphjs/driver-postgresql, or @nymphjs/driver-sqlite3. Check out the readme for the Nymph package.

                                        You can also set up a REST server to use Nymph remotely, a PubSub server to receive updates for queries, and a user and group management system to provide registration and access control.

                                        Check out the user guide for information about how to use Nymph once you have it set up.

                                        @@ -17,7 +17,8 @@

                                        Entity Sorter

                                        The Nymph Entity Sorter lets you sort entities by their properties, including hierarchically.

                                        Query Parser

                                        The Query Parser is a utility for creating complex Nymph entity queries from a simple text input. Essentially, it turns a string into a Nymph query.

                                        GUID / Unique Code Generator

                                        The GUID and unique code generators are used to generate new GUIDs for Nymph objects and various random unique strings.

                                        -

                                        Breaking Changes

                                        In version 1.0.0-beta.41, the server side API was rewritten to match the client side API. All synchronous database calls were removed. This is to prevent a very rare potential bug, because synchronous database calls were made outside of transactions. Here is a list of some things that changed that could break your code:

                                        +

                                        Breaking Changes

                                        In version 1.0.0-beta.78, the database schema changed significantly, and data will need to be exported with an older version, then imported into a fresh database with this version. The meaning of the contain clause also changed to only check if the given value exists in an array.

                                        +

                                        In version 1.0.0-beta.41, the server side API was rewritten to match the client side API. All synchronous database calls were removed. This is to prevent a very rare potential bug, because synchronous database calls were made outside of transactions. Here is a list of some things that changed that could break your code:

                                        • $gatekeeper is now async
                                        • no guid on constructor or factorySync
                                        • @@ -60,4 +61,4 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_client.AbortableAsyncIterator.html b/docs/api/latest/interfaces/_nymphjs_client.AbortableAsyncIterator.html index f3c37b0..57117db 100644 --- a/docs/api/latest/interfaces/_nymphjs_client.AbortableAsyncIterator.html +++ b/docs/api/latest/interfaces/_nymphjs_client.AbortableAsyncIterator.html @@ -1,3 +1,3 @@ -AbortableAsyncIterator | Nymph.js 1.0.0-beta.61

                                        Type Parameters

                                        • T extends any = any

                                        Hierarchy

                                        • AsyncIterable<T>
                                          • AbortableAsyncIterator

                                        Properties

                                        Methods

                                        Properties

                                        abortController: AbortController

                                        Methods

                                        • Returns AsyncIterator<T, any, undefined>

                                        Generated using TypeDoc

                                        \ No newline at end of file +AbortableAsyncIterator | Nymph.js 1.0.0-beta.81
                                        interface AbortableAsyncIterator<T> {
                                            abortController: AbortController;
                                            [asyncIterator](): AsyncIterator<T, any, undefined>;
                                        }

                                        Type Parameters

                                        • T extends any = any

                                        Hierarchy

                                        • AsyncIterable<T>
                                          • AbortableAsyncIterator

                                        Properties

                                        Methods

                                        Properties

                                        abortController: AbortController

                                        Methods

                                        • Returns AsyncIterator<T, any, undefined>

                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_client.DataObjectInterface.html b/docs/api/latest/interfaces/_nymphjs_client.DataObjectInterface.html index d01a219..62371cd 100644 --- a/docs/api/latest/interfaces/_nymphjs_client.DataObjectInterface.html +++ b/docs/api/latest/interfaces/_nymphjs_client.DataObjectInterface.html @@ -1,40 +1,40 @@ -DataObjectInterface | Nymph.js 1.0.0-beta.61

                                        Data Object interface.

                                        +DataObjectInterface | Nymph.js 1.0.0-beta.81

                                        Data Object interface.

                                        Objects which hold data from some type of storage.

                                        -

                                        Hierarchy

                                        Indexable

                                        [k: string]: any

                                        The object's data.

                                        -

                                        Methods

                                        • Search the array for this object and return the corresponding index.

                                          +
                                        interface DataObjectInterface {
                                            $arraySearch(array, strict?): number;
                                            $delete(): Promise<boolean>;
                                            $equals(object): boolean;
                                            $inArray(array, strict?): boolean;
                                            $is(object): boolean;
                                            $patch(): Promise<boolean>;
                                            $refresh(): Promise<boolean | 0>;
                                            $save(): Promise<boolean>;
                                            [k: string]: any;
                                        }

                                        Hierarchy (view full)

                                        Indexable

                                        [k: string]: any

                                        The object's data.

                                        +

                                        Methods

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Perform a more strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Perform a less strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Returns Promise<boolean | 0>

                                        False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                        +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_client.EntityInterface.html b/docs/api/latest/interfaces/_nymphjs_client.EntityInterface.html index 409937e..f88df04 100644 --- a/docs/api/latest/interfaces/_nymphjs_client.EntityInterface.html +++ b/docs/api/latest/interfaces/_nymphjs_client.EntityInterface.html @@ -1,86 +1,86 @@ -EntityInterface | Nymph.js 1.0.0-beta.61

                                        Entity interface.

                                        -

                                        Hierarchy

                                        Implemented by

                                        Properties

                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        +EntityInterface | Nymph.js 1.0.0-beta.81

                                        Entity interface.

                                        +
                                        interface EntityInterface {
                                            $nymph: Nymph;
                                            cdate: null | number;
                                            guid: null | string;
                                            mdate: null | number;
                                            tags: string[];
                                            $addTag(...tags): void;
                                            $arraySearch(array, strict?): number;
                                            $delete(): Promise<boolean>;
                                            $equals(object): boolean;
                                            $getPatch(): EntityPatch;
                                            $hasTag(...tags): boolean;
                                            $inArray(array, strict?): boolean;
                                            $init(entityJson): EntityInterface;
                                            $is(object): boolean;
                                            $patch(): Promise<boolean>;
                                            $refresh(): Promise<boolean | 0>;
                                            $removeTag(...tags): void;
                                            $save(): Promise<boolean>;
                                            $serverCall(method, params, stateless): Promise<any>;
                                            $toReference(): EntityReference | EntityInterface;
                                            $wake(): Promise<EntityInterface>;
                                            $wakeAll(level?): Promise<EntityInterface>;
                                        }

                                        Hierarchy (view full)

                                        Implemented by

                                        Properties

                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        This is a 12 byte number represented as a lower case HEX string (24 characters).

                                        -
                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        tags: string[]

                                        Array of the entity's tags.

                                        -

                                        Methods

                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        tags: string[]

                                        Array of the entity's tags.

                                        +

                                        Methods

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Check that the entity has all of the given tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -
                                        • Call an instance method on the server version of this entity.

                                          The entity's data will be sent up to the server as well, so the server's state can match the client's state. It won't be propagated into the DB, though.

                                          -

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            -
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            -
                                          • stateless: boolean

                                            Whether the server should return, and the client update, the data in the entity after the method has run.

                                            -

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          -
                                        • Return a Nymph Entity Reference for this entity.

                                          +

                                          Parameters

                                          • method: string

                                            The name of the method.

                                            +
                                          • params: Iterable<any>

                                            The parameters to call the method with.

                                            +
                                          • stateless: boolean

                                            Whether the server should return, and the client update, the data in the entity after the method has run.

                                            +

                                          Returns Promise<any>

                                          The value that the method on the server returned.

                                          +
                                        • Ready this entity's data, and the data of entity's within this one's.

                                          -

                                          Parameters

                                          • Optional level: number

                                            The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                                            -

                                          Returns Promise<EntityInterface>

                                          The entity.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        • Ready this entity's data, and the data of entity's within this one's.

                                          +

                                          Parameters

                                          • Optional level: number

                                            The number of levels deep to wake. If undefined, it will keep going until there are no more entities. (Careful of infinite loops.)

                                            +

                                          Returns Promise<EntityInterface>

                                          The entity.

                                          +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_driver_mysql.MySQLDriverConfig.html b/docs/api/latest/interfaces/_nymphjs_driver_mysql.MySQLDriverConfig.html index 7014cb6..abba644 100644 --- a/docs/api/latest/interfaces/_nymphjs_driver_mysql.MySQLDriverConfig.html +++ b/docs/api/latest/interfaces/_nymphjs_driver_mysql.MySQLDriverConfig.html @@ -1,35 +1,35 @@ -MySQLDriverConfig | Nymph.js 1.0.0-beta.61

                                        MySQL Driver Config

                                        -

                                        Hierarchy

                                        • MySQLDriverConfig

                                        Properties

                                        customPoolConfig: null | PoolOptions

                                        If you need to use custom options, like SSL, you can provide them here in +MySQLDriverConfig | Nymph.js 1.0.0-beta.81

                                        MySQL Driver Config

                                        +
                                        interface MySQLDriverConfig {
                                            customPoolConfig: null | PoolOptions;
                                            database: string;
                                            engine: string;
                                            foreignKeys: boolean;
                                            host: string;
                                            password: string;
                                            port: number;
                                            prefix: string;
                                            rowLocking: boolean;
                                            tableLocking: boolean;
                                            transactions: boolean;
                                            user: string;
                                        }

                                        Properties

                                        customPoolConfig: null | PoolOptions

                                        If you need to use custom options, like SSL, you can provide them here in place of the above options.

                                        -
                                        database: string

                                        The MySQL database.

                                        -
                                        engine: string

                                        The MySQL table engine.

                                        +
                                        database: string

                                        The MySQL database.

                                        +
                                        engine: string

                                        The MySQL table engine.

                                        You should use MYISAM if you are using MySQL < 5.6.

                                        Options are: Any MySQL storage engine supported on your server.

                                        -
                                        foreignKeys: boolean

                                        Whether to use foreign keys. If your table engine doesn't support +

                                        foreignKeys: boolean

                                        Whether to use foreign keys. If your table engine doesn't support it (like MYISAM), you should turn this off.

                                        -
                                        host: string

                                        The host on which to connect to MySQL. Can include a port, like +

                                        host: string

                                        The host on which to connect to MySQL. Can include a port, like hostname:port.

                                        -
                                        password: string

                                        The MySQL password.

                                        -
                                        port: number

                                        The port on which to connect to MySQL.

                                        -
                                        prefix: string

                                        The MySQL table name prefix.

                                        -
                                        rowLocking: boolean

                                        Whether to use row locking. If your table engine doesn't support +

                                        password: string

                                        The MySQL password.

                                        +
                                        port: number

                                        The port on which to connect to MySQL.

                                        +
                                        prefix: string

                                        The MySQL table name prefix.

                                        +
                                        rowLocking: boolean

                                        Whether to use row locking. If your table engine doesn't support it (like MYISAM), you should turn this off.

                                        -
                                        tableLocking: boolean

                                        Whether to use table locking. If you use row locking, this should be off. +

                                        tableLocking: boolean

                                        Whether to use table locking. If you use row locking, this should be off. If you can't use row locking (like with MYISAM), you can use table locking to ensure data consistency.

                                        -
                                        transactions: boolean

                                        Whether to use transactions. If your table engine doesn't support +

                                        transactions: boolean

                                        Whether to use transactions. If your table engine doesn't support it (like MYISAM), you should turn this off.

                                        -
                                        user: string

                                        The MySQL user.

                                        -

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        user: string

                                        The MySQL user.

                                        +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_driver_postgresql.PostgreSQLDriverConfig.html b/docs/api/latest/interfaces/_nymphjs_driver_postgresql.PostgreSQLDriverConfig.html index 40ea6df..c0343e2 100644 --- a/docs/api/latest/interfaces/_nymphjs_driver_postgresql.PostgreSQLDriverConfig.html +++ b/docs/api/latest/interfaces/_nymphjs_driver_postgresql.PostgreSQLDriverConfig.html @@ -1,18 +1,18 @@ -PostgreSQLDriverConfig | Nymph.js 1.0.0-beta.61

                                        PostgreSQL Driver Config

                                        -

                                        Hierarchy

                                        • PostgreSQLDriverConfig

                                        Properties

                                        customPoolConfig: null | PoolConfig

                                        If you need to use custom options, like SSL, you can provide them here in +PostgreSQLDriverConfig | Nymph.js 1.0.0-beta.81

                                        PostgreSQL Driver Config

                                        +
                                        interface PostgreSQLDriverConfig {
                                            customPoolConfig: null | PoolConfig;
                                            database: string;
                                            host: string;
                                            password: string;
                                            port: number;
                                            prefix: string;
                                            user: string;
                                        }

                                        Properties

                                        customPoolConfig: null | PoolConfig

                                        If you need to use custom options, like SSL, you can provide them here in place of the above options.

                                        -
                                        database: string

                                        The Postgres database.

                                        -
                                        host: string

                                        The host on which to connect to Postgres. Can include a port, like +

                                        database: string

                                        The Postgres database.

                                        +
                                        host: string

                                        The host on which to connect to Postgres. Can include a port, like hostname:port.

                                        -
                                        password: string

                                        The Postgres password.

                                        -
                                        port: number

                                        The port on which to connect to Postgres.

                                        -
                                        prefix: string

                                        The Postgres table name prefix.

                                        -
                                        user: string

                                        The Postgres user.

                                        -

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        password: string

                                        The Postgres password.

                                        +
                                        port: number

                                        The port on which to connect to Postgres.

                                        +
                                        prefix: string

                                        The Postgres table name prefix.

                                        +
                                        user: string

                                        The Postgres user.

                                        +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_driver_sqlite3.SQLite3DriverConfig.html b/docs/api/latest/interfaces/_nymphjs_driver_sqlite3.SQLite3DriverConfig.html index 61ce62e..d1d6797 100644 --- a/docs/api/latest/interfaces/_nymphjs_driver_sqlite3.SQLite3DriverConfig.html +++ b/docs/api/latest/interfaces/_nymphjs_driver_sqlite3.SQLite3DriverConfig.html @@ -1,13 +1,13 @@ -SQLite3DriverConfig | Nymph.js 1.0.0-beta.61

                                        SQLite3 Driver Config

                                        -

                                        Hierarchy

                                        • SQLite3DriverConfig

                                        Properties

                                        explicitWrite: boolean

                                        Open explicitly for writing.

                                        +SQLite3DriverConfig | Nymph.js 1.0.0-beta.81

                                        SQLite3 Driver Config

                                        +
                                        interface SQLite3DriverConfig {
                                            explicitWrite: boolean;
                                            fileMustExist: boolean;
                                            filename: string;
                                            pragmas: string[];
                                            prefix: string;
                                            timeout: number;
                                            verbose: undefined | ((message?, ...additionalArgs) => void);
                                            wal: boolean;
                                        }

                                        Properties

                                        explicitWrite: boolean

                                        Open explicitly for writing.

                                        By default, the driver will always open the DB as readonly, and attempt to open another link to perform write operations. If you know that only one instance will be writing, you can force the driver to open for writing by @@ -15,12 +15,12 @@

                                        One thing to note is that starting a transaction is a write operation, so as long as an instance is in a transaction, no other instances can write.

                                        PubSub also needs to open the DB, and it only needs read access.

                                        -
                                        fileMustExist: boolean

                                        If the file does not exist, an Error will be thrown instead of creating a +

                                        fileMustExist: boolean

                                        If the file does not exist, an Error will be thrown instead of creating a new file.

                                        This option is ignored for in-memory, temporary, or readonly database connections.

                                        -
                                        filename: string

                                        The filename of the SQLite3 DB. Use ':memory:' for an in-memory DB.

                                        -
                                        pragmas: string[]

                                        Additional pragma statements to run upon connection.

                                        +
                                        filename: string

                                        The filename of the SQLite3 DB. Use ':memory:' for an in-memory DB.

                                        +
                                        pragmas: string[]

                                        Additional pragma statements to run upon connection.

                                        The default pragmas:

                                        • journal_mode = WAL; @@ -30,11 +30,11 @@
                                        • case_sensitive_like = 1;

                                        (Don't include the PRAGMA keyword, but do include the semicolon.)

                                        -
                                        prefix: string

                                        The SQLite3 table name prefix.

                                        -
                                        timeout: number

                                        The timeout to use for waiting for the DB to become available.

                                        -
                                        verbose: undefined | ((message?, ...additionalArgs) => void)

                                        Function that gets called with every SQL string executed.

                                        -

                                        Type declaration

                                          • (message?, ...additionalArgs): void
                                          • Parameters

                                            • Optional message: any
                                            • Rest ...additionalArgs: any[]

                                            Returns void

                                        wal: boolean

                                        Turn on WAL mode.

                                        +
                                        prefix: string

                                        The SQLite3 table name prefix.

                                        +
                                        timeout: number

                                        The timeout to use for waiting for the DB to become available.

                                        +
                                        verbose: undefined | ((message?, ...additionalArgs) => void)

                                        Function that gets called with every SQL string executed.

                                        +

                                        Type declaration

                                          • (message?, ...additionalArgs): void
                                          • Parameters

                                            • Optional message: any
                                            • Rest ...additionalArgs: any[]

                                            Returns void

                                        wal: boolean

                                        Turn on WAL mode.

                                        This will generally increase performance, but does mean that the DB must be on a local disk.

                                        See: https://www.sqlite.org/wal.html

                                        -

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_nymph.Config.html b/docs/api/latest/interfaces/_nymphjs_nymph.Config.html index ee416ea..66cb5d4 100644 --- a/docs/api/latest/interfaces/_nymphjs_nymph.Config.html +++ b/docs/api/latest/interfaces/_nymphjs_nymph.Config.html @@ -1,17 +1,19 @@ -Config | Nymph.js 1.0.0-beta.61

                                        Nymph Config

                                        -

                                        Hierarchy

                                        • Config

                                        Properties

                                        cache: boolean

                                        Cache recently retrieved entities to speed up database queries. Uses more +Config | Nymph.js 1.0.0-beta.81

                                        Nymph Config

                                        +
                                        interface Config {
                                            cache: boolean;
                                            cacheLimit: number;
                                            cacheThreshold: number;
                                            debugError: ((source, message) => void);
                                            debugInfo: ((source, message) => void);
                                            debugLog: ((source, message) => void);
                                            emptyListError: boolean;
                                        }

                                        Properties

                                        cache: boolean

                                        Cache recently retrieved entities to speed up database queries. Uses more memory.

                                        -
                                        cacheLimit: number

                                        The number of recently retrieved entities to cache. If you're running out +

                                        cacheLimit: number

                                        The number of recently retrieved entities to cache. If you're running out of memory, try lowering this value. 0 means unlimited.

                                        -
                                        cacheThreshold: number

                                        Cache entities after they're accessed this many times.

                                        -
                                        debugError: ((source, message) => void)

                                        Type declaration

                                          • (source, message): void
                                          • A function to log error messages. By default, uses the debug package.

                                            -

                                            Parameters

                                            • source: string
                                            • message: string

                                            Returns void

                                        debugLog: ((source, message) => void)

                                        Type declaration

                                          • (source, message): void
                                          • A function to log debug messages. By default, uses the debug package.

                                            -

                                            Parameters

                                            • source: string
                                            • message: string

                                            Returns void

                                        emptyListError: boolean

                                        When querying for multiple entities with NymphREST, if the list is empty, +

                                        cacheThreshold: number

                                        Cache entities after they're accessed this many times.

                                        +
                                        debugError: ((source, message) => void)

                                        A function to log error messages. By default, uses the debug package.

                                        +

                                        Type declaration

                                          • (source, message): void
                                          • Parameters

                                            • source: string
                                            • message: string

                                            Returns void

                                        debugInfo: ((source, message) => void)

                                        A function to log info messages. By default, uses the debug package.

                                        +

                                        Type declaration

                                          • (source, message): void
                                          • Parameters

                                            • source: string
                                            • message: string

                                            Returns void

                                        debugLog: ((source, message) => void)

                                        A function to log debug messages. By default, uses the debug package.

                                        +

                                        Type declaration

                                          • (source, message): void
                                          • Parameters

                                            • source: string
                                            • message: string

                                            Returns void

                                        emptyListError: boolean

                                        When querying for multiple entities with NymphREST, if the list is empty, return a 404 error.

                                        -

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_nymph.DataObjectInterface.html b/docs/api/latest/interfaces/_nymphjs_nymph.DataObjectInterface.html index 4178f18..a849eb4 100644 --- a/docs/api/latest/interfaces/_nymphjs_nymph.DataObjectInterface.html +++ b/docs/api/latest/interfaces/_nymphjs_nymph.DataObjectInterface.html @@ -1,37 +1,37 @@ -DataObjectInterface | Nymph.js 1.0.0-beta.61

                                        Data Object interface.

                                        +DataObjectInterface | Nymph.js 1.0.0-beta.81

                                        Data Object interface.

                                        Objects which hold data from some type of storage.

                                        -

                                        Hierarchy

                                        Indexable

                                        [k: string]: any

                                        The object's data.

                                        -

                                        Methods

                                        • Search the array for this object and return the corresponding index.

                                          +
                                        interface DataObjectInterface {
                                            $arraySearch(array, strict?): number;
                                            $delete(): Promise<boolean>;
                                            $equals(object): boolean;
                                            $inArray(array, strict?): boolean;
                                            $is(object): boolean;
                                            $refresh(): Promise<boolean | 0>;
                                            $save(): Promise<boolean>;
                                            [k: string]: any;
                                        }

                                        Hierarchy (view full)

                                        Indexable

                                        [k: string]: any

                                        The object's data.

                                        +

                                        Methods

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Perform a more strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Perform a less strict comparison of this object to another.

                                          +

                                          Parameters

                                          • object: any

                                            The object to compare.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -

                                        Generated using TypeDoc

                                        \ No newline at end of file +

                                        Returns Promise<boolean | 0>

                                        False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                        +
                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_nymph.EntityInterface.html b/docs/api/latest/interfaces/_nymphjs_nymph.EntityInterface.html index 7293ca1..e1d6a7f 100644 --- a/docs/api/latest/interfaces/_nymphjs_nymph.EntityInterface.html +++ b/docs/api/latest/interfaces/_nymphjs_nymph.EntityInterface.html @@ -1,98 +1,98 @@ -EntityInterface | Nymph.js 1.0.0-beta.61

                                        Entity interface.

                                        -

                                        Hierarchy

                                        Implemented by

                                        Properties

                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        -
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        +EntityInterface | Nymph.js 1.0.0-beta.81

                                        Entity interface.

                                        +
                                        interface EntityInterface {
                                            $nymph: Nymph;
                                            cdate: null | number;
                                            guid: null | string;
                                            mdate: null | number;
                                            tags: string[];
                                            $addTag(...tags): void;
                                            $arraySearch(array, strict?): number;
                                            $clearCache(): void;
                                            $delete(): Promise<boolean>;
                                            $equals(object): boolean;
                                            $getClientEnabledMethods(): string[];
                                            $getCurrentAcValues(): ACProperties;
                                            $getData(includeSData?): EntityData;
                                            $getOriginalAcValues(): ACProperties;
                                            $getSData(): SerializedEntityData;
                                            $getTags(): string[];
                                            $getUniques(): Promise<string[]>;
                                            $getValidatable(): Object;
                                            $hasTag(...tags): boolean;
                                            $inArray(array, strict?): boolean;
                                            $is(object): boolean;
                                            $jsonAcceptData(input, allowConflict?): void;
                                            $jsonAcceptPatch(patch, allowConflict?): void;
                                            $putData(data, sdata?): void;
                                            $refresh(): Promise<boolean | 0>;
                                            $removeTag(...tags): void;
                                            $save(): Promise<boolean>;
                                            $toReference(): EntityInterface | EntityReference;
                                            $useSkipAc(useSkipAc): void;
                                        }

                                        Hierarchy (view full)

                                        Implemented by

                                        Properties

                                        $nymph: Nymph

                                        The instance of Nymph to use for queries.

                                        +
                                        cdate: null | number

                                        The creation date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        guid: null | string

                                        The entity's Globally Unique ID.

                                        This is a 12 byte number represented as a lower case HEX string (24 characters).

                                        -
                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        -
                                        tags: string[]

                                        Array of the entity's tags.

                                        -

                                        Methods

                                        mdate: null | number

                                        The modified date of the entity as a Unix timestamp in milliseconds.

                                        +
                                        tags: string[]

                                        Array of the entity's tags.

                                        +

                                        Methods

                                        • Search the array for this object and return the corresponding index.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns number

                                            The index if the object is in the array, -1 if it isn't.

                                            -
                                        • Replace any referenced entities in the data with sleeping references.

                                          Calling this function ensures that the next time a referenced entity is accessed, it will be retrieved from the DB (unless it is in Nymph's cache).

                                          -

                                          Returns void

                                        • Perform a more strict comparison of this object to another.

                                          -

                                          Parameters

                                        • Get the client enabled methods.

                                          Returns string[]

                                          The names of methods allowed to be called by the frontend with serverCall.

                                          -
                                        • Used to retrieve the data object.

                                          This should only be used by Nymph to save the data into storage.

                                          -

                                          Parameters

                                          • Optional includeSData: boolean

                                            Whether to include the serialized data as well.

                                            +

                                            Parameters

                                            • Optional includeSData: boolean

                                              Whether to include the serialized data as well.

                                            Returns EntityData

                                            The entity's data object.

                                            -
                                        • Used to retrieve the serialized data object.

                                          This should only be used by Nymph to save the data object into storage.

                                          This method is used by Nymph to avoid unserializing data that hasn't been requested yet.

                                          It should always be called after getData().

                                          Returns SerializedEntityData

                                          The entity's serialized data object.

                                          -
                                        • Get the entity's tags.

                                          Using this instead of accessing the tags prop directly will wake sleeping references.

                                          Returns string[]

                                          The entity's tags.

                                          -
                                        • Get an array of strings that must be unique across the current etype.

                                          When you try to save another entity with any of the same unique strings, Nymph will throw an error.

                                          The default implementation of this method returns an empty array, meaning there are no uniqueness constraints applied to its etype.

                                          -

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          -
                                        • Get an object that holds the same data as the entity.

                                          +

                                          Returns Promise<string[]>

                                          Resolves to an array of entity's unique constraint strings.

                                          +
                                        • Get an object that holds the same data as the entity.

                                          This provides an object that can be validated.

                                          -

                                          Returns Object

                                          A pure object representation of the entity.

                                          -
                                        • Check that the entity has all of the given tags.

                                          -

                                          Parameters

                                        • Check that the entity has all of the given tags.

                                          +

                                          Parameters

                                          • Rest ...tags: string[]

                                            List of tags.

                                          Returns boolean

                                          True or false.

                                          -
                                        • Check whether this object is in an array.

                                          If strict is false, is() is used to compare. If strict is true, equals() is used.

                                          -

                                          Parameters

                                          • array: any[]

                                            The array to search.

                                            -
                                          • Optional strict: boolean

                                            Whether to use stronger comparison.

                                            +

                                            Parameters

                                            • array: any[]

                                              The array to search.

                                              +
                                            • Optional strict: boolean

                                              Whether to use stronger comparison.

                                            Returns boolean

                                            True if the object is in the array, false if it isn't.

                                            -
                                        • Accept JSON data from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -100,9 +100,9 @@
                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            -
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Accept JSON patch from the client.

                                          +

                                          Parameters

                                          • input: EntityJson

                                            The input data. Please note, this will be modified (destroyed).

                                            +
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            +

                                          Returns void

                                        • Accept JSON patch from the client.

                                          This function uses the security protection lists:

                                          • $protectedTags
                                          • @@ -110,26 +110,26 @@
                                          • $allowlistTags
                                          • $allowlistData
                                          -

                                          Parameters

                                          • patch: EntityPatch

                                            The patch data. Please note, this will be modified (destroyed).

                                            -
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            -

                                          Returns void

                                        • Used to set the data.

                                          +

                                          Parameters

                                          • patch: EntityPatch

                                            The patch data. Please note, this will be modified (destroyed).

                                            +
                                          • Optional allowConflict: boolean

                                            Allow to accept data that is older than the current data.

                                            +

                                          Returns void

                                        • Used to set the data.

                                          This should only be used by Nymph to push the data from storage.

                                          sdata is used by Nymph to avoid unserializing data that hasn't been requested yet.

                                          -

                                          Parameters

                                          Returns void

                                        • Refresh the object from storage. (Bypasses Nymph's cache.)

                                          If the object has been deleted from storage, the database cannot be reached, or a database error occurs, refresh() will return 0.

                                          -

                                          Returns Promise<boolean | 0>

                                          False if the data has not been saved, 0 if it can't be refreshed, true on success.

                                          -
                                        • Set whether to use "skipAc" when accessing entity references.

                                          -

                                          Parameters

                                          • useSkipAc: boolean

                                            True or false, whether to use it.

                                            -

                                          Returns void

                                        Generated using TypeDoc

                                        \ No newline at end of file +
                                        • Set whether to use "skipAc" when accessing entity references.

                                          +

                                          Parameters

                                          • useSkipAc: boolean

                                            True or false, whether to use it.

                                            +

                                          Returns void

                                        \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_nymph.TilmeldInterface.html b/docs/api/latest/interfaces/_nymphjs_nymph.TilmeldInterface.html index 2c02426..7bd66b3 100644 --- a/docs/api/latest/interfaces/_nymphjs_nymph.TilmeldInterface.html +++ b/docs/api/latest/interfaces/_nymphjs_nymph.TilmeldInterface.html @@ -1,12 +1,12 @@ -TilmeldInterface | Nymph.js 1.0.0-beta.61

                                        Hierarchy

                                        • TilmeldInterface

                                        Implemented by

                                          Properties

                                          nymph: Nymph
                                          request: any
                                          response: any

                                          Methods

                                          • Parameters

                                            • Optional skipXsrfToken: boolean
                                            • Optional skipRenew: boolean

                                            Returns Promise<boolean>

                                          Generated using TypeDoc

                                          \ No newline at end of file +TilmeldInterface | Nymph.js 1.0.0-beta.81
                                          interface TilmeldInterface {
                                              nymph: Nymph;
                                              request: any;
                                              response: any;
                                              authenticate(skipXsrfToken?, skipRenew?): Promise<boolean>;
                                              checkClientUIDPermissions(name, type?): Promise<boolean>;
                                              clearSession(): void;
                                              clone(): TilmeldInterface;
                                              extractToken(token): Promise<any>;
                                              fillSession(user): Promise<void>;
                                              gatekeeper(ability?): boolean;
                                              init(nymph): void;
                                          }

                                          Implemented by

                                            Properties

                                            nymph: Nymph
                                            request: any
                                            response: any

                                            Methods

                                            • Parameters

                                              • Optional skipXsrfToken: boolean
                                              • Optional skipRenew: boolean

                                              Returns Promise<boolean>

                                            \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_pubsub.Config.html b/docs/api/latest/interfaces/_nymphjs_pubsub.Config.html index 2a7ec9c..b832c04 100644 --- a/docs/api/latest/interfaces/_nymphjs_pubsub.Config.html +++ b/docs/api/latest/interfaces/_nymphjs_pubsub.Config.html @@ -1,17 +1,17 @@ -Config | Nymph.js 1.0.0-beta.61

                                            Nymph PubSub Config

                                            -

                                            Hierarchy

                                            • Config

                                            Properties

                                            broadcastCounts: boolean

                                            Allow clients to request to be notified when other clients subscribe to the +Config | Nymph.js 1.0.0-beta.81

                                            Nymph PubSub Config

                                            +
                                            interface Config {
                                                broadcastCounts: boolean;
                                                entries: string[];
                                                logger: ((...args) => void);
                                                originIsAllowed: ((origin) => boolean);
                                                relays: string[];
                                            }

                                            Properties

                                            broadcastCounts: boolean

                                            Allow clients to request to be notified when other clients subscribe to the same queries.

                                            -
                                            entries: string[]

                                            The URLs of the Nymph-PubSub servers to directly publish to. These servers +

                                            entries: string[]

                                            The URLs of the Nymph-PubSub servers to directly publish to. These servers are how this host will enter the PubSub network. If you only have one PubSub server, it needs to be listed here.

                                            -
                                            logger: ((...args) => void)

                                            Type declaration

                                              • (...args): void
                                              • Function to log PubSub info/error messages.

                                                -

                                                Parameters

                                                • Rest ...args: any[]

                                                Returns void

                                            originIsAllowed: ((origin) => boolean)

                                            Type declaration

                                              • (origin): boolean
                                              • Determine whether a client's origin is allowed to connect.

                                                -

                                                Parameters

                                                • origin: string

                                                Returns boolean

                                            relays: string[]

                                            The URLs of additional Nymph-PubSub servers to relay publishes to. If this +

                                            logger: ((...args) => void)

                                            Function to log PubSub info/error messages.

                                            +

                                            Type declaration

                                              • (...args): void
                                              • Parameters

                                                • Rest ...args: any[]

                                                Returns void

                                            originIsAllowed: ((origin) => boolean)

                                            Determine whether a client's origin is allowed to connect.

                                            +

                                            Type declaration

                                              • (origin): boolean
                                              • Parameters

                                                • origin: string

                                                Returns boolean

                                            relays: string[]

                                            The URLs of additional Nymph-PubSub servers to relay publishes to. If this host is a PubSub server, these servers are how it will continue into your PubSub network.

                                            -

                                            Generated using TypeDoc

                                            \ No newline at end of file +
                                            \ No newline at end of file diff --git a/docs/api/latest/interfaces/_nymphjs_tilmeld.Config.html b/docs/api/latest/interfaces/_nymphjs_tilmeld.Config.html index 408e31a..32a92bc 100644 --- a/docs/api/latest/interfaces/_nymphjs_tilmeld.Config.html +++ b/docs/api/latest/interfaces/_nymphjs_tilmeld.Config.html @@ -1,127 +1,127 @@ -Config | Nymph.js 1.0.0-beta.61

                                            Tilmeld Config

                                            -

                                            Hierarchy

                                            • Config

                                            Properties

                                            allowRegistration: boolean

                                            Allow users to register.

                                            -
                                            allowUsernameChange: boolean

                                            Allow users to change their username.

                                            -
                                            appName: string

                                            The name of the app. Used in emails sent to users and as the TOTP issuer.

                                            -
                                            appUrl: string

                                            The URL of the app. Used to define cookie domain, path, and security. Must +Config | Nymph.js 1.0.0-beta.81

                                            Tilmeld Config

                                            +
                                            interface Config {
                                                allowRegistration: boolean;
                                                allowUsernameChange: boolean;
                                                appName: string;
                                                appUrl: string;
                                                cancelChangeRedirect: string;
                                                clientEnabledUIDs: string[];
                                                clientReadableUIDs: string[];
                                                clientSetabledUIDs: string[];
                                                configEmail: ((tilmeld, options, user) => Promise<EmailConfig<any>>);
                                                cookieDomain: string;
                                                cookiePath: string;
                                                createAdmin: boolean;
                                                emailRateLimit: string;
                                                emailTemplateDir: string;
                                                emailUsernames: boolean;
                                                enableGroupSearch: boolean;
                                                enableUserSearch: boolean;
                                                generatePrimary: boolean;
                                                highestPrimary: string | boolean;
                                                highestSecondary: string | boolean;
                                                jwtBuilder: ((config, user, switchToken?) => string);
                                                jwtExpire: number;
                                                jwtExtract: ((config, token, xsrfToken?) => null | {
                                                    expire: Date;
                                                    guid: string;
                                                    issued: Date;
                                                });
                                                jwtRenew: number;
                                                jwtSecret: string;
                                                jwtSwitchExpire: number;
                                                maxUsernameLength: number;
                                                minUsernameLength: number;
                                                pwMethod: "salt" | "plain" | "digest";
                                                pwRecovery: boolean;
                                                pwRecoveryTimeLimit: string;
                                                regFields: string[];
                                                sendEmail: ((tilmeld, options, user) => Promise<boolean>);
                                                setupPath: string;
                                                unverifiedAccess: boolean;
                                                userFields: string[];
                                                userRegisteredRecipient: null | string;
                                                validChars: string;
                                                validCharsNotice: string;
                                                validEmailRegex: RegExp;
                                                validEmailRegexNotice: string;
                                                validRegex: RegExp;
                                                validRegexNotice: string;
                                                validatorGroup: ((tilmeld, group) => void);
                                                validatorUser: ((tilmeld, user) => void);
                                                verifyChangeRedirect: string;
                                                verifyEmail: boolean;
                                                verifyRedirect: string;
                                            }

                                            Properties

                                            allowRegistration: boolean

                                            Allow users to register.

                                            +
                                            allowUsernameChange: boolean

                                            Allow users to change their username.

                                            +
                                            appName: string

                                            The name of the app. Used in emails sent to users and as the TOTP issuer.

                                            +
                                            appUrl: string

                                            The URL of the app. Used to define cookie domain, path, and security. Must be accessible to the Tilmeld client JS. (Note, cookies are not specific to individual ports, so tokens will be sent to any port running on this host.)

                                            -
                                            cancelChangeRedirect: string

                                            After the user cancels an address change, redirect them to this URL.

                                            -
                                            clientEnabledUIDs: string[]

                                            A list of UIDs that can be created from the client by anyone. (newUID)

                                            +
                                            cancelChangeRedirect: string

                                            After the user cancels an address change, redirect them to this URL.

                                            +
                                            clientEnabledUIDs: string[]

                                            A list of UIDs that can be created from the client by anyone. (newUID)

                                            Inclusion in this list implies inclusion in clientReadableUIDs.

                                            Note: If you'd like to limit the access to logged in users, give them an ability like "uid/new/nameofuid".

                                            -
                                            clientReadableUIDs: string[]

                                            A list of UIDs that can be read from the client by anyone. (getUID)

                                            +
                                            clientReadableUIDs: string[]

                                            A list of UIDs that can be read from the client by anyone. (getUID)

                                            Note: If you'd like to limit the access to logged in users, give them an ability like "uid/get/nameofuid".

                                            -
                                            clientSetabledUIDs: string[]

                                            A list of UIDs that can be set from the client by anyone. (setUID, +

                                            clientSetabledUIDs: string[]

                                            A list of UIDs that can be set from the client by anyone. (setUID, renameUID)

                                            Inclusion in this list implies inclusion in clientReadableUIDs and clientEnabledUIDs.

                                            Note: There is no way to run renameUID from the client.

                                            Note: If you'd like to limit the access to logged in users, give them an ability like "uid/set/nameofuid".

                                            -
                                            configEmail: ((tilmeld, options, user) => Promise<EmailConfig<any>>)

                                            Type declaration

                                            configEmail: ((tilmeld, options, user) => Promise<EmailConfig<any>>)

                                            Configure an email object to prepare for sending.

                                            You can use this, for example, for DKIM signing.

                                            See: https://github.com/forwardemail/email-templates/blob/v8.0.9/README.md#Options

                                            -

                                            Parameters

                                            Returns Promise<EmailConfig<any>>

                                            cookieDomain: string

                                            The domain of the auth cookie.

                                            -
                                            cookiePath: string

                                            The path of the auth cookie.

                                            -
                                            createAdmin: boolean

                                            Allow the creation of an admin user. When a user is created, if there are +

                                            Type declaration

                                              • (tilmeld, options, user): Promise<EmailConfig<any>>
                                              • Parameters

                                                Returns Promise<EmailConfig<any>>

                                            cookieDomain: string

                                            The domain of the auth cookie.

                                            +
                                            cookiePath: string

                                            The path of the auth cookie.

                                            +
                                            createAdmin: boolean

                                            Allow the creation of an admin user. When a user is created, if there are no other users in the system, they will be granted all abilities.

                                            -
                                            emailRateLimit: string

                                            Don't let users change their email address more often than this. You can +

                                            emailRateLimit: string

                                            Don't let users change their email address more often than this. You can enter one value and one unit of time, such as "2 weeks". Leave blank to disable rate limiting.

                                            This also controls how long a user has to cancel an email address change from a link emailed to the old address.

                                            -
                                            emailTemplateDir: string

                                            The absolute path to the email template directory. Used by the default +

                                            emailTemplateDir: string

                                            The absolute path to the email template directory. Used by the default email sender.

                                            -
                                            emailUsernames: boolean

                                            Instead of a "username", a user logs in and is referred to by their email +

                                            emailUsernames: boolean

                                            Instead of a "username", a user logs in and is referred to by their email address. Enabling this after many users have been created can be messy. Make sure they all have email addresses first.

                                            -
                                            enableGroupSearch: boolean

                                            Whether frontend can search groups. (Probably not a good idea if privacy is +

                                            enableGroupSearch: boolean

                                            Whether frontend can search groups. (Probably not a good idea if privacy is a concern. Same risks as user search if generatePrimary is true.)

                                            -
                                            enableUserSearch: boolean

                                            Whether frontend can search users. (Probably not a good idea if privacy is +

                                            enableUserSearch: boolean

                                            Whether frontend can search users. (Probably not a good idea if privacy is a concern.)

                                            -
                                            generatePrimary: boolean

                                            Whether to create a new primary group for every user who registers. This +

                                            generatePrimary: boolean

                                            Whether to create a new primary group for every user who registers. This can be useful for providing access to entities the user creates.

                                            In the case this is set, the default primary group, rather than being assigned to the user, is assigned as the parent of the generated group.

                                            -
                                            highestPrimary: string | boolean

                                            The GUID of the group above the highest groups allowed to be assigned as +

                                            highestPrimary: string | boolean

                                            The GUID of the group above the highest groups allowed to be assigned as primary groups. True means all groups, and false means no groups.

                                            -
                                            highestSecondary: string | boolean

                                            The GUID of the group above the highest groups allowed to be assigned as +

                                            highestSecondary: string | boolean

                                            The GUID of the group above the highest groups allowed to be assigned as secondary groups. True means all groups, and false means no groups.

                                            -
                                            jwtBuilder: ((config, user, switchToken?) => string)

                                            Type declaration

                                              • (config, user, switchToken?): string
                                              • Function to build the JWT for user sessions.

                                                -

                                                Parameters

                                                Returns string

                                            jwtExpire: number

                                            How long from current time, in seconds, the JWT token expires.

                                            -
                                            jwtExtract: ((config, token, xsrfToken?) => null | {
                                                expire: Date;
                                                guid: string;
                                                issued: Date;
                                            })

                                            Type declaration

                                              • (config, token, xsrfToken?): null | {
                                                    expire: Date;
                                                    guid: string;
                                                    issued: Date;
                                                }
                                              • Function to verify that a JWT was signed with the secret key, validate its +

                                            jwtBuilder: ((config, user, switchToken?) => string)

                                            Function to build the JWT for user sessions.

                                            +

                                            Type declaration

                                              • (config, user, switchToken?): string
                                              • Parameters

                                                Returns string

                                            jwtExpire: number

                                            How long from current time, in seconds, the JWT token expires.

                                            +
                                            jwtExtract: ((config, token, xsrfToken?) => null | {
                                                expire: Date;
                                                guid: string;
                                                issued: Date;
                                            })

                                            Function to verify that a JWT was signed with the secret key, validate its data, validate the XSRF token, and extract the GUID and dates.

                                            If no XSRF token is supplied, ignore it.

                                            Return false if the JWT is not valid, or an object with GUID, issued date, and expire date otherwise.

                                            -

                                            Parameters

                                            • config: Config
                                            • token: string
                                            • Optional xsrfToken: string

                                            Returns null | {
                                                expire: Date;
                                                guid: string;
                                                issued: Date;
                                            }

                                            jwtRenew: number

                                            How long, in seconds, before the JWT token expires to give the user a new +

                                            Type declaration

                                              • (config, token, xsrfToken?): null | {
                                                    expire: Date;
                                                    guid: string;
                                                    issued: Date;
                                                }
                                              • Parameters

                                                • config: Config
                                                • token: string
                                                • Optional xsrfToken: string

                                                Returns null | {
                                                    expire: Date;
                                                    guid: string;
                                                    issued: Date;
                                                }

                                            jwtRenew: number

                                            How long, in seconds, before the JWT token expires to give the user a new one.

                                            -
                                            jwtSecret: string

                                            The secret used to sign the JWT.

                                            -
                                            jwtSwitchExpire: number

                                            How long from current time, in seconds, the JWT token for a user switch +

                                            jwtSecret: string

                                            The secret used to sign the JWT.

                                            +
                                            jwtSwitchExpire: number

                                            How long from current time, in seconds, the JWT token for a user switch expires.

                                            -
                                            maxUsernameLength: number

                                            The maximum length for usernames. Infinity for unlimited.

                                            -
                                            minUsernameLength: number

                                            The minimum length for usernames.

                                            -
                                            pwMethod: "salt" | "plain" | "digest"

                                            Method used to store passwords. Salt is more secure if the database is +

                                            maxUsernameLength: number

                                            The maximum length for usernames. Infinity for unlimited.

                                            +
                                            minUsernameLength: number

                                            The minimum length for usernames.

                                            +
                                            pwMethod: "salt" | "plain" | "digest"

                                            Method used to store passwords. Salt is more secure if the database is compromised. Plain: store the password in plaintext. Digest: store the password's digest (hash). Salt: store the password's digest using a complex, unique salt.

                                            Digests are SHA-256, so a salt probably isn't necessary, but who knows.

                                            Options are: "plain", "digest", "salt"

                                            -
                                            pwRecovery: boolean

                                            Allow users to recover their username and/or password through their +

                                            pwRecovery: boolean

                                            Allow users to recover their username and/or password through their registered email.

                                            -
                                            pwRecoveryTimeLimit: string

                                            How long a recovery request is valid.

                                            -
                                            regFields: string[]

                                            These fields will be available for the user to fill in when they register.

                                            -
                                            sendEmail: ((tilmeld, options, user) => Promise<boolean>)

                                            Type declaration

                                            pwRecoveryTimeLimit: string

                                            How long a recovery request is valid.

                                            +
                                            regFields: string[]

                                            These fields will be available for the user to fill in when they register.

                                            +
                                            sendEmail: ((tilmeld, options, user) => Promise<boolean>)

                                            Send an email to a user. Uses email-templates by default.

                                            Check out the emails directory to see the templates used.

                                            In addition to the specific locals for each template, there are additional locals added by the default email sender:

                                            @@ -143,36 +143,36 @@
                                          • lastName
                                          • email
                                          • -

                                            Parameters

                                            Returns Promise<boolean>

                                            setupPath: string

                                            The path (with leading slash and no trailing slash) where the setup utility +

                                            Type declaration

                                              • (tilmeld, options, user): Promise<boolean>
                                              • Parameters

                                                Returns Promise<boolean>

                                            setupPath: string

                                            The path (with leading slash and no trailing slash) where the setup utility is accessible. This is also used for email address verification.


                                            This portion of the app will not check for the XSRF token, so make sure your REST endpoint is not under this URL.


                                            -
                                            unverifiedAccess: boolean

                                            Unverified users will be able to log in, but will only have the "unverified +

                                            unverifiedAccess: boolean

                                            Unverified users will be able to log in, but will only have the "unverified users" secondary group(s) until they verify their email. If set to false, their account will instead be disabled until they verify.

                                            -
                                            userFields: string[]

                                            These will be the available fields for users. (Some fields, like username, +

                                            userFields: string[]

                                            These will be the available fields for users. (Some fields, like username, can't be excluded.)

                                            -
                                            userRegisteredRecipient: null | string

                                            The address you'd like to receive a notification of registered users, if +

                                            userRegisteredRecipient: null | string

                                            The address you'd like to receive a notification of registered users, if any.

                                            -
                                            validChars: string

                                            Only these characters can be used when creating usernames and groupnames. +

                                            validChars: string

                                            Only these characters can be used when creating usernames and groupnames. (Doesn't apply to emails as usernames.)

                                            -
                                            validCharsNotice: string

                                            When a user enters an invalid name, this message will be displayed.

                                            -
                                            validEmailRegex: RegExp

                                            Email addresses must match this regular expression. By default, this uses +

                                            validCharsNotice: string

                                            When a user enters an invalid name, this message will be displayed.

                                            +
                                            validEmailRegex: RegExp

                                            Email addresses must match this regular expression. By default, this uses the regex from the W3C HTML email element validation:

                                            https://html.spec.whatwg.org/multipage/input.html#email-state-(type=email)

                                            -
                                            validEmailRegexNotice: string

                                            When a user enters an email that doesn't match the regex, this message will +

                                            validEmailRegexNotice: string

                                            When a user enters an email that doesn't match the regex, this message will be displayed.

                                            -
                                            validRegex: RegExp

                                            Usernames and groupnames must match this regular expression. (Doesn't apply +

                                            validRegex: RegExp

                                            Usernames and groupnames must match this regular expression. (Doesn't apply to emails as usernames.) By default, this ensures that the name begins and ends with an alphanumeric. (To allow anything, use .* inside the slashes.)

                                            -
                                            validRegexNotice: string

                                            When a user enters a name that doesn't match the regex, this message will +

                                            validRegexNotice: string

                                            When a user enters a name that doesn't match the regex, this message will be displayed.

                                            -
                                            validatorGroup: ((tilmeld, group) => void)

                                            Type declaration

                                              • (tilmeld, group): void
                                              • The validator used to check groups before saving.

                                                -

                                                Parameters

                                                Returns void

                                            validatorUser: ((tilmeld, user) => void)

                                            Type declaration

                                              • (tilmeld, user): void
                                              • The validator used to check users before saving.

                                                -

                                                Parameters

                                                Returns void

                                            verifyChangeRedirect: string

                                            After the user verifies an address change, redirect them to this URL.

                                            -
                                            verifyEmail: boolean

                                            Verify users' email addresses upon registration/email change before +

                                            validatorGroup: ((tilmeld, group) => void)

                                            The validator used to check groups before saving.

                                            +

                                            Type declaration

                                            validatorUser: ((tilmeld, user) => void)

                                            The validator used to check users before saving.

                                            +

                                            Type declaration

                                            verifyChangeRedirect: string

                                            After the user verifies an address change, redirect them to this URL.

                                            +
                                            verifyEmail: boolean

                                            Verify users' email addresses upon registration/email change before allowing them to log in/change it.

                                            -
                                            verifyRedirect: string

                                            After the user verifies their address, redirect them to this URL.

                                            -

                                            Generated using TypeDoc

                                            \ No newline at end of file +
                                            verifyRedirect: string

                                            After the user verifies their address, redirect them to this URL.

                                            +
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_client.html b/docs/api/latest/modules/_nymphjs_client.html index b8b6490..3fea9f9 100644 --- a/docs/api/latest/modules/_nymphjs_client.html +++ b/docs/api/latest/modules/_nymphjs_client.html @@ -1,4 +1,4 @@ -@nymphjs/client - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/client - v1.0.0-beta.61

                                            Nymph Client

                                            Powerful object data storage and querying.

                                            +@nymphjs/client - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/client - v1.0.0-beta.81

                                            Nymph Client

                                            Powerful object data storage and querying.

                                            The Nymph Client allows you to query and push data to a Nymph REST server from the browser. You can also subscribe to entities and queries on a Nymph PubSub server and be notified of changes.

                                            Installation

                                            npm install --save @nymphjs/client
                                             
                                            @@ -17,57 +17,57 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            Index

                                            Classes

                                            Interfaces

                                            Type Aliases

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Index

                                            Classes

                                            Interfaces

                                            Type Aliases

                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_client_node.html b/docs/api/latest/modules/_nymphjs_client_node.html index 2471def..a55f1b6 100644 --- a/docs/api/latest/modules/_nymphjs_client_node.html +++ b/docs/api/latest/modules/_nymphjs_client_node.html @@ -1,4 +1,4 @@ -@nymphjs/client-node - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/client-node - v1.0.0-beta.61

                                            Nymph Node Client

                                            Powerful object data storage and querying.

                                            +@nymphjs/client-node - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/client-node - v1.0.0-beta.81

                                            Nymph Node Client

                                            Powerful object data storage and querying.

                                            The Nymph Node Client lets you do everything the Nymph Client does, but from Node.JS instead of the browser.

                                            Installation

                                            npm install --save @nymphjs/client-node
                                             
                                            @@ -21,6 +21,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            Index

                                            Classes

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Index

                                            Classes

                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_driver_mysql.html b/docs/api/latest/modules/_nymphjs_driver_mysql.html index 1544a41..5819a46 100644 --- a/docs/api/latest/modules/_nymphjs_driver_mysql.html +++ b/docs/api/latest/modules/_nymphjs_driver_mysql.html @@ -1,4 +1,4 @@ -@nymphjs/driver-mysql - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/driver-mysql - v1.0.0-beta.61

                                            Nymph MySQL Driver

                                            Powerful object data storage and querying.

                                            +@nymphjs/driver-mysql - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/driver-mysql - v1.0.0-beta.81

                                            Nymph MySQL Driver

                                            Powerful object data storage and querying.

                                            The MySQL driver lets you configure Nymph to query and save data to a MySQL database.

                                            Installation

                                            npm install --save @nymphjs/driver-mysql
                                             
                                            @@ -17,8 +17,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            References

                                            Classes

                                            Interfaces

                                            Variables

                                            References

                                            Renames and re-exports MySQLDriver

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Classes

                                            Interfaces

                                            Variables

                                            References

                                            Renames and re-exports MySQLDriver
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_driver_postgresql.html b/docs/api/latest/modules/_nymphjs_driver_postgresql.html index 9ccff49..0c3940a 100644 --- a/docs/api/latest/modules/_nymphjs_driver_postgresql.html +++ b/docs/api/latest/modules/_nymphjs_driver_postgresql.html @@ -1,4 +1,4 @@ -@nymphjs/driver-postgresql - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/driver-postgresql - v1.0.0-beta.61

                                            Nymph PostgreSQL Driver

                                            Powerful object data storage and querying.

                                            +@nymphjs/driver-postgresql - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/driver-postgresql - v1.0.0-beta.81

                                            Nymph PostgreSQL Driver

                                            Powerful object data storage and querying.

                                            The PostgreSQL driver lets you configure Nymph to query and save data to a Postgres database.

                                            Installation

                                            npm install --save @nymphjs/driver-postgresql
                                             
                                            @@ -17,8 +17,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            References

                                            Renames and re-exports PostgreSQLDriver

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Renames and re-exports PostgreSQLDriver
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_driver_sqlite3.html b/docs/api/latest/modules/_nymphjs_driver_sqlite3.html index 5caf605..4755a52 100644 --- a/docs/api/latest/modules/_nymphjs_driver_sqlite3.html +++ b/docs/api/latest/modules/_nymphjs_driver_sqlite3.html @@ -1,4 +1,4 @@ -@nymphjs/driver-sqlite3 - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/driver-sqlite3 - v1.0.0-beta.61

                                            Nymph SQLite3 Driver

                                            Powerful object data storage and querying.

                                            +@nymphjs/driver-sqlite3 - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/driver-sqlite3 - v1.0.0-beta.81

                                            Nymph SQLite3 Driver

                                            Powerful object data storage and querying.

                                            The SQLite3 driver lets you configure Nymph to query and save data to a SQLite3 database. This includes an in memory SQLite3 database.

                                            Installation

                                            npm install --save @nymphjs/driver-sqlite3
                                             
                                            @@ -17,8 +17,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            References

                                            Classes

                                            Interfaces

                                            Variables

                                            References

                                            Renames and re-exports SQLite3Driver

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Classes

                                            Interfaces

                                            Variables

                                            References

                                            Renames and re-exports SQLite3Driver
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_guid.html b/docs/api/latest/modules/_nymphjs_guid.html index cd4c98d..e20c5cd 100644 --- a/docs/api/latest/modules/_nymphjs_guid.html +++ b/docs/api/latest/modules/_nymphjs_guid.html @@ -1,4 +1,4 @@ -@nymphjs/guid - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/guid - v1.0.0-beta.61

                                            Nymph GUID / Unique Code Generator

                                            Powerful object data storage and querying.

                                            +@nymphjs/guid - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/guid - v1.0.0-beta.81

                                            Nymph GUID / Unique Code Generator

                                            Powerful object data storage and querying.

                                            The GUID and unique code generators are used to generate new GUIDs for Nymph objects and various random unique strings.

                                            Installation

                                            npm install --save @nymphjs/guid
                                             
                                            @@ -16,9 +16,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            Index

                                            Functions

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Index

                                            Functions

                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_nymph.html b/docs/api/latest/modules/_nymphjs_nymph.html index a46b793..6268462 100644 --- a/docs/api/latest/modules/_nymphjs_nymph.html +++ b/docs/api/latest/modules/_nymphjs_nymph.html @@ -1,4 +1,4 @@ -@nymphjs/nymph - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/nymph - v1.0.0-beta.61

                                            Nymph

                                            Powerful object data storage and querying.

                                            +@nymphjs/nymph - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/nymph - v1.0.0-beta.81

                                            Nymph

                                            Powerful object data storage and querying.

                                            The Nymph core provides the base level classes and utilities to query the database, save data to it, and define different data types.

                                            Installation

                                            npm install --save @nymphjs/nymph
                                             
                                            @@ -20,80 +20,80 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            Index

                                            Enumerations

                                            Classes

                                            Interfaces

                                            Type Aliases

                                            Variables

                                            Functions

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Index

                                            Enumerations

                                            Classes

                                            Interfaces

                                            Type Aliases

                                            Variables

                                            Functions

                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_pubsub.html b/docs/api/latest/modules/_nymphjs_pubsub.html index 716ac7b..0d8a073 100644 --- a/docs/api/latest/modules/_nymphjs_pubsub.html +++ b/docs/api/latest/modules/_nymphjs_pubsub.html @@ -1,4 +1,4 @@ -@nymphjs/pubsub - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/pubsub - v1.0.0-beta.61

                                            Nymph PubSub Server

                                            Powerful object data storage and querying.

                                            +@nymphjs/pubsub - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/pubsub - v1.0.0-beta.81

                                            Nymph PubSub Server

                                            Powerful object data storage and querying.

                                            The PubSub server provides a WebSocket server that allows Nymph to publish changes and the Nymph Client to subscribe to those changes. You can subscribe to individual entities, entity queries, or UIDs.

                                            Installation

                                            npm install --save @nymphjs/pubsub
                                             
                                            @@ -23,19 +23,19 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            References

                                            Renames and re-exports createServer

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Renames and re-exports createServer
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_query_parser.html b/docs/api/latest/modules/_nymphjs_query_parser.html index 491259a..3835c38 100644 --- a/docs/api/latest/modules/_nymphjs_query_parser.html +++ b/docs/api/latest/modules/_nymphjs_query_parser.html @@ -1,4 +1,4 @@ -@nymphjs/query-parser - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/query-parser - v1.0.0-beta.61

                                            Nymph Query Parser

                                            Powerful object data storage and querying.

                                            +@nymphjs/query-parser - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/query-parser - v1.0.0-beta.81

                                            Nymph Query Parser

                                            Powerful object data storage and querying.

                                            The Query Parser is a utility for creating complex Nymph entity queries from a simple text input. Essentially, it turns a string into a Nymph query.

                                            Installation

                                            npm install --save @nymphjs/query-parser
                                             
                                            @@ -50,7 +50,7 @@ -

                                            contain and !contain

                                            Check for a JSON representation appearing within the JSON representation of the named property.

                                            +

                                            contain and !contain

                                            Check if the array at the named property contains a value.

                                            • name<value> or name!<value>
                                              • (Escape angle brackets with a leading backslash. If your value could be interpreted as valid JSON, encode it as a JSON string and use the JSON syntax instead.)
                                              • @@ -146,8 +146,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                                -

                                            References

                                            Type Aliases

                                            Functions

                                            References

                                            Renames and re-exports queryParser

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Type Aliases

                                            Functions

                                            References

                                            Renames and re-exports queryParser
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_server.html b/docs/api/latest/modules/_nymphjs_server.html index 2e1950f..60e6409 100644 --- a/docs/api/latest/modules/_nymphjs_server.html +++ b/docs/api/latest/modules/_nymphjs_server.html @@ -1,4 +1,4 @@ -@nymphjs/server - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/server - v1.0.0-beta.61

                                            Nymph REST Server

                                            Powerful object data storage and querying.

                                            +@nymphjs/server - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/server - v1.0.0-beta.81

                                            Nymph REST Server

                                            Powerful object data storage and querying.

                                            The REST server lets you configure an endpoint for the Nymph client to query and push data to. The server provides this endpoint as an Express middleware, which can be used in a new or existing Express (or compatible) server.

                                            Installation

                                            npm install --save @nymphjs/server
                                             
                                            @@ -23,9 +23,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            References

                                            Classes

                                            Variables

                                            Functions

                                            References

                                            Renames and re-exports createServer

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Classes

                                            Variables

                                            Functions

                                            References

                                            Renames and re-exports createServer
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_sorter.html b/docs/api/latest/modules/_nymphjs_sorter.html index 3721e72..bcad716 100644 --- a/docs/api/latest/modules/_nymphjs_sorter.html +++ b/docs/api/latest/modules/_nymphjs_sorter.html @@ -1,4 +1,4 @@ -@nymphjs/sorter - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/sorter - v1.0.0-beta.61

                                            Nymph Entity Sorter

                                            Powerful object data storage and querying.

                                            +@nymphjs/sorter - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/sorter - v1.0.0-beta.81

                                            Nymph Entity Sorter

                                            Powerful object data storage and querying.

                                            The Nymph Entity Sorter lets you sort entities by their properties, including hierarchically.

                                            Installation

                                            npm install --save @nymphjs/sorter
                                             
                                            @@ -16,6 +16,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            Index

                                            Classes

                                            Type Aliases

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Index

                                            Classes

                                            Type Aliases

                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_tilmeld.html b/docs/api/latest/modules/_nymphjs_tilmeld.html index e4a8531..e02af76 100644 --- a/docs/api/latest/modules/_nymphjs_tilmeld.html +++ b/docs/api/latest/modules/_nymphjs_tilmeld.html @@ -1,4 +1,4 @@ -@nymphjs/tilmeld - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/tilmeld - v1.0.0-beta.61

                                            Tilmeld - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            +@nymphjs/tilmeld - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/tilmeld - v1.0.0-beta.81

                                            Tilmeld - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            Tilmeld (the d is silent) is a user and group management system for Nymph. It provides strict access controls to protect entities from unauthorized access/modification. It allows for granting and revoking ad hoc abilities to users and groups, then checking for those abilities. It provides authentication services and features protection against XSRF attacks.

                                            Installation

                                            npm install --save @nymphjs/tilmeld
                                             
                                            @@ -28,29 +28,29 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            Index

                                            Classes

                                            Interfaces

                                            Type Aliases

                                            Variables

                                            Functions

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Index

                                            Classes

                                            Interfaces

                                            Type Aliases

                                            Variables

                                            Functions

                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_tilmeld_client.html b/docs/api/latest/modules/_nymphjs_tilmeld_client.html index 0f60596..c89e1f0 100644 --- a/docs/api/latest/modules/_nymphjs_tilmeld_client.html +++ b/docs/api/latest/modules/_nymphjs_tilmeld_client.html @@ -1,4 +1,4 @@ -@nymphjs/tilmeld-client - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/tilmeld-client - v1.0.0-beta.61

                                            Tilmeld Client - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            +@nymphjs/tilmeld-client - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/tilmeld-client - v1.0.0-beta.81

                                            Tilmeld Client - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            The Tilmeld Client lets you register, login, and perform user account related functions remotely on a Nymph server.

                                            Installation

                                            npm install --save @nymphjs/tilmeld-client
                                             
                                            @@ -19,22 +19,22 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            Index

                                            Classes

                                            Type Aliases

                                            Functions

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Index

                                            Classes

                                            Type Aliases

                                            Functions

                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_tilmeld_components.html b/docs/api/latest/modules/_nymphjs_tilmeld_components.html index e4cbec0..2622be1 100644 --- a/docs/api/latest/modules/_nymphjs_tilmeld_components.html +++ b/docs/api/latest/modules/_nymphjs_tilmeld_components.html @@ -1,4 +1,4 @@ -@nymphjs/tilmeld-components - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/tilmeld-components - v1.0.0-beta.61

                                            Tilmeld Components - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            +@nymphjs/tilmeld-components - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/tilmeld-components - v1.0.0-beta.81

                                            Tilmeld Components - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            The Tilmeld Components are front end registration/login, account recovery, account details, and password change components built with Svelte and SMUI.

                                            Installation

                                            npm install --save @nymphjs/tilmeld-components
                                             
                                            @@ -14,10 +14,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            References

                                            Renames and re-exports Account
                                            Renames and re-exports Account
                                            Renames and re-exports Account
                                            Renames and re-exports Account
                                            Renames and re-exports Account

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Renames and re-exports Account
                                            Renames and re-exports Account
                                            Renames and re-exports Account
                                            Renames and re-exports Account
                                            Renames and re-exports Account
                                            \ No newline at end of file diff --git a/docs/api/latest/modules/_nymphjs_tilmeld_setup.html b/docs/api/latest/modules/_nymphjs_tilmeld_setup.html index b13775b..a46286a 100644 --- a/docs/api/latest/modules/_nymphjs_tilmeld_setup.html +++ b/docs/api/latest/modules/_nymphjs_tilmeld_setup.html @@ -1,4 +1,4 @@ -@nymphjs/tilmeld-setup - v1.0.0-beta.61 | Nymph.js 1.0.0-beta.61

                                            Module @nymphjs/tilmeld-setup - v1.0.0-beta.61

                                            Tilmeld Setup App - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            +@nymphjs/tilmeld-setup - v1.0.0-beta.81 | Nymph.js 1.0.0-beta.81

                                            Module @nymphjs/tilmeld-setup - v1.0.0-beta.81

                                            Tilmeld Setup App - User/Group System for Nymph

                                            Powerful object data storage and querying.

                                            The Tilmeld Setup App allows administrators to create, modify, and delete users and groups and configure how Tilmeld works. It also acts as the endpoint for email address verification.

                                            Installation

                                            npm install --save @nymphjs/tilmeld-setup
                                             
                                            @@ -18,6 +18,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

                                            -

                                            References

                                            Functions

                                            References

                                            Renames and re-exports setup

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            References

                                            Functions

                                            References

                                            Renames and re-exports setup
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.Clause.html b/docs/api/latest/types/_nymphjs_client.Clause.html index 2619a73..f15370f 100644 --- a/docs/api/latest/types/_nymphjs_client.Clause.html +++ b/docs/api/latest/types/_nymphjs_client.Clause.html @@ -1 +1 @@ -Clause | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +Clause | Nymph.js 1.0.0-beta.81
                                            Clause<C>: C | Exclude<C, undefined>[]

                                            Type Parameters

                                            • C
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EntityConstructor.html b/docs/api/latest/types/_nymphjs_client.EntityConstructor.html index bc27c79..86c86c2 100644 --- a/docs/api/latest/types/_nymphjs_client.EntityConstructor.html +++ b/docs/api/latest/types/_nymphjs_client.EntityConstructor.html @@ -1 +1 @@ -EntityConstructor | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityConstructor | Nymph.js 1.0.0-beta.81
                                            EntityConstructor<D, E>: (new (...args) => E) & {
                                                [k in keyof typeof Entity]: typeof Entity[k]
                                            }

                                            Type Parameters

                                            Type declaration

                                              • new (...args): E
                                              • Parameters

                                                • Rest ...args: any[]

                                                Returns E

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EntityData.html b/docs/api/latest/types/_nymphjs_client.EntityData.html index c238551..973422d 100644 --- a/docs/api/latest/types/_nymphjs_client.EntityData.html +++ b/docs/api/latest/types/_nymphjs_client.EntityData.html @@ -1 +1 @@ -EntityData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityData | Nymph.js 1.0.0-beta.81
                                            EntityData: {
                                                [k: string]: any;
                                            }

                                            Type declaration

                                            • [k: string]: any
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EntityDataType.html b/docs/api/latest/types/_nymphjs_client.EntityDataType.html index 51d20d3..fa8ca2e 100644 --- a/docs/api/latest/types/_nymphjs_client.EntityDataType.html +++ b/docs/api/latest/types/_nymphjs_client.EntityDataType.html @@ -1 +1 @@ -EntityDataType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityDataType | Nymph.js 1.0.0-beta.81
                                            EntityDataType<T>: T extends Entity<infer DataType>
                                                ? DataType
                                                : never

                                            Type Parameters

                                            • T
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EntityInstanceType.html b/docs/api/latest/types/_nymphjs_client.EntityInstanceType.html index 8acb876..617da49 100644 --- a/docs/api/latest/types/_nymphjs_client.EntityInstanceType.html +++ b/docs/api/latest/types/_nymphjs_client.EntityInstanceType.html @@ -1 +1 @@ -EntityInstanceType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityInstanceType | Nymph.js 1.0.0-beta.81
                                            EntityInstanceType<T>: T extends (new () => infer E)
                                                ? E & EntityDataType<E>
                                                : never

                                            Type Parameters

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EntityJson.html b/docs/api/latest/types/_nymphjs_client.EntityJson.html index 9f89e77..ad23667 100644 --- a/docs/api/latest/types/_nymphjs_client.EntityJson.html +++ b/docs/api/latest/types/_nymphjs_client.EntityJson.html @@ -1 +1 @@ -EntityJson | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityJson | Nymph.js 1.0.0-beta.81
                                            EntityJson<T>: {
                                                cdate: number | null;
                                                class: T["class"];
                                                data: EntityData;
                                                guid: string | null;
                                                mdate: number | null;
                                                tags: string[];
                                            }

                                            Type Parameters

                                            Type declaration

                                            • cdate: number | null
                                            • class: T["class"]
                                            • data: EntityData
                                            • guid: string | null
                                            • mdate: number | null
                                            • tags: string[]
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EntityPatch.html b/docs/api/latest/types/_nymphjs_client.EntityPatch.html index 4cd91c7..ab6b025 100644 --- a/docs/api/latest/types/_nymphjs_client.EntityPatch.html +++ b/docs/api/latest/types/_nymphjs_client.EntityPatch.html @@ -1 +1 @@ -EntityPatch | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityPatch | Nymph.js 1.0.0-beta.81
                                            EntityPatch: {
                                                addTags: string[];
                                                class: string;
                                                guid: string;
                                                mdate: number | null;
                                                removeTags: string[];
                                                set: EntityData;
                                                unset: string[];
                                            }

                                            Type declaration

                                            • addTags: string[]
                                            • class: string
                                            • guid: string
                                            • mdate: number | null
                                            • removeTags: string[]
                                            • set: EntityData
                                            • unset: string[]
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EntityReference.html b/docs/api/latest/types/_nymphjs_client.EntityReference.html index 7dc6b11..e1bd050 100644 --- a/docs/api/latest/types/_nymphjs_client.EntityReference.html +++ b/docs/api/latest/types/_nymphjs_client.EntityReference.html @@ -1 +1 @@ -EntityReference | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityReference | Nymph.js 1.0.0-beta.81
                                            EntityReference: ["nymph_entity_reference", string, string]
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.EventType.html b/docs/api/latest/types/_nymphjs_client.EventType.html index bfc1273..c503f59 100644 --- a/docs/api/latest/types/_nymphjs_client.EventType.html +++ b/docs/api/latest/types/_nymphjs_client.EventType.html @@ -1 +1 @@ -EventType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EventType | Nymph.js 1.0.0-beta.81
                                            EventType: "request" | "response"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.HttpRequesterEventType.html b/docs/api/latest/types/_nymphjs_client.HttpRequesterEventType.html index 0e2f221..310fd2d 100644 --- a/docs/api/latest/types/_nymphjs_client.HttpRequesterEventType.html +++ b/docs/api/latest/types/_nymphjs_client.HttpRequesterEventType.html @@ -1 +1 @@ -HttpRequesterEventType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +HttpRequesterEventType | Nymph.js 1.0.0-beta.81
                                            HttpRequesterEventType: "request" | "response"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.HttpRequesterIteratorCallback.html b/docs/api/latest/types/_nymphjs_client.HttpRequesterIteratorCallback.html index b0086f2..da09c0e 100644 --- a/docs/api/latest/types/_nymphjs_client.HttpRequesterIteratorCallback.html +++ b/docs/api/latest/types/_nymphjs_client.HttpRequesterIteratorCallback.html @@ -1 +1 @@ -HttpRequesterIteratorCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +HttpRequesterIteratorCallback | Nymph.js 1.0.0-beta.81
                                            HttpRequesterIteratorCallback: ((requester, url, headers) => void)

                                            Type declaration

                                              • (requester, url, headers): void
                                              • Parameters

                                                • requester: HttpRequester
                                                • url: string
                                                • headers: Record<string, string>

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestCallback.html b/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestCallback.html index 8233f0f..69cb474 100644 --- a/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestCallback.html +++ b/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestCallback.html @@ -1 +1 @@ -HttpRequesterRequestCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +HttpRequesterRequestCallback | Nymph.js 1.0.0-beta.81
                                            HttpRequesterRequestCallback: ((requester, url, options) => void)

                                            Type declaration

                                              • (requester, url, options): void
                                              • Parameters

                                                • requester: HttpRequester
                                                • url: string
                                                • options: RequestInit

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestOptions.html b/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestOptions.html index f6c9d7a..ee51426 100644 --- a/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestOptions.html +++ b/docs/api/latest/types/_nymphjs_client.HttpRequesterRequestOptions.html @@ -1 +1 @@ -HttpRequesterRequestOptions | Nymph.js 1.0.0-beta.61
                                            HttpRequesterRequestOptions: {
                                                data: {
                                                    [k: string]: any;
                                                };
                                                dataType: string;
                                                headers?: {
                                                    [k: string]: any;
                                                };
                                                url: string;
                                            }

                                            Type declaration

                                            • data: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • dataType: string
                                            • Optional headers?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • url: string

                                            Generated using TypeDoc

                                            \ No newline at end of file +HttpRequesterRequestOptions | Nymph.js 1.0.0-beta.81
                                            HttpRequesterRequestOptions: {
                                                data: {
                                                    [k: string]: any;
                                                };
                                                dataType: string;
                                                headers?: {
                                                    [k: string]: any;
                                                };
                                                url: string;
                                            }

                                            Type declaration

                                            • data: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • dataType: string
                                            • Optional headers?: {
                                                  [k: string]: any;
                                              }
                                              • [k: string]: any
                                            • url: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.HttpRequesterResponseCallback.html b/docs/api/latest/types/_nymphjs_client.HttpRequesterResponseCallback.html index ad711d2..dc808c0 100644 --- a/docs/api/latest/types/_nymphjs_client.HttpRequesterResponseCallback.html +++ b/docs/api/latest/types/_nymphjs_client.HttpRequesterResponseCallback.html @@ -1 +1 @@ -HttpRequesterResponseCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +HttpRequesterResponseCallback | Nymph.js 1.0.0-beta.81
                                            HttpRequesterResponseCallback: ((requester, response, text) => void)

                                            Type declaration

                                              • (requester, response, text): void
                                              • Parameters

                                                • requester: HttpRequester
                                                • response: Response
                                                • text: string

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.NymphOptions.html b/docs/api/latest/types/_nymphjs_client.NymphOptions.html index 0452f86..50056c4 100644 --- a/docs/api/latest/types/_nymphjs_client.NymphOptions.html +++ b/docs/api/latest/types/_nymphjs_client.NymphOptions.html @@ -1,5 +1,5 @@ -NymphOptions | Nymph.js 1.0.0-beta.61
                                            NymphOptions: {
                                                WebSocket?: typeof WebSocket;
                                                fetch?: WindowOrWorkerGlobalScope["fetch"];
                                                noAutoconnect?: boolean;
                                                noConsole?: boolean;
                                                pubsubUrl?: string;
                                                renewTokens?: boolean;
                                                restUrl: string;
                                                weakCache?: boolean;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.Options.html b/docs/api/latest/types/_nymphjs_client.Options.html index 41da72f..019d114 100644 --- a/docs/api/latest/types/_nymphjs_client.Options.html +++ b/docs/api/latest/types/_nymphjs_client.Options.html @@ -1 +1,12 @@ -Options | Nymph.js 1.0.0-beta.61
                                            Options<T>: {
                                                class: T;
                                                limit?: number;
                                                offset?: number;
                                                return?: "entity" | "guid" | "count";
                                                reverse?: boolean;
                                                skipCache?: boolean;
                                                sort?: "cdate" | "mdate" | string;
                                            }

                                            Type Parameters

                                            Type declaration

                                            • class: T
                                            • Optional limit?: number
                                            • Optional offset?: number
                                            • Optional return?: "entity" | "guid" | "count"
                                            • Optional reverse?: boolean
                                            • Optional skipCache?: boolean
                                            • Optional sort?: "cdate" | "mdate" | string

                                            Generated using TypeDoc

                                            \ No newline at end of file +Options | Nymph.js 1.0.0-beta.81
                                            Options<T>: {
                                                class: T;
                                                limit?: number;
                                                offset?: number;
                                                return?: "entity" | "guid" | "count";
                                                reverse?: boolean;
                                                skipCache?: boolean;
                                                sort?: "cdate" | "mdate" | string;
                                            }

                                            Type Parameters

                                            Type declaration

                                            • class: T

                                              The Entity class to query.

                                              +
                                            • Optional limit?: number

                                              The limit of entities to be returned. Not needed when using getEntity, as +it always returns only one.

                                              +
                                            • Optional offset?: number

                                              The offset from the first matching entity, in order, to start retrieving.

                                              +
                                            • Optional return?: "entity" | "guid" | "count"

                                              What to return, the entities with their data, just the GUIDs, or just a +count.

                                              +
                                            • Optional reverse?: boolean

                                              If true, entities will be retrieved from newest to oldest/largest to +smallest (with regard to sort).

                                              +
                                            • Optional skipCache?: boolean

                                              If true, Nymph will skip the cache and retrieve the entity from the DB.

                                              +
                                            • Optional sort?: "cdate" | "mdate" | string

                                              How to sort the entities. Should be "cdate", "mdate", or the name of a +property.

                                              +
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.OrWithTime.html b/docs/api/latest/types/_nymphjs_client.OrWithTime.html index e6e4b88..f8158b0 100644 --- a/docs/api/latest/types/_nymphjs_client.OrWithTime.html +++ b/docs/api/latest/types/_nymphjs_client.OrWithTime.html @@ -1 +1 @@ -OrWithTime | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +OrWithTime | Nymph.js 1.0.0-beta.81
                                            OrWithTime<T>: T | [string, null, string]

                                            Type Parameters

                                            • T
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubCallbacks.html b/docs/api/latest/types/_nymphjs_client.PubSubCallbacks.html index e374bec..b6b5cc4 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubCallbacks.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubCallbacks.html @@ -1 +1 @@ -PubSubCallbacks | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubCallbacks | Nymph.js 1.0.0-beta.81
                                            PubSubCallbacks<T>: [PubSubResolveCallback<T> | undefined, PubSubRejectCallback | undefined, PubSubCountCallback | undefined]

                                            Type Parameters

                                            • T
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubConnectCallback.html b/docs/api/latest/types/_nymphjs_client.PubSubConnectCallback.html index 78a7d21..f54afff 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubConnectCallback.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubConnectCallback.html @@ -1 +1 @@ -PubSubConnectCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubConnectCallback | Nymph.js 1.0.0-beta.81
                                            PubSubConnectCallback: (() => void)

                                            Type declaration

                                              • (): void
                                              • Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubCountCallback.html b/docs/api/latest/types/_nymphjs_client.PubSubCountCallback.html index 8362dcf..737e1bf 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubCountCallback.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubCountCallback.html @@ -1 +1 @@ -PubSubCountCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubCountCallback | Nymph.js 1.0.0-beta.81
                                            PubSubCountCallback: ((count) => void)

                                            Type declaration

                                              • (count): void
                                              • Parameters

                                                • count: number

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubDisconnectCallback.html b/docs/api/latest/types/_nymphjs_client.PubSubDisconnectCallback.html index 844aa36..658ee11 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubDisconnectCallback.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubDisconnectCallback.html @@ -1 +1 @@ -PubSubDisconnectCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubDisconnectCallback | Nymph.js 1.0.0-beta.81
                                            PubSubDisconnectCallback: (() => void)

                                            Type declaration

                                              • (): void
                                              • Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubErrorCallback.html b/docs/api/latest/types/_nymphjs_client.PubSubErrorCallback.html index b927f32..95dee47 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubErrorCallback.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubErrorCallback.html @@ -1,3 +1,3 @@ -PubSubErrorCallback | Nymph.js 1.0.0-beta.61
                                            PubSubErrorCallback: ((err) => void)

                                            Type declaration

                                              • (err): void
                                              • The error event is for unknown errors. Query errors fire their own reject +PubSubErrorCallback | Nymph.js 1.0.0-beta.81

                                                PubSubErrorCallback: ((err) => void)

                                                The error event is for unknown errors. Query errors fire their own reject callbacks.

                                                -

                                                Parameters

                                                • err: any

                                                Returns void

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Type declaration

                                              • (err): void
                                              • Parameters

                                                • err: any

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubEventType.html b/docs/api/latest/types/_nymphjs_client.PubSubEventType.html index 1a6d336..63517bb 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubEventType.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubEventType.html @@ -1 +1 @@ -PubSubEventType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubEventType | Nymph.js 1.0.0-beta.81
                                            PubSubEventType: "connect" | "disconnect" | "error"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubRejectCallback.html b/docs/api/latest/types/_nymphjs_client.PubSubRejectCallback.html index 2b33416..5e9110e 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubRejectCallback.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubRejectCallback.html @@ -1 +1 @@ -PubSubRejectCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubRejectCallback | Nymph.js 1.0.0-beta.81
                                            PubSubRejectCallback: ((err) => void)

                                            Type declaration

                                              • (err): void
                                              • Parameters

                                                • err: any

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubResolveCallback.html b/docs/api/latest/types/_nymphjs_client.PubSubResolveCallback.html index 61e17bc..72f8b08 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubResolveCallback.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubResolveCallback.html @@ -1 +1 @@ -PubSubResolveCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubResolveCallback | Nymph.js 1.0.0-beta.81
                                            PubSubResolveCallback<T>: ((arg, event?) => void)

                                            Type Parameters

                                            • T

                                            Type declaration

                                              • (arg, event?): void
                                              • Parameters

                                                • arg: T
                                                • Optional event: string

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubSubscribable.html b/docs/api/latest/types/_nymphjs_client.PubSubSubscribable.html index 2b2fe3c..d0283ee 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubSubscribable.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubSubscribable.html @@ -1 +1 @@ -PubSubSubscribable | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubSubscribable | Nymph.js 1.0.0-beta.81
                                            PubSubSubscribable<T>: ((resolve?, reject?, count?) => PubSubSubscription<T>)

                                            Type Parameters

                                            • T

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.PubSubUpdate.html b/docs/api/latest/types/_nymphjs_client.PubSubUpdate.html index 1b89599..94bc04d 100644 --- a/docs/api/latest/types/_nymphjs_client.PubSubUpdate.html +++ b/docs/api/latest/types/_nymphjs_client.PubSubUpdate.html @@ -1 +1 @@ -PubSubUpdate | Nymph.js 1.0.0-beta.61
                                            PubSubUpdate<T>: T | {
                                                query: string;
                                                removed: string;
                                            } | {
                                                added: string;
                                                data: EntityJson;
                                                query: string;
                                            } | {
                                                data: EntityJson;
                                                query: string;
                                                updated: string;
                                            }

                                            Type Parameters

                                            • T

                                            Type declaration

                                            • query: string
                                            • removed: string

                                            Type declaration

                                            Type declaration

                                            Generated using TypeDoc

                                            \ No newline at end of file +PubSubUpdate | Nymph.js 1.0.0-beta.81
                                            PubSubUpdate<T>: T | {
                                                query: string;
                                                removed: string;
                                            } | {
                                                added: string;
                                                data: EntityJson;
                                                query: string;
                                            } | {
                                                data: EntityJson;
                                                query: string;
                                                updated: string;
                                            }

                                            Type Parameters

                                            • T

                                            Type declaration

                                            • query: string
                                            • removed: string

                                            Type declaration

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.RequestCallback.html b/docs/api/latest/types/_nymphjs_client.RequestCallback.html index 98c5b56..8a1ae9a 100644 --- a/docs/api/latest/types/_nymphjs_client.RequestCallback.html +++ b/docs/api/latest/types/_nymphjs_client.RequestCallback.html @@ -1 +1 @@ -RequestCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +RequestCallback | Nymph.js 1.0.0-beta.81
                                            RequestCallback: ((url, options) => void)

                                            Type declaration

                                              • (url, options): void
                                              • Parameters

                                                • url: string
                                                • options: RequestInit

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.ResponseCallback.html b/docs/api/latest/types/_nymphjs_client.ResponseCallback.html index 4edf65b..1537d76 100644 --- a/docs/api/latest/types/_nymphjs_client.ResponseCallback.html +++ b/docs/api/latest/types/_nymphjs_client.ResponseCallback.html @@ -1 +1 @@ -ResponseCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +ResponseCallback | Nymph.js 1.0.0-beta.81
                                            ResponseCallback: ((response, text) => void)

                                            Type declaration

                                              • (response, text): void
                                              • Parameters

                                                • response: Response
                                                • text: string

                                                Returns void

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.Selector.html b/docs/api/latest/types/_nymphjs_client.Selector.html index 5567019..b4b5f48 100644 --- a/docs/api/latest/types/_nymphjs_client.Selector.html +++ b/docs/api/latest/types/_nymphjs_client.Selector.html @@ -1 +1 @@ -Selector | Nymph.js 1.0.0-beta.61
                                            Selector: {
                                                !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                !defined?: Clause<PrimitiveSelector["defined"]>;
                                                !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                !guid?: Clause<PrimitiveSelector["guid"]>;
                                                !ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                !imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                !like?: Clause<PrimitiveSelector["like"]>;
                                                !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                !match?: Clause<PrimitiveSelector["match"]>;
                                                !qref?: Selector["qref"];
                                                !ref?: Clause<PrimitiveSelector["ref"]>;
                                                !selector?: Selector["selector"];
                                                !tag?: Clause<PrimitiveSelector["tag"]>;
                                                !truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                defined?: Clause<PrimitiveSelector["defined"]>;
                                                equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                guid?: Clause<PrimitiveSelector["guid"]>;
                                                ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                like?: Clause<PrimitiveSelector["like"]>;
                                                lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                match?: Clause<PrimitiveSelector["match"]>;
                                                qref?: Clause<[string, [Options, ...Selector[]]]>;
                                                ref?: Clause<PrimitiveSelector["ref"]>;
                                                selector?: Clause<Selector>;
                                                tag?: Clause<PrimitiveSelector["tag"]>;
                                                truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                type: "&" | "|" | "!&" | "!|";
                                            }

                                            Type declaration

                                            • Optional !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional !defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional !guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional !ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional !imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional !like?: Clause<PrimitiveSelector["like"]>
                                            • Optional !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional !match?: Clause<PrimitiveSelector["match"]>
                                            • Optional !qref?: Selector["qref"]
                                            • Optional !ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional !selector?: Selector["selector"]
                                            • Optional !tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional !truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • Optional contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional like?: Clause<PrimitiveSelector["like"]>
                                            • Optional lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional match?: Clause<PrimitiveSelector["match"]>
                                            • Optional qref?: Clause<[string, [Options, ...Selector[]]]>
                                            • Optional ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional selector?: Clause<Selector>
                                            • Optional tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • type: "&" | "|" | "!&" | "!|"

                                            Generated using TypeDoc

                                            \ No newline at end of file +Selector | Nymph.js 1.0.0-beta.81
                                            Selector: {
                                                !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                !defined?: Clause<PrimitiveSelector["defined"]>;
                                                !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                !guid?: Clause<PrimitiveSelector["guid"]>;
                                                !ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                !imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                !like?: Clause<PrimitiveSelector["like"]>;
                                                !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                !match?: Clause<PrimitiveSelector["match"]>;
                                                !qref?: Selector["qref"];
                                                !ref?: Clause<PrimitiveSelector["ref"]>;
                                                !selector?: Selector["selector"];
                                                !tag?: Clause<PrimitiveSelector["tag"]>;
                                                !truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                defined?: Clause<PrimitiveSelector["defined"]>;
                                                equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                guid?: Clause<PrimitiveSelector["guid"]>;
                                                ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                like?: Clause<PrimitiveSelector["like"]>;
                                                lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                match?: Clause<PrimitiveSelector["match"]>;
                                                qref?: Clause<[string, [Options, ...Selector[]]]>;
                                                ref?: Clause<PrimitiveSelector["ref"]>;
                                                selector?: Clause<Selector>;
                                                tag?: Clause<PrimitiveSelector["tag"]>;
                                                truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                type: "&" | "|" | "!&" | "!|";
                                            }

                                            Type declaration

                                            • Optional !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional !defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional !guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional !ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional !imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional !like?: Clause<PrimitiveSelector["like"]>
                                            • Optional !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional !match?: Clause<PrimitiveSelector["match"]>
                                            • Optional !qref?: Selector["qref"]
                                            • Optional !ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional !selector?: Selector["selector"]
                                            • Optional !tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional !truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • Optional contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional like?: Clause<PrimitiveSelector["like"]>
                                            • Optional lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional match?: Clause<PrimitiveSelector["match"]>
                                            • Optional qref?: Clause<[string, [Options, ...Selector[]]]>
                                            • Optional ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional selector?: Clause<Selector>
                                            • Optional tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • type: "&" | "|" | "!&" | "!|"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.SerializedEntityData.html b/docs/api/latest/types/_nymphjs_client.SerializedEntityData.html index 90ecbc3..9b9481d 100644 --- a/docs/api/latest/types/_nymphjs_client.SerializedEntityData.html +++ b/docs/api/latest/types/_nymphjs_client.SerializedEntityData.html @@ -1 +1 @@ -SerializedEntityData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +SerializedEntityData | Nymph.js 1.0.0-beta.81
                                            SerializedEntityData: {
                                                [k: string]: string;
                                            }

                                            Type declaration

                                            • [k: string]: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.ServerCallResponse.html b/docs/api/latest/types/_nymphjs_client.ServerCallResponse.html index b1a83d4..e234741 100644 --- a/docs/api/latest/types/_nymphjs_client.ServerCallResponse.html +++ b/docs/api/latest/types/_nymphjs_client.ServerCallResponse.html @@ -1 +1 @@ -ServerCallResponse | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +ServerCallResponse | Nymph.js 1.0.0-beta.81
                                            ServerCallResponse: {
                                                entity?: EntityJson;
                                                return: any;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_client.ServerCallStaticResponse.html b/docs/api/latest/types/_nymphjs_client.ServerCallStaticResponse.html index eab2ac2..5dc8f21 100644 --- a/docs/api/latest/types/_nymphjs_client.ServerCallStaticResponse.html +++ b/docs/api/latest/types/_nymphjs_client.ServerCallStaticResponse.html @@ -1 +1 @@ -ServerCallStaticResponse | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +ServerCallStaticResponse | Nymph.js 1.0.0-beta.81
                                            ServerCallStaticResponse: any
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.ACProperties.html b/docs/api/latest/types/_nymphjs_nymph.ACProperties.html index 00156ad..88a275c 100644 --- a/docs/api/latest/types/_nymphjs_nymph.ACProperties.html +++ b/docs/api/latest/types/_nymphjs_nymph.ACProperties.html @@ -1 +1 @@ -ACProperties | Nymph.js 1.0.0-beta.61
                                            ACProperties: {
                                                acFull: (string | null)[] | null;
                                                acGroup: number | null;
                                                acOther: number | null;
                                                acRead: (string | null)[] | null;
                                                acUser: number | null;
                                                acWrite: (string | null)[] | null;
                                                group: string | null;
                                                user: string | null;
                                            }

                                            Type declaration

                                            • acFull: (string | null)[] | null
                                            • acGroup: number | null
                                            • acOther: number | null
                                            • acRead: (string | null)[] | null
                                            • acUser: number | null
                                            • acWrite: (string | null)[] | null
                                            • group: string | null
                                            • user: string | null

                                            Generated using TypeDoc

                                            \ No newline at end of file +ACProperties | Nymph.js 1.0.0-beta.81
                                            ACProperties: {
                                                acFull: (string | null)[] | null;
                                                acGroup: number | null;
                                                acOther: number | null;
                                                acRead: (string | null)[] | null;
                                                acUser: number | null;
                                                acWrite: (string | null)[] | null;
                                                group: string | null;
                                                user: string | null;
                                            }

                                            Type declaration

                                            • acFull: (string | null)[] | null
                                            • acGroup: number | null
                                            • acOther: number | null
                                            • acRead: (string | null)[] | null
                                            • acUser: number | null
                                            • acWrite: (string | null)[] | null
                                            • group: string | null
                                            • user: string | null
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.Clause.html b/docs/api/latest/types/_nymphjs_nymph.Clause.html index 388e1f4..21b20f6 100644 --- a/docs/api/latest/types/_nymphjs_nymph.Clause.html +++ b/docs/api/latest/types/_nymphjs_nymph.Clause.html @@ -1 +1 @@ -Clause | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +Clause | Nymph.js 1.0.0-beta.81
                                            Clause<C>: C | Exclude<C, undefined>[]

                                            Type Parameters

                                            • C
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.EntityConstructor.html b/docs/api/latest/types/_nymphjs_nymph.EntityConstructor.html index 475fd0d..ef9b1b6 100644 --- a/docs/api/latest/types/_nymphjs_nymph.EntityConstructor.html +++ b/docs/api/latest/types/_nymphjs_nymph.EntityConstructor.html @@ -1 +1 @@ -EntityConstructor | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityConstructor | Nymph.js 1.0.0-beta.81
                                            EntityConstructor<D, E>: (new (...args) => E) & {
                                                [k in keyof typeof Entity]: typeof Entity[k]
                                            }

                                            Type Parameters

                                            Type declaration

                                              • new (...args): E
                                              • Parameters

                                                • Rest ...args: any[]

                                                Returns E

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.EntityData.html b/docs/api/latest/types/_nymphjs_nymph.EntityData.html index 20e2d5d..1b38514 100644 --- a/docs/api/latest/types/_nymphjs_nymph.EntityData.html +++ b/docs/api/latest/types/_nymphjs_nymph.EntityData.html @@ -1 +1 @@ -EntityData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityData | Nymph.js 1.0.0-beta.81
                                            EntityData: {
                                                [k: string]: any;
                                            }

                                            Type declaration

                                            • [k: string]: any
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.EntityDataType.html b/docs/api/latest/types/_nymphjs_nymph.EntityDataType.html index 3ce4a02..6d6dee5 100644 --- a/docs/api/latest/types/_nymphjs_nymph.EntityDataType.html +++ b/docs/api/latest/types/_nymphjs_nymph.EntityDataType.html @@ -1 +1 @@ -EntityDataType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityDataType | Nymph.js 1.0.0-beta.81
                                            EntityDataType<T>: T extends Entity<infer DataType>
                                                ? DataType
                                                : never

                                            Type Parameters

                                            • T
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.EntityInstanceType.html b/docs/api/latest/types/_nymphjs_nymph.EntityInstanceType.html index 18e6439..a12e624 100644 --- a/docs/api/latest/types/_nymphjs_nymph.EntityInstanceType.html +++ b/docs/api/latest/types/_nymphjs_nymph.EntityInstanceType.html @@ -1 +1 @@ -EntityInstanceType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityInstanceType | Nymph.js 1.0.0-beta.81
                                            EntityInstanceType<T>: T extends (new () => infer E)
                                                ? E & EntityDataType<E>
                                                : never

                                            Type Parameters

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.EntityJson.html b/docs/api/latest/types/_nymphjs_nymph.EntityJson.html index 97c517a..d37c9ed 100644 --- a/docs/api/latest/types/_nymphjs_nymph.EntityJson.html +++ b/docs/api/latest/types/_nymphjs_nymph.EntityJson.html @@ -1 +1 @@ -EntityJson | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityJson | Nymph.js 1.0.0-beta.81
                                            EntityJson: {
                                                cdate: number | null;
                                                class: string;
                                                data: EntityData;
                                                guid: string | null;
                                                mdate: number | null;
                                                tags: string[];
                                            }

                                            Type declaration

                                            • cdate: number | null
                                            • class: string
                                            • data: EntityData
                                            • guid: string | null
                                            • mdate: number | null
                                            • tags: string[]
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.EntityPatch.html b/docs/api/latest/types/_nymphjs_nymph.EntityPatch.html index 7393224..a06dc2c 100644 --- a/docs/api/latest/types/_nymphjs_nymph.EntityPatch.html +++ b/docs/api/latest/types/_nymphjs_nymph.EntityPatch.html @@ -1 +1 @@ -EntityPatch | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityPatch | Nymph.js 1.0.0-beta.81
                                            EntityPatch: {
                                                addTags: string[];
                                                class: string;
                                                guid: string;
                                                mdate: number | null;
                                                removeTags: string[];
                                                set: EntityData;
                                                unset: string[];
                                            }

                                            Type declaration

                                            • addTags: string[]
                                            • class: string
                                            • guid: string
                                            • mdate: number | null
                                            • removeTags: string[]
                                            • set: EntityData
                                            • unset: string[]
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.EntityReference.html b/docs/api/latest/types/_nymphjs_nymph.EntityReference.html index 38f56ef..8e41eba 100644 --- a/docs/api/latest/types/_nymphjs_nymph.EntityReference.html +++ b/docs/api/latest/types/_nymphjs_nymph.EntityReference.html @@ -1 +1 @@ -EntityReference | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EntityReference | Nymph.js 1.0.0-beta.81
                                            EntityReference: ["nymph_entity_reference", string, string]
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.FormattedSelector.html b/docs/api/latest/types/_nymphjs_nymph.FormattedSelector.html index a41688c..19ed039 100644 --- a/docs/api/latest/types/_nymphjs_nymph.FormattedSelector.html +++ b/docs/api/latest/types/_nymphjs_nymph.FormattedSelector.html @@ -1 +1 @@ -FormattedSelector | Nymph.js 1.0.0-beta.61
                                            FormattedSelector: {
                                                !contain?: PrimitiveSelector["contain"][];
                                                !defined?: PrimitiveSelector["defined"][][];
                                                !equal?: PrimitiveSelector["equal"][];
                                                !gt?: PrimitiveSelector["gt"][];
                                                !gte?: PrimitiveSelector["gte"][];
                                                !guid?: PrimitiveSelector["guid"][][];
                                                !ilike?: PrimitiveSelector["ilike"][];
                                                !imatch?: PrimitiveSelector["imatch"][];
                                                !like?: PrimitiveSelector["like"][];
                                                !lt?: PrimitiveSelector["lt"][];
                                                !lte?: PrimitiveSelector["lte"][];
                                                !match?: PrimitiveSelector["match"][];
                                                !qref?: FormattedSelector["qref"];
                                                !ref?: PrimitiveSelector["ref"][];
                                                !selector?: FormattedSelector["selector"];
                                                !tag?: PrimitiveSelector["tag"][][];
                                                !truthy?: PrimitiveSelector["truthy"][][];
                                                contain?: PrimitiveSelector["contain"][];
                                                defined?: PrimitiveSelector["defined"][][];
                                                equal?: PrimitiveSelector["equal"][];
                                                gt?: PrimitiveSelector["gt"][];
                                                gte?: PrimitiveSelector["gte"][];
                                                guid?: PrimitiveSelector["guid"][][];
                                                ilike?: PrimitiveSelector["ilike"][];
                                                imatch?: PrimitiveSelector["imatch"][];
                                                like?: PrimitiveSelector["like"][];
                                                lt?: PrimitiveSelector["lt"][];
                                                lte?: PrimitiveSelector["lte"][];
                                                match?: PrimitiveSelector["match"][];
                                                qref?: [string, [Options, ...FormattedSelector[]]][];
                                                ref?: PrimitiveSelector["ref"][];
                                                selector?: FormattedSelector[];
                                                tag?: PrimitiveSelector["tag"][][];
                                                truthy?: PrimitiveSelector["truthy"][][];
                                                type: "&" | "|" | "!&" | "!|";
                                            }

                                            Type declaration

                                            • Optional !contain?: PrimitiveSelector["contain"][]
                                            • Optional !defined?: PrimitiveSelector["defined"][][]
                                            • Optional !equal?: PrimitiveSelector["equal"][]
                                            • Optional !gt?: PrimitiveSelector["gt"][]
                                            • Optional !gte?: PrimitiveSelector["gte"][]
                                            • Optional !guid?: PrimitiveSelector["guid"][][]
                                            • Optional !ilike?: PrimitiveSelector["ilike"][]
                                            • Optional !imatch?: PrimitiveSelector["imatch"][]
                                            • Optional !like?: PrimitiveSelector["like"][]
                                            • Optional !lt?: PrimitiveSelector["lt"][]
                                            • Optional !lte?: PrimitiveSelector["lte"][]
                                            • Optional !match?: PrimitiveSelector["match"][]
                                            • Optional !qref?: FormattedSelector["qref"]
                                            • Optional !ref?: PrimitiveSelector["ref"][]
                                            • Optional !selector?: FormattedSelector["selector"]
                                            • Optional !tag?: PrimitiveSelector["tag"][][]
                                            • Optional !truthy?: PrimitiveSelector["truthy"][][]
                                            • Optional contain?: PrimitiveSelector["contain"][]
                                            • Optional defined?: PrimitiveSelector["defined"][][]
                                            • Optional equal?: PrimitiveSelector["equal"][]
                                            • Optional gt?: PrimitiveSelector["gt"][]
                                            • Optional gte?: PrimitiveSelector["gte"][]
                                            • Optional guid?: PrimitiveSelector["guid"][][]
                                            • Optional ilike?: PrimitiveSelector["ilike"][]
                                            • Optional imatch?: PrimitiveSelector["imatch"][]
                                            • Optional like?: PrimitiveSelector["like"][]
                                            • Optional lt?: PrimitiveSelector["lt"][]
                                            • Optional lte?: PrimitiveSelector["lte"][]
                                            • Optional match?: PrimitiveSelector["match"][]
                                            • Optional qref?: [string, [Options, ...FormattedSelector[]]][]
                                            • Optional ref?: PrimitiveSelector["ref"][]
                                            • Optional selector?: FormattedSelector[]
                                            • Optional tag?: PrimitiveSelector["tag"][][]
                                            • Optional truthy?: PrimitiveSelector["truthy"][][]
                                            • type: "&" | "|" | "!&" | "!|"

                                            Generated using TypeDoc

                                            \ No newline at end of file +FormattedSelector | Nymph.js 1.0.0-beta.81
                                            FormattedSelector: {
                                                !contain?: PrimitiveSelector["contain"][];
                                                !defined?: PrimitiveSelector["defined"][][];
                                                !equal?: PrimitiveSelector["equal"][];
                                                !gt?: PrimitiveSelector["gt"][];
                                                !gte?: PrimitiveSelector["gte"][];
                                                !guid?: PrimitiveSelector["guid"][][];
                                                !ilike?: PrimitiveSelector["ilike"][];
                                                !imatch?: PrimitiveSelector["imatch"][];
                                                !like?: PrimitiveSelector["like"][];
                                                !lt?: PrimitiveSelector["lt"][];
                                                !lte?: PrimitiveSelector["lte"][];
                                                !match?: PrimitiveSelector["match"][];
                                                !qref?: FormattedSelector["qref"];
                                                !ref?: PrimitiveSelector["ref"][];
                                                !selector?: FormattedSelector["selector"];
                                                !tag?: PrimitiveSelector["tag"][][];
                                                !truthy?: PrimitiveSelector["truthy"][][];
                                                contain?: PrimitiveSelector["contain"][];
                                                defined?: PrimitiveSelector["defined"][][];
                                                equal?: PrimitiveSelector["equal"][];
                                                gt?: PrimitiveSelector["gt"][];
                                                gte?: PrimitiveSelector["gte"][];
                                                guid?: PrimitiveSelector["guid"][][];
                                                ilike?: PrimitiveSelector["ilike"][];
                                                imatch?: PrimitiveSelector["imatch"][];
                                                like?: PrimitiveSelector["like"][];
                                                lt?: PrimitiveSelector["lt"][];
                                                lte?: PrimitiveSelector["lte"][];
                                                match?: PrimitiveSelector["match"][];
                                                qref?: [string, [Options, ...FormattedSelector[]]][];
                                                ref?: PrimitiveSelector["ref"][];
                                                selector?: FormattedSelector[];
                                                tag?: PrimitiveSelector["tag"][][];
                                                truthy?: PrimitiveSelector["truthy"][][];
                                                type: "&" | "|" | "!&" | "!|";
                                            }

                                            Type declaration

                                            • Optional !contain?: PrimitiveSelector["contain"][]
                                            • Optional !defined?: PrimitiveSelector["defined"][][]
                                            • Optional !equal?: PrimitiveSelector["equal"][]
                                            • Optional !gt?: PrimitiveSelector["gt"][]
                                            • Optional !gte?: PrimitiveSelector["gte"][]
                                            • Optional !guid?: PrimitiveSelector["guid"][][]
                                            • Optional !ilike?: PrimitiveSelector["ilike"][]
                                            • Optional !imatch?: PrimitiveSelector["imatch"][]
                                            • Optional !like?: PrimitiveSelector["like"][]
                                            • Optional !lt?: PrimitiveSelector["lt"][]
                                            • Optional !lte?: PrimitiveSelector["lte"][]
                                            • Optional !match?: PrimitiveSelector["match"][]
                                            • Optional !qref?: FormattedSelector["qref"]
                                            • Optional !ref?: PrimitiveSelector["ref"][]
                                            • Optional !selector?: FormattedSelector["selector"]
                                            • Optional !tag?: PrimitiveSelector["tag"][][]
                                            • Optional !truthy?: PrimitiveSelector["truthy"][][]
                                            • Optional contain?: PrimitiveSelector["contain"][]
                                            • Optional defined?: PrimitiveSelector["defined"][][]
                                            • Optional equal?: PrimitiveSelector["equal"][]
                                            • Optional gt?: PrimitiveSelector["gt"][]
                                            • Optional gte?: PrimitiveSelector["gte"][]
                                            • Optional guid?: PrimitiveSelector["guid"][][]
                                            • Optional ilike?: PrimitiveSelector["ilike"][]
                                            • Optional imatch?: PrimitiveSelector["imatch"][]
                                            • Optional like?: PrimitiveSelector["like"][]
                                            • Optional lt?: PrimitiveSelector["lt"][]
                                            • Optional lte?: PrimitiveSelector["lte"][]
                                            • Optional match?: PrimitiveSelector["match"][]
                                            • Optional qref?: [string, [Options, ...FormattedSelector[]]][]
                                            • Optional ref?: PrimitiveSelector["ref"][]
                                            • Optional selector?: FormattedSelector[]
                                            • Optional tag?: PrimitiveSelector["tag"][][]
                                            • Optional truthy?: PrimitiveSelector["truthy"][][]
                                            • type: "&" | "|" | "!&" | "!|"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterCommitTransactionCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterCommitTransactionCallback.html index 1bfbc53..2c89ed8 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterCommitTransactionCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterCommitTransactionCallback.html @@ -1 +1 @@ -NymphAfterCommitTransactionCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterCommitTransactionCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterCommitTransactionCallback: ((nymph, name, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, name, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • name: string
                                                • result: boolean

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityByIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityByIDCallback.html index 9c74e78..63c55b4 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityByIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityByIDCallback.html @@ -1 +1 @@ -NymphAfterDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterDeleteEntityByIDCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityCallback.html index 7e25715..ad176bd 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteEntityCallback.html @@ -1 +1 @@ -NymphAfterDeleteEntityCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterDeleteEntityCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterDeleteEntityCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteUIDCallback.html index ab427d9..a3ab192 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterDeleteUIDCallback.html @@ -1 +1 @@ -NymphAfterDeleteUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterDeleteUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterDeleteUIDCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterNewUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterNewUIDCallback.html index 5c219b6..532ab4a 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterNewUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterNewUIDCallback.html @@ -1 +1 @@ -NymphAfterNewUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterNewUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterNewUIDCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<number | null>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterRenameUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterRenameUIDCallback.html index c5b75bb..84db597 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterRenameUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterRenameUIDCallback.html @@ -1 +1 @@ -NymphAfterRenameUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterRenameUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterRenameUIDCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterRollbackTransactionCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterRollbackTransactionCallback.html index 21c5770..24d4cd8 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterRollbackTransactionCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterRollbackTransactionCallback.html @@ -1 +1 @@ -NymphAfterRollbackTransactionCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterRollbackTransactionCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterRollbackTransactionCallback: ((nymph, name, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, name, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • name: string
                                                • result: boolean

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterSaveEntityCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterSaveEntityCallback.html index bab7fdc..4c3cd0e 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterSaveEntityCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterSaveEntityCallback.html @@ -1 +1 @@ -NymphAfterSaveEntityCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterSaveEntityCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterSaveEntityCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterSetUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterSetUIDCallback.html index c9de7f4..239e2c4 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterSetUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterSetUIDCallback.html @@ -1 +1 @@ -NymphAfterSetUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterSetUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterSetUIDCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphAfterStartTransactionCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphAfterStartTransactionCallback.html index 234cccd..b158a87 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphAfterStartTransactionCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphAfterStartTransactionCallback.html @@ -1 +1 @@ -NymphAfterStartTransactionCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphAfterStartTransactionCallback | Nymph.js 1.0.0-beta.81
                                            NymphAfterStartTransactionCallback: ((nymph, name, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, name, result): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeCommitTransactionCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeCommitTransactionCallback.html index 9bed5fc..f157e1a 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeCommitTransactionCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeCommitTransactionCallback.html @@ -1 +1 @@ -NymphBeforeCommitTransactionCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeCommitTransactionCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeCommitTransactionCallback: ((nymph, name) => Promise<void>)

                                            Type declaration

                                              • (nymph, name): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityByIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityByIDCallback.html index 0707a16..4d9360a 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityByIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityByIDCallback.html @@ -1 +1 @@ -NymphBeforeDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeDeleteEntityByIDCallback: ((nymph, guid, className?) => Promise<void>)

                                            Type declaration

                                              • (nymph, guid, className?): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • guid: string
                                                • Optional className: string

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityCallback.html index 93bc3ae..712241d 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteEntityCallback.html @@ -1 +1 @@ -NymphBeforeDeleteEntityCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeDeleteEntityCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeDeleteEntityCallback: ((nymph, entity) => Promise<void>)

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteUIDCallback.html index 78eafd1..c1a6ae6 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeDeleteUIDCallback.html @@ -1 +1 @@ -NymphBeforeDeleteUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeDeleteUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeDeleteUIDCallback: ((nymph, name) => Promise<void>)

                                            Type declaration

                                              • (nymph, name): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntitiesCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntitiesCallback.html index 7a6928c..130ab09 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntitiesCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntitiesCallback.html @@ -1 +1 @@ -NymphBeforeGetEntitiesCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeGetEntitiesCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeGetEntitiesCallback: ((nymph, options, selectors) => Promise<void>)

                                            Type declaration

                                              • (nymph, options, selectors): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntityCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntityCallback.html index 38f47d1..48d077d 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntityCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeGetEntityCallback.html @@ -1 +1 @@ -NymphBeforeGetEntityCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeGetEntityCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeGetEntityCallback: ((nymph, options, selectors) => Promise<void>)

                                            Type declaration

                                              • (nymph, options, selectors): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeNewUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeNewUIDCallback.html index 3e3b4ff..169e1b9 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeNewUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeNewUIDCallback.html @@ -1 +1 @@ -NymphBeforeNewUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeNewUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeNewUIDCallback: ((nymph, name) => Promise<void>)

                                            Type declaration

                                              • (nymph, name): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRenameUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRenameUIDCallback.html index 80f1dfa..1d03305 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRenameUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRenameUIDCallback.html @@ -1 +1 @@ -NymphBeforeRenameUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeRenameUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeRenameUIDCallback: ((nymph, oldName, newName) => Promise<void>)

                                            Type declaration

                                              • (nymph, oldName, newName): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • oldName: string
                                                • newName: string

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRollbackTransactionCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRollbackTransactionCallback.html index bf8e287..39ecea1 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRollbackTransactionCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeRollbackTransactionCallback.html @@ -1 +1 @@ -NymphBeforeRollbackTransactionCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeRollbackTransactionCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeRollbackTransactionCallback: ((nymph, name) => Promise<void>)

                                            Type declaration

                                              • (nymph, name): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSaveEntityCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSaveEntityCallback.html index 803994d..8e0b7c6 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSaveEntityCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSaveEntityCallback.html @@ -1 +1 @@ -NymphBeforeSaveEntityCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeSaveEntityCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeSaveEntityCallback: ((nymph, entity) => Promise<void>)

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSetUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSetUIDCallback.html index bfe5f33..3d980ac 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSetUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeSetUIDCallback.html @@ -1 +1 @@ -NymphBeforeSetUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeSetUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeSetUIDCallback: ((nymph, name, value) => Promise<void>)

                                            Type declaration

                                              • (nymph, name, value): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • name: string
                                                • value: number

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeStartTransactionCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeStartTransactionCallback.html index f438d50..524319d 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphBeforeStartTransactionCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphBeforeStartTransactionCallback.html @@ -1 +1 @@ -NymphBeforeStartTransactionCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphBeforeStartTransactionCallback | Nymph.js 1.0.0-beta.81
                                            NymphBeforeStartTransactionCallback: ((nymph, name) => Promise<void>)

                                            Type declaration

                                              • (nymph, name): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphConnectCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphConnectCallback.html index db9dfb7..eb89df1 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphConnectCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphConnectCallback.html @@ -1 +1 @@ -NymphConnectCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphConnectCallback | Nymph.js 1.0.0-beta.81
                                            NymphConnectCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphDisconnectCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphDisconnectCallback.html index b716fba..5ca9115 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphDisconnectCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphDisconnectCallback.html @@ -1 +1 @@ -NymphDisconnectCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphDisconnectCallback | Nymph.js 1.0.0-beta.81
                                            NymphDisconnectCallback: ((nymph, result) => Promise<void>)

                                            Type declaration

                                              • (nymph, result): Promise<void>
                                              • Parameters

                                                • nymph: Nymph
                                                • result: Promise<boolean>

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphEventType.html b/docs/api/latest/types/_nymphjs_nymph.NymphEventType.html index d1ef43b..abba3ac 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphEventType.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphEventType.html @@ -1 +1 @@ -NymphEventType | Nymph.js 1.0.0-beta.61
                                            NymphEventType: "connect" | "disconnect" | "query" | "beforeGetEntity" | "beforeGetEntities" | "beforeSaveEntity" | "afterSaveEntity" | "failedSaveEntity" | "beforeDeleteEntity" | "afterDeleteEntity" | "failedDeleteEntity" | "beforeDeleteEntityByID" | "afterDeleteEntityByID" | "failedDeleteEntityByID" | "beforeNewUID" | "afterNewUID" | "failedNewUID" | "beforeSetUID" | "afterSetUID" | "failedSetUID" | "beforeRenameUID" | "afterRenameUID" | "failedRenameUID" | "beforeDeleteUID" | "afterDeleteUID" | "failedDeleteUID" | "beforeStartTransaction" | "afterStartTransaction" | "beforeCommitTransaction" | "afterCommitTransaction" | "beforeRollbackTransaction" | "afterRollbackTransaction"

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphEventType | Nymph.js 1.0.0-beta.81
                                            NymphEventType: "connect" | "disconnect" | "query" | "beforeGetEntity" | "beforeGetEntities" | "beforeSaveEntity" | "afterSaveEntity" | "failedSaveEntity" | "beforeDeleteEntity" | "afterDeleteEntity" | "failedDeleteEntity" | "beforeDeleteEntityByID" | "afterDeleteEntityByID" | "failedDeleteEntityByID" | "beforeNewUID" | "afterNewUID" | "failedNewUID" | "beforeSetUID" | "afterSetUID" | "failedSetUID" | "beforeRenameUID" | "afterRenameUID" | "failedRenameUID" | "beforeDeleteUID" | "afterDeleteUID" | "failedDeleteUID" | "beforeStartTransaction" | "afterStartTransaction" | "beforeCommitTransaction" | "afterCommitTransaction" | "beforeRollbackTransaction" | "afterRollbackTransaction"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityByIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityByIDCallback.html index 49cffd7..d81c91b 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityByIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityByIDCallback.html @@ -1 +1 @@ -NymphFailedDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphFailedDeleteEntityByIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphFailedDeleteEntityByIDCallback: ((nymph, error) => Promise<void>)

                                            Type declaration

                                              • (nymph, error): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityCallback.html index 64df08f..09654ba 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteEntityCallback.html @@ -1 +1 @@ -NymphFailedDeleteEntityCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphFailedDeleteEntityCallback | Nymph.js 1.0.0-beta.81
                                            NymphFailedDeleteEntityCallback: ((nymph, error) => Promise<void>)

                                            Type declaration

                                              • (nymph, error): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteUIDCallback.html index 8e9f92a..f6d539e 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphFailedDeleteUIDCallback.html @@ -1 +1 @@ -NymphFailedDeleteUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphFailedDeleteUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphFailedDeleteUIDCallback: ((nymph, error) => Promise<void>)

                                            Type declaration

                                              • (nymph, error): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphFailedNewUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphFailedNewUIDCallback.html index b38036f..66c1346 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphFailedNewUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphFailedNewUIDCallback.html @@ -1 +1 @@ -NymphFailedNewUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphFailedNewUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphFailedNewUIDCallback: ((nymph, error) => Promise<void>)

                                            Type declaration

                                              • (nymph, error): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphFailedRenameUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphFailedRenameUIDCallback.html index 7966c3e..8d2344c 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphFailedRenameUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphFailedRenameUIDCallback.html @@ -1 +1 @@ -NymphFailedRenameUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphFailedRenameUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphFailedRenameUIDCallback: ((nymph, error) => Promise<void>)

                                            Type declaration

                                              • (nymph, error): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphFailedSaveEntityCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphFailedSaveEntityCallback.html index 0ead061..d08633b 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphFailedSaveEntityCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphFailedSaveEntityCallback.html @@ -1 +1 @@ -NymphFailedSaveEntityCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphFailedSaveEntityCallback | Nymph.js 1.0.0-beta.81
                                            NymphFailedSaveEntityCallback: ((nymph, error) => Promise<void>)

                                            Type declaration

                                              • (nymph, error): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphFailedSetUIDCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphFailedSetUIDCallback.html index 0cbf7e3..f0116c0 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphFailedSetUIDCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphFailedSetUIDCallback.html @@ -1 +1 @@ -NymphFailedSetUIDCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +NymphFailedSetUIDCallback | Nymph.js 1.0.0-beta.81
                                            NymphFailedSetUIDCallback: ((nymph, error) => Promise<void>)

                                            Type declaration

                                              • (nymph, error): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.NymphQueryCallback.html b/docs/api/latest/types/_nymphjs_nymph.NymphQueryCallback.html index a9ab378..faaf48a 100644 --- a/docs/api/latest/types/_nymphjs_nymph.NymphQueryCallback.html +++ b/docs/api/latest/types/_nymphjs_nymph.NymphQueryCallback.html @@ -1,8 +1,8 @@ -NymphQueryCallback | Nymph.js 1.0.0-beta.61
                                            NymphQueryCallback: ((nymph, options, selectors) => void)

                                            Type declaration

                                              • (nymph, options, selectors): void
                                              • The NymphQueryCallback will be called on both top level and qref queries.

                                                +NymphQueryCallback | Nymph.js 1.0.0-beta.81
                                                NymphQueryCallback: ((nymph, options, selectors) => void)

                                                The NymphQueryCallback will be called on both top level and qref queries.

                                                This is the only callback that is not asynchronous.

                                                This also isn't necessarily run on every "query". It is run before a database query for an entity, but it is not run during PubSub entity change propagation. Therefore, it shouldn't do anything entity specific, instead it should be query specific. For example, throw an error if the user is not permitted to run the query at all.

                                                -

                                                Parameters

                                                Returns void

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.Options.html b/docs/api/latest/types/_nymphjs_nymph.Options.html index 53ed456..9403c85 100644 --- a/docs/api/latest/types/_nymphjs_nymph.Options.html +++ b/docs/api/latest/types/_nymphjs_nymph.Options.html @@ -1 +1,17 @@ -Options | Nymph.js 1.0.0-beta.61
                                            Options<T>: {
                                                class?: T;
                                                limit?: number;
                                                offset?: number;
                                                return?: "entity" | "guid" | "count";
                                                reverse?: boolean;
                                                skipAc?: boolean;
                                                skipCache?: boolean;
                                                sort?: "cdate" | "mdate" | string;
                                                source?: string;
                                            }

                                            Type Parameters

                                            Type declaration

                                            • Optional class?: T
                                            • Optional limit?: number
                                            • Optional offset?: number
                                            • Optional return?: "entity" | "guid" | "count"
                                            • Optional reverse?: boolean
                                            • Optional skipAc?: boolean
                                            • Optional skipCache?: boolean
                                            • Optional sort?: "cdate" | "mdate" | string
                                            • Optional source?: string

                                            Generated using TypeDoc

                                            \ No newline at end of file +Options | Nymph.js 1.0.0-beta.81
                                            Options<T>: {
                                                class?: T;
                                                limit?: number;
                                                offset?: number;
                                                return?: "entity" | "guid" | "count";
                                                reverse?: boolean;
                                                skipAc?: boolean;
                                                skipCache?: boolean;
                                                sort?: "cdate" | "mdate" | string;
                                                source?: string;
                                            }

                                            Type Parameters

                                            Type declaration

                                            • Optional class?: T

                                              The Entity class to query.

                                              +
                                            • Optional limit?: number

                                              The limit of entities to be returned. Not needed when using getEntity, as +it always returns only one.

                                              +
                                            • Optional offset?: number

                                              The offset from the first matching entity, in order, to start retrieving.

                                              +
                                            • Optional return?: "entity" | "guid" | "count"

                                              What to return, the entities with their data, just the GUIDs, or just a +count.

                                              +
                                            • Optional reverse?: boolean

                                              If true, entities will be retrieved from newest to oldest/largest to +smallest (with regard to sort).

                                              +
                                            • Optional skipAc?: boolean

                                              If true, Tilmeld will not filter returned entities according to access +controls. (If Tilmeld is installed.) (This is always set to false by the +REST endpoint and PubSub server.)

                                              +
                                            • Optional skipCache?: boolean

                                              If true, Nymph will skip the cache and retrieve the entity from the DB.

                                              +
                                            • Optional sort?: "cdate" | "mdate" | string

                                              How to sort the entities. Should be "cdate", "mdate", or the name of a +property.

                                              +
                                            • Optional source?: string

                                              Will be 'client' if the query came from a REST request or the PubSub +server. (Mainly used in Tilmeld for access control.)

                                              +
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.OrWithTime.html b/docs/api/latest/types/_nymphjs_nymph.OrWithTime.html index 7a44fbe..61ff5c0 100644 --- a/docs/api/latest/types/_nymphjs_nymph.OrWithTime.html +++ b/docs/api/latest/types/_nymphjs_nymph.OrWithTime.html @@ -1 +1 @@ -OrWithTime | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +OrWithTime | Nymph.js 1.0.0-beta.81
                                            OrWithTime<T>: T | [string, null, string]

                                            Type Parameters

                                            • T
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.Selector.html b/docs/api/latest/types/_nymphjs_nymph.Selector.html index f07bbe8..7dfdb4e 100644 --- a/docs/api/latest/types/_nymphjs_nymph.Selector.html +++ b/docs/api/latest/types/_nymphjs_nymph.Selector.html @@ -1 +1 @@ -Selector | Nymph.js 1.0.0-beta.61
                                            Selector: {
                                                !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                !defined?: Clause<PrimitiveSelector["defined"]>;
                                                !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                !guid?: Clause<PrimitiveSelector["guid"]>;
                                                !ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                !imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                !like?: Clause<PrimitiveSelector["like"]>;
                                                !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                !match?: Clause<PrimitiveSelector["match"]>;
                                                !qref?: Selector["qref"];
                                                !ref?: Clause<PrimitiveSelector["ref"]>;
                                                !selector?: Selector["selector"];
                                                !tag?: Clause<PrimitiveSelector["tag"]>;
                                                !truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                defined?: Clause<PrimitiveSelector["defined"]>;
                                                equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                guid?: Clause<PrimitiveSelector["guid"]>;
                                                ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                like?: Clause<PrimitiveSelector["like"]>;
                                                lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                match?: Clause<PrimitiveSelector["match"]>;
                                                qref?: Clause<[string, [Options, ...Selector[]]]>;
                                                ref?: Clause<PrimitiveSelector["ref"]>;
                                                selector?: Clause<Selector>;
                                                tag?: Clause<PrimitiveSelector["tag"]>;
                                                truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                type: "&" | "|" | "!&" | "!|";
                                            }

                                            Type declaration

                                            • Optional !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional !defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional !guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional !ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional !imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional !like?: Clause<PrimitiveSelector["like"]>
                                            • Optional !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional !match?: Clause<PrimitiveSelector["match"]>
                                            • Optional !qref?: Selector["qref"]
                                            • Optional !ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional !selector?: Selector["selector"]
                                            • Optional !tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional !truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • Optional contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional like?: Clause<PrimitiveSelector["like"]>
                                            • Optional lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional match?: Clause<PrimitiveSelector["match"]>
                                            • Optional qref?: Clause<[string, [Options, ...Selector[]]]>
                                            • Optional ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional selector?: Clause<Selector>
                                            • Optional tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • type: "&" | "|" | "!&" | "!|"

                                            Generated using TypeDoc

                                            \ No newline at end of file +Selector | Nymph.js 1.0.0-beta.81
                                            Selector: {
                                                !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                !defined?: Clause<PrimitiveSelector["defined"]>;
                                                !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                !guid?: Clause<PrimitiveSelector["guid"]>;
                                                !ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                !imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                !like?: Clause<PrimitiveSelector["like"]>;
                                                !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                !match?: Clause<PrimitiveSelector["match"]>;
                                                !qref?: Selector["qref"];
                                                !ref?: Clause<PrimitiveSelector["ref"]>;
                                                !selector?: Selector["selector"];
                                                !tag?: Clause<PrimitiveSelector["tag"]>;
                                                !truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>;
                                                defined?: Clause<PrimitiveSelector["defined"]>;
                                                equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>;
                                                gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>;
                                                gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>;
                                                guid?: Clause<PrimitiveSelector["guid"]>;
                                                ilike?: Clause<PrimitiveSelector["ilike"]>;
                                                imatch?: Clause<PrimitiveSelector["imatch"]>;
                                                like?: Clause<PrimitiveSelector["like"]>;
                                                lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>;
                                                lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>;
                                                match?: Clause<PrimitiveSelector["match"]>;
                                                qref?: Clause<[string, [Options, ...Selector[]]]>;
                                                ref?: Clause<PrimitiveSelector["ref"]>;
                                                selector?: Clause<Selector>;
                                                tag?: Clause<PrimitiveSelector["tag"]>;
                                                truthy?: Clause<PrimitiveSelector["truthy"]>;
                                                type: "&" | "|" | "!&" | "!|";
                                            }

                                            Type declaration

                                            • Optional !contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional !defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional !equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional !gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional !gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional !guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional !ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional !imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional !like?: Clause<PrimitiveSelector["like"]>
                                            • Optional !lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional !lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional !match?: Clause<PrimitiveSelector["match"]>
                                            • Optional !qref?: Selector["qref"]
                                            • Optional !ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional !selector?: Selector["selector"]
                                            • Optional !tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional !truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • Optional contain?: Clause<OrWithTime<PrimitiveSelector["contain"]>>
                                            • Optional defined?: Clause<PrimitiveSelector["defined"]>
                                            • Optional equal?: Clause<OrWithTime<PrimitiveSelector["equal"]>>
                                            • Optional gt?: Clause<OrWithTime<PrimitiveSelector["gt"]>>
                                            • Optional gte?: Clause<OrWithTime<PrimitiveSelector["gte"]>>
                                            • Optional guid?: Clause<PrimitiveSelector["guid"]>
                                            • Optional ilike?: Clause<PrimitiveSelector["ilike"]>
                                            • Optional imatch?: Clause<PrimitiveSelector["imatch"]>
                                            • Optional like?: Clause<PrimitiveSelector["like"]>
                                            • Optional lt?: Clause<OrWithTime<PrimitiveSelector["lt"]>>
                                            • Optional lte?: Clause<OrWithTime<PrimitiveSelector["lte"]>>
                                            • Optional match?: Clause<PrimitiveSelector["match"]>
                                            • Optional qref?: Clause<[string, [Options, ...Selector[]]]>
                                            • Optional ref?: Clause<PrimitiveSelector["ref"]>
                                            • Optional selector?: Clause<Selector>
                                            • Optional tag?: Clause<PrimitiveSelector["tag"]>
                                            • Optional truthy?: Clause<PrimitiveSelector["truthy"]>
                                            • type: "&" | "|" | "!&" | "!|"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_nymph.SerializedEntityData.html b/docs/api/latest/types/_nymphjs_nymph.SerializedEntityData.html index 547b200..d76cfa0 100644 --- a/docs/api/latest/types/_nymphjs_nymph.SerializedEntityData.html +++ b/docs/api/latest/types/_nymphjs_nymph.SerializedEntityData.html @@ -1 +1 @@ -SerializedEntityData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +SerializedEntityData | Nymph.js 1.0.0-beta.81
                                            SerializedEntityData: {
                                                [k: string]: string;
                                            }

                                            Type declaration

                                            • [k: string]: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.AuthenticateMessageData.html b/docs/api/latest/types/_nymphjs_pubsub.AuthenticateMessageData.html index 5c83b04..fd3e085 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.AuthenticateMessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.AuthenticateMessageData.html @@ -1 +1 @@ -AuthenticateMessageData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +AuthenticateMessageData | Nymph.js 1.0.0-beta.81
                                            AuthenticateMessageData: {
                                                action: "authenticate";
                                                authToken: string;
                                                switchToken?: string;
                                            }

                                            Type declaration

                                            • action: "authenticate"
                                            • authToken: string
                                            • Optional switchToken?: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.MessageData.html b/docs/api/latest/types/_nymphjs_pubsub.MessageData.html index d04c051..5e8e7b0 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.MessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.MessageData.html @@ -1 +1 @@ -MessageData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +MessageData | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.MessageOptions.html b/docs/api/latest/types/_nymphjs_pubsub.MessageOptions.html index 139f3be..e7f766d 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.MessageOptions.html +++ b/docs/api/latest/types/_nymphjs_pubsub.MessageOptions.html @@ -1 +1 @@ -MessageOptions | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +MessageOptions | Nymph.js 1.0.0-beta.81
                                            MessageOptions: Options & {
                                                class: string;
                                            }

                                            Type declaration

                                            • class: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.PublishEntityMessageData.html b/docs/api/latest/types/_nymphjs_pubsub.PublishEntityMessageData.html index 7de78e1..999061d 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.PublishEntityMessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.PublishEntityMessageData.html @@ -1 +1 @@ -PublishEntityMessageData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PublishEntityMessageData | Nymph.js 1.0.0-beta.81
                                            PublishEntityMessageData: {
                                                action: "publish";
                                                entity?: EntityJson;
                                                etype: string;
                                                event: "create" | "update" | "delete";
                                                guid: string;
                                            }

                                            Type declaration

                                            • action: "publish"
                                            • Optional entity?: EntityJson
                                            • etype: string
                                            • event: "create" | "update" | "delete"
                                            • guid: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.PublishMessageData.html b/docs/api/latest/types/_nymphjs_pubsub.PublishMessageData.html index 5df0d16..2a4a1d8 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.PublishMessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.PublishMessageData.html @@ -1 +1 @@ -PublishMessageData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PublishMessageData | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.PublishUidMessageData.html b/docs/api/latest/types/_nymphjs_pubsub.PublishUidMessageData.html index 4d5653f..da60a1a 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.PublishUidMessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.PublishUidMessageData.html @@ -1 +1 @@ -PublishUidMessageData | Nymph.js 1.0.0-beta.61
                                            PublishUidMessageData: {
                                                action: "publish";
                                                event: "newUID" | "setUID" | "renameUID" | "deleteUID";
                                                name?: string;
                                                newName?: string;
                                                oldName?: string;
                                                value?: number;
                                            }

                                            Type declaration

                                            • action: "publish"
                                            • event: "newUID" | "setUID" | "renameUID" | "deleteUID"
                                            • Optional name?: string
                                            • Optional newName?: string
                                            • Optional oldName?: string
                                            • Optional value?: number

                                            Generated using TypeDoc

                                            \ No newline at end of file +PublishUidMessageData | Nymph.js 1.0.0-beta.81
                                            PublishUidMessageData: {
                                                action: "publish";
                                                event: "newUID" | "setUID" | "renameUID" | "deleteUID";
                                                name?: string;
                                                newName?: string;
                                                oldName?: string;
                                                value?: number;
                                            }

                                            Type declaration

                                            • action: "publish"
                                            • event: "newUID" | "setUID" | "renameUID" | "deleteUID"
                                            • Optional name?: string
                                            • Optional newName?: string
                                            • Optional oldName?: string
                                            • Optional value?: number
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.QuerySubscribeMessageData.html b/docs/api/latest/types/_nymphjs_pubsub.QuerySubscribeMessageData.html index 29cc1af..2c62232 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.QuerySubscribeMessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.QuerySubscribeMessageData.html @@ -1 +1 @@ -QuerySubscribeMessageData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +QuerySubscribeMessageData | Nymph.js 1.0.0-beta.81
                                            QuerySubscribeMessageData: {
                                                action: "subscribe" | "unsubscribe";
                                                count?: boolean;
                                                query: string;
                                            }

                                            Type declaration

                                            • action: "subscribe" | "unsubscribe"
                                            • Optional count?: boolean
                                            • query: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.QuerySubscriptionData.html b/docs/api/latest/types/_nymphjs_pubsub.QuerySubscriptionData.html index 00cad7d..713c4d1 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.QuerySubscriptionData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.QuerySubscriptionData.html @@ -1,3 +1,3 @@ -QuerySubscriptionData | Nymph.js 1.0.0-beta.61
                                            QuerySubscriptionData: {
                                                count: boolean;
                                                current: string[];
                                                direct: boolean;
                                                qrefParents: {
                                                    etype: string;
                                                    query: string;
                                                }[];
                                                query: string;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.SubscribeMessageData.html b/docs/api/latest/types/_nymphjs_pubsub.SubscribeMessageData.html index f99b80b..905f2f5 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.SubscribeMessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.SubscribeMessageData.html @@ -1 +1 @@ -SubscribeMessageData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +SubscribeMessageData | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_pubsub.UidSubscribeMessageData.html b/docs/api/latest/types/_nymphjs_pubsub.UidSubscribeMessageData.html index bb22590..6bf8585 100644 --- a/docs/api/latest/types/_nymphjs_pubsub.UidSubscribeMessageData.html +++ b/docs/api/latest/types/_nymphjs_pubsub.UidSubscribeMessageData.html @@ -1 +1 @@ -UidSubscribeMessageData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +UidSubscribeMessageData | Nymph.js 1.0.0-beta.81
                                            UidSubscribeMessageData: {
                                                action: "subscribe" | "unsubscribe";
                                                count?: boolean;
                                                uid: string;
                                            }

                                            Type declaration

                                            • action: "subscribe" | "unsubscribe"
                                            • Optional count?: boolean
                                            • uid: string
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_query_parser.BareQueryHandler.html b/docs/api/latest/types/_nymphjs_query_parser.BareQueryHandler.html index 40c16a2..bd2c064 100644 --- a/docs/api/latest/types/_nymphjs_query_parser.BareQueryHandler.html +++ b/docs/api/latest/types/_nymphjs_query_parser.BareQueryHandler.html @@ -1 +1 @@ -BareQueryHandler | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +BareQueryHandler | Nymph.js 1.0.0-beta.81
                                            BareQueryHandler: ((input, entityClass?, defaultFields?) => Partial<Selector>)

                                            Type declaration

                                              • (input, entityClass?, defaultFields?): Partial<Selector>
                                              • Parameters

                                                Returns Partial<Selector>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_query_parser.QRefMap.html b/docs/api/latest/types/_nymphjs_query_parser.QRefMap.html index 9156385..3c5678d 100644 --- a/docs/api/latest/types/_nymphjs_query_parser.QRefMap.html +++ b/docs/api/latest/types/_nymphjs_query_parser.QRefMap.html @@ -1 +1 @@ -QRefMap | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +QRefMap | Nymph.js 1.0.0-beta.81
                                            QRefMap: {
                                                [k: string]: {
                                                    class: EntityConstructor;
                                                    defaultFields?: string[];
                                                };
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_sorter.SortOptions.html b/docs/api/latest/types/_nymphjs_sorter.SortOptions.html index 18fb208..56a2d19 100644 --- a/docs/api/latest/types/_nymphjs_sorter.SortOptions.html +++ b/docs/api/latest/types/_nymphjs_sorter.SortOptions.html @@ -1,5 +1,5 @@ -SortOptions | Nymph.js 1.0.0-beta.61
                                            SortOptions: {
                                                caseSensitive?: boolean;
                                                collatorOptions?: Intl.CollatorOptions;
                                                comparator?: ((a, b) => number);
                                                reverse?: boolean;
                                            }

                                            Type declaration

                                            • Optional caseSensitive?: boolean

                                              Sort case sensitively.

                                              -
                                            • Optional collatorOptions?: Intl.CollatorOptions

                                              Options to pass to Intl.Collator for string comparisons. This overrides the caseSensitive options.

                                              -
                                            • Optional comparator?: ((a, b) => number)
                                                • (a, b): number
                                                • A custom comparator to use. This overrides all other options except reverse.

                                                  -

                                                  Parameters

                                                  • a: any
                                                  • b: any

                                                  Returns number

                                            • Optional reverse?: boolean

                                              Reverse the sort order.

                                              -

                                            Generated using TypeDoc

                                            \ No newline at end of file +SortOptions | Nymph.js 1.0.0-beta.81
                                            SortOptions: {
                                                caseSensitive?: boolean;
                                                collatorOptions?: Intl.CollatorOptions;
                                                comparator?: ((a, b) => number);
                                                reverse?: boolean;
                                            }

                                            Type declaration

                                            • Optional caseSensitive?: boolean

                                              Sort case sensitively.

                                              +
                                            • Optional collatorOptions?: Intl.CollatorOptions

                                              Options to pass to Intl.Collator for string comparisons. This overrides the caseSensitive options.

                                              +
                                            • Optional comparator?: ((a, b) => number)

                                              A custom comparator to use. This overrides all other options except reverse.

                                              +
                                                • (a, b): number
                                                • Parameters

                                                  • a: any
                                                  • b: any

                                                  Returns number

                                            • Optional reverse?: boolean

                                              Reverse the sort order.

                                              +
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.AccessControlData.html b/docs/api/latest/types/_nymphjs_tilmeld.AccessControlData.html index 23bbdd9..1ee995c 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.AccessControlData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.AccessControlData.html @@ -1 +1 @@ -AccessControlData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +AccessControlData | Nymph.js 1.0.0-beta.81
                                            AccessControlData: {
                                                acFull?: (User & UserData | Group & GroupData)[];
                                                acGroup?: number;
                                                acOther?: number;
                                                acRead?: (User & UserData | Group & GroupData)[];
                                                acUser?: number;
                                                acWrite?: (User & UserData | Group & GroupData)[];
                                                group?: Group & GroupData;
                                                user?: User & UserData;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.EventType.html b/docs/api/latest/types/_nymphjs_tilmeld.EventType.html index 38f505c..8e9330e 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.EventType.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.EventType.html @@ -1 +1 @@ -EventType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EventType | Nymph.js 1.0.0-beta.81
                                            EventType: "checkUsername" | "beforeRegister" | "afterRegister" | "beforeLogin" | "afterLogin" | "beforeLogout" | "afterLogout"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.GroupData.html b/docs/api/latest/types/_nymphjs_tilmeld.GroupData.html index 216cb68..9820e02 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.GroupData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.GroupData.html @@ -1,4 +1,4 @@ -GroupData | Nymph.js 1.0.0-beta.61
                                            GroupData: {
                                                abilities?: string[];
                                                avatar?: string;
                                                defaultPrimary?: boolean;
                                                defaultSecondary?: boolean;
                                                email?: string;
                                                enabled?: boolean;
                                                groupname?: string;
                                                name?: string;
                                                parent?: Group & GroupData;
                                                phone?: string;
                                                unverifiedSecondary?: boolean;
                                                user?: User & UserData | null;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLoginCallback.html b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLoginCallback.html index bba94cc..94de1f0 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLoginCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLoginCallback.html @@ -1,3 +1,3 @@ -TilmeldAfterLoginCallback | Nymph.js 1.0.0-beta.61
                                            TilmeldAfterLoginCallback: ((user) => Promise<void>)

                                            Type declaration

                                              • (user): Promise<void>
                                              • This is run before the transaction is committed, and you can perform +TilmeldAfterLoginCallback | Nymph.js 1.0.0-beta.81

                                                TilmeldAfterLoginCallback: ((user) => Promise<void>)

                                                This is run before the transaction is committed, and you can perform additional functions on the transaction, which is available in user.$nymph.

                                                -

                                                Parameters

                                                Returns Promise<void>

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Type declaration

                                              • (user): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLogoutCallback.html b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLogoutCallback.html index 3c96169..ed191ef 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLogoutCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterLogoutCallback.html @@ -1 +1 @@ -TilmeldAfterLogoutCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +TilmeldAfterLogoutCallback | Nymph.js 1.0.0-beta.81
                                            TilmeldAfterLogoutCallback: ((user) => Promise<void>)

                                            Type declaration

                                              • (user): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterRegisterCallback.html b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterRegisterCallback.html index dc6defd..6c4325f 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterRegisterCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldAfterRegisterCallback.html @@ -1 +1 @@ -TilmeldAfterRegisterCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +TilmeldAfterRegisterCallback | Nymph.js 1.0.0-beta.81
                                            TilmeldAfterRegisterCallback: ((user, result) => Promise<void>)

                                            Type declaration

                                              • (user, result): Promise<void>
                                              • Parameters

                                                • user: User & UserData
                                                • result: {
                                                      loggedin: boolean;
                                                      message: string;
                                                  }
                                                  • loggedin: boolean
                                                  • message: string

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLoginCallback.html b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLoginCallback.html index 0592581..2dd5eb0 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLoginCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLoginCallback.html @@ -1,2 +1,2 @@ -TilmeldBeforeLoginCallback | Nymph.js 1.0.0-beta.61
                                            TilmeldBeforeLoginCallback: ((user, data) => Promise<void>)

                                            Type declaration

                                              • (user, data): Promise<void>
                                              • These are run after the authentication checks, but before the login action.

                                                -

                                                Parameters

                                                • user: User & UserData
                                                • data: {
                                                      additionalData?: {
                                                          [k: string]: any;
                                                      };
                                                      password: string;
                                                      username: string;
                                                  }
                                                  • Optional additionalData?: {
                                                        [k: string]: any;
                                                    }
                                                    • [k: string]: any
                                                  • password: string
                                                  • username: string

                                                Returns Promise<void>

                                            Generated using TypeDoc

                                            \ No newline at end of file +TilmeldBeforeLoginCallback | Nymph.js 1.0.0-beta.81
                                            TilmeldBeforeLoginCallback: ((user, data) => Promise<void>)

                                            These are run after the authentication checks, but before the login action.

                                            +

                                            Type declaration

                                              • (user, data): Promise<void>
                                              • Parameters

                                                • user: User & UserData
                                                • data: {
                                                      additionalData?: {
                                                          [k: string]: any;
                                                      };
                                                      password: string;
                                                      username: string;
                                                  }
                                                  • Optional additionalData?: {
                                                        [k: string]: any;
                                                    }
                                                    • [k: string]: any
                                                  • password: string
                                                  • username: string

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLogoutCallback.html b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLogoutCallback.html index 467a705..1f0024f 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLogoutCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeLogoutCallback.html @@ -1 +1 @@ -TilmeldBeforeLogoutCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +TilmeldBeforeLogoutCallback | Nymph.js 1.0.0-beta.81
                                            TilmeldBeforeLogoutCallback: ((user) => Promise<void>)

                                            Type declaration

                                              • (user): Promise<void>
                                              • Parameters

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeRegisterCallback.html b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeRegisterCallback.html index c25abaa..47b9287 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeRegisterCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldBeforeRegisterCallback.html @@ -1,3 +1,3 @@ -TilmeldBeforeRegisterCallback | Nymph.js 1.0.0-beta.61
                                            TilmeldBeforeRegisterCallback: ((user, data) => Promise<void>)

                                            Type declaration

                                              • (user, data): Promise<void>
                                              • Theses are run before the user data checks, so the only checks before are +TilmeldBeforeRegisterCallback | Nymph.js 1.0.0-beta.81

                                                TilmeldBeforeRegisterCallback: ((user, data) => Promise<void>)

                                                Theses are run before the user data checks, so the only checks before are whether registration is allowed and whether the user is already registered.

                                                -

                                                Parameters

                                                • user: User & UserData
                                                • data: {
                                                      additionalData?: {
                                                          [k: string]: any;
                                                      };
                                                      password: string;
                                                  }
                                                  • Optional additionalData?: {
                                                        [k: string]: any;
                                                    }
                                                    • [k: string]: any
                                                  • password: string

                                                Returns Promise<void>

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Type declaration

                                              • (user, data): Promise<void>
                                              • Parameters

                                                • user: User & UserData
                                                • data: {
                                                      additionalData?: {
                                                          [k: string]: any;
                                                      };
                                                      password: string;
                                                  }
                                                  • Optional additionalData?: {
                                                        [k: string]: any;
                                                    }
                                                    • [k: string]: any
                                                  • password: string

                                                Returns Promise<void>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldCheckUsernameCallback.html b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldCheckUsernameCallback.html index 9582aec..dbd0535 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.TilmeldCheckUsernameCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.TilmeldCheckUsernameCallback.html @@ -1,4 +1,4 @@ -TilmeldCheckUsernameCallback | Nymph.js 1.0.0-beta.61
                                            TilmeldCheckUsernameCallback: ((user, data) => Promise<{
                                                message?: string;
                                                result: boolean;
                                            }>)

                                            Type declaration

                                              • (user, data): Promise<{
                                                    message?: string;
                                                    result: boolean;
                                                }>
                                              • This is run when the user has entered an otherwise valid username into the +TilmeldCheckUsernameCallback | Nymph.js 1.0.0-beta.81

                                                TilmeldCheckUsernameCallback: ((user, data) => Promise<{
                                                    message?: string;
                                                    result: boolean;
                                                }>)

                                                This is run when the user has entered an otherwise valid username into the signup form. It should return a result, which when false will stop the process and return the included message, disallowing the username.

                                                -

                                                Parameters

                                                • user: User & UserData
                                                • data: {
                                                      username: string;
                                                  }
                                                  • username: string

                                                Returns Promise<{
                                                    message?: string;
                                                    result: boolean;
                                                }>

                                            Generated using TypeDoc

                                            \ No newline at end of file +

                                            Type declaration

                                              • (user, data): Promise<{
                                                    message?: string;
                                                    result: boolean;
                                                }>
                                              • Parameters

                                                • user: User & UserData
                                                • data: {
                                                      username: string;
                                                  }
                                                  • username: string

                                                Returns Promise<{
                                                    message?: string;
                                                    result: boolean;
                                                }>

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld.UserData.html b/docs/api/latest/types/_nymphjs_tilmeld.UserData.html index 6f525bb..6f84aaf 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld.UserData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld.UserData.html @@ -1,4 +1,4 @@ -UserData | Nymph.js 1.0.0-beta.61
                                            UserData: {
                                                abilities?: string[];
                                                avatar?: string;
                                                cancelEmailAddress?: string;
                                                cancelEmailSecret?: string;
                                                email?: string;
                                                emailChangeDate?: number;
                                                enabled?: boolean;
                                                group?: Group & GroupData;
                                                groups?: (Group & GroupData)[];
                                                inheritAbilities?: boolean;
                                                name?: string;
                                                nameFirst?: string;
                                                nameLast?: string;
                                                nameMiddle?: string;
                                                newEmailAddress?: string;
                                                newEmailSecret?: string;
                                                password?: string;
                                                passwordTemp?: string;
                                                phone?: string;
                                                recoverSecret?: string;
                                                recoverSecretDate?: number;
                                                revokeTokenDate?: number;
                                                salt?: string;
                                                secret?: string;
                                                totpSecret?: string;
                                                username?: string;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.AdminGroupData.html b/docs/api/latest/types/_nymphjs_tilmeld_client.AdminGroupData.html index 84c5b8e..2050052 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.AdminGroupData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.AdminGroupData.html @@ -1 +1 @@ -AdminGroupData | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +AdminGroupData | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.AdminUserData.html b/docs/api/latest/types/_nymphjs_tilmeld_client.AdminUserData.html index 8574a0c..65ff85c 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.AdminUserData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.AdminUserData.html @@ -1,4 +1,4 @@ -AdminUserData | Nymph.js 1.0.0-beta.61
                                            AdminUserData: CurrentUserData & {
                                                cancelEmailAddress?: string;
                                                cancelEmailSecret?: string;
                                                emailChangeDate?: number;
                                                group?: Group & AdminGroupData;
                                                groups?: (Group & AdminGroupData)[];
                                                newEmailAddress?: string;
                                                newEmailSecret?: string;
                                                passwordTemp?: string;
                                                recoverSecret?: string;
                                                recoverSecretDate?: number;
                                                revokeTokenDate?: number;
                                                secret?: string;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.ClientConfig.html b/docs/api/latest/types/_nymphjs_tilmeld_client.ClientConfig.html index 8425e02..fad263d 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.ClientConfig.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.ClientConfig.html @@ -1 +1 @@ -ClientConfig | Nymph.js 1.0.0-beta.61
                                            ClientConfig: {
                                                allowRegistration: boolean;
                                                allowUsernameChange: boolean;
                                                emailUsernames: boolean;
                                                pwRecovery: boolean;
                                                regFields: string[];
                                                unverifiedAccess: boolean;
                                                userFields: string[];
                                                verifyEmail: boolean;
                                            }

                                            Type declaration

                                            • allowRegistration: boolean
                                            • allowUsernameChange: boolean
                                            • emailUsernames: boolean
                                            • pwRecovery: boolean
                                            • regFields: string[]
                                            • unverifiedAccess: boolean
                                            • userFields: string[]
                                            • verifyEmail: boolean

                                            Generated using TypeDoc

                                            \ No newline at end of file +ClientConfig | Nymph.js 1.0.0-beta.81
                                            ClientConfig: {
                                                allowRegistration: boolean;
                                                allowUsernameChange: boolean;
                                                emailUsernames: boolean;
                                                pwRecovery: boolean;
                                                regFields: string[];
                                                unverifiedAccess: boolean;
                                                userFields: string[];
                                                verifyEmail: boolean;
                                            }

                                            Type declaration

                                            • allowRegistration: boolean
                                            • allowUsernameChange: boolean
                                            • emailUsernames: boolean
                                            • pwRecovery: boolean
                                            • regFields: string[]
                                            • unverifiedAccess: boolean
                                            • userFields: string[]
                                            • verifyEmail: boolean
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentGroupData.html b/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentGroupData.html index 8d1a75d..e33f198 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentGroupData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentGroupData.html @@ -1,5 +1,5 @@ -CurrentGroupData | Nymph.js 1.0.0-beta.61
                                            CurrentGroupData: GroupData & {
                                                abilities?: string[];
                                                email?: string;
                                                phone?: string;
                                                user?: User & CurrentUserData | null;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentUserData.html b/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentUserData.html index 91ac08b..011dff9 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentUserData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.CurrentUserData.html @@ -1,4 +1,4 @@ -CurrentUserData | Nymph.js 1.0.0-beta.61
                                            CurrentUserData: UserData & {
                                                abilities?: string[];
                                                email?: string;
                                                group?: Group & CurrentGroupData;
                                                groups?: (Group & CurrentGroupData)[];
                                                inheritAbilities?: boolean;
                                                newEmailAddress?: string;
                                                phone?: string;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.EventType.html b/docs/api/latest/types/_nymphjs_tilmeld_client.EventType.html index b1d2859..25717cd 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.EventType.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.EventType.html @@ -1 +1 @@ -EventType | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +EventType | Nymph.js 1.0.0-beta.81
                                            EventType: "register" | "login" | "logout"
                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.GroupData.html b/docs/api/latest/types/_nymphjs_tilmeld_client.GroupData.html index 41ac814..803861f 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.GroupData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.GroupData.html @@ -1,4 +1,4 @@ -GroupData | Nymph.js 1.0.0-beta.61
                                            GroupData: {
                                                avatar?: string;
                                                defaultPrimary?: boolean;
                                                defaultSecondary?: boolean;
                                                enabled?: boolean;
                                                groupname?: string;
                                                name?: string;
                                                parent?: Group & GroupData;
                                                unverifiedSecondary?: boolean;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.LoginCallback.html b/docs/api/latest/types/_nymphjs_tilmeld_client.LoginCallback.html index 1d8f97d..36f5f09 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.LoginCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.LoginCallback.html @@ -1 +1 @@ -LoginCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +LoginCallback | Nymph.js 1.0.0-beta.81
                                            LoginCallback: ((user) => void)

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.LogoutCallback.html b/docs/api/latest/types/_nymphjs_tilmeld_client.LogoutCallback.html index d7a9841..ed24d2e 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.LogoutCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.LogoutCallback.html @@ -1 +1 @@ -LogoutCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +LogoutCallback | Nymph.js 1.0.0-beta.81
                                            LogoutCallback: ((user) => void)

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.RegisterCallback.html b/docs/api/latest/types/_nymphjs_tilmeld_client.RegisterCallback.html index cb30f38..26cacad 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.RegisterCallback.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.RegisterCallback.html @@ -1 +1 @@ -RegisterCallback | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +RegisterCallback | Nymph.js 1.0.0-beta.81
                                            RegisterCallback: ((user) => void)

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.RegistrationDetails.html b/docs/api/latest/types/_nymphjs_tilmeld_client.RegistrationDetails.html index 6aefd4e..00eb281 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.RegistrationDetails.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.RegistrationDetails.html @@ -1,4 +1,4 @@ -RegistrationDetails | Nymph.js 1.0.0-beta.61
                                            RegistrationDetails: {
                                                additionalData?: {
                                                    [k: string]: any;
                                                };
                                                email?: string;
                                                nameFirst?: string;
                                                nameLast?: string;
                                                password: string;
                                                password2: string;
                                                phone?: string;
                                                username: string;
                                                usernameVerified: boolean;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/types/_nymphjs_tilmeld_client.UserData.html b/docs/api/latest/types/_nymphjs_tilmeld_client.UserData.html index 3c9b3a6..67f1230 100644 --- a/docs/api/latest/types/_nymphjs_tilmeld_client.UserData.html +++ b/docs/api/latest/types/_nymphjs_tilmeld_client.UserData.html @@ -1,8 +1,8 @@ -UserData | Nymph.js 1.0.0-beta.61
                                            UserData: {
                                                avatar?: string;
                                                enabled?: boolean;
                                                name?: string;
                                                nameFirst?: string;
                                                nameLast?: string;
                                                nameMiddle?: string;
                                                username?: string;
                                            }

                                            Type declaration

                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_driver_mysql.MySQLDriverConfigDefaults.html b/docs/api/latest/variables/_nymphjs_driver_mysql.MySQLDriverConfigDefaults.html index 0c0957b..d88e537 100644 --- a/docs/api/latest/variables/_nymphjs_driver_mysql.MySQLDriverConfigDefaults.html +++ b/docs/api/latest/variables/_nymphjs_driver_mysql.MySQLDriverConfigDefaults.html @@ -1 +1 @@ -MySQLDriverConfigDefaults | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +MySQLDriverConfigDefaults | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_driver_postgresql.PostgreSQLDriverConfigDefaults.html b/docs/api/latest/variables/_nymphjs_driver_postgresql.PostgreSQLDriverConfigDefaults.html index 6ac7abc..2fd87b0 100644 --- a/docs/api/latest/variables/_nymphjs_driver_postgresql.PostgreSQLDriverConfigDefaults.html +++ b/docs/api/latest/variables/_nymphjs_driver_postgresql.PostgreSQLDriverConfigDefaults.html @@ -1 +1 @@ -PostgreSQLDriverConfigDefaults | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +PostgreSQLDriverConfigDefaults | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_driver_sqlite3.SQLite3DriverConfigDefaults.html b/docs/api/latest/variables/_nymphjs_driver_sqlite3.SQLite3DriverConfigDefaults.html index b3a4cc7..2e3c9dc 100644 --- a/docs/api/latest/variables/_nymphjs_driver_sqlite3.SQLite3DriverConfigDefaults.html +++ b/docs/api/latest/variables/_nymphjs_driver_sqlite3.SQLite3DriverConfigDefaults.html @@ -1 +1 @@ -SQLite3DriverConfigDefaults | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +SQLite3DriverConfigDefaults | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_nymph.ConfigDefaults.html b/docs/api/latest/variables/_nymphjs_nymph.ConfigDefaults.html index 4386d40..f75b4db 100644 --- a/docs/api/latest/variables/_nymphjs_nymph.ConfigDefaults.html +++ b/docs/api/latest/variables/_nymphjs_nymph.ConfigDefaults.html @@ -1 +1 @@ -ConfigDefaults | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +ConfigDefaults | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_nymph.nymphJoiProps.html b/docs/api/latest/variables/_nymphjs_nymph.nymphJoiProps.html index 2e3925c..859b2b3 100644 --- a/docs/api/latest/variables/_nymphjs_nymph.nymphJoiProps.html +++ b/docs/api/latest/variables/_nymphjs_nymph.nymphJoiProps.html @@ -1 +1 @@ -nymphJoiProps | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +nymphJoiProps | Nymph.js 1.0.0-beta.81
                                            nymphJoiProps: {
                                                cdate: AlternativesSchema<any>;
                                                guid: AlternativesSchema<any>;
                                                mdate: AlternativesSchema<any>;
                                                tags: ArraySchema<any[]>;
                                            }

                                            Type declaration

                                            • cdate: AlternativesSchema<any>
                                            • guid: AlternativesSchema<any>
                                            • mdate: AlternativesSchema<any>
                                            • tags: ArraySchema<any[]>
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_pubsub.ConfigDefaults.html b/docs/api/latest/variables/_nymphjs_pubsub.ConfigDefaults.html index 5216a28..6974624 100644 --- a/docs/api/latest/variables/_nymphjs_pubsub.ConfigDefaults.html +++ b/docs/api/latest/variables/_nymphjs_pubsub.ConfigDefaults.html @@ -1 +1 @@ -ConfigDefaults | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +ConfigDefaults | Nymph.js 1.0.0-beta.81
                                            ConfigDefaults: Config
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_server.statusDescriptions.html b/docs/api/latest/variables/_nymphjs_server.statusDescriptions.html index bb9d595..655eca0 100644 --- a/docs/api/latest/variables/_nymphjs_server.statusDescriptions.html +++ b/docs/api/latest/variables/_nymphjs_server.statusDescriptions.html @@ -1,2 +1,2 @@ -statusDescriptions | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +statusDescriptions | Nymph.js 1.0.0-beta.81
                                            statusDescriptions: {
                                                [k: number]: string;
                                            } = ...

                                            HTTP status code to status text map.

                                            +

                                            Type declaration

                                            • [k: number]: string
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_tilmeld.ConfigDefaults.html b/docs/api/latest/variables/_nymphjs_tilmeld.ConfigDefaults.html index 5c8e4b8..1dda4f8 100644 --- a/docs/api/latest/variables/_nymphjs_tilmeld.ConfigDefaults.html +++ b/docs/api/latest/variables/_nymphjs_tilmeld.ConfigDefaults.html @@ -1 +1 @@ -ConfigDefaults | Nymph.js 1.0.0-beta.61

                                            Generated using TypeDoc

                                            \ No newline at end of file +ConfigDefaults | Nymph.js 1.0.0-beta.81
                                            \ No newline at end of file diff --git a/docs/api/latest/variables/_nymphjs_tilmeld.tilmeldJoiProps.html b/docs/api/latest/variables/_nymphjs_tilmeld.tilmeldJoiProps.html index 3762bb4..607ed07 100644 --- a/docs/api/latest/variables/_nymphjs_tilmeld.tilmeldJoiProps.html +++ b/docs/api/latest/variables/_nymphjs_tilmeld.tilmeldJoiProps.html @@ -1 +1 @@ -tilmeldJoiProps | Nymph.js 1.0.0-beta.61
                                            tilmeldJoiProps: {
                                                acFull: ArraySchema<any[]>;
                                                acGroup: NumberSchema<number>;
                                                acOther: NumberSchema<number>;
                                                acRead: ArraySchema<any[]>;
                                                acUser: NumberSchema<number>;
                                                acWrite: ArraySchema<any[]>;
                                                group: ObjectSchema<any>;
                                                user: ObjectSchema<any>;
                                            }

                                            Type declaration

                                            • acFull: ArraySchema<any[]>
                                            • acGroup: NumberSchema<number>
                                            • acOther: NumberSchema<number>
                                            • acRead: ArraySchema<any[]>
                                            • acUser: NumberSchema<number>
                                            • acWrite: ArraySchema<any[]>
                                            • group: ObjectSchema<any>
                                            • user: ObjectSchema<any>

                                            Generated using TypeDoc

                                            \ No newline at end of file +tilmeldJoiProps | Nymph.js 1.0.0-beta.81
                                            tilmeldJoiProps: {
                                                acFull: ArraySchema<any[]>;
                                                acGroup: NumberSchema<number>;
                                                acOther: NumberSchema<number>;
                                                acRead: ArraySchema<any[]>;
                                                acUser: NumberSchema<number>;
                                                acWrite: ArraySchema<any[]>;
                                                group: ObjectSchema<any>;
                                                user: ObjectSchema<any>;
                                            }

                                            Type declaration

                                            • acFull: ArraySchema<any[]>
                                            • acGroup: NumberSchema<number>
                                            • acOther: NumberSchema<number>
                                            • acRead: ArraySchema<any[]>
                                            • acUser: NumberSchema<number>
                                            • acWrite: ArraySchema<any[]>
                                            • group: ObjectSchema<any>
                                            • user: ObjectSchema<any>
                                            \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 7c0f1ed..dfcc989 100644 --- a/docs/index.html +++ b/docs/index.html @@ -11,169 +11,53 @@ name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" /> - - - - - - - - - Nymph.js - JavaScript Data Objects + + + + + + + + + + Nymph.js - JavaScript Data Objects - - - - - - - -
                                            - - - - -

                                            Features

                                            Picture writing a SQL query on the frontend and saying, "update this array whenever the results for this query change." Now instead of SQL, your query is a simple JSON structure and has automatic access control built right in. You can have all your logic on the frontend, or the backend if you prefer, - because you work with the data all the same. That's Nymph. -

                                            -
                                            -

                                            Speedy

                                            -

                                            Nymph is lean and fast. Not just in processing, but Nymph can be used - for rapid prototyping. -

                                            -
                                            -

                                            Open Source

                                            -

                                            Nymph is licensed under the Apache-2 license. It provides all you need + because you work with the data all the same. That's Nymph.

                                            Speedy

                                            Nymph is lean and fast. Not just in processing, but Nymph can be used + for rapid prototyping.

                                            Open Source

                                            Nymph is licensed under the Apache-2 license. It provides all you need to build a backend for your app and the frontend tools you'll need as - well. -

                                            -
                                            -

                                            Reactive

                                            -

                                            Nymph's publish/subscribe server makes it easy to build collaborative apps. You can subscribe to complex queries from the client and be notified - when the queries' results have changed. -

                                            -
                                            -

                                            Secure

                                            -

                                            Nymph provides an optional user and group manager called Tilmeld that - secures your app based on granular permission controls. -

                                            - -

                                            Framework Agnostic

                                            -

                                            Nymph is very easy to integrate into React, Svelte, Angular, Ember, and - more. -

                                            - -

                                            Nymph's easy querying on the server and client makes it perfect for building + well.

                                            Reactive

                                            Nymph's publish/subscribe server makes it easy to build collaborative apps. You can subscribe to complex queries from the client and be notified + when the queries' results have changed.

                                            Secure

                                            Nymph provides an optional user and group manager called Tilmeld that + secures your app based on granular permission controls.

                                            Framework Agnostic

                                            Nymph is very easy to integrate into React, Svelte, Angular, Ember, and + more.

                                            Nymph's easy querying on the server and client makes it perfect for building complex apps with any frontend framework. Because you don't have to write SQL, almost all of your logic can be on the client side, if you prefer. You can also use backend logic in the client as if it were written on the - front-end with automatic asynchronous server calls. -

                                            -

                                            Nymph's REST server package makes it easy to integrate anywhere in your app. + front-end with automatic asynchronous server calls.

                                            Nymph's REST server package makes it easy to integrate anywhere in your app. It provides an Express middleware that you can place on any arbitrary - endpoint. -

                                            -

                                            Nymph's PubSub server package makes synchronizing your client with pushed + endpoint.

                                            Nymph's PubSub server package makes synchronizing your client with pushed changes from the server super easy. With a reactive framework on the frontend, your UI will update in near real time to changes to any entities - that match your subscribed queries. -

                                            - -

                                            Full API Docs

                                            - -

                                            If you want to really dive deep into Nymph, you can also browse the API docs, which covers every part of Nymph's API. -

                                            - -

                                            Migration

                                            - -

                                            In 2021, Nymph was migrated from PHP to Node.js. You can also visit the site for the legacy version. -

                                            -
                                            - - -
                                            - - - - - + San Marcos, CA 92078