@iebh/tera-fy 2.3.6 → 2.3.8

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.
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
 
@@ -21,16 +21,23 @@ import {
21
21
  // @ts-expect-error No declaration file for marshal
22
22
  import marshal from '@momsfriendlydevco/marshal';
23
23
  import {nanoid} from 'nanoid';
24
+ import PromiseThrottle from 'p-throttle';
24
25
  import PromiseRetry from 'p-retry';
25
26
  import {FirebaseApp, FirebaseError} from 'firebase/app';
26
27
  import { BoundSupabaseyFunction } from '@iebh/supabasey';
27
28
 
29
+ interface ThrottleOptions<T = any> {
30
+ limit: number,
31
+ interval: number,
32
+ strict: boolean,
33
+ }
28
34
 
29
35
  interface ReactiveWrapper<T = any> {
30
36
  doc: T;
31
37
  setState: (newState: T) => void;
32
38
  getState: () => T;
33
39
  watch: (cb: (newState: T) => void) => void;
40
+ throttle?: ThrottleOptions | true,
34
41
  }
35
42
 
36
43
  interface PathSplitResult {
@@ -169,7 +176,7 @@ export default class Syncro {
169
176
  * @param {*...} [msg] The message to output
170
177
  */
171
178
  debugError(...msg: any[]) {
172
- console.log(`[Syncro ${this.path}]`, ...msg);
179
+ console.warn(`[Syncro ${this.path}]`, ...msg);
173
180
  }
174
181
 
175
182
 
@@ -202,9 +209,10 @@ export default class Syncro {
202
209
  */
203
210
  destroy(): Promise<any[]> {
204
211
  this.debug('Destroy!');
205
- return Promise.all(this._destroyActions
206
- .map(fn => fn())
207
- )
212
+ return Promise.resolve()
213
+ .then(()=> Promise.all(this._destroyActions // eslint-disable @typescript-eslint/await-thenable
214
+ .map(fn => fn())
215
+ ))
208
216
  .then(()=> this._destroyActions = []) // Reset list of actions to perform when terminating
209
217
  }
210
218
 
@@ -213,7 +221,7 @@ export default class Syncro {
213
221
  * Actions to preform when we are destroying this instance
214
222
  * This is an array of function callbacks to execute in parallel when `destroy()` is called
215
223
  *
216
- * @type {Array<function>}
224
+ * @type {Array<Function<Promise>>}
217
225
  */
218
226
  _destroyActions: Array<() => void> = [];
219
227
 
@@ -531,6 +539,25 @@ export default class Syncro {
531
539
  // Construct a reactive component
532
540
  reactive = this.getReactive(initialState);
533
541
  if (!reactive.doc || !reactive.setState || !reactive.getState || !reactive.watch) throw new Error('Syncro.getReactive() requires a returned `doc`, `setState()`, `getState()` + `watch()`');
542
+
543
+ // Accept throttling for reactiveWrapper if present
544
+ if (reactive.throttle) { // Wanting to throttle - handed either truthy or an object of throttle settings
545
+ let throttleSettings = {
546
+ limit: 2,
547
+ interval: 100, // i.e. 2 calls within 100ms, otherwise throttle
548
+ strict: false,
549
+ ...(typeof reactive.throttle == 'object' && reactive.throttle), // Import throttle settings if any
550
+ };
551
+
552
+ // Wrap original reactive.setState() in a throttle function
553
+ let originalSetState = reactive.setState;
554
+ reactive.setState = PromiseThrottle({
555
+ limit: throttleSettings.limit,
556
+ interval: throttleSettings.interval,
557
+ onDelay: ()=> this.debug('Throttling excessive Syncro.setState() writes'),
558
+ })(originalSetState);
559
+ }
560
+
534
561
  this.value = doc = reactive.doc;
535
562
 
536
563
  this.debug('Initial state', {doc});
@@ -562,7 +589,7 @@ export default class Syncro {
562
589
  reactive.watch(throttle((newState: any) => {
563
590
  this.debug('Local change', {newState});
564
591
  this.markDirty();
565
- this.setFirestoreState(newState, {method: 'merge'});
592
+ this.setFirestoreState(newState, {method: 'merge'}); // eslint-disable-line @typescript-eslint/no-floating-promises
566
593
  }, this.throttle));
567
594
 
568
595
  await this.setHeartbeat(true, {
@@ -656,7 +683,7 @@ export default class Syncro {
656
683
  *
657
684
  * @param {Object} [options] Additional options to mutate behaviour
658
685
  * @param {Boolean} [options.immediate=false] Fire a heartbeat as soon as this function is called, this is only really useful on mount
659
- * @returns Promise that resolves to void or void
686
+ * @returns {Promise|Void} A promise that resolves when completed (if `{immediate:true}`) or void
660
687
  */
661
688
  setHeartbeat(enable: boolean = true, options?: any): Promise<void> | void {
662
689
  const settings = {
@@ -673,7 +700,7 @@ export default class Syncro {
673
700
  await this.heartbeat();
674
701
 
675
702
  // If we're enabled - schedule the next heartbeat timer
676
- if (enable) this.setHeartbeat(true); // Reschedule
703
+ if (enable) this.setHeartbeat(true); // eslint-disable-line @typescript-eslint/no-floating-promises
677
704
  };
678
705
 
679
706
  this._heartbeatTimer = setTimeout(heartbeatAction, this.config.heartbeatInterval);
@@ -68,7 +68,6 @@ export default class TeraFy {
68
68
  * Event emitter subscription endpoint
69
69
  * @type {Mitt}
70
70
  */
71
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
72
71
  // @ts-ignore - Because mitt is exported as cjs typescript has trouble resolving default export
73
72
  events = Mitt();
74
73
 
@@ -435,7 +435,7 @@ export default class TeraFyServer {
435
435
  * @property {String} id Unique identifier of the user
436
436
  * @property {String} email The email address of the current user
437
437
  * @property {String} name The provided full name of the user
438
- * @property {Boolean} isSubscribed Whether the active user has a TERA subscription
438
+ * @property {Boolean} isMember Whether the active user has a TERA Membership
439
439
  */
440
440
 
441
441
  /**
@@ -443,7 +443,7 @@ export default class TeraFyServer {
443
443
  *
444
444
  * @param {Object} [options] Additional options to mutate behaviour
445
445
  * @param {Boolean} [options.forceRetry=false] Forcabily try to refresh the user state
446
- * @param {Boolean} [options.waitPromises=true] Wait for $auth + $subscriptions to resolve before fetching the user (mainly internal use)
446
+ * @param {Boolean} [options.waitPromises=true] Wait for $auth + $membership to resolve before fetching the user (mainly internal use)
447
447
  *
448
448
  * @returns {Promise<User>} The current logged in user or null if none
449
449
  */
@@ -455,12 +455,12 @@ export default class TeraFyServer {
455
455
  };
456
456
 
457
457
  const $auth = app.service('$auth');
458
- const $subscriptions = app.service('$subscriptions');
458
+ const $membership = app.service('$membership');
459
459
 
460
460
  return Promise.resolve()
461
461
  .then(()=> settings.waitPromises && Promise.all([
462
462
  $auth.promise(),
463
- $subscriptions.promise(),
463
+ $membership.promise(),
464
464
  ]))
465
465
  .then(()=> {
466
466
  if (!$auth.isLoggedIn && settings.forceRetry)
@@ -474,7 +474,7 @@ export default class TeraFyServer {
474
474
  $auth.user.given_name,
475
475
  $auth.user.family_name,
476
476
  ].filter(Boolean).join(' '),
477
- isSubscribed: $subscriptions.isSubscribed,
477
+ isMember: $membership.isMember,
478
478
  credits: $auth.active?.credits ?? 0,
479
479
  }
480
480
  : null
@@ -619,7 +619,7 @@ export default class TeraFyServer {
619
619
  await app.service('$projects').refresh();
620
620
  return;
621
621
  } catch (e: any) {
622
- throw new Error(`Failed to decode local dev state - ${e.toString()}`);
622
+ throw new Error(`Failed to decode local dev state - ${e.toString()}`, {cause: e});
623
623
  }
624
624
  }
625
625
 
@@ -1000,7 +1000,6 @@ export default class TeraFyServer {
1000
1000
  .then(()=> pathTools.get(target, path));
1001
1001
  } else { // Called as (value, options?) - Populate entire project layout
1002
1002
  actualValue = path; // The first argument is the value
1003
- settings = { ...value }; // The second argument holds the options
1004
1003
  pathTools.defaults(target, actualValue);
1005
1004
  this.debug('INFO', 1, 'setProjectStateDefaults', {
1006
1005
  defaults: actualValue,
@@ -1146,7 +1145,8 @@ export default class TeraFyServer {
1146
1145
  .then(()=> app.service('$projects').promise())
1147
1146
  .then(()=> settings.autoRequire && this.requireProject())
1148
1147
  .then(()=>
1149
- app.service('$projects').activeFiles.length == 0 // If we have no files in the cache
1148
+ !app.service('$projects').activeFiles // List of project files not ready yet
1149
+ || app.service('$projects').activeFiles.length == 0 // OR if we have no files in the cache
1150
1150
  || !settings.lazy // OR lazy/cache use is disabled
1151
1151
  ? app.service('$projects').refreshFiles({ // Go refresh files first
1152
1152
  lazy: false,
@@ -1359,7 +1359,7 @@ export default class TeraFyServer {
1359
1359
  } catch (error: any) {
1360
1360
  this.debug('ERROR', 1, `Error during project file move from "${sourceStoragePath}" to "${targetStoragePath}":`, error);
1361
1361
  // Re-throw a more specific error or the original error for the caller to handle.
1362
- throw new Error(`Failed to move project file "${sourceId}" to "${newName}": ${error.message || String(error)}`);
1362
+ throw new Error(`Failed to move project file "${sourceId}" to "${newName}": ${error.message || String(error)}`, {cause: error});
1363
1363
  }
1364
1364
  }
1365
1365
 
@@ -1396,7 +1396,7 @@ export default class TeraFyServer {
1396
1396
  */
1397
1397
  setProjectFileContents(id: string | any | null, contents: any, options?: any): Promise<null> {
1398
1398
  // Argument Mangling Logic (Simplified)
1399
- let fileId: string | null = null;
1399
+ let fileId: string | null = null; // eslint-disable-line no-useless-assignment
1400
1400
  let fileContents: any;
1401
1401
  let mergedOptions: any;
1402
1402
 
@@ -1526,7 +1526,7 @@ export default class TeraFyServer {
1526
1526
  this.debug('INFO', 2, `Project folder "${cleanFolderPath}" ensured/created via placeholder at "${relativePlaceholderPath}".`);
1527
1527
  } catch (error: any) {
1528
1528
  this.debug('ERROR', 1, `Failed to create/ensure project folder "${cleanFolderPath}" via placeholder "${relativePlaceholderPath}"`, error);
1529
- throw new Error(`Failed to create project folder "${cleanFolderPath}": ${error.message || String(error)}`);
1529
+ throw new Error(`Failed to create project folder "${cleanFolderPath}": ${error.message || String(error)}`, {cause: error});
1530
1530
  }
1531
1531
  }
1532
1532
 
@@ -1601,7 +1601,7 @@ export default class TeraFyServer {
1601
1601
  this.debug('INFO', 2, `Project folder "${cleanFolderPath}" (prefix "${pathPrefix}") and its ${filesToDelete.length} contents deleted.`);
1602
1602
  } catch (error: any) {
1603
1603
  this.debug('ERROR', 1, `Failed to delete contents of project folder "${cleanFolderPath}" (prefix "${pathPrefix}")`, error);
1604
- throw new Error(`Failed to delete project folder "${cleanFolderPath}": ${error.message || String(error)}`);
1604
+ throw new Error(`Failed to delete project folder "${cleanFolderPath}": ${error.message || String(error)}`, {cause: error});
1605
1605
  }
1606
1606
  return null;
1607
1607
  }
@@ -1727,7 +1727,7 @@ export default class TeraFyServer {
1727
1727
  */
1728
1728
  setProjectLibrary(id: string | any | null, refs?: any, options?: any): Promise<null> {
1729
1729
  // Argument Mangling Logic (Simplified)
1730
- let fileId: string | null = null;
1730
+ let fileId: string | null = null; // eslint-disable-line no-useless-assignment
1731
1731
  let libraryRefs: any;
1732
1732
  let mergedOptions: any;
1733
1733
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iebh/tera-fy",
3
- "version": "2.3.6",
3
+ "version": "2.3.8",
4
4
  "description": "TERA website worker",
5
5
  "scripts": {
6
6
  "dev": "esbuild --platform=browser --format=esm --bundle lib/terafy.client.ts --outfile=dist/terafy.js --minify --serve --servedir=.",
@@ -15,7 +15,7 @@
15
15
  "build:docs:markdown": "documentation build lib/terafy.client.ts lib/projectFile.ts --format md --markdown-toc --output api.md",
16
16
  "lint": "eslint",
17
17
  "release": "release-it",
18
- "watch": "nodemon --watch lib --watch plugins --exec \"npm run build\""
18
+ "watch": "nodemon --watch lib --watch plugins --ext ts --exec \"npm run build\""
19
19
  },
20
20
  "type": "module",
21
21
  "imports": {
@@ -113,11 +113,12 @@
113
113
  "mitt": "^3.0.1",
114
114
  "nanoid": "^5.1.6",
115
115
  "p-retry": "^7.1.1",
116
+ "p-throttle": "^8.1.0",
116
117
  "release-it": "^19.2.4",
117
118
  "uuid": "^13.0.0"
118
119
  },
119
120
  "devDependencies": {
120
- "@momsfriendlydevco/eslint-config": "^2.4.1",
121
+ "@momsfriendlydevco/eslint-config": "^2.4.2",
121
122
  "@release-it/conventional-changelog": "^10.0.5",
122
123
  "@types/detect-port": "^2.0.0",
123
124
  "@types/http-proxy": "^1.17.17",
package/plugins/vue2.ts CHANGED
@@ -59,11 +59,10 @@ export default class TeraFyPluginVue2 extends TeraFyPluginFirebase {
59
59
  /**
60
60
  * Install into Vue@2
61
61
  *
62
- * @param {Object} options Additional options to mutate behaviour, see TeraFyPluginFirebase
62
+ * @param {Object} options Additional options to mutate behaviour, see TeraFyPluginFirebase for additional options
63
63
  * @param {Object} options.app Root level Vue app to bind against
64
64
  * @param {Vue} options.Vue Vue@2 instance to bind against
65
65
  * @param {String} [options.globalName='$tera'] Global property to allocate this service as within Vue2
66
- * @param {*...} [options...] see TeraFyPluginFirebase
67
66
  *
68
67
  * @returns {Promise} A Promise which will resolve when the init process has completed
69
68
  */
@@ -117,4 +116,4 @@ export default class TeraFyPluginVue2 extends TeraFyPluginFirebase {
117
116
  };
118
117
  }
119
118
 
120
- }
119
+ }
package/plugins/vue3.ts CHANGED
@@ -39,8 +39,7 @@ export default class TeraFyPluginVue3 extends TeraFyPluginFirebase {
39
39
  /**
40
40
  * Init the project including create a reactive mount for the active project
41
41
  *
42
- * @param {Object} options Additional options to mutate behaviour
43
- * @param {*} [options...] see TeraFyPluginFirebase
42
+ * @param {Object} options Additional options to mutate behaviour, see TeraFyPluginFirebase
44
43
  */
45
44
  async init(options: Record<string, any>) {
46
45
  await super.init(options); // Initalize parent class Firebase functionality
@@ -103,5 +102,4 @@ export default class TeraFyPluginVue3 extends TeraFyPluginFirebase {
103
102
 
104
103
  };
105
104
  }
106
-
107
- }
105
+ }
package/tsconfig.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "target": "ES2020",
3
+ "target": "ES2022",
4
4
  "module": "NodeNext",
5
5
  "moduleResolution": "NodeNext",
6
6
  "declaration": true,
@@ -25,6 +25,6 @@
25
25
  ],
26
26
  "exclude": [
27
27
  "node_modules",
28
- "dist",
28
+ "dist"
29
29
  ]
30
- }
30
+ }