@iebh/tera-fy 2.3.7 → 2.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/lib/projectFile.js +118 -6
  3. package/dist/lib/projectFile.js.map +1 -1
  4. package/dist/lib/syncro/entities.d.ts +7 -1
  5. package/dist/lib/syncro/entities.js +79 -95
  6. package/dist/lib/syncro/entities.js.map +1 -1
  7. package/dist/lib/syncro/keyed.js +24 -23
  8. package/dist/lib/syncro/keyed.js.map +1 -1
  9. package/dist/lib/syncro/syncro.d.ts +15 -2
  10. package/dist/lib/syncro/syncro.js +124 -43
  11. package/dist/lib/syncro/syncro.js.map +1 -1
  12. package/dist/lib/terafy.bootstrapper.js +11 -11
  13. package/dist/lib/terafy.bootstrapper.js.map +1 -1
  14. package/dist/lib/terafy.client.js +157 -158
  15. package/dist/lib/terafy.client.js.map +1 -1
  16. package/dist/lib/terafy.proxy.js +32 -27
  17. package/dist/lib/terafy.proxy.js.map +1 -1
  18. package/dist/lib/terafy.server.js +52 -54
  19. package/dist/lib/terafy.server.js.map +1 -1
  20. package/dist/plugin.vue2.es2019.js +27 -27
  21. package/dist/plugins/firebase.js +22 -10
  22. package/dist/plugins/firebase.js.map +1 -1
  23. package/dist/plugins/vue2.d.ts +1 -2
  24. package/dist/plugins/vue2.js +24 -17
  25. package/dist/plugins/vue2.js.map +1 -1
  26. package/dist/plugins/vue3.d.ts +1 -2
  27. package/dist/plugins/vue3.js +7 -11
  28. package/dist/plugins/vue3.js.map +1 -1
  29. package/dist/terafy.bootstrapper.es2019.js +2 -2
  30. package/dist/terafy.bootstrapper.js +2 -2
  31. package/dist/terafy.es2019.js +2 -2
  32. package/dist/terafy.js +1 -1
  33. package/lib/syncro/entities.ts +94 -103
  34. package/lib/syncro/keyed.ts +1 -0
  35. package/lib/syncro/syncro.ts +44 -8
  36. package/lib/terafy.client.ts +0 -1
  37. package/lib/terafy.server.ts +6 -7
  38. package/package.json +4 -3
  39. package/plugins/vue2.ts +2 -3
  40. package/plugins/vue3.ts +2 -4
  41. package/tsconfig.json +3 -3
package/dist/terafy.js CHANGED
@@ -1,4 +1,4 @@
1
- var Oo=typeof global=="object"&&global&&global.Object===Object&&global,mt=Oo;var jo=typeof self=="object"&&self&&self.Object===Object&&self,Ao=mt||jo||Function("return this")(),c=Ao;var So=c.Symbol,x=So;var Qt=Object.prototype,Io=Qt.hasOwnProperty,_o=Qt.toString,at=x?x.toStringTag:void 0;function Eo(t){var e=Io.call(t,at),r=t[at];try{t[at]=void 0;var o=!0}catch{}var a=_o.call(t);return o&&(e?t[at]=r:delete t[at]),a}var te=Eo;var Fo=Object.prototype,Co=Fo.toString;function Mo(t){return Co.call(t)}var ee=Mo;var No="[object Null]",Ro="[object Undefined]",re=x?x.toStringTag:void 0;function Lo(t){return t==null?t===void 0?Ro:No:re&&re in Object(t)?te(t):ee(t)}var w=Lo;function Bo(t){return t!=null&&typeof t=="object"}var v=Bo;var Do="[object Symbol]";function ko(t){return typeof t=="symbol"||v(t)&&w(t)==Do}var D=ko;function Uo(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}var ut=Uo;var Go=Array.isArray,g=Go;var zo=1/0,oe=x?x.prototype:void 0,ae=oe?oe.toString:void 0;function ie(t){if(typeof t=="string")return t;if(g(t))return ut(t,ie)+"";if(D(t))return ae?ae.call(t):"";var e=t+"";return e=="0"&&1/t==-zo?"-0":e}var ne=ie;function Ko(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var P=Ko;function Wo(t){return t}var se=Wo;var Yo="[object AsyncFunction]",$o="[object Function]",Ho="[object GeneratorFunction]",Vo="[object Proxy]";function qo(t){if(!P(t))return!1;var e=w(t);return e==$o||e==Ho||e==Yo||e==Vo}var dt=qo;var Zo=c["__core-js_shared__"],ct=Zo;var fe=(function(){var t=/[^.]+$/.exec(ct&&ct.keys&&ct.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();function Jo(t){return!!fe&&fe in t}var pe=Jo;var Xo=Function.prototype,Qo=Xo.toString;function ta(t){if(t!=null){try{return Qo.call(t)}catch{}try{return t+""}catch{}}return""}var A=ta;var ea=/[\\^$.*+?()[\]{}|]/g,ra=/^\[object .+?Constructor\]$/,oa=Function.prototype,aa=Object.prototype,ia=oa.toString,na=aa.hasOwnProperty,sa=RegExp("^"+ia.call(na).replace(ea,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function fa(t){if(!P(t)||pe(t))return!1;var e=dt(t)?sa:ra;return e.test(A(t))}var le=fa;function pa(t,e){return t?.[e]}var me=pa;function la(t,e){var r=me(t,e);return le(r)?r:void 0}var T=la;var ma=T(c,"WeakMap"),ht=ma;var ue=Object.create,ua=(function(){function t(){}return function(e){if(!P(e))return{};if(ue)return ue(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}})(),de=ua;function da(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var ce=da;function ca(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}var he=ca;var ha=800,ga=16,xa=Date.now;function ya(t){var e=0,r=0;return function(){var o=xa(),a=ga-(o-r);if(r=o,a>0){if(++e>=ha)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var ge=ya;function ba(t){return function(){return t}}var xe=ba;var va=(function(){try{var t=T(Object,"defineProperty");return t({},"",{}),t}catch{}})(),k=va;var Ta=k?function(t,e){return k(t,"toString",{configurable:!0,enumerable:!1,value:xe(e),writable:!0})}:se,ye=Ta;var wa=ge(ye),be=wa;function Pa(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}var ve=Pa;var Oa=9007199254740991,ja=/^(?:0|[1-9]\d*)$/;function Aa(t,e){var r=typeof t;return e=e??Oa,!!e&&(r=="number"||r!="symbol"&&ja.test(t))&&t>-1&&t%1==0&&t<e}var U=Aa;function Sa(t,e,r){e=="__proto__"&&k?k(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var gt=Sa;function Ia(t,e){return t===e||t!==t&&e!==e}var xt=Ia;var _a=Object.prototype,Ea=_a.hasOwnProperty;function Fa(t,e,r){var o=t[e];(!(Ea.call(t,e)&&xt(o,r))||r===void 0&&!(e in t))&&gt(t,e,r)}var G=Fa;function Ca(t,e,r,o){var a=!r;r||(r={});for(var n=-1,i=e.length;++n<i;){var s=e[n],f=o?o(r[s],t[s],s,r,t):void 0;f===void 0&&(f=t[s]),a?gt(r,s,f):G(r,s,f)}return r}var j=Ca;var Te=Math.max;function Ma(t,e,r){return e=Te(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=Te(o.length-e,0),i=Array(n);++a<n;)i[a]=o[e+a];a=-1;for(var s=Array(e+1);++a<e;)s[a]=o[a];return s[e]=r(i),ce(t,this,s)}}var we=Ma;var Na=9007199254740991;function Ra(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Na}var z=Ra;function La(t){return t!=null&&z(t.length)&&!dt(t)}var yt=La;var Ba=Object.prototype;function Da(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||Ba;return t===r}var K=Da;function ka(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}var Pe=ka;var Ua="[object Arguments]";function Ga(t){return v(t)&&w(t)==Ua}var Ut=Ga;var Oe=Object.prototype,za=Oe.hasOwnProperty,Ka=Oe.propertyIsEnumerable,Wa=Ut((function(){return arguments})())?Ut:function(t){return v(t)&&za.call(t,"callee")&&!Ka.call(t,"callee")},W=Wa;function Ya(){return!1}var je=Ya;var Ie=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ae=Ie&&typeof module=="object"&&module&&!module.nodeType&&module,$a=Ae&&Ae.exports===Ie,Se=$a?c.Buffer:void 0,Ha=Se?Se.isBuffer:void 0,Va=Ha||je,bt=Va;var qa="[object Arguments]",Za="[object Array]",Ja="[object Boolean]",Xa="[object Date]",Qa="[object Error]",ti="[object Function]",ei="[object Map]",ri="[object Number]",oi="[object Object]",ai="[object RegExp]",ii="[object Set]",ni="[object String]",si="[object WeakMap]",fi="[object ArrayBuffer]",pi="[object DataView]",li="[object Float32Array]",mi="[object Float64Array]",ui="[object Int8Array]",di="[object Int16Array]",ci="[object Int32Array]",hi="[object Uint8Array]",gi="[object Uint8ClampedArray]",xi="[object Uint16Array]",yi="[object Uint32Array]",u={};u[li]=u[mi]=u[ui]=u[di]=u[ci]=u[hi]=u[gi]=u[xi]=u[yi]=!0;u[qa]=u[Za]=u[fi]=u[Ja]=u[pi]=u[Xa]=u[Qa]=u[ti]=u[ei]=u[ri]=u[oi]=u[ai]=u[ii]=u[ni]=u[si]=!1;function bi(t){return v(t)&&z(t.length)&&!!u[w(t)]}var _e=bi;function vi(t){return function(e){return t(e)}}var Y=vi;var Ee=typeof exports=="object"&&exports&&!exports.nodeType&&exports,it=Ee&&typeof module=="object"&&module&&!module.nodeType&&module,Ti=it&&it.exports===Ee,Gt=Ti&&mt.process,wi=(function(){try{var t=it&&it.require&&it.require("util").types;return t||Gt&&Gt.binding&&Gt.binding("util")}catch{}})(),S=wi;var Fe=S&&S.isTypedArray,Pi=Fe?Y(Fe):_e,Ce=Pi;var Oi=Object.prototype,ji=Oi.hasOwnProperty;function Ai(t,e){var r=g(t),o=!r&&W(t),a=!r&&!o&&bt(t),n=!r&&!o&&!a&&Ce(t),i=r||o||a||n,s=i?Pe(t.length,String):[],f=s.length;for(var p in t)(e||ji.call(t,p))&&!(i&&(p=="length"||a&&(p=="offset"||p=="parent")||n&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||U(p,f)))&&s.push(p);return s}var vt=Ai;function Si(t,e){return function(r){return t(e(r))}}var Tt=Si;var Ii=Tt(Object.keys,Object),Me=Ii;var _i=Object.prototype,Ei=_i.hasOwnProperty;function Fi(t){if(!K(t))return Me(t);var e=[];for(var r in Object(t))Ei.call(t,r)&&r!="constructor"&&e.push(r);return e}var Ne=Fi;function Ci(t){return yt(t)?vt(t):Ne(t)}var $=Ci;function Mi(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var Re=Mi;var Ni=Object.prototype,Ri=Ni.hasOwnProperty;function Li(t){if(!P(t))return Re(t);var e=K(t),r=[];for(var o in t)o=="constructor"&&(e||!Ri.call(t,o))||r.push(o);return r}var Le=Li;function Bi(t){return yt(t)?vt(t,!0):Le(t)}var H=Bi;var Di=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ki=/^\w*$/;function Ui(t,e){if(g(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||D(t)?!0:ki.test(t)||!Di.test(t)||e!=null&&t in Object(e)}var Be=Ui;var Gi=T(Object,"create"),I=Gi;function zi(){this.__data__=I?I(null):{},this.size=0}var De=zi;function Ki(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var ke=Ki;var Wi="__lodash_hash_undefined__",Yi=Object.prototype,$i=Yi.hasOwnProperty;function Hi(t){var e=this.__data__;if(I){var r=e[t];return r===Wi?void 0:r}return $i.call(e,t)?e[t]:void 0}var Ue=Hi;var Vi=Object.prototype,qi=Vi.hasOwnProperty;function Zi(t){var e=this.__data__;return I?e[t]!==void 0:qi.call(e,t)}var Ge=Zi;var Ji="__lodash_hash_undefined__";function Xi(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=I&&e===void 0?Ji:e,this}var ze=Xi;function V(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}V.prototype.clear=De;V.prototype.delete=ke;V.prototype.get=Ue;V.prototype.has=Ge;V.prototype.set=ze;var zt=V;function Qi(){this.__data__=[],this.size=0}var Ke=Qi;function tn(t,e){for(var r=t.length;r--;)if(xt(t[r][0],e))return r;return-1}var F=tn;var en=Array.prototype,rn=en.splice;function on(t){var e=this.__data__,r=F(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():rn.call(e,r,1),--this.size,!0}var We=on;function an(t){var e=this.__data__,r=F(e,t);return r<0?void 0:e[r][1]}var Ye=an;function nn(t){return F(this.__data__,t)>-1}var $e=nn;function sn(t,e){var r=this.__data__,o=F(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}var He=sn;function q(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}q.prototype.clear=Ke;q.prototype.delete=We;q.prototype.get=Ye;q.prototype.has=$e;q.prototype.set=He;var C=q;var fn=T(c,"Map"),M=fn;function pn(){this.size=0,this.__data__={hash:new zt,map:new(M||C),string:new zt}}var Ve=pn;function ln(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var qe=ln;function mn(t,e){var r=t.__data__;return qe(e)?r[typeof e=="string"?"string":"hash"]:r.map}var N=mn;function un(t){var e=N(this,t).delete(t);return this.size-=e?1:0,e}var Ze=un;function dn(t){return N(this,t).get(t)}var Je=dn;function cn(t){return N(this,t).has(t)}var Xe=cn;function hn(t,e){var r=N(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var Qe=hn;function Z(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Z.prototype.clear=Ve;Z.prototype.delete=Ze;Z.prototype.get=Je;Z.prototype.has=Xe;Z.prototype.set=Qe;var nt=Z;var gn="Expected a function";function Kt(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(gn);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var i=t.apply(this,o);return r.cache=n.set(a,i)||n,i};return r.cache=new(Kt.Cache||nt),r}Kt.Cache=nt;var tr=Kt;var xn=500;function yn(t){var e=tr(t,function(o){return r.size===xn&&r.clear(),o}),r=e.cache;return e}var er=yn;var bn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vn=/\\(\\)?/g,Tn=er(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(bn,function(r,o,a,n){e.push(a?n.replace(vn,"$1"):o||r)}),e}),rr=Tn;function wn(t){return t==null?"":ne(t)}var or=wn;function Pn(t,e){return g(t)?t:Be(t,e)?[t]:rr(or(t))}var O=Pn;var On=1/0;function jn(t){if(typeof t=="string"||D(t))return t;var e=t+"";return e=="0"&&1/t==-On?"-0":e}var R=jn;function An(t,e){e=O(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[R(e[r++])];return r&&r==o?t:void 0}var wt=An;function Sn(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}var J=Sn;var ar=x?x.isConcatSpreadable:void 0;function In(t){return g(t)||W(t)||!!(ar&&t&&t[ar])}var ir=In;function nr(t,e,r,o,a){var n=-1,i=t.length;for(r||(r=ir),a||(a=[]);++n<i;){var s=t[n];e>0&&r(s)?e>1?nr(s,e-1,r,o,a):J(a,s):o||(a[a.length]=s)}return a}var sr=nr;function _n(t){var e=t==null?0:t.length;return e?sr(t,1):[]}var fr=_n;function En(t){return be(we(t,void 0,fr),t+"")}var Pt=En;var Fn=Tt(Object.getPrototypeOf,Object),X=Fn;var Cn="[object Object]",Mn=Function.prototype,Nn=Object.prototype,pr=Mn.toString,Rn=Nn.hasOwnProperty,Ln=pr.call(Object);function Bn(t){if(!v(t)||w(t)!=Cn)return!1;var e=X(t);if(e===null)return!0;var r=Rn.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&pr.call(r)==Ln}var lr=Bn;function Dn(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o<a;)n[o]=t[o+e];return n}var mr=Dn;function kn(){this.__data__=new C,this.size=0}var ur=kn;function Un(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var dr=Un;function Gn(t){return this.__data__.get(t)}var cr=Gn;function zn(t){return this.__data__.has(t)}var hr=zn;var Kn=200;function Wn(t,e){var r=this.__data__;if(r instanceof C){var o=r.__data__;if(!M||o.length<Kn-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new nt(o)}return r.set(t,e),this.size=r.size,this}var gr=Wn;function Q(t){var e=this.__data__=new C(t);this.size=e.size}Q.prototype.clear=ur;Q.prototype.delete=dr;Q.prototype.get=cr;Q.prototype.has=hr;Q.prototype.set=gr;var xr=Q;function Yn(t,e){return t&&j(e,$(e),t)}var yr=Yn;function $n(t,e){return t&&j(e,H(e),t)}var br=$n;var Pr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vr=Pr&&typeof module=="object"&&module&&!module.nodeType&&module,Hn=vr&&vr.exports===Pr,Tr=Hn?c.Buffer:void 0,wr=Tr?Tr.allocUnsafe:void 0;function Vn(t,e){if(e)return t.slice();var r=t.length,o=wr?wr(r):new t.constructor(r);return t.copy(o),o}var Or=Vn;function qn(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var i=t[r];e(i,r,t)&&(n[a++]=i)}return n}var jr=qn;function Zn(){return[]}var Ot=Zn;var Jn=Object.prototype,Xn=Jn.propertyIsEnumerable,Ar=Object.getOwnPropertySymbols,Qn=Ar?function(t){return t==null?[]:(t=Object(t),jr(Ar(t),function(e){return Xn.call(t,e)}))}:Ot,tt=Qn;function ts(t,e){return j(t,tt(t),e)}var Sr=ts;var es=Object.getOwnPropertySymbols,rs=es?function(t){for(var e=[];t;)J(e,tt(t)),t=X(t);return e}:Ot,jt=rs;function os(t,e){return j(t,jt(t),e)}var Ir=os;function as(t,e,r){var o=e(t);return g(t)?o:J(o,r(t))}var At=as;function is(t){return At(t,$,tt)}var _r=is;function ns(t){return At(t,H,jt)}var St=ns;var ss=T(c,"DataView"),It=ss;var fs=T(c,"Promise"),_t=fs;var ps=T(c,"Set"),Et=ps;var Er="[object Map]",ls="[object Object]",Fr="[object Promise]",Cr="[object Set]",Mr="[object WeakMap]",Nr="[object DataView]",ms=A(It),us=A(M),ds=A(_t),cs=A(Et),hs=A(ht),L=w;(It&&L(new It(new ArrayBuffer(1)))!=Nr||M&&L(new M)!=Er||_t&&L(_t.resolve())!=Fr||Et&&L(new Et)!=Cr||ht&&L(new ht)!=Mr)&&(L=function(t){var e=w(t),r=e==ls?t.constructor:void 0,o=r?A(r):"";if(o)switch(o){case ms:return Nr;case us:return Er;case ds:return Fr;case cs:return Cr;case hs:return Mr}return e});var et=L;var gs=Object.prototype,xs=gs.hasOwnProperty;function ys(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&xs.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var Rr=ys;var bs=c.Uint8Array,Wt=bs;function vs(t){var e=new t.constructor(t.byteLength);return new Wt(e).set(new Wt(t)),e}var rt=vs;function Ts(t,e){var r=e?rt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var Lr=Ts;var ws=/\w*$/;function Ps(t){var e=new t.constructor(t.source,ws.exec(t));return e.lastIndex=t.lastIndex,e}var Br=Ps;var Dr=x?x.prototype:void 0,kr=Dr?Dr.valueOf:void 0;function Os(t){return kr?Object(kr.call(t)):{}}var Ur=Os;function js(t,e){var r=e?rt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var Gr=js;var As="[object Boolean]",Ss="[object Date]",Is="[object Map]",_s="[object Number]",Es="[object RegExp]",Fs="[object Set]",Cs="[object String]",Ms="[object Symbol]",Ns="[object ArrayBuffer]",Rs="[object DataView]",Ls="[object Float32Array]",Bs="[object Float64Array]",Ds="[object Int8Array]",ks="[object Int16Array]",Us="[object Int32Array]",Gs="[object Uint8Array]",zs="[object Uint8ClampedArray]",Ks="[object Uint16Array]",Ws="[object Uint32Array]";function Ys(t,e,r){var o=t.constructor;switch(e){case Ns:return rt(t);case As:case Ss:return new o(+t);case Rs:return Lr(t,r);case Ls:case Bs:case Ds:case ks:case Us:case Gs:case zs:case Ks:case Ws:return Gr(t,r);case Is:return new o;case _s:case Cs:return new o(t);case Es:return Br(t);case Fs:return new o;case Ms:return Ur(t)}}var zr=Ys;function $s(t){return typeof t.constructor=="function"&&!K(t)?de(X(t)):{}}var Kr=$s;var Hs="[object Map]";function Vs(t){return v(t)&&et(t)==Hs}var Wr=Vs;var Yr=S&&S.isMap,qs=Yr?Y(Yr):Wr,$r=qs;var Zs="[object Set]";function Js(t){return v(t)&&et(t)==Zs}var Hr=Js;var Vr=S&&S.isSet,Xs=Vr?Y(Vr):Hr,qr=Xs;var Qs=1,tf=2,ef=4,Zr="[object Arguments]",rf="[object Array]",of="[object Boolean]",af="[object Date]",nf="[object Error]",Jr="[object Function]",sf="[object GeneratorFunction]",ff="[object Map]",pf="[object Number]",Xr="[object Object]",lf="[object RegExp]",mf="[object Set]",uf="[object String]",df="[object Symbol]",cf="[object WeakMap]",hf="[object ArrayBuffer]",gf="[object DataView]",xf="[object Float32Array]",yf="[object Float64Array]",bf="[object Int8Array]",vf="[object Int16Array]",Tf="[object Int32Array]",wf="[object Uint8Array]",Pf="[object Uint8ClampedArray]",Of="[object Uint16Array]",jf="[object Uint32Array]",m={};m[Zr]=m[rf]=m[hf]=m[gf]=m[of]=m[af]=m[xf]=m[yf]=m[bf]=m[vf]=m[Tf]=m[ff]=m[pf]=m[Xr]=m[lf]=m[mf]=m[uf]=m[df]=m[wf]=m[Pf]=m[Of]=m[jf]=!0;m[nf]=m[Jr]=m[cf]=!1;function Ft(t,e,r,o,a,n){var i,s=e&Qs,f=e&tf,p=e&ef;if(r&&(i=a?r(t,o,a,n):r(t)),i!==void 0)return i;if(!P(t))return t;var y=g(t);if(y){if(i=Rr(t),!s)return he(t,i)}else{var h=et(t),B=h==Jr||h==sf;if(bt(t))return Or(t,s);if(h==Xr||h==Zr||B&&!a){if(i=f||B?{}:Kr(t),!s)return f?Ir(t,br(i,t)):Sr(t,yr(i,t))}else{if(!m[h])return a?t:{};i=zr(t,h,s)}}n||(n=new xr);var ot=n.get(t);if(ot)return ot;n.set(t,i),qr(t)?t.forEach(function(b){i.add(Ft(b,e,r,b,t,n))}):$r(t)&&t.forEach(function(b,l){i.set(l,Ft(b,e,r,l,t,n))});var st=p?f?St:_r:f?H:$,ft=y?void 0:st(t);return ve(ft||t,function(b,l){ft&&(l=b,b=t[l]),G(i,l,Ft(b,e,r,l,t,n))}),i}var Ct=Ft;var Af=1,Sf=4;function If(t){return Ct(t,Af|Sf)}var Yt=If;function _f(t,e){return t!=null&&e in Object(t)}var Qr=_f;function Ef(t,e,r){e=O(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var i=R(e[o]);if(!(n=t!=null&&r(t,i)))break;t=t[i]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&z(a)&&U(i,a)&&(g(t)||W(t)))}var to=Ef;function Ff(t,e){return t!=null&&to(t,e,Qr)}var eo=Ff;function Cf(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ro=Cf;function Mf(t,e){return e.length<2?t:wt(t,mr(e,0,-1))}var oo=Mf;var Nf=Object.prototype,Rf=Nf.hasOwnProperty;function Lf(t,e){e=O(e,t);var r=-1,o=e.length;if(!o)return!0;for(var a=t==null||typeof t!="object"&&typeof t!="function";++r<o;){var n=e[r];if(typeof n=="string"){if(n==="__proto__"&&!Rf.call(t,"__proto__"))return!1;if(n==="constructor"&&r+1<o&&typeof e[r+1]=="string"&&e[r+1]==="prototype"){if(a&&r===0)continue;return!1}}}var i=oo(t,e);return i==null||delete i[R(ro(e))]}var ao=Lf;function Bf(t){return lr(t)?void 0:t}var io=Bf;var Df=1,kf=2,Uf=4,Gf=Pt(function(t,e){var r={};if(t==null)return r;var o=!1;e=ut(e,function(n){return n=O(n,t),o||(o=n.length>1),n}),j(t,St(t),r),o&&(r=Ct(r,Df|kf|Uf,io));for(var a=e.length;a--;)ao(r,e[a]);return r}),$t=Gf;function zf(t,e,r,o){if(!P(t))return t;e=O(e,t);for(var a=-1,n=e.length,i=n-1,s=t;s!=null&&++a<n;){var f=R(e[a]),p=r;if(f==="__proto__"||f==="constructor"||f==="prototype")return t;if(a!=i){var y=s[f];p=o?o(y,f,s):void 0,p===void 0&&(p=P(y)?y:U(e[a+1])?[]:{})}G(s,f,p),s=s[f]}return t}var no=zf;function Kf(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var i=e[o],s=wt(t,i);r(s,i)&&no(n,O(i,t),s)}return n}var so=Kf;function Wf(t,e){return so(t,e,function(r,o){return eo(t,o)})}var fo=Wf;var Yf=Pt(function(t,e){return t==null?{}:fo(t,e)}),Mt=Yf;function po(t){return{all:t=t||new Map,on:function(e,r){var o=t.get(e);o?o.push(r):t.set(e,[r])},off:function(e,r){var o=t.get(e);o&&(r?o.splice(o.indexOf(r)>>>0,1):t.set(e,[]))},emit:function(e,r){var o=t.get(e);o&&o.slice().map(function(a){a(r)}),(o=t.get("*"))&&o.slice().map(function(a){a(e,r)})}}}var lo="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Ht=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=lo[r[t]&63];return e};var $f="Invalid number",Hf="Invalid rounding method";var Nt="jedec";var uo="bits",co="byte",ho="bytes",Vf="kbit";var go="array",qf="function",xo="object",Zf="string",yo="exponent",Jf="round";var Rt={symbol:{iec:{bits:["bit","Kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["bit","Kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},fullform:{iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]}},Xf=[1,1024,1048576,1073741824,1099511627776,0x4000000000000,1152921504606847e3,11805916207174113e5,12089258196146292e8],Qf=[1,1e3,1e6,1e9,1e12,1e15,1e18,1e21,1e24],tp=Math.log(1024),ep=Math.log(1e3),mo={si:{isDecimal:!0,ceil:1e3,actualStandard:Nt},iec:{isDecimal:!1,ceil:1024,actualStandard:"iec"},[Nt]:{isDecimal:!1,ceil:1024,actualStandard:Nt}};function rp(t,e){return mo[t]?mo[t]:e===2?{isDecimal:!1,ceil:1024,actualStandard:"iec"}:{isDecimal:!0,ceil:1e3,actualStandard:Nt}}function op(t,e,r,o,a,n,i,s){let f=[];f[0]=t>0?0 .toPrecision(t):0;let p=f[1]=Rt.symbol[e][r?uo:ho][0];return i===yo?0:(o[f[1]]&&(f[1]=o[f[1]]),a&&(f[1]=n[0]||Rt.fullform[e][0]+(r?"bit":co)),i===go?f:i===xo?{value:f[0],symbol:f[1],exponent:0,unit:p}:f.join(s))}function bo(t,e,r,o,a){let n=r?Qf[e]:Xf[e],i=t/n;return o&&(i*=8,i>=a&&e<8&&(i/=a,e++)),{result:i,e}}function ap(t,e,r,o,a,n,i,s,f){let p=t.toPrecision(e);if(p.includes("e")&&r<8){r++;let{result:y}=bo(o,r,a,n,i),h=f>0?Math.pow(10,f):1;p=(h===1?s(y):s(y*h)/h).toPrecision(e)}return{value:p,e:r}}function ip(t,e,r,o,a,n){let i=t;if(e===!0?i=i.toLocaleString():e.length>0?i=i.toLocaleString(e,r):o.length>0&&(i=i.toString().replace(".",o)),a&&n>0){let s=i.toString(),f=o||(s.match(/(\D)/g)||[]).pop()||".",p=s.split(f),y=p[1]||"",h=y.length,B=n-h;i=`${p[0]}${f}${y.padEnd(h+B,"0")}`}return i}function vo(t,{bits:e=!1,pad:r=!1,base:o=-1,round:a=2,locale:n="",localeOptions:i={},separator:s="",spacer:f=" ",symbols:p={},standard:y="",output:h=Zf,fullform:B=!1,fullforms:ot=[],exponent:st=-1,roundingMethod:ft=Jf,precision:b=0}={}){let l=st,E=Number(t),d=[],Lt=0,qt="",{isDecimal:pt,ceil:Bt,actualStandard:Dt}=rp(y,o),Zt=B===!0,Jt=E<0,lt=Math[ft];if(typeof t!="bigint"&&isNaN(t))throw new TypeError($f);if(typeof lt!==qf)throw new TypeError(Hf);if(Jt&&(E=-E),E===0)return op(b,Dt,e,p,Zt,ot,h,f);if((l===-1||isNaN(l))&&(l=Math.floor(pt?Math.log(E)/ep:Math.log(E)/tp),l<0&&(l=0)),l>8&&(b>0&&(b+=8-l),l=8),h===yo)return l;let{result:To,e:wo}=bo(E,l,pt,e,Bt);Lt=To,l=wo;let kt=l>0&&a>0?Math.pow(10,a):1;if(d[0]=kt===1?lt(Lt):lt(Lt*kt)/kt,d[0]===Bt&&l<8&&st===-1&&(d[0]=1,l++),b>0){let Xt=ap(d[0],b,l,E,pt,e,Bt,lt,a);d[0]=Xt.value,l=Xt.e}let Po=Rt.symbol[Dt][e?uo:ho];return qt=d[1]=pt&&l===1?e?Vf:"kB":Po[l],Jt&&(d[0]=-d[0]),p[d[1]]&&(d[1]=p[d[1]]),d[0]=ip(d[0],n,i,s,r,a),Zt&&(d[1]=ot[l]||Rt.fullform[Dt][l]+(e?"bit":co)+(d[0]===1?"":"s")),h===go?d:h===xo?{value:d[0],symbol:d[1],exponent:l,unit:qt}:f===" "?`${d[0]} ${d[1]}`:d.join(f)}var _=class t{constructor(e){this.meta={};if(!e.tera)throw new Error("Basic file requires a `tera` key to access the Tera instance");Object.assign(this,$t(e,"encodeIdFunction")),e.encodeIdFunction&&typeof e.encodeIdFunction=="function"&&(this.id=e.encodeIdFunction(this.id));let r=this.tera;Object.defineProperty(this,"_tera",{enumerable:!1,configurable:!1,get(){return r}}),delete this.tera,this.created&&typeof this.created=="string"&&(this.created=new Date(this.created)),this.modified&&typeof this.modified=="string"&&(this.modified=new Date(this.modified)),this.accessed&&typeof this.accessed=="string"&&(this.accessed=new Date(this.accessed)),this.isFolder&&(this.files=this.files?.map(o=>{let a=o.path.split(/\//).slice(3).join("/"),n=this.url+"/"+o.name;return o.meta.reflib&&(n=n.replace(/\/project\/download\//,"/project/library/")),new t({tera:this._tera,...o,sbId:o.id,id:o.path,encodeIdFunction:e.encodeIdFunction,path:a,url:n})})),this.teraUrl=this.url.replace(/^https?:\/\/(?:.+?)\/projects\/(?:.+?)\/project\/(.+)$/,"/project/$1"),this.sizeFormatted=vo(this.size||0,{spacer:""}),this.createdFormatted=this.created?this.created.toLocaleDateString():"Unknown created date",this.modifiedFormatted=this.modified?this.modified.toLocaleDateString():"Unknown modified date",this.accessedFormatted=this.accessed?this.accessed.toLocaleDateString():"Unknown access date"}getContents(e){return this._tera.getProjectFileContents(this.id,e)}setContents(e){return this._tera.setProjectFileContents(this.id,e,{})}getRefs(){return this._tera.getProjectLibrary(this.id)}setRefs(e){return this._tera.setProjectLibrary(this.id,e)}serialize(){return Mt(this,["id","sbId","name","icon","path","url","parsedName","created","modified","accessed","size","mime","meta"])}static deserialize(e){let r=Mt(e,["tera","id","sbId","name","icon","path","url","parsedName","created","modified","accessed","size","mime","meta"]);return new t(r)}};var Vt=class{constructor(e){this.settings={session:null,devMode:!1,verbosity:1,mode:"detect",modeTimeout:300,modeFallback:"child",modeOverrides:{child(e){e.siteUrl=="https://tera-tools.com/embed"&&(e.siteUrl="https://dev.tera-tools.com/embed")}},siteUrl:"https://tera-tools.com/embed",restrictOrigin:"*",frameSandbox:["allow-forms","allow-modals","allow-orientation-lock","allow-pointer-lock","allow-popups","allow-popups-to-escape-sandbox","allow-presentation","allow-same-origin","allow-scripts","allow-top-navigation"],handshakeInterval:1e3,handshakeTimeout:1e4,debugPaths:null};this.events=po();this.dom={el:null,iframe:null,popup:null,stylesheet:null};this.methods=["handshake","setServerVerbosity","getUser","requireUser","getCredentials","getKindeToken","bindProject","getProject","getProjects","setActiveProject","requireProject","selectProject","getNamespace","setNamespace","listNamespaces","getProjectState","setProjectState","setProjectStateDefaults","setProjectStateRefresh","getProjectFileContents","deleteProjectFile","setProjectFileContents","createProjectFolder","deleteProjectFolder","selectProjectLibrary","getProjectLibrary","setProjectLibrary","projectLog","setPage","uiAlert","uiConfirm","uiJson","uiPanic","uiProgress","uiPrompt","uiThrow","uiSplat","uiWindow"];this.plugins=[];this.namespaces={};this.acceptPostboxes={};this.initPromise=null;e&&this.set(e)}send(e){let r=Ht();return this.acceptPostboxes[r]={},this.acceptPostboxes[r].promise=new Promise((o,a)=>{Object.assign(this.acceptPostboxes[r],{resolve:o,reject:a}),this.sendRaw({id:r,...e})}),this.acceptPostboxes[r].promise}sendRaw(e){let r;try{if(r={TERA:1,id:e.id||Ht(),...Yt(e)},this.settings.mode=="parent")window.parent.postMessage(r,this.settings.restrictOrigin);else if(this.settings.mode=="child")this.dom.iframe.contentWindow.postMessage(r,this.settings.restrictOrigin);else if(this.settings.mode=="popup")this.dom.popup.postMessage(r,this.settings.restrictOrigin);else throw this.settings.mode=="detect"?new Error("Call init() or detectMode() before trying to send data to determine the mode"):new Error(`Unknown TERA communication mode "${this.settings.mode}"`)}catch(o){throw this.debug("ERROR",1,"Message compose client->server:",o),this.debug("ERROR",1,"Attempted to dispatch payload client->server",r),o}}rpc(e,...r){return this.send({action:"rpc",method:e,args:r})}acceptMessage(e){if(e.origin==window.location.origin)return Promise.resolve();let r=e.data;return!r.TERA||!r.id?Promise.resolve():(this.debug("INFO",3,"Received message",r),r?.action=="response"&&this.acceptPostboxes[r.id]?(r.isError===!0?this.acceptPostboxes[r.id].reject(r.response):this.acceptPostboxes[r.id].resolve(r.response),Promise.resolve()):r?.action=="rpc"?Promise.resolve().then(()=>this[r.method].apply(this,r.args)).then(o=>this.sendRaw({id:r.id,action:"response",response:o})).catch(o=>{console.warn(`TERA-FY client threw on RPC:${r.method}:`,o),this.sendRaw({id:r.id,action:"response",isError:!0,response:o&&o.toString()})}):r?.action=="event"?Promise.resolve().then(()=>this.events.emit(r.event,...r.payload)).catch(o=>{throw console.warn(`TERA-FY client threw while handling emitted event "${r.event}"`,{message:r}),o}):r?.id?(this.debug("INFO",3,`Ignoring message ID ${r.id} - was meant for someone else?`),Promise.resolve()):(this.debug("INFO",3,"Unexpected incoming TERA-FY CLIENT message",{message:r}),Promise.resolve()))}mountNamespace(e){if(!/^[\w-]+$/.test(e))throw new Error("Namespaces must be alphanumeric + hyphens + underscores");return this.namespaces[e]?Promise.resolve(this.namespaces[e]):Promise.resolve().then(()=>this._mountNamespace(e)).then(()=>this.namespaces[e]||Promise.reject(`teraFy.mountNamespace('${e}') resolved but no namespace has been mounted`))}_mountNamespace(e){throw console.warn(`teraFy._mountNamespace() for ${e} has not been overridden by a TERA-fy plugin, load one to add this functionality for your preferred framework`),new Error("teraFy._mountNamespace() is not supported")}unmountNamespace(e){return this.namespaces[e]?this._unmountNamespace(e):Promise.resolve()}_unmountNamespace(e){console.warn(`teraFy.unbindNamespace() for ${e} has not been overridden by a TERA-fy plugin, load one to add this functionality for your preferred framework`)}init(e){if(e&&this.set(e),this.initPromise)return this.initPromise;window.addEventListener("message",this.acceptMessage.bind(this));let r=this;return this.initPromise=Promise.resolve().then(()=>this.settings.session||="tfy-"+this.getEntropicString(16)).then(()=>this.debug("INFO",4,"[0/6] Init","Session",this.settings.session,"against",this.settings.siteUrl)).then(()=>{this.settings.devMode&&(this.settings.debugPaths?this.settings.debugPaths=this.settings.debugPaths.map(o=>Array.isArray(o)?o.join("."):typeof o=="string"?o:(()=>{throw new Error("Unknown path type - should be an array or string in dotted notation")})()):this.settings.debugPaths=null,this.debug("INFO",0,"Watching state paths",this.settings.debugPaths))}).then(()=>this.detectMode()).then(o=>{if(this.debug("INFO",4,"[1/6] Setting client mode to",o),this.settings.mode=o,this.settings.modeOverrides[o])return this.debug("INFO",4,"[1/6] Applying specific config overrides for mode",o),this.settings.modeOverrides[o](this.settings)}).then(()=>this.debug("INFO",4,"[2/6] Injecting comms + styles + methods")).then(()=>Promise.all([this.injectComms(),this.injectStylesheet(),this.injectMethods()])).then(()=>{if(this.settings.verbosity<=1){this.debug("INFO",4,"[3/6] Skip - Server verbosity is already at 1");return}else return this.debug("INFO",4,`[3/6] Set server verbosity to ${this.settings.verbosity}`),this.rpc("setServerVerbosity",this.settings.verbosity)}).then(()=>this.debug("INFO",4,`[4/6] Set server mode to "${this.settings.mode}"`)).then(()=>this.rpc("setServerMode",this.settings.mode=="child"?"embedded":this.settings.mode=="parent"?"frame":this.settings.mode=="popup"?"popup":(()=>{throw new Error(`Unknown server mode "${this.settings.mode}"`)})())).then(()=>this.debug("INFO",4,"[5/6] Run client plugins")).then(()=>Promise.all(this.plugins.map(o=>o.init.call(r,this.settings)))).then(()=>(this.debug("INFO",4,"[6/6] Init complete"),r)).catch(o=>{throw this.debug("WARN",0,"Init process fault",o),o}),this.initPromise}detectMode(){return this.settings.mode!="detect"?Promise.resolve(this.settings.mode):window.self===window.parent?Promise.resolve(this.settings.modeFallback):Promise.resolve().then(()=>this.settings.mode="parent").then(()=>new Promise((e,r)=>{let o=setTimeout(()=>r("TIMEOUT"),this.settings.modeTimeout);this.rpc("handshake").then(()=>clearTimeout(o)).then(()=>e()).catch(r)})).then(()=>"parent").catch(()=>this.settings.modeFallback)}injectComms(){switch(this.settings.mode){case"child":return Promise.resolve().then(()=>new Promise(e=>{this.debug("INFO",2,"Injecting TERA site as iFrame child"),this.dom.el=document.createElement("div"),this.dom.el.id="tera-fy",this.dom.el.classList.toggle("dev-mode",this.settings.devMode),this.dom.el.classList.add("minimized"),document.body.append(this.dom.el),this.dom.el.addEventListener("click",()=>this.dom.el.classList.toggle("minimized")),this.dom.iframe=document.createElement("iframe"),this.dom.iframe.setAttribute("sandbox",this.settings.frameSandbox.join(" ")),this.dom.iframe.addEventListener("load",()=>{this.debug("INFO",3,"Embedded iframe ready"),e()}),this.dom.iframe.src=this.settings.siteUrl,this.dom.el.append(this.dom.iframe)})).then(()=>this.handshakeLoop());case"parent":return this.debug("INFO",2,"Using TERA window parent"),Promise.resolve();case"popup":return this.debug("INFO",2,"Injecting TERA site as a popup window"),this.dom.popup=window.open(this.settings.siteUrl,"_blank","popup=1, location=0, menubar=0, status=0, scrollbars=0, width=500, height=600"),this.handshakeLoop().then(()=>this.debug("INFO",3,"Popup window accepted handshake"));default:throw new Error(`Unsupported mode "${this.settings.mode}" when calling injectComms()`)}}handshakeLoop(e){let r={handshakeInterval:this.settings.handshakeInterval,handshakeTimeout:this.settings.handshakeTimeout,...e};return new Promise((o,a)=>{let n=0,i,s=setTimeout(()=>{clearTimeout(i),a("TIMEOUT")},r.handshakeTimeout),f=()=>{this.debug("INFO",4,"Trying handshake",++n),clearTimeout(i),i=setTimeout(f,r.handshakeInterval),this.rpc("handshake").then(()=>{clearTimeout(s),clearTimeout(i)}).then(()=>o()).catch(a)};f()})}injectStylesheet(){switch(this.settings.mode){case"child":this.dom.stylesheet=document.createElement("style"),this.dom.stylesheet.innerHTML=[":root {","--TERA-accent: #4d659c;","}","#tera-fy {","display: none;","position: fixed;","right: 50px;","bottom: 50px;","width: 300px;","height: 150px;","background: transparent;","body:not(.tera-fy-focus) &.minimized.dev-mode {","background: var(--TERA-accent) !important;","opacity: 0.5;","right: 0px;","bottom: 0px;","width: 30px;","height: 30px;","transition: opacity 0.2s ease-out;","cursor: pointer;","border: none;","border-top-left-radius: 30px;","border-top: 2px solid var(--TERA-accent);","border-left: 2px solid var(--TERA-accent);","display: flex;","justify-content: center;","align-items: center;","&::before {","margin: 2px 0 0 0;",'content: "\u{1F300}";',"color: #FFF;","}","&:hover {","opacity: 1;","}","& > iframe {","display: none;","}","}","body:not(.tera-fy-focus) &:not(.minimized) {","&::before {","display: flex;","align-items: center;","justify-content: center;","cursor: pointer;","background: var(--TERA-accent) !important;","opacity: 0.5;","transition: opacity 0.2s ease-out;","position: absolute;","right: 0px;","bottom: 0px;","width: 20px;","height: 20px;","margin: 2px 0 0 0;",'content: "\u2B68";',"color: #FFF;","border: none;","border-top-left-radius: 30px;","border-top: 2px solid var(--TERA-accent);","border-left: 2px solid var(--TERA-accent);","}","&:hover::before {","opacity: 1;","}","}","&.dev-mode {","display: flex;","border: 5px solid var(--TERA-accent);","background: #FFF;","}","& > iframe {","width: 100%;","height: 100%;","}","}","body.tera-fy-focus {","overflow: hidden;","& #tera-fy {","display: flex !important;","position: fixed !important;","top: 0px !important;","width: 100vw !important;","height: 100vh !important;","left: 0px !important;","z-index: 10000 !important;","}","}"].join(`
1
+ var Oo=typeof global=="object"&&global&&global.Object===Object&&global,mt=Oo;var jo=typeof self=="object"&&self&&self.Object===Object&&self,Ao=mt||jo||Function("return this")(),c=Ao;var So=c.Symbol,x=So;var Qt=Object.prototype,Io=Qt.hasOwnProperty,_o=Qt.toString,at=x?x.toStringTag:void 0;function Eo(t){var e=Io.call(t,at),r=t[at];try{t[at]=void 0;var o=!0}catch{}var a=_o.call(t);return o&&(e?t[at]=r:delete t[at]),a}var te=Eo;var Fo=Object.prototype,Co=Fo.toString;function Mo(t){return Co.call(t)}var ee=Mo;var No="[object Null]",Ro="[object Undefined]",re=x?x.toStringTag:void 0;function Lo(t){return t==null?t===void 0?Ro:No:re&&re in Object(t)?te(t):ee(t)}var w=Lo;function Bo(t){return t!=null&&typeof t=="object"}var v=Bo;var Do="[object Symbol]";function ko(t){return typeof t=="symbol"||v(t)&&w(t)==Do}var D=ko;function Uo(t,e){for(var r=-1,o=t==null?0:t.length,a=Array(o);++r<o;)a[r]=e(t[r],r,t);return a}var ut=Uo;var Go=Array.isArray,g=Go;var zo=1/0,oe=x?x.prototype:void 0,ae=oe?oe.toString:void 0;function ie(t){if(typeof t=="string")return t;if(g(t))return ut(t,ie)+"";if(D(t))return ae?ae.call(t):"";var e=t+"";return e=="0"&&1/t==-zo?"-0":e}var ne=ie;function Ko(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var P=Ko;function Wo(t){return t}var se=Wo;var Yo="[object AsyncFunction]",$o="[object Function]",Ho="[object GeneratorFunction]",Vo="[object Proxy]";function qo(t){if(!P(t))return!1;var e=w(t);return e==$o||e==Ho||e==Yo||e==Vo}var dt=qo;var Zo=c["__core-js_shared__"],ct=Zo;var fe=(function(){var t=/[^.]+$/.exec(ct&&ct.keys&&ct.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""})();function Jo(t){return!!fe&&fe in t}var pe=Jo;var Xo=Function.prototype,Qo=Xo.toString;function ta(t){if(t!=null){try{return Qo.call(t)}catch{}try{return t+""}catch{}}return""}var A=ta;var ea=/[\\^$.*+?()[\]{}|]/g,ra=/^\[object .+?Constructor\]$/,oa=Function.prototype,aa=Object.prototype,ia=oa.toString,na=aa.hasOwnProperty,sa=RegExp("^"+ia.call(na).replace(ea,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function fa(t){if(!P(t)||pe(t))return!1;var e=dt(t)?sa:ra;return e.test(A(t))}var le=fa;function pa(t,e){return t?.[e]}var me=pa;function la(t,e){var r=me(t,e);return le(r)?r:void 0}var T=la;var ma=T(c,"WeakMap"),ht=ma;var ue=Object.create,ua=(function(){function t(){}return function(e){if(!P(e))return{};if(ue)return ue(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}})(),de=ua;function da(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var ce=da;function ca(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e}var he=ca;var ha=800,ga=16,xa=Date.now;function ya(t){var e=0,r=0;return function(){var o=xa(),a=ga-(o-r);if(r=o,a>0){if(++e>=ha)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var ge=ya;function ba(t){return function(){return t}}var xe=ba;var va=(function(){try{var t=T(Object,"defineProperty");return t({},"",{}),t}catch{}})(),k=va;var Ta=k?function(t,e){return k(t,"toString",{configurable:!0,enumerable:!1,value:xe(e),writable:!0})}:se,ye=Ta;var wa=ge(ye),be=wa;function Pa(t,e){for(var r=-1,o=t==null?0:t.length;++r<o&&e(t[r],r,t)!==!1;);return t}var ve=Pa;var Oa=9007199254740991,ja=/^(?:0|[1-9]\d*)$/;function Aa(t,e){var r=typeof t;return e=e??Oa,!!e&&(r=="number"||r!="symbol"&&ja.test(t))&&t>-1&&t%1==0&&t<e}var U=Aa;function Sa(t,e,r){e=="__proto__"&&k?k(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var gt=Sa;function Ia(t,e){return t===e||t!==t&&e!==e}var xt=Ia;var _a=Object.prototype,Ea=_a.hasOwnProperty;function Fa(t,e,r){var o=t[e];(!(Ea.call(t,e)&&xt(o,r))||r===void 0&&!(e in t))&&gt(t,e,r)}var G=Fa;function Ca(t,e,r,o){var a=!r;r||(r={});for(var n=-1,i=e.length;++n<i;){var s=e[n],f=o?o(r[s],t[s],s,r,t):void 0;f===void 0&&(f=t[s]),a?gt(r,s,f):G(r,s,f)}return r}var j=Ca;var Te=Math.max;function Ma(t,e,r){return e=Te(e===void 0?t.length-1:e,0),function(){for(var o=arguments,a=-1,n=Te(o.length-e,0),i=Array(n);++a<n;)i[a]=o[e+a];a=-1;for(var s=Array(e+1);++a<e;)s[a]=o[a];return s[e]=r(i),ce(t,this,s)}}var we=Ma;var Na=9007199254740991;function Ra(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=Na}var z=Ra;function La(t){return t!=null&&z(t.length)&&!dt(t)}var yt=La;var Ba=Object.prototype;function Da(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||Ba;return t===r}var K=Da;function ka(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o}var Pe=ka;var Ua="[object Arguments]";function Ga(t){return v(t)&&w(t)==Ua}var Ut=Ga;var Oe=Object.prototype,za=Oe.hasOwnProperty,Ka=Oe.propertyIsEnumerable,Wa=Ut((function(){return arguments})())?Ut:function(t){return v(t)&&za.call(t,"callee")&&!Ka.call(t,"callee")},W=Wa;function Ya(){return!1}var je=Ya;var Ie=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ae=Ie&&typeof module=="object"&&module&&!module.nodeType&&module,$a=Ae&&Ae.exports===Ie,Se=$a?c.Buffer:void 0,Ha=Se?Se.isBuffer:void 0,Va=Ha||je,bt=Va;var qa="[object Arguments]",Za="[object Array]",Ja="[object Boolean]",Xa="[object Date]",Qa="[object Error]",ti="[object Function]",ei="[object Map]",ri="[object Number]",oi="[object Object]",ai="[object RegExp]",ii="[object Set]",ni="[object String]",si="[object WeakMap]",fi="[object ArrayBuffer]",pi="[object DataView]",li="[object Float32Array]",mi="[object Float64Array]",ui="[object Int8Array]",di="[object Int16Array]",ci="[object Int32Array]",hi="[object Uint8Array]",gi="[object Uint8ClampedArray]",xi="[object Uint16Array]",yi="[object Uint32Array]",u={};u[li]=u[mi]=u[ui]=u[di]=u[ci]=u[hi]=u[gi]=u[xi]=u[yi]=!0;u[qa]=u[Za]=u[fi]=u[Ja]=u[pi]=u[Xa]=u[Qa]=u[ti]=u[ei]=u[ri]=u[oi]=u[ai]=u[ii]=u[ni]=u[si]=!1;function bi(t){return v(t)&&z(t.length)&&!!u[w(t)]}var _e=bi;function vi(t){return function(e){return t(e)}}var Y=vi;var Ee=typeof exports=="object"&&exports&&!exports.nodeType&&exports,it=Ee&&typeof module=="object"&&module&&!module.nodeType&&module,Ti=it&&it.exports===Ee,Gt=Ti&&mt.process,wi=(function(){try{var t=it&&it.require&&it.require("util").types;return t||Gt&&Gt.binding&&Gt.binding("util")}catch{}})(),S=wi;var Fe=S&&S.isTypedArray,Pi=Fe?Y(Fe):_e,Ce=Pi;var Oi=Object.prototype,ji=Oi.hasOwnProperty;function Ai(t,e){var r=g(t),o=!r&&W(t),a=!r&&!o&&bt(t),n=!r&&!o&&!a&&Ce(t),i=r||o||a||n,s=i?Pe(t.length,String):[],f=s.length;for(var p in t)(e||ji.call(t,p))&&!(i&&(p=="length"||a&&(p=="offset"||p=="parent")||n&&(p=="buffer"||p=="byteLength"||p=="byteOffset")||U(p,f)))&&s.push(p);return s}var vt=Ai;function Si(t,e){return function(r){return t(e(r))}}var Tt=Si;var Ii=Tt(Object.keys,Object),Me=Ii;var _i=Object.prototype,Ei=_i.hasOwnProperty;function Fi(t){if(!K(t))return Me(t);var e=[];for(var r in Object(t))Ei.call(t,r)&&r!="constructor"&&e.push(r);return e}var Ne=Fi;function Ci(t){return yt(t)?vt(t):Ne(t)}var $=Ci;function Mi(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var Re=Mi;var Ni=Object.prototype,Ri=Ni.hasOwnProperty;function Li(t){if(!P(t))return Re(t);var e=K(t),r=[];for(var o in t)o=="constructor"&&(e||!Ri.call(t,o))||r.push(o);return r}var Le=Li;function Bi(t){return yt(t)?vt(t,!0):Le(t)}var H=Bi;var Di=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ki=/^\w*$/;function Ui(t,e){if(g(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||D(t)?!0:ki.test(t)||!Di.test(t)||e!=null&&t in Object(e)}var Be=Ui;var Gi=T(Object,"create"),I=Gi;function zi(){this.__data__=I?I(null):{},this.size=0}var De=zi;function Ki(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var ke=Ki;var Wi="__lodash_hash_undefined__",Yi=Object.prototype,$i=Yi.hasOwnProperty;function Hi(t){var e=this.__data__;if(I){var r=e[t];return r===Wi?void 0:r}return $i.call(e,t)?e[t]:void 0}var Ue=Hi;var Vi=Object.prototype,qi=Vi.hasOwnProperty;function Zi(t){var e=this.__data__;return I?e[t]!==void 0:qi.call(e,t)}var Ge=Zi;var Ji="__lodash_hash_undefined__";function Xi(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=I&&e===void 0?Ji:e,this}var ze=Xi;function V(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}V.prototype.clear=De;V.prototype.delete=ke;V.prototype.get=Ue;V.prototype.has=Ge;V.prototype.set=ze;var zt=V;function Qi(){this.__data__=[],this.size=0}var Ke=Qi;function tn(t,e){for(var r=t.length;r--;)if(xt(t[r][0],e))return r;return-1}var F=tn;var en=Array.prototype,rn=en.splice;function on(t){var e=this.__data__,r=F(e,t);if(r<0)return!1;var o=e.length-1;return r==o?e.pop():rn.call(e,r,1),--this.size,!0}var We=on;function an(t){var e=this.__data__,r=F(e,t);return r<0?void 0:e[r][1]}var Ye=an;function nn(t){return F(this.__data__,t)>-1}var $e=nn;function sn(t,e){var r=this.__data__,o=F(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this}var He=sn;function q(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}q.prototype.clear=Ke;q.prototype.delete=We;q.prototype.get=Ye;q.prototype.has=$e;q.prototype.set=He;var C=q;var fn=T(c,"Map"),M=fn;function pn(){this.size=0,this.__data__={hash:new zt,map:new(M||C),string:new zt}}var Ve=pn;function ln(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var qe=ln;function mn(t,e){var r=t.__data__;return qe(e)?r[typeof e=="string"?"string":"hash"]:r.map}var N=mn;function un(t){var e=N(this,t).delete(t);return this.size-=e?1:0,e}var Ze=un;function dn(t){return N(this,t).get(t)}var Je=dn;function cn(t){return N(this,t).has(t)}var Xe=cn;function hn(t,e){var r=N(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this}var Qe=hn;function Z(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}Z.prototype.clear=Ve;Z.prototype.delete=Ze;Z.prototype.get=Je;Z.prototype.has=Xe;Z.prototype.set=Qe;var nt=Z;var gn="Expected a function";function Kt(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(gn);var r=function(){var o=arguments,a=e?e.apply(this,o):o[0],n=r.cache;if(n.has(a))return n.get(a);var i=t.apply(this,o);return r.cache=n.set(a,i)||n,i};return r.cache=new(Kt.Cache||nt),r}Kt.Cache=nt;var tr=Kt;var xn=500;function yn(t){var e=tr(t,function(o){return r.size===xn&&r.clear(),o}),r=e.cache;return e}var er=yn;var bn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,vn=/\\(\\)?/g,Tn=er(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(bn,function(r,o,a,n){e.push(a?n.replace(vn,"$1"):o||r)}),e}),rr=Tn;function wn(t){return t==null?"":ne(t)}var or=wn;function Pn(t,e){return g(t)?t:Be(t,e)?[t]:rr(or(t))}var O=Pn;var On=1/0;function jn(t){if(typeof t=="string"||D(t))return t;var e=t+"";return e=="0"&&1/t==-On?"-0":e}var R=jn;function An(t,e){e=O(e,t);for(var r=0,o=e.length;t!=null&&r<o;)t=t[R(e[r++])];return r&&r==o?t:void 0}var wt=An;function Sn(t,e){for(var r=-1,o=e.length,a=t.length;++r<o;)t[a+r]=e[r];return t}var J=Sn;var ar=x?x.isConcatSpreadable:void 0;function In(t){return g(t)||W(t)||!!(ar&&t&&t[ar])}var ir=In;function nr(t,e,r,o,a){var n=-1,i=t.length;for(r||(r=ir),a||(a=[]);++n<i;){var s=t[n];e>0&&r(s)?e>1?nr(s,e-1,r,o,a):J(a,s):o||(a[a.length]=s)}return a}var sr=nr;function _n(t){var e=t==null?0:t.length;return e?sr(t,1):[]}var fr=_n;function En(t){return be(we(t,void 0,fr),t+"")}var Pt=En;var Fn=Tt(Object.getPrototypeOf,Object),X=Fn;var Cn="[object Object]",Mn=Function.prototype,Nn=Object.prototype,pr=Mn.toString,Rn=Nn.hasOwnProperty,Ln=pr.call(Object);function Bn(t){if(!v(t)||w(t)!=Cn)return!1;var e=X(t);if(e===null)return!0;var r=Rn.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&pr.call(r)==Ln}var lr=Bn;function Dn(t,e,r){var o=-1,a=t.length;e<0&&(e=-e>a?0:a+e),r=r>a?a:r,r<0&&(r+=a),a=e>r?0:r-e>>>0,e>>>=0;for(var n=Array(a);++o<a;)n[o]=t[o+e];return n}var mr=Dn;function kn(){this.__data__=new C,this.size=0}var ur=kn;function Un(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var dr=Un;function Gn(t){return this.__data__.get(t)}var cr=Gn;function zn(t){return this.__data__.has(t)}var hr=zn;var Kn=200;function Wn(t,e){var r=this.__data__;if(r instanceof C){var o=r.__data__;if(!M||o.length<Kn-1)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new nt(o)}return r.set(t,e),this.size=r.size,this}var gr=Wn;function Q(t){var e=this.__data__=new C(t);this.size=e.size}Q.prototype.clear=ur;Q.prototype.delete=dr;Q.prototype.get=cr;Q.prototype.has=hr;Q.prototype.set=gr;var xr=Q;function Yn(t,e){return t&&j(e,$(e),t)}var yr=Yn;function $n(t,e){return t&&j(e,H(e),t)}var br=$n;var Pr=typeof exports=="object"&&exports&&!exports.nodeType&&exports,vr=Pr&&typeof module=="object"&&module&&!module.nodeType&&module,Hn=vr&&vr.exports===Pr,Tr=Hn?c.Buffer:void 0,wr=Tr?Tr.allocUnsafe:void 0;function Vn(t,e){if(e)return t.slice();var r=t.length,o=wr?wr(r):new t.constructor(r);return t.copy(o),o}var Or=Vn;function qn(t,e){for(var r=-1,o=t==null?0:t.length,a=0,n=[];++r<o;){var i=t[r];e(i,r,t)&&(n[a++]=i)}return n}var jr=qn;function Zn(){return[]}var Ot=Zn;var Jn=Object.prototype,Xn=Jn.propertyIsEnumerable,Ar=Object.getOwnPropertySymbols,Qn=Ar?function(t){return t==null?[]:(t=Object(t),jr(Ar(t),function(e){return Xn.call(t,e)}))}:Ot,tt=Qn;function ts(t,e){return j(t,tt(t),e)}var Sr=ts;var es=Object.getOwnPropertySymbols,rs=es?function(t){for(var e=[];t;)J(e,tt(t)),t=X(t);return e}:Ot,jt=rs;function os(t,e){return j(t,jt(t),e)}var Ir=os;function as(t,e,r){var o=e(t);return g(t)?o:J(o,r(t))}var At=as;function is(t){return At(t,$,tt)}var _r=is;function ns(t){return At(t,H,jt)}var St=ns;var ss=T(c,"DataView"),It=ss;var fs=T(c,"Promise"),_t=fs;var ps=T(c,"Set"),Et=ps;var Er="[object Map]",ls="[object Object]",Fr="[object Promise]",Cr="[object Set]",Mr="[object WeakMap]",Nr="[object DataView]",ms=A(It),us=A(M),ds=A(_t),cs=A(Et),hs=A(ht),L=w;(It&&L(new It(new ArrayBuffer(1)))!=Nr||M&&L(new M)!=Er||_t&&L(_t.resolve())!=Fr||Et&&L(new Et)!=Cr||ht&&L(new ht)!=Mr)&&(L=function(t){var e=w(t),r=e==ls?t.constructor:void 0,o=r?A(r):"";if(o)switch(o){case ms:return Nr;case us:return Er;case ds:return Fr;case cs:return Cr;case hs:return Mr}return e});var et=L;var gs=Object.prototype,xs=gs.hasOwnProperty;function ys(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&xs.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var Rr=ys;var bs=c.Uint8Array,Wt=bs;function vs(t){var e=new t.constructor(t.byteLength);return new Wt(e).set(new Wt(t)),e}var rt=vs;function Ts(t,e){var r=e?rt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var Lr=Ts;var ws=/\w*$/;function Ps(t){var e=new t.constructor(t.source,ws.exec(t));return e.lastIndex=t.lastIndex,e}var Br=Ps;var Dr=x?x.prototype:void 0,kr=Dr?Dr.valueOf:void 0;function Os(t){return kr?Object(kr.call(t)):{}}var Ur=Os;function js(t,e){var r=e?rt(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var Gr=js;var As="[object Boolean]",Ss="[object Date]",Is="[object Map]",_s="[object Number]",Es="[object RegExp]",Fs="[object Set]",Cs="[object String]",Ms="[object Symbol]",Ns="[object ArrayBuffer]",Rs="[object DataView]",Ls="[object Float32Array]",Bs="[object Float64Array]",Ds="[object Int8Array]",ks="[object Int16Array]",Us="[object Int32Array]",Gs="[object Uint8Array]",zs="[object Uint8ClampedArray]",Ks="[object Uint16Array]",Ws="[object Uint32Array]";function Ys(t,e,r){var o=t.constructor;switch(e){case Ns:return rt(t);case As:case Ss:return new o(+t);case Rs:return Lr(t,r);case Ls:case Bs:case Ds:case ks:case Us:case Gs:case zs:case Ks:case Ws:return Gr(t,r);case Is:return new o;case _s:case Cs:return new o(t);case Es:return Br(t);case Fs:return new o;case Ms:return Ur(t)}}var zr=Ys;function $s(t){return typeof t.constructor=="function"&&!K(t)?de(X(t)):{}}var Kr=$s;var Hs="[object Map]";function Vs(t){return v(t)&&et(t)==Hs}var Wr=Vs;var Yr=S&&S.isMap,qs=Yr?Y(Yr):Wr,$r=qs;var Zs="[object Set]";function Js(t){return v(t)&&et(t)==Zs}var Hr=Js;var Vr=S&&S.isSet,Xs=Vr?Y(Vr):Hr,qr=Xs;var Qs=1,tf=2,ef=4,Zr="[object Arguments]",rf="[object Array]",of="[object Boolean]",af="[object Date]",nf="[object Error]",Jr="[object Function]",sf="[object GeneratorFunction]",ff="[object Map]",pf="[object Number]",Xr="[object Object]",lf="[object RegExp]",mf="[object Set]",uf="[object String]",df="[object Symbol]",cf="[object WeakMap]",hf="[object ArrayBuffer]",gf="[object DataView]",xf="[object Float32Array]",yf="[object Float64Array]",bf="[object Int8Array]",vf="[object Int16Array]",Tf="[object Int32Array]",wf="[object Uint8Array]",Pf="[object Uint8ClampedArray]",Of="[object Uint16Array]",jf="[object Uint32Array]",m={};m[Zr]=m[rf]=m[hf]=m[gf]=m[of]=m[af]=m[xf]=m[yf]=m[bf]=m[vf]=m[Tf]=m[ff]=m[pf]=m[Xr]=m[lf]=m[mf]=m[uf]=m[df]=m[wf]=m[Pf]=m[Of]=m[jf]=!0;m[nf]=m[Jr]=m[cf]=!1;function Ft(t,e,r,o,a,n){var i,s=e&Qs,f=e&tf,p=e&ef;if(r&&(i=a?r(t,o,a,n):r(t)),i!==void 0)return i;if(!P(t))return t;var y=g(t);if(y){if(i=Rr(t),!s)return he(t,i)}else{var h=et(t),B=h==Jr||h==sf;if(bt(t))return Or(t,s);if(h==Xr||h==Zr||B&&!a){if(i=f||B?{}:Kr(t),!s)return f?Ir(t,br(i,t)):Sr(t,yr(i,t))}else{if(!m[h])return a?t:{};i=zr(t,h,s)}}n||(n=new xr);var ot=n.get(t);if(ot)return ot;n.set(t,i),qr(t)?t.forEach(function(b){i.add(Ft(b,e,r,b,t,n))}):$r(t)&&t.forEach(function(b,l){i.set(l,Ft(b,e,r,l,t,n))});var st=p?f?St:_r:f?H:$,ft=y?void 0:st(t);return ve(ft||t,function(b,l){ft&&(l=b,b=t[l]),G(i,l,Ft(b,e,r,l,t,n))}),i}var Ct=Ft;var Af=1,Sf=4;function If(t){return Ct(t,Af|Sf)}var Yt=If;function _f(t,e){return t!=null&&e in Object(t)}var Qr=_f;function Ef(t,e,r){e=O(e,t);for(var o=-1,a=e.length,n=!1;++o<a;){var i=R(e[o]);if(!(n=t!=null&&r(t,i)))break;t=t[i]}return n||++o!=a?n:(a=t==null?0:t.length,!!a&&z(a)&&U(i,a)&&(g(t)||W(t)))}var to=Ef;function Ff(t,e){return t!=null&&to(t,e,Qr)}var eo=Ff;function Cf(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ro=Cf;function Mf(t,e){return e.length<2?t:wt(t,mr(e,0,-1))}var oo=Mf;var Nf=Object.prototype,Rf=Nf.hasOwnProperty;function Lf(t,e){e=O(e,t);var r=-1,o=e.length;if(!o)return!0;for(var a=t==null||typeof t!="object"&&typeof t!="function";++r<o;){var n=e[r];if(typeof n=="string"){if(n==="__proto__"&&!Rf.call(t,"__proto__"))return!1;if(n==="constructor"&&r+1<o&&typeof e[r+1]=="string"&&e[r+1]==="prototype"){if(a&&r===0)continue;return!1}}}var i=oo(t,e);return i==null||delete i[R(ro(e))]}var ao=Lf;function Bf(t){return lr(t)?void 0:t}var io=Bf;var Df=1,kf=2,Uf=4,Gf=Pt(function(t,e){var r={};if(t==null)return r;var o=!1;e=ut(e,function(n){return n=O(n,t),o||(o=n.length>1),n}),j(t,St(t),r),o&&(r=Ct(r,Df|kf|Uf,io));for(var a=e.length;a--;)ao(r,e[a]);return r}),$t=Gf;function zf(t,e,r,o){if(!P(t))return t;e=O(e,t);for(var a=-1,n=e.length,i=n-1,s=t;s!=null&&++a<n;){var f=R(e[a]),p=r;if(f==="__proto__"||f==="constructor"||f==="prototype")return t;if(a!=i){var y=s[f];p=o?o(y,f,s):void 0,p===void 0&&(p=P(y)?y:U(e[a+1])?[]:{})}G(s,f,p),s=s[f]}return t}var no=zf;function Kf(t,e,r){for(var o=-1,a=e.length,n={};++o<a;){var i=e[o],s=wt(t,i);r(s,i)&&no(n,O(i,t),s)}return n}var so=Kf;function Wf(t,e){return so(t,e,function(r,o){return eo(t,o)})}var fo=Wf;var Yf=Pt(function(t,e){return t==null?{}:fo(t,e)}),Mt=Yf;function po(t){return{all:t=t||new Map,on:function(e,r){var o=t.get(e);o?o.push(r):t.set(e,[r])},off:function(e,r){var o=t.get(e);o&&(r?o.splice(o.indexOf(r)>>>0,1):t.set(e,[]))},emit:function(e,r){var o=t.get(e);o&&o.slice().map(function(a){a(r)}),(o=t.get("*"))&&o.slice().map(function(a){a(e,r)})}}}var lo="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Ht=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=lo[r[t]&63];return e};var $f="Invalid number",Hf="Invalid rounding method";var Nt="jedec";var uo="bits",co="byte",ho="bytes",Vf="kbit";var go="array",qf="function",xo="object",Zf="string",yo="exponent",Jf="round";var Rt={symbol:{iec:{bits:["bit","Kibit","Mibit","Gibit","Tibit","Pibit","Eibit","Zibit","Yibit"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["bit","Kbit","Mbit","Gbit","Tbit","Pbit","Ebit","Zbit","Ybit"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},fullform:{iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]}},Xf=[1,1024,1048576,1073741824,1099511627776,0x4000000000000,1152921504606847e3,11805916207174113e5,12089258196146292e8],Qf=[1,1e3,1e6,1e9,1e12,1e15,1e18,1e21,1e24],tp=Math.log(1024),ep=Math.log(1e3),mo={si:{isDecimal:!0,ceil:1e3,actualStandard:Nt},iec:{isDecimal:!1,ceil:1024,actualStandard:"iec"},[Nt]:{isDecimal:!1,ceil:1024,actualStandard:Nt}};function rp(t,e){return mo[t]?mo[t]:e===2?{isDecimal:!1,ceil:1024,actualStandard:"iec"}:{isDecimal:!0,ceil:1e3,actualStandard:Nt}}function op(t,e,r,o,a,n,i,s){let f=[];f[0]=t>0?0 .toPrecision(t):0;let p=f[1]=Rt.symbol[e][r?uo:ho][0];return i===yo?0:(o[f[1]]&&(f[1]=o[f[1]]),a&&(f[1]=n[0]||Rt.fullform[e][0]+(r?"bit":co)),i===go?f:i===xo?{value:f[0],symbol:f[1],exponent:0,unit:p}:f.join(s))}function bo(t,e,r,o,a){let n=r?Qf[e]:Xf[e],i=t/n;return o&&(i*=8,i>=a&&e<8&&(i/=a,e++)),{result:i,e}}function ap(t,e,r,o,a,n,i,s,f){let p=t.toPrecision(e);if(p.includes("e")&&r<8){r++;let{result:y}=bo(o,r,a,n,i),h=f>0?Math.pow(10,f):1;p=(h===1?s(y):s(y*h)/h).toPrecision(e)}return{value:p,e:r}}function ip(t,e,r,o,a,n){let i=t;if(e===!0?i=i.toLocaleString():e.length>0?i=i.toLocaleString(e,r):o.length>0&&(i=i.toString().replace(".",o)),a&&n>0){let s=i.toString(),f=o||(s.match(/(\D)/g)||[]).pop()||".",p=s.split(f),y=p[1]||"",h=y.length,B=n-h;i=`${p[0]}${f}${y.padEnd(h+B,"0")}`}return i}function vo(t,{bits:e=!1,pad:r=!1,base:o=-1,round:a=2,locale:n="",localeOptions:i={},separator:s="",spacer:f=" ",symbols:p={},standard:y="",output:h=Zf,fullform:B=!1,fullforms:ot=[],exponent:st=-1,roundingMethod:ft=Jf,precision:b=0}={}){let l=st,E=Number(t),d=[],Lt=0,qt="",{isDecimal:pt,ceil:Bt,actualStandard:Dt}=rp(y,o),Zt=B===!0,Jt=E<0,lt=Math[ft];if(typeof t!="bigint"&&isNaN(t))throw new TypeError($f);if(typeof lt!==qf)throw new TypeError(Hf);if(Jt&&(E=-E),E===0)return op(b,Dt,e,p,Zt,ot,h,f);if((l===-1||isNaN(l))&&(l=Math.floor(pt?Math.log(E)/ep:Math.log(E)/tp),l<0&&(l=0)),l>8&&(b>0&&(b+=8-l),l=8),h===yo)return l;let{result:To,e:wo}=bo(E,l,pt,e,Bt);Lt=To,l=wo;let kt=l>0&&a>0?Math.pow(10,a):1;if(d[0]=kt===1?lt(Lt):lt(Lt*kt)/kt,d[0]===Bt&&l<8&&st===-1&&(d[0]=1,l++),b>0){let Xt=ap(d[0],b,l,E,pt,e,Bt,lt,a);d[0]=Xt.value,l=Xt.e}let Po=Rt.symbol[Dt][e?uo:ho];return qt=d[1]=pt&&l===1?e?Vf:"kB":Po[l],Jt&&(d[0]=-d[0]),p[d[1]]&&(d[1]=p[d[1]]),d[0]=ip(d[0],n,i,s,r,a),Zt&&(d[1]=ot[l]||Rt.fullform[Dt][l]+(e?"bit":co)+(d[0]===1?"":"s")),h===go?d:h===xo?{value:d[0],symbol:d[1],exponent:l,unit:qt}:f===" "?`${d[0]} ${d[1]}`:d.join(f)}var _=class t{_tera;id;sbId;name;icon;path;url;teraUrl;parsedName;created;createdFormatted;modified;modifiedFormatted;accessed;accessedFormatted;size;sizeFormatted;mime;meta={};isFolder;files;constructor(e){if(!e.tera)throw new Error("Basic file requires a `tera` key to access the Tera instance");Object.assign(this,$t(e,"encodeIdFunction")),e.encodeIdFunction&&typeof e.encodeIdFunction=="function"&&(this.id=e.encodeIdFunction(this.id));let r=this.tera;Object.defineProperty(this,"_tera",{enumerable:!1,configurable:!1,get(){return r}}),delete this.tera,this.created&&typeof this.created=="string"&&(this.created=new Date(this.created)),this.modified&&typeof this.modified=="string"&&(this.modified=new Date(this.modified)),this.accessed&&typeof this.accessed=="string"&&(this.accessed=new Date(this.accessed)),this.isFolder&&(this.files=this.files?.map(o=>{let a=o.path.split(/\//).slice(3).join("/"),n=this.url+"/"+o.name;return o.meta.reflib&&(n=n.replace(/\/project\/download\//,"/project/library/")),new t({tera:this._tera,...o,sbId:o.id,id:o.path,encodeIdFunction:e.encodeIdFunction,path:a,url:n})})),this.teraUrl=this.url.replace(/^https?:\/\/(?:.+?)\/projects\/(?:.+?)\/project\/(.+)$/,"/project/$1"),this.sizeFormatted=vo(this.size||0,{spacer:""}),this.createdFormatted=this.created?this.created.toLocaleDateString():"Unknown created date",this.modifiedFormatted=this.modified?this.modified.toLocaleDateString():"Unknown modified date",this.accessedFormatted=this.accessed?this.accessed.toLocaleDateString():"Unknown access date"}getContents(e){return this._tera.getProjectFileContents(this.id,e)}setContents(e){return this._tera.setProjectFileContents(this.id,e,{})}getRefs(){return this._tera.getProjectLibrary(this.id)}setRefs(e){return this._tera.setProjectLibrary(this.id,e)}serialize(){return Mt(this,["id","sbId","name","icon","path","url","parsedName","created","modified","accessed","size","mime","meta"])}static deserialize(e){let r=Mt(e,["tera","id","sbId","name","icon","path","url","parsedName","created","modified","accessed","size","mime","meta"]);return new t(r)}};var Vt=class{settings={session:null,devMode:!1,verbosity:1,mode:"detect",modeTimeout:300,modeFallback:"child",modeOverrides:{child(e){e.siteUrl=="https://tera-tools.com/embed"&&(e.siteUrl="https://dev.tera-tools.com/embed")}},siteUrl:"https://tera-tools.com/embed",restrictOrigin:"*",frameSandbox:["allow-forms","allow-modals","allow-orientation-lock","allow-pointer-lock","allow-popups","allow-popups-to-escape-sandbox","allow-presentation","allow-same-origin","allow-scripts","allow-top-navigation"],handshakeInterval:1e3,handshakeTimeout:1e4,debugPaths:null};events=po();dom={el:null,iframe:null,popup:null,stylesheet:null};methods=["handshake","setServerVerbosity","getUser","requireUser","getCredentials","getKindeToken","bindProject","getProject","getProjects","setActiveProject","requireProject","selectProject","getNamespace","setNamespace","listNamespaces","getProjectState","setProjectState","setProjectStateDefaults","setProjectStateRefresh","getProjectFileContents","deleteProjectFile","setProjectFileContents","createProjectFolder","deleteProjectFolder","selectProjectLibrary","getProjectLibrary","setProjectLibrary","projectLog","setPage","uiAlert","uiConfirm","uiJson","uiPanic","uiProgress","uiPrompt","uiThrow","uiSplat","uiWindow"];plugins=[];namespaces={};send(e){let r=Ht();return this.acceptPostboxes[r]={},this.acceptPostboxes[r].promise=new Promise((o,a)=>{Object.assign(this.acceptPostboxes[r],{resolve:o,reject:a}),this.sendRaw({id:r,...e})}),this.acceptPostboxes[r].promise}sendRaw(e){let r;try{if(r={TERA:1,id:e.id||Ht(),...Yt(e)},this.settings.mode=="parent")window.parent.postMessage(r,this.settings.restrictOrigin);else if(this.settings.mode=="child")this.dom.iframe.contentWindow.postMessage(r,this.settings.restrictOrigin);else if(this.settings.mode=="popup")this.dom.popup.postMessage(r,this.settings.restrictOrigin);else throw this.settings.mode=="detect"?new Error("Call init() or detectMode() before trying to send data to determine the mode"):new Error(`Unknown TERA communication mode "${this.settings.mode}"`)}catch(o){throw this.debug("ERROR",1,"Message compose client->server:",o),this.debug("ERROR",1,"Attempted to dispatch payload client->server",r),o}}rpc(e,...r){return this.send({action:"rpc",method:e,args:r})}acceptMessage(e){if(e.origin==window.location.origin)return Promise.resolve();let r=e.data;return!r.TERA||!r.id?Promise.resolve():(this.debug("INFO",3,"Received message",r),r?.action=="response"&&this.acceptPostboxes[r.id]?(r.isError===!0?this.acceptPostboxes[r.id].reject(r.response):this.acceptPostboxes[r.id].resolve(r.response),Promise.resolve()):r?.action=="rpc"?Promise.resolve().then(()=>this[r.method].apply(this,r.args)).then(o=>this.sendRaw({id:r.id,action:"response",response:o})).catch(o=>{console.warn(`TERA-FY client threw on RPC:${r.method}:`,o),this.sendRaw({id:r.id,action:"response",isError:!0,response:o&&o.toString()})}):r?.action=="event"?Promise.resolve().then(()=>this.events.emit(r.event,...r.payload)).catch(o=>{throw console.warn(`TERA-FY client threw while handling emitted event "${r.event}"`,{message:r}),o}):r?.id?(this.debug("INFO",3,`Ignoring message ID ${r.id} - was meant for someone else?`),Promise.resolve()):(this.debug("INFO",3,"Unexpected incoming TERA-FY CLIENT message",{message:r}),Promise.resolve()))}acceptPostboxes={};mountNamespace(e){if(!/^[\w-]+$/.test(e))throw new Error("Namespaces must be alphanumeric + hyphens + underscores");return this.namespaces[e]?Promise.resolve(this.namespaces[e]):Promise.resolve().then(()=>this._mountNamespace(e)).then(()=>this.namespaces[e]||Promise.reject(`teraFy.mountNamespace('${e}') resolved but no namespace has been mounted`))}_mountNamespace(e){throw console.warn(`teraFy._mountNamespace() for ${e} has not been overridden by a TERA-fy plugin, load one to add this functionality for your preferred framework`),new Error("teraFy._mountNamespace() is not supported")}unmountNamespace(e){return this.namespaces[e]?this._unmountNamespace(e):Promise.resolve()}_unmountNamespace(e){console.warn(`teraFy.unbindNamespace() for ${e} has not been overridden by a TERA-fy plugin, load one to add this functionality for your preferred framework`)}constructor(e){e&&this.set(e)}initPromise=null;init(e){if(e&&this.set(e),this.initPromise)return this.initPromise;window.addEventListener("message",this.acceptMessage.bind(this));let r=this;return this.initPromise=Promise.resolve().then(()=>this.settings.session||="tfy-"+this.getEntropicString(16)).then(()=>this.debug("INFO",4,"[0/6] Init","Session",this.settings.session,"against",this.settings.siteUrl)).then(()=>{this.settings.devMode&&(this.settings.debugPaths?this.settings.debugPaths=this.settings.debugPaths.map(o=>Array.isArray(o)?o.join("."):typeof o=="string"?o:(()=>{throw new Error("Unknown path type - should be an array or string in dotted notation")})()):this.settings.debugPaths=null,this.debug("INFO",0,"Watching state paths",this.settings.debugPaths))}).then(()=>this.detectMode()).then(o=>{if(this.debug("INFO",4,"[1/6] Setting client mode to",o),this.settings.mode=o,this.settings.modeOverrides[o])return this.debug("INFO",4,"[1/6] Applying specific config overrides for mode",o),this.settings.modeOverrides[o](this.settings)}).then(()=>this.debug("INFO",4,"[2/6] Injecting comms + styles + methods")).then(()=>Promise.all([this.injectComms(),this.injectStylesheet(),this.injectMethods()])).then(()=>{if(this.settings.verbosity<=1){this.debug("INFO",4,"[3/6] Skip - Server verbosity is already at 1");return}else return this.debug("INFO",4,`[3/6] Set server verbosity to ${this.settings.verbosity}`),this.rpc("setServerVerbosity",this.settings.verbosity)}).then(()=>this.debug("INFO",4,`[4/6] Set server mode to "${this.settings.mode}"`)).then(()=>this.rpc("setServerMode",this.settings.mode=="child"?"embedded":this.settings.mode=="parent"?"frame":this.settings.mode=="popup"?"popup":(()=>{throw new Error(`Unknown server mode "${this.settings.mode}"`)})())).then(()=>this.debug("INFO",4,"[5/6] Run client plugins")).then(()=>Promise.all(this.plugins.map(o=>o.init.call(r,this.settings)))).then(()=>(this.debug("INFO",4,"[6/6] Init complete"),r)).catch(o=>{throw this.debug("WARN",0,"Init process fault",o),o}),this.initPromise}detectMode(){return this.settings.mode!="detect"?Promise.resolve(this.settings.mode):window.self===window.parent?Promise.resolve(this.settings.modeFallback):Promise.resolve().then(()=>this.settings.mode="parent").then(()=>new Promise((e,r)=>{let o=setTimeout(()=>r("TIMEOUT"),this.settings.modeTimeout);this.rpc("handshake").then(()=>clearTimeout(o)).then(()=>e()).catch(r)})).then(()=>"parent").catch(()=>this.settings.modeFallback)}injectComms(){switch(this.settings.mode){case"child":return Promise.resolve().then(()=>new Promise(e=>{this.debug("INFO",2,"Injecting TERA site as iFrame child"),this.dom.el=document.createElement("div"),this.dom.el.id="tera-fy",this.dom.el.classList.toggle("dev-mode",this.settings.devMode),this.dom.el.classList.add("minimized"),document.body.append(this.dom.el),this.dom.el.addEventListener("click",()=>this.dom.el.classList.toggle("minimized")),this.dom.iframe=document.createElement("iframe"),this.dom.iframe.setAttribute("sandbox",this.settings.frameSandbox.join(" ")),this.dom.iframe.addEventListener("load",()=>{this.debug("INFO",3,"Embedded iframe ready"),e()}),this.dom.iframe.src=this.settings.siteUrl,this.dom.el.append(this.dom.iframe)})).then(()=>this.handshakeLoop());case"parent":return this.debug("INFO",2,"Using TERA window parent"),Promise.resolve();case"popup":return this.debug("INFO",2,"Injecting TERA site as a popup window"),this.dom.popup=window.open(this.settings.siteUrl,"_blank","popup=1, location=0, menubar=0, status=0, scrollbars=0, width=500, height=600"),this.handshakeLoop().then(()=>this.debug("INFO",3,"Popup window accepted handshake"));default:throw new Error(`Unsupported mode "${this.settings.mode}" when calling injectComms()`)}}handshakeLoop(e){let r={handshakeInterval:this.settings.handshakeInterval,handshakeTimeout:this.settings.handshakeTimeout,...e};return new Promise((o,a)=>{let n=0,i,s=setTimeout(()=>{clearTimeout(i),a("TIMEOUT")},r.handshakeTimeout),f=()=>{this.debug("INFO",4,"Trying handshake",++n),clearTimeout(i),i=setTimeout(f,r.handshakeInterval),this.rpc("handshake").then(()=>{clearTimeout(s),clearTimeout(i)}).then(()=>o()).catch(a)};f()})}injectStylesheet(){switch(this.settings.mode){case"child":this.dom.stylesheet=document.createElement("style"),this.dom.stylesheet.innerHTML=[":root {","--TERA-accent: #4d659c;","}","#tera-fy {","display: none;","position: fixed;","right: 50px;","bottom: 50px;","width: 300px;","height: 150px;","background: transparent;","body:not(.tera-fy-focus) &.minimized.dev-mode {","background: var(--TERA-accent) !important;","opacity: 0.5;","right: 0px;","bottom: 0px;","width: 30px;","height: 30px;","transition: opacity 0.2s ease-out;","cursor: pointer;","border: none;","border-top-left-radius: 30px;","border-top: 2px solid var(--TERA-accent);","border-left: 2px solid var(--TERA-accent);","display: flex;","justify-content: center;","align-items: center;","&::before {","margin: 2px 0 0 0;",'content: "\u{1F300}";',"color: #FFF;","}","&:hover {","opacity: 1;","}","& > iframe {","display: none;","}","}","body:not(.tera-fy-focus) &:not(.minimized) {","&::before {","display: flex;","align-items: center;","justify-content: center;","cursor: pointer;","background: var(--TERA-accent) !important;","opacity: 0.5;","transition: opacity 0.2s ease-out;","position: absolute;","right: 0px;","bottom: 0px;","width: 20px;","height: 20px;","margin: 2px 0 0 0;",'content: "\u2B68";',"color: #FFF;","border: none;","border-top-left-radius: 30px;","border-top: 2px solid var(--TERA-accent);","border-left: 2px solid var(--TERA-accent);","}","&:hover::before {","opacity: 1;","}","}","&.dev-mode {","display: flex;","border: 5px solid var(--TERA-accent);","background: #FFF;","}","& > iframe {","width: 100%;","height: 100%;","}","}","body.tera-fy-focus {","overflow: hidden;","& #tera-fy {","display: flex !important;","position: fixed !important;","top: 0px !important;","width: 100vw !important;","height: 100vh !important;","left: 0px !important;","z-index: 10000 !important;","}","}"].join(`
2
2
  `),document.head.append(this.dom.stylesheet);break;case"parent":case"popup":break;default:throw new Error(`Unsupported mode "${this.settings.mode}" when injectStylesheet()`)}return Promise.resolve()}injectMethods(){return this.methods.forEach(e=>this[e]=this.rpc.bind(this,e)),Promise.resolve()}debug(...e){if(!this.settings.devMode||this.settings.verbosity<1)return;let r="log",o=1;typeof e[0]=="string"&&["INFO","LOG","WARN","ERROR"].includes(e[0])&&(r=e.shift().toLowerCase()),typeof e[0]=="number"&&(o=e[0],e.shift()),!(this.settings.verbosity<o)&&console[r]("%c[TERA-FY CLIENT]","font-weight: bold; color: #ff5722;",...e)}set(e,r,o){let a={ignoreNullish:!0,...o};return typeof e=="string"?(!a.ignoreNullish||r!=null)&&(this.settings[e]=r):Object.assign(this.settings,e),this.toggleDevMode(this.settings.devMode)}setIfDev(e,r,o){return!this.settings.devMode||r===void 0?this:this.set(e,r,o)}use(e,r){let o=typeof e=="function"?new e(this,r):typeof e=="object"?e:typeof e=="string"?(()=>{throw new Error("use(String) is not yet supported")})():(()=>{throw new Error("Expected use() call to be provided with a class initializer")})();return this.mixin(this,o),this.plugins.push(o),this}mixin(e,r){let o=[],a=r;do o.unshift(a);while(a=Object.getPrototypeOf(a));o.forEach(n=>Object.getOwnPropertyNames(n).filter(i=>!["constructor","init","prototype","name"].includes(i)&&!i.startsWith("__")).forEach(i=>{typeof r[i]=="function"?Object.defineProperty(e,i,{enumerable:!1,value:r[i].bind(e)}):e[i]=r[i]}))}toggleDevMode(e="toggle"){return e==="toggle"?this.settings.devMode=!this.settings.devMode:e==="proxy"?Object.assign(this.settings,{devMode:!0,siteUrl:"http://localhost:7334/embed",mode:"child"}):this.settings.devMode=!!e,this.settings.devMode&&(this.settings.restrictOrigin="*"),this.dom?.el&&this.dom.el.classList.toggle("dev-mode",this.settings.devMode),this}toggleFocus(e="toggle"){this.debug("INFO",2,"Request focus",{isFocused:e}),globalThis.document.body.classList.toggle("tera-fy-focus",e==="toggle"?void 0:e)}getEntropicString(e=32){let r=new Uint32Array(4);return window.crypto.getRandomValues(r),btoa(String.fromCodePoint(...new Uint8Array(r.buffer))).replace(/[+/]/g,"").slice(0,e)}selectProjectFile(e){return this.rpc("selectProjectFile",e).then(r=>r&&new _({tera:this,...r}))}getProjectFiles(e){return this.rpc("getProjectFiles",e).then(r=>r.map(o=>new _({tera:this,...o})))}getProjectFile(e,r){return this.rpc("getProjectFile",e,r).then(o=>o&&new _({tera:this,...o}))}createProjectFile(e){return this.rpc("createProjectFile",e).then(r=>r&&new _({tera:this,...r}))}moveProjectFile(e,r,o){return this.rpc("moveProjectFile",e,r,o).then(a=>a?new _({tera:this,...a}):null)}};export{Vt as default};
3
3
  /*! Bundled license information:
4
4
 
@@ -1,21 +1,29 @@
1
- /* eslint-disable no-unused-vars */
1
+ /* eslint-disable jsdoc/reject-function-type, no-unused-vars */
2
2
  // @ts-expect-error TODO: Remove when reflib gets declaration file
3
3
  import Reflib from '@iebh/reflib';
4
4
  import {v4 as uuid4} from 'uuid';
5
5
  import {nanoid} from 'nanoid';
6
- import { BoundSupabaseyFunction } from '@iebh/supabasey';
6
+ import {BoundSupabaseyFunction} from '@iebh/supabasey';
7
+
8
+
9
+ // Minimal interface for a postgres-npm Sql instance (HYPERDRIVE is injected by the Cloudflare Worker runtime)
10
+ export interface PostgresSql {
11
+ (strings: TemplateStringsArray, ...values: any[]): Promise<any[]>;
12
+ json(value: any): any;
13
+ }
14
+
7
15
 
8
16
  // DATABASE TABLE TYPE DEFINITIONS {{{
9
17
  interface ProjectRow {
10
- data: {
11
- temp?: { [key: string]: any };
18
+ data: {
19
+ id: string;
12
20
  // TODO: add other properties in project data
13
21
  };
14
22
  // TODO: Define other columns in project table
15
23
  }
16
24
 
17
25
  interface InstituteRow {
18
- data: any;
26
+ data: any;
19
27
  }
20
28
 
21
29
  interface UserRow {
@@ -36,20 +44,22 @@ interface NamespaceRow {
36
44
  [key: string]: any;
37
45
  // TODO: add other properties in namespace data
38
46
  };
39
- // TODO: Define other namespace in user table
47
+ // TODO: Define other columns in namespace table
40
48
  }
41
49
  // }}}
42
50
 
43
- // Interface for each syncroconfic
51
+
52
+ // Interface for each syncro entity config
44
53
  interface SyncroEntityConfig {
45
54
  singular: string;
46
55
  initState: (args: {
56
+ HYPERDRIVE: PostgresSql;
47
57
  supabasey: BoundSupabaseyFunction;
48
58
  id: string; // Primary ID for the entity
49
59
  relation?: string; // Optional relation identifier (for namespaces, libraries)
50
60
  }) => Promise<any>;
51
-
52
61
  flushState: (args: {
62
+ HYPERDRIVE?: PostgresSql;
53
63
  supabasey: BoundSupabaseyFunction;
54
64
  state: any; // The state object to flush
55
65
  id?: string; // Primary ID (used in some lookups like namespaces)
@@ -58,49 +68,56 @@ interface SyncroEntityConfig {
58
68
  }) => Promise<any>; // Return type signifies completion/result of flush
59
69
  }
60
70
 
71
+
61
72
  type SyncroConfig = Record<string, SyncroEntityConfig>;
62
73
 
74
+
63
75
  /**
64
76
  * Entities we support Syncro paths for, each should correspond directly with a Firebase/Firestore collection name
65
77
  *
66
78
  * @type {Object} An object lookup of entities
67
79
  *
68
80
  * @property {String} singular The singular noun for the item
69
- * @property {Function} initState Function called to initialize state when Firestore has no existing document. Called as `({supabase:BoundSupabaseyFunction, db:BoundHyperdriveInstance, entity:String, id:String, relation?:string})` and expected to return the initial data object state
81
+ * @property {Function} initState Function called to initialize state when Firestore has no existing document. Called as `({HYPERDRIVE:PostgresSql, supabasey:BoundSupabaseyFunction, id:String, relation?:string})` and expected to return the initial data object state
70
82
  * @property {Function} flushState Function called to flush state from Firebase to Supabase. Called the same as `initState` + `{state:Object}`
71
83
  */
72
84
  const syncroConfig: SyncroConfig = {
73
85
  institutes: { // {{{
74
86
  singular: 'institute',
75
- async initState({supabasey, id}: {supabasey: BoundSupabaseyFunction, id: string}) {
76
- const institute = await supabasey((supabase) => supabase
77
- .from('institutes')
78
- .select('data')
79
- .eq('id', id)
80
- .maybeSingle<InstituteRow>()
81
- );
82
- if (institute) return institute.data; // institute is valid and already exists
87
+ async initState({HYPERDRIVE, id}: {HYPERDRIVE: PostgresSql, id: string}) {
88
+ let institute = await HYPERDRIVE`
89
+ SELECT data
90
+ FROM institutes
91
+ WHERE id = ${id}
92
+ LIMIT 1
93
+ `;
94
+ if (institute.length > 0) {
95
+ return institute[0].data; // institute is valid and already exists
96
+ } else {
97
+ throw new Error(`Syncro institute "${id}" not found`);
98
+ }
83
99
  },
84
100
  flushState({supabasey, state, id}) {
85
- // @ts-expect-error Typescript struggles to resolve supabasey import correctly
86
- return supabasey.rpc('syncro_merge_data', {
101
+ // FIXME: Better to reuse `env.HYPERDRIVE` instead of supabasey here in future
102
+ return supabasey((supabase) => supabase.rpc('syncro_merge_data', {
87
103
  table_name: 'institutes',
88
104
  entity_id: id,
89
105
  new_data: state,
90
- });
106
+ }));
91
107
  },
92
108
  }, // }}}
93
109
  projects: { // {{{
94
110
  singular: 'project',
95
- async initState({supabasey, id}) {
96
- const projectData = await supabasey((supabase) => supabase
97
- .from('projects')
98
- .select('data')
99
- .eq('id', id)
100
- .maybeSingle<ProjectRow>()
101
- );
102
- if (!projectData) throw new Error(`Syncro project "${id}" not found`);
103
- const data = projectData.data;
111
+ async initState({HYPERDRIVE, supabasey, id}: {HYPERDRIVE: PostgresSql, supabasey: BoundSupabaseyFunction, id: string}) {
112
+ let projects = await HYPERDRIVE`
113
+ SELECT data
114
+ FROM projects
115
+ WHERE id = ${id}
116
+ LIMIT 1
117
+ `;
118
+ if (projects.length == 0) throw new Error(`Syncro project "${id}" not found`);
119
+
120
+ const data = projects[0].data;
104
121
 
105
122
  // MIGRATION - Move data.temp{} into Supabase files + add pointer to filename {{{
106
123
  if (
@@ -113,7 +130,7 @@ const syncroConfig: SyncroConfig = {
113
130
  await Promise.all(
114
131
  Object.entries(data.temp)
115
132
  .filter(([, branch]) => typeof branch == 'object')
116
- .map(([toolKey, ]) => {
133
+ .map(([toolKey]) => {
117
134
  console.log(`[MIGRATION] Converting data.temp[${toolKey}]...`);
118
135
 
119
136
  const toolName = toolKey.split('-')[0];
@@ -161,8 +178,8 @@ const syncroConfig: SyncroConfig = {
161
178
  return data;
162
179
  },
163
180
  flushState({supabasey, state, fsId}) {
164
- // Import Supabasey because 'supabasey' lowercase is just a function
165
- return supabasey(supabase => supabase.rpc('syncro_merge_data', {
181
+ // FIXME: Better to reuse `env.HYPERDRIVE` instead of supabasey here in future
182
+ return supabasey((supabase) => supabase.rpc('syncro_merge_data', {
166
183
  table_name: 'projects',
167
184
  entity_id: fsId,
168
185
  new_data: state,
@@ -171,7 +188,7 @@ const syncroConfig: SyncroConfig = {
171
188
  }, // }}}
172
189
  project_libraries: { // {{{
173
190
  singular: 'project library',
174
- async initState({supabasey, id, relation}) {
191
+ async initState({id, relation, supabasey}: {HYPERDRIVE: PostgresSql, id: string, relation?: string, supabasey: BoundSupabaseyFunction}) {
175
192
  if (!relation || !/_\*$/.test(relation)) throw new Error('Project library relation missing, path should resemble "project_library::${PROJECT}::${LIBRARY_FILE_ID}_*"');
176
193
 
177
194
  const fileId = relation.replace(/_\*$/, '');
@@ -209,63 +226,33 @@ const syncroConfig: SyncroConfig = {
209
226
  throw new Error('Flushing project_libraries::* namespace is not yet supported');
210
227
  },
211
228
  }, // }}}
212
- project_namespaces: { // {{{
229
+ project_namespaces: { // NOT YET SUPPORTED {{{
213
230
  singular: 'project namespace',
214
- async initState({supabasey, id, relation}) {
215
- if (!relation) throw new Error('Project namespace relation missing, path should resemble "project_namespaces::${PROJECT}::${RELATION}"');
216
- const rows = await supabasey((supabase) => supabase
217
- .from('project_namespaces')
218
- .select('data')
219
- .eq('project', id)
220
- .eq('name', relation)
221
- .limit(1)
222
- );
223
-
224
- if (rows && rows.length == 1) {
225
- return rows[0].data;
226
- } else {
227
- const newItem = await supabasey((supabase) => supabase
228
- .from('project_namespaces') // Doesn't exist - create it
229
- .insert<NamespaceRow>({
230
- project: id,
231
- name: relation,
232
- data: {},
233
- })
234
- .select('data')
235
- .single<NamespaceRow>() // Assuming insert returns the single inserted row
236
- );
237
-
238
- if (!newItem) throw new Error('Failed to create project namespace');
239
- return newItem.data;
240
- }
231
+ async initState() {
232
+ throw new Error('Updating project_namespaces is not yet supported');
241
233
  },
242
- flushState({supabasey, state, id, relation}) {
243
- return supabasey((supabase) => supabase
244
- .from('project_namespaces')
245
- .update({
246
- edited_at: new Date().toISOString(),
247
- data: state,
248
- })
249
- .eq('project', id)
250
- .eq('name', relation)
251
- );
234
+ async flushState() {
235
+ throw new Error('Updating project_namespaces is not yet supported');
252
236
  },
253
237
  }, // }}}
254
238
  test: { // {{{
255
239
  singular: 'test',
256
- async initState({supabasey, id}: {supabasey: BoundSupabaseyFunction, id: string}) {
257
- const rows = await supabasey((supabase) => supabase
258
- .from('test')
259
- .select('data')
260
- .eq('id', id)
261
- .limit(1)
262
- );
263
-
264
- if (!rows || rows.length !== 1) return Promise.reject(`Syncro test item "${id}" not found`);
265
- return rows[0].data;
240
+ async initState({HYPERDRIVE, id}: {HYPERDRIVE: PostgresSql, id: string}) {
241
+ let rows = await HYPERDRIVE`
242
+ SELECT data
243
+ FROM test
244
+ WHERE id = ${id}
245
+ LIMIT 1
246
+ `;
247
+ if (rows.length > 0) {
248
+ return rows[0].data; // User is valid and already exists
249
+ } else {
250
+ throw new Error(`Syncro test "${id}" not found`);
251
+ }
266
252
  },
267
253
  flushState({supabasey, state, fsId}) {
268
- return supabasey(supabase => supabase.rpc('syncro_merge_data', {
254
+ // FIXME: Better to reuse `env.HYPERDRIVE` instead of supabasey here in future
255
+ return supabasey((supabase) => supabase.rpc('syncro_merge_data', {
269
256
  table_name: 'test',
270
257
  entity_id: fsId,
271
258
  new_data: state,
@@ -274,34 +261,38 @@ const syncroConfig: SyncroConfig = {
274
261
  }, // }}}
275
262
  users: { // {{{
276
263
  singular: 'user',
277
- async initState({supabasey, id}: {supabasey: BoundSupabaseyFunction, id: string}) {
278
- const user = await supabasey((supabase) => supabase
279
- .from('users')
280
- .select('data')
281
- .eq('id', id)
282
- .maybeSingle<UserRow>()
283
- );
284
- if (user) return user.data; // User is valid and already exists
264
+ async initState({HYPERDRIVE, id}: {HYPERDRIVE: PostgresSql, id: string}) {
265
+ let user = await HYPERDRIVE`
266
+ SELECT data
267
+ FROM users
268
+ WHERE id = ${id}
269
+ LIMIT 1
270
+ `;
271
+ if (user.length > 0) return user[0].data; // User is valid and already exists
285
272
 
286
- // User row doesn't already exist - need to create stub
287
- const newUser = await supabasey((supabase) => supabase
288
- .from('users')
289
- .insert<UserRow>({
273
+ // User row doesn't already exist - this shouldn't happen if the user has correctly gone through the onboarding process
274
+ // but... *shrugs*, who knows
275
+ let newUser = await HYPERDRIVE`
276
+ INSERT INTO users
277
+ (
290
278
  id,
291
- data: {
279
+ data
280
+ )
281
+ VALUES (
282
+ ${id},
283
+ ${HYPERDRIVE.json({
292
284
  id,
293
285
  credits: 1000,
294
- },
295
- })
296
- .select('data')
297
- .single<UserRow>() // Assuming insert returns the single inserted row
298
- );
299
- if (!newUser) throw new Error('Failed to create user');
300
- return newUser.data; // Return back the data that eventually got created - allowing for database triggers, default field values etc.
286
+ })}::JSONB
287
+ )
288
+ `;
289
+ if (!newUser?.length) throw new Error(`Failed to create new user "${id}"`);
290
+ return newUser[0].data; // Return back the data that eventually got created - allowing for database triggers, default field values etc.
301
291
 
302
292
  },
303
293
  flushState({supabasey, state, fsId}) {
304
- return supabasey(supabase => supabase.rpc('syncro_merge_data', {
294
+ // FIXME: Better to reuse `env.HYPERDRIVE` instead of supabasey here in future
295
+ return supabasey((supabase) => supabase.rpc('syncro_merge_data', {
305
296
  table_name: 'users',
306
297
  entity_id: fsId,
307
298
  new_data: state,
@@ -137,6 +137,7 @@ export default class SyncroKeyed extends Syncro {
137
137
 
138
138
  // Go fetch the initial state object
139
139
  const state = await SyncroEntities[entityKey].initState({
140
+ HYPERDRIVE: Syncro.db,
140
141
  supabasey: Syncro.supabasey,
141
142
  id, relation,
142
143
  });